Skip to content

Fisher Asset Reference

The Fisher asset type defines every fishing rod in Unturned™. A Fisher asset is a complete fishing rod configuration: the rod's reward tables (what can be caught), the bite interval (how long before a fish takes the bait), the catch challenge parameters (the mini-game that plays when a fish is hooked), and the fishing reward mode that determines whether the rod itself defines the rewards or delegates to per-volume definitions. Unlike most item types that are purely configuration files, the Fisher asset is the rod-side of a two-sided fishing system; the other side is the catchable properties dictionary embedded in the item definitions of the fish themselves, which controls how hard each fish is to catch.

57 Studios™ has documented and validated the full Fisher asset configuration surface across the Unturned™ modding community. This article covers every .dat field that applies to Fisher assets, the catch challenge system mechanics, the Fishing_Catchable dictionary that defines per-fish catch difficulty, the FishingRewardMode system and its interaction with level volumes, the XP reward system for successful catches, and complete worked examples for both rod assets and catchable fish definitions. The shared fields that appear on every item asset are documented in Item Asset Anatomy; this article focuses on the fields that are unique to the Fisher subclass and the folded-in catchable properties that control the fishing mini-game.

A player casting a fishing line into a lake in Unturned

Documentation source: This article references the official Smartly Dressed Games modding documentation for field definitions and game behavior. The Fisher asset type is documented in the SDG chapters on Fisher assets and fishing catchable properties. The folded-in catchable properties section of this article consolidates the per-fish catch difficulty fields from the separate catchable properties chapter. Community-validated notes are marked where the official documentation is silent on a detail.

Who this article is for

This article is written for Unturned™ mod authors who understand the item asset pipeline and want to create custom fishing rods, custom fish types, or custom fishing reward tables. If you are new to Unturned™ modding, start with Project Folder Structure and GUIDs and Item Asset Anatomy before returning here.

What you'll learn

  • The Fisher asset type and its two-role structure (rod definition + item definition for caught fish)
  • The Fisher-specific .dat fields: Reward_Experience_Min, Reward_Experience_Max, Reward_ID, Fish_Bite_Interval_Multiplier, FishingRewardMode
  • The catch challenge system and its 10 configurable fields
  • The Fishing_Catchable dictionary and its 18 per-fish catch difficulty fields
  • The FishingRewardMode system: Rod mode vs. WaterVolumes mode and fallback behavior
  • The quest reward system integration for fishing rods
  • A complete worked rod .dat example
  • A complete worked catchable fish item .dat example using the Fishing_Catchable dictionary
  • Testing procedures for fishing rods and catchable items in single-player

How the fishing system works

The fishing runtime in Unturned™ is a multi-stage process that involves the rod asset, the water volume detection system, the catch challenge mini-game, and the reward system. The player casts a line into a body of water; after a configurable bite interval, a fish takes the bait; the player enters the catch challenge mini-game; if the player succeeds, a reward is generated from the rod's reward table.

The sequence diagram above shows the complete fishing loop. Each stage is configurable through the rod's .dat fields and the fish item's Fishing_Catchable dictionary.

FishingRewardMode: Rod vs. WaterVolumes

The FishingRewardMode field controls how the rod determines what items to reward on a successful catch. There are two modes.

ModeEnum valueBehaviorFallback
Rod-definedRodThe rod itself defines the reward table. All catches from this rod use the same reward pool regardless of where the player is fishing.Default mode. No fallback needed.
Volume-definedWaterVolumesThe rod delegates reward determination to the water volume the player is fishing in. Different bodies of water (a pond, a river, an ocean) can have different fish populations.If the water volume does not define its own rewards, the rod falls back to its own reward table (Rod mode).

FishingRewardMode Rod is the simpler and more backwards-compatible mode. A rod in Rod mode always produces the same reward pool regardless of casting location. FishingRewardMode WaterVolumes requires the level designer to define per-volume reward tables in the level asset and is used on custom maps with distinct fishing zones.

The flowchart above shows the reward resolution logic. In WaterVolumes mode, the engine checks the water volume first and falls back to the rod only when no volume-level reward table is defined.

Catch challenge system

When CatchChallenge_Enabled is set to True, the player must complete a timed mini-game to land the fish. The mini-game presents a cursor that moves vertically within a bounded region; the player must keep the cursor within a target window for a duration determined by the fish's Capture_Duration and Escape_Duration fields.

The state diagram above shows the full fishing interaction flow. The catch challenge is optional; rods without the challenge enabled grant rewards immediately when a fish bites after the bite interval.

Per-fish catchable properties

Each fish item (the item the player receives when catching a fish) carries a Fishing_Catchable dictionary that defines how hard that specific fish is to catch. The dictionary fields control the movement pattern of the target window in the catch challenge mini-game. A fish with high acceleration, low restitution, and fast relocation is harder to catch than a fish with the opposite values. This allows fishing mods to have a spectrum of difficulty from easy prey (small fish, low challenge values) to legendary catches (large fish, high challenge values).

The 18 fields in the Fishing_Catchable dictionary are defined in a dedicated section of the SDG documentation and are folded into this article for completeness. They are documented in full in the catchable properties field reference section below.

File and folder structure

A complete fishing rod mod requires the following files:

Workshop/Content/304930/<modID>/
├── Bundles/
│   └── <BundleName>.unity3d            ← master bundle containing the rod prefab
└── Items/
    └── MyFishingRod/
        ├── Asset.dat                   ← rod configuration
        └── English.dat                 ← display name and description

Each catchable fish item also requires its own item folder:

Workshop/Content/304930/<modID>/
└── Items/
    └── MyFish_Salmon/
        ├── Asset.dat                   ← fish item with Fishing_Catchable dictionary
        └── English.dat                 ← display name and description

The rod and the fish are separate items. The rod is a Type Fisher item that the player equips. The fish is a Type Food or other item type that the player receives as a reward and can consume, cook, or sell.

Complete .dat field reference for Fisher assets

Identity and shared fields

The following shared fields are required on every item asset, including Fisher rods. See Item Asset Anatomy for full documentation of these fields.

FieldTypeExampleNotes
IDuint1650070Unique item ID. Use 50000+ range.
GUIDuint128 hexa1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d128-bit globally unique identifier.
TypeenumFisherMust be Fisher for this asset type.
NamestringMyFishingRodInternal name; also the prefab lookup key.
RarityenumCommonRarity tier; see Rarity enum reference in Item Asset Anatomy.
SlotenumPrimary or SecondaryFishing rods are typically equipped to Primary.
Size_Xuint83Inventory grid width.
Size_Yuint81Inventory grid height.
Bypass_ID_LimitboolTrueRequired for IDs above 2000.
UseableenumFisherMust be Fisher. This enables the fishing rod interaction system.

Reward experience fields

FieldTypeRequiredDefaultExamplePurpose
Reward_Experience_Minint32Optional35The minimum amount of XP (inclusive) granted to the player upon successfully catching something. Combined with Reward_Experience_Max to form a range.
Reward_Experience_Maxint32Optional315The maximum amount of XP (inclusive) granted to the player upon successfully catching something. Combined with Reward_Experience_Min to form a range. When both fields have the same value, the XP reward is deterministic.

Reward ID and quest reward fields

FieldTypeRequiredDefaultExamplePurpose
Reward_IDuint16Optional02001The legacy spawn table ID from which a reward is generated upon successfully catching something. The spawn table defines the pool of items and their relative weights.
Quest_Rewardsuint16Optional01The number of quest reward entries assigned to this rod. Quest rewards are prefixed with Quest_ (for example, Quest_Reward_0, Quest_Reward_1). Each entry references an item ID that is guaranteed to be rewarded. Quest rewards can be combined with the standard reward system.

Fishing behavior fields

FieldTypeRequiredDefaultExamplePurpose
Fish_Bite_Interval_MultiplierfloatOptional10.5A multiplier on the base interval before a fish takes the bait. A value of 0.5 halves the wait time; a value of 2.0 doubles it. Lower values produce faster bites; higher values produce slower bites.
FishingRewardModeenumOptionalRodRodControls whether the rod defines its own reward table (Rod) or delegates to per-volume reward tables defined in the level asset (WaterVolumes). See the FishingRewardMode section for detailed behavior.

Catch challenge fields

FieldTypeRequiredDefaultExamplePurpose
CatchChallenge_EnabledboolOptionalFalseTrueIf True, the player must complete a catch challenge mini-game when a fish takes the bait. If False, the catch is automatic after the bite interval. Defaults to False for backwards compatibility with existing mods.
CatchChallenge_CursorSizefloatOptional0.20.15The size of the cursor window that the player must keep within the target zone. A smaller value makes the challenge harder because the cursor has less margin for error. Valid range is 0.0 to 1.0 where 1.0 fills the entire target area.
CatchChallenge_GravityfloatOptional11.5The downward acceleration applied to the cursor while the player is not holding the input button. Higher values cause the cursor to drop faster when the player releases the input.
CatchChallenge_AccelerationfloatOptional11.2The upward acceleration applied to the cursor while the player holds the input button. Higher values cause the cursor to rise faster when the player activates the input.
CatchChallenge_UpperRestitutionfloatOptional0.50.6The proportion of velocity preserved when the cursor bounces off the top boundary. A value of 0.5 means 50% of the velocity is retained on bounce; a value of 0.0 means the cursor stops completely on hitting the top.
CatchChallenge_LowerRestitutionfloatOptional0.50.4The proportion of velocity preserved when the cursor bounces off the bottom boundary. Same behavior as UpperRestitution but for the lower boundary.
CatchChallenge_CaptureSpeedfloatOptional11.5A multiplier for how quickly the catch progress increases while the cursor is within the target zone. Higher values mean the fish is caught faster when the player is positioned correctly.
CatchChallenge_EscapeSpeedfloatOptional10.8A multiplier for how quickly the player loses progress while the cursor is outside the target zone. Higher values mean the fish escapes faster when the player is not positioned correctly.

Complete Fishing_Catchable dictionary field reference

The Fishing_Catchable dictionary is defined on an item asset (typically a Food-type consumable item) that represents a specific fish type. The dictionary is authored as a block within the item's Asset.dat using curly-brace syntax. The fields within the dictionary control how difficult that specific fish is to catch during the catch challenge mini-game.

The dictionary block is authored as follows:

Fishing_Catchable
{
    Capture_Duration 2
    Escape_Duration 2
    Spring_Stiffness 16
    Spring_Damping 4
    Min_Relocate_Interval 1.5
    Max_Relocate_Interval 2
    Max_Upward_Acceleration 1.5
    Max_Downward_Acceleration 1.2
    Max_Upward_Speed 0.6
    Max_Downward_Speed 0.45
    Upper_Restitution 0.6
    Lower_Restitution 0.4
    Min_Target_Delta 0.3
    Max_Target_Delta 0.4
    Min_Target_Position 0.1
    Max_Target_Position 0.9
}
FieldTypeRequiredDefaultUnitPurpose
Capture_DurationfloatOptional2secondsHow long the player must keep the cursor within the target zone before the fish is caught. Higher values require longer sustained accuracy.
Escape_DurationfloatOptional2secondsHow long before the fish escapes if the player cannot keep the cursor in the target zone. Higher values give the player more time to recover after losing position.
Spring_StiffnessfloatOptional16multiplierScales the acceleration of the target zone toward a new position when it relocates. Higher stiffness makes the target move to its new position faster. Analogous to a spring constant in physics simulation.
Spring_DampingfloatOptional4multiplierReduces the speed of the target zone as it approaches the new position. Higher damping produces a slower, more controlled approach. Analogous to a damping coefficient.
Min_Relocate_IntervalfloatOptional1.5secondsThe minimum interval before the target zone changes position. The target will not relocate more frequently than this value. A lower value makes the fish more erratic.
Max_Relocate_IntervalfloatOptional2secondsThe maximum interval before the target zone changes position. The target will relocate at least this frequently (if not sooner due to the minimum interval). A higher value gives the player a longer window of target stability.
Max_Upward_AccelerationfloatOptional1.5m/s^2The upward acceleration of the target zone cannot exceed this limit. Caps how fast the target can move upward when relocating.
Max_Downward_AccelerationfloatOptional1.2m/s^2The downward acceleration of the target zone cannot exceed this limit. Caps how fast the target can move downward when relocating.
Max_Upward_SpeedfloatOptional0.6m/sThe upward speed of the target zone cannot exceed this limit. Combined with the acceleration cap, defines the maximum velocity the target can reach when moving up.
Max_Downward_SpeedfloatOptional0.45m/sThe downward speed of the target zone cannot exceed this limit. Combined with the acceleration cap, defines the maximum velocity the target can reach when moving down.
Upper_RestitutionfloatOptional0.60,1The proportion of velocity preserved when the target bounces off the top boundary. A value of 0.6 means 60% of velocity is retained.
Lower_RestitutionfloatOptional0.40,1The proportion of velocity preserved when the target bounces off the bottom boundary.
Min_Target_DeltafloatOptional0.3normalizedWhen the target chooses a new position, the new position will be at least this far from the current position. Prevents the target from relocating to nearly the same spot.
Max_Target_DeltafloatOptional0.4normalizedWhen the target chooses a new position, the new position will be at most this far from the current position. Prevents the target from teleporting across the entire playfield.
Min_Target_PositionfloatOptional0.10,1The minimum normalized position the target can occupy. A value of 0.1 means the target cannot move into the bottom 10% of the playfield.
Max_Target_PositionfloatOptional0.90,1The maximum normalized position the target can occupy. A value of 0.9 means the target cannot move into the top 10% of the playfield.

Interpreting catchable properties for difficulty tuning

The Fishing_Catchable dictionary is the primary mechanism for differentiating fish difficulty. The combined effect of the 18 fields produces a movement pattern that defines how hard any given fish is to catch. The following tuning principles apply:

  • A fish with low Min_Relocate_Interval and low Max_Relocate_Interval moves its target zone frequently, making it harder to track
  • A fish with high Spring_Stiffness snaps to new positions quickly, creating sudden target shifts
  • A fish with high Max_Upward_Acceleration, high Max_Downward_Acceleration, and high speed caps has a large movement range and is harder to pin down
  • A fish with high Upper_Restitution and high Lower_Restitution bounces energetically off the boundaries and is hard to stabilize
  • A fish with a small Min_Target_Position / Max_Target_Position range restricts the target to a narrow band and makes the fish easier to track
  • A fish with low Capture_Duration and high Escape_Duration gives the player generous capture conditions even if they are not perfectly accurate

Worked .dat example: standard fishing rod

The following is a complete Asset.dat for a standard fishing rod with catch challenge enabled and a moderate reward table.

ID 50070
GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
Type Fisher
Name StandardFishingRod
Rarity Common
Slot Primary
Size_X 3
Size_Y 1

Bypass_ID_Limit True

Useable Fisher

Reward_Experience_Min 5
Reward_Experience_Max 15
Reward_ID 7001

Fish_Bite_Interval_Multiplier 1.0
FishingRewardMode Rod

CatchChallenge_Enabled True
CatchChallenge_CursorSize 0.2
CatchChallenge_Gravity 1.0
CatchChallenge_Acceleration 1.0
CatchChallenge_UpperRestitution 0.5
CatchChallenge_LowerRestitution 0.5
CatchChallenge_CaptureSpeed 1.0
CatchChallenge_EscapeSpeed 1.0

Companion English.dat:

Name Standard Fishing Rod
Description A standard fishing rod suitable for freshwater fishing. Moderate bite interval. Catch challenge enabled for interactive fishing.

Worked .dat example: expert fishing rod

A high-end rod with faster bite interval, larger XP rewards, and a tighter catch challenge cursor.

ID 50071
GUID b2c3d4e5f6a74b8c9d0e1f2a3b4c5d6e
Type Fisher
Name ExpertFishingRod
Rarity Rare
Slot Primary
Size_X 3
Size_Y 1

Bypass_ID_Limit True

Useable Fisher

Reward_Experience_Min 15
Reward_Experience_Max 40
Reward_ID 7002

Fish_Bite_Interval_Multiplier 0.4
FishingRewardMode Rod

CatchChallenge_Enabled True
CatchChallenge_CursorSize 0.1
CatchChallenge_Gravity 1.2
CatchChallenge_Acceleration 1.3
CatchChallenge_UpperRestitution 0.6
CatchChallenge_LowerRestitution 0.6
CatchChallenge_CaptureSpeed 1.5
CatchChallenge_EscapeSpeed 0.8

The expert rod has a smaller cursor (harder challenge), faster bite interval (fish bite more aggressively), higher rewards, and more generous capture speed and escape speed multipliers.

Worked .dat example: catchable fish item (common perch)

The following is a complete Asset.dat for a common perch fish item. The item is configured as a Food-type consumable (players can eat the fish) with a Fishing_Catchable dictionary that defines the perch's catch difficulty.

ID 50072
GUID c3d4e5f6a7b84c9d0e1f2a3b4c5d6e7f
Type Food
Name Perch_Fish
Rarity Common
Slot None
Size_X 1
Size_Y 1

Bypass_ID_Limit True

Useable Food

Food 10
Water 5
Health 3

Fishing_Catchable
{
    Capture_Duration 1.5
    Escape_Duration 2.5
    Spring_Stiffness 12
    Spring_Damping 3
    Min_Relocate_Interval 2.0
    Max_Relocate_Interval 3.0
    Max_Upward_Acceleration 1.2
    Max_Downward_Acceleration 1.0
    Max_Upward_Speed 0.5
    Max_Downward_Speed 0.4
    Upper_Restitution 0.5
    Lower_Restitution 0.3
    Min_Target_Delta 0.2
    Max_Target_Delta 0.35
    Min_Target_Position 0.15
    Max_Target_Position 0.85
}

Companion English.dat:

Name Perch
Description A common freshwater perch. Easy to catch but provides modest sustenance.

Worked .dat example: catchable fish item (legendary salmon)

The following is a legendary salmon fish item with high catch difficulty and high food value.

ID 50073
GUID d4e5f6a7b8c94d0e1f2a3b4c5d6e7f80
Type Food
Name Salmon_Legendary
Rarity Epic
Slot None
Size_X 1
Size_Y 1

Bypass_ID_Limit True

Useable Food

Food 45
Water 20
Health 15

Fishing_Catchable
{
    Capture_Duration 3.5
    Escape_Duration 1.0
    Spring_Stiffness 25
    Spring_Damping 6
    Min_Relocate_Interval 0.5
    Max_Relocate_Interval 1.2
    Max_Upward_Acceleration 2.0
    Max_Downward_Acceleration 1.8
    Max_Upward_Speed 0.9
    Max_Downward_Speed 0.7
    Upper_Restitution 0.7
    Lower_Restitution 0.5
    Min_Target_Delta 0.4
    Max_Target_Delta 0.5
    Min_Target_Position 0.05
    Max_Target_Position 0.95
}

The legendary salmon has a capture duration of 3.5 seconds (the player must maintain accuracy for longer), an escape duration of only 1.0 second (the fish escapes quickly if the player loses position), fast relocation intervals (0.5 to 1.2 seconds), and high acceleration and speed caps. This combination produces a fish that moves rapidly, relocates frequently, and punishes the player harshly for losing the target.

Worked .dat example: simple rod without catch challenge (vanilla-compatible)

A simple rod with no catch challenge, suitable for servers where fishing should be a straightforward resource-gathering activity without a mini-game.

ID 50074
GUID e5f6a7b8c9d04e1f2a3b4c5d6e7f80a1
Type Fisher
Name SimpleFishingRod
Rarity Common
Slot Primary
Size_X 2
Size_Y 1

Bypass_ID_Limit True

Useable Fisher

Reward_Experience_Min 3
Reward_Experience_Max 8
Reward_ID 7003

Fish_Bite_Interval_Multiplier 1.5
FishingRewardMode Rod

CatchChallenge_Enabled False

The catch challenge is disabled, meaning the player receives the reward immediately after the bite interval expires. No mini-game is shown. This is equivalent to the vanilla fishing rod behavior before the catch challenge system was introduced.

Fishing balance tuning

Bite interval tuning

The Fish_Bite_Interval_Multiplier combines with a base bite interval defined by the engine to produce the actual time a player waits before a fish bites. The base interval is approximately 10-20 seconds in typical conditions. The multiplier scales this interval: a multiplier of 0.5 reduces the wait to 5-10 seconds, while a multiplier of 2.0 extends it to 20-40 seconds.

Fishing rod qualityRecommended multiplierEffective wait (seconds)Design intent
Beginner1.5,2.015,40Longer wait; fishing is a relaxed activity
Standard0.8,1.28,24Balanced wait; moderate engagement
Expert0.3,0.53,10Fast bites; active fishing gameplay
Handicap3.0+30,60Very slow; used for AFK-detection or RP

Catch challenge tuning by fish rarity

The catch challenge parameters should be calibrated to the fish's rarity and intended gameplay role. The following table provides cohort-recommended starting values for each rarity tier.

Fish rarityCapture_DurationEscape_DurationSpring_StiffnessRelocate_Interval rangeSpeed caps
Common1.0,2.02.0,3.08,142.0,4.00.3,0.6
Uncommon1.5,2.51.5,2.512,181.5,3.00.4,0.7
Rare2.0,3.01.0,2.016,221.0,2.00.5,0.8
Epic2.5,3.50.8,1.520,280.5,1.50.6,0.9
Legendary3.0,4.00.5,1.024,320.3,1.00.7,1.0

The capture duration increases with rarity (player must maintain accuracy longer), while the escape duration decreases (less margin for error). Spring stiffness and acceleration increase, making the target harder to track.

Vanilla Lobster catchable configuration

The vanilla Unturned™ Lobster item uses the following Fishing_Catchable configuration as documented in the SDG reference:

Fishing_Catchable
{
    Min_Relocate_Interval 0.3
    Max_Relocate_Interval 1
    Max_Upward_Acceleration 1.3
    Max_Downward_Acceleration 1.75
    Max_Upward_Speed 0.5
    Max_Downward_Speed 1.2
    Upper_Restitution 0
    Lower_Restitution 2
    Min_Target_Delta 0.35
    Max_Target_Delta 0.4
    Min_Target_Position 0
    Max_Target_Position 0.4
    Capture_Duration 2.75
    Escape_Duration 1.25
    Spring_Stiffness 20
    Spring_Damping 4
}

The Lobster's configuration is notable for its Lower_Restitution value of 2 (200% velocity preservation on bottom bounce, causing an energetic rebound), its Upper_Restitution of 0 (full stop on top bounce), and its restricted target position range (0 to 0.4, keeping the target in the lower portion of the playfield). This combination produces a bottom-dwelling catch that stays low and bounces aggressively off the bottom boundary.

Testing fishing rods and catchable fish in single-player

  1. Place the rod's master bundle and .dat files in the local Unturned™ install's mod folder: Workshop/Content/304930/<modID>/Bundles/ and Workshop/Content/304930/<modID>/Items/<RodName>/.
  2. Place the catchable fish item .dat files in their respective item folders.
  3. Configure a spawn table or reward ID that includes the catchable fish items, or use the quest reward system to guarantee specific drops.
  4. Launch Unturned™ in single-player mode.
  5. Open the in-game console with the tilde key (~).
  6. Spawn the fishing rod: @give <rodID>.
  7. Equip the rod in the primary slot.
  8. Approach a body of water (a lake, river, or ocean shoreline).
  9. Cast the line by aiming at the water surface and activating the rod (left mouse button).
  10. Wait for the bite indicator. The time before a bite occurs depends on the Fish_Bite_Interval_Multiplier.
  11. If CatchChallenge_Enabled is True, the catch challenge mini-game appears. Complete the mini-game by keeping the cursor in the target zone.
  12. If the catch succeeds, confirm that XP is granted and a reward item appears in the inventory.
  13. Verify that the reward item matches the configured spawn table or quest reward.

Diagnostic table

SymptomMost likely causeResolution
Rod cannot be equippedUseable field not set to FisherSet Useable Fisher in the .dat file
Cast line does not appearPrefab missing or Type not FisherConfirm Type Fisher; validate prefab in bundle
Bite never occursFish_Bite_Interval_Multiplier too high or water volume not detectedReduce multiplier to 0.5,1.0; confirm casting into valid water
Bite occurs instantlyMultiplier too low or no water volume checkSet multiplier to 1.0 or higher for standard behavior
Catch challenge does not appearCatchChallenge_Enabled is False or missingSet CatchChallenge_Enabled True
Catch challenge cursor too large or smallCatchChallenge_CursorSize value is wrongAdjust to 0.1 (hard) to 0.3 (easy)
Player always wins the challengeCapture_Duration too low or Escape_Duration too high on all fishTune per-fish catchable properties; check the fish item's dictionary
Player always loses the challengeCapture_Duration too high or Escape_Duration too low on the fishTune the fish's dictionary values; verify the cursor size is not too small
Reward item is not a fishSpawn table (Reward_ID) contains non-fish itemsConfigure the spawn table to contain only fish-type items
XP reward always the same valueReward_Experience_Min equals Reward_Experience_MaxSet different min and max values for a random range
Fish appears in inventory but cannot be consumedUseable field on fish item is not set correctlySet Useable Food on the fish item if it should be consumable
Fish has no Fishing_Catchable behaviorFishing_Catchable dictionary missing from fish itemAdd the Fishing_Catchable block with at least the core fields
WaterVolumes mode falls back unexpectedlyWater volume has no reward table defined in the level assetDefine per-volume rewards in the level asset; or switch to Rod mode
Quest reward does not appear on first catchQuest_Rewards and Quest_Reward_N fields missing or referencing wrong IDAdd Quest_Rewards 1 and Quest_Reward_0 <itemID>
Rod prefab shows pink materialMaterial not assigned or shader missing in the bundleRebuild the prefab bundle with assigned materials

Frequently asked questions

Can a fishing rod be used without water?

No. The fishing rod requires a water volume to function. Casting the line onto dry ground produces no bite and no interaction. The engine detects water volumes in the level and refuses to start the fishing sequence if no water is present at the cast point.

How does FishingRewardMode WaterVolumes work in practice?

When FishingRewardMode WaterVolumes is set, the engine checks the water volume at the cast point for a reward table defined in the level asset. Level designers assign reward tables to specific water volumes in the Unity Editor. If the player casts into a pond that has a "Pond Fish" reward table, the rod produces pond-appropriate catches; if the player casts into an ocean volume that has an "Ocean Fish" table, the rod produces ocean-appropriate catches. If the water volume has no reward table defined, the rod falls back to its own Reward_ID table (Rod mode behavior).

Can a fish item be both a catchable and a regular food item?

Yes. A fish item is a standard Unturned™ item (typically Type Food) that additionally carries a Fishing_Catchable dictionary. The dictionary is ignored when the item is not being used in a fishing context. The same item can be eaten for hunger restoration, used in crafting recipes, or placed in storage. The Fishing_Catchable dictionary is only active when the item is referenced in a fishing reward table and caught by a player with a rod.

What happens if I set CatchChallenge_Enabled to False?

The catch challenge mini-game is skipped entirely. When a fish bites after the bite interval, the reward is granted immediately without any player interaction. This is the backwards-compatible behavior that matches older Unturned™ versions that did not have the catch challenge system. Servers that want fishing to be a simple resource-gathering activity without mini-game mechanics should disable the challenge.

Can I have multiple fish types with different difficulty levels?

Yes. Each fish item has its own independent Fishing_Catchable dictionary. You can create a spectrum of fish from very easy (low acceleration, long capture duration, long escape duration, infrequent relocation) to very difficult (high acceleration, short capture duration, short escape duration, frequent relocation). The rod does not select which fish appears; the spawn table or reward table determines which fish is rewarded, and that fish's Fishing_Catchable values determine the challenge difficulty.

Can a rod have no catch challenge and still produce different fish?

Yes. The catch challenge system and the reward system are independent. A rod with CatchChallenge_Enabled False still produces rewards from its reward table. The fish themselves are not aware of whether the challenge was active; the Fishing_Catchable dictionary is only meaningful when the challenge is enabled.

What is the difference between the rod's Reward_ID and Quest_Rewards?

Reward_ID references a legacy spawn table that can produce a random item from a weighted pool. Quest rewards (Quest_Rewards, Quest_Reward_N) are guaranteed rewards that always produce a specific item. Both can be active simultaneously on the same rod. The typical configuration is to use Reward_ID for the common fish pool and Quest_Reward_N for a guaranteed special item on the first catch or on a specific condition.

How do I make a fish uncatchable (too hard for any player)?

Set the Fishing_Catchable values to extreme levels: a Capture_Duration of 30 seconds, an Escape_Duration of 0.1 seconds, Min_Relocate_Interval of 0.1, Max_Upward_Acceleration of 10.0, and a CursorSize of 0.01 on the rod. However, setting a fish to be theoretically uncatchable is not recommended in production mods. If a fish should appear only under specific conditions, use the spawn table system to gate its availability rather than making it technically possible but practically impossible to catch.

Does fish difficulty affect the XP reward?

No. The XP reward is determined by the rod's Reward_Experience_Min and Reward_Experience_Max fields and is independent of the fish's catch challenge difficulty. A legendary fish that is very hard to catch gives the same XP reward range as a common fish if both are caught with the same rod. The progression incentive for catching difficult fish is the item reward (a rare fish item with high food value), not the XP yield.

Can I fish from a boat or raft?

Yes. Fishing rods work from any platform that positions the player above a water volume, including boats, rafts, docks, bridges, and player-built structures over water. The engine does not check the player's vertical support; it only checks that the cast point intersects a water volume.

Can fishing rods break or degrade?

Fishing rods do not have a native durability or wear system specific to the Fisher asset type. However, the Allow_Damage, Durability, and Wear fields inherited from ItemAsset can be configured to make a fishing rod degrade with use. The cohort recommendation is to leave durability fields at their defaults (indestructible) for fishing rods unless the server economy explicitly requires consumable fishing equipment.

Best practices

  • Set CatchChallenge_Enabled True for interactive fishing gameplay, False for simple resource gathering
  • Tune Fish_Bite_Interval_Multiplier based on the target gameplay pace; 0.5,1.0 for active fishing, 1.5,2.0 for relaxed fishing
  • Author at least three fish types per rod (common, uncommon, rare) to create catch variety
  • Use FishingRewardMode Rod for standalone fishing mods; use WaterVolumes only on custom maps with designed fishing zones
  • Set Capture_Duration lower than Escape_Duration for easy fish, higher for hard fish
  • Ensure Reward_Experience_Min and Reward_Experience_Max form a meaningful range; avoid identical values when variance is desired
  • Match the Fishing_Catchable values to the fish's rarity tier so players can develop expectations about difficulty
  • Test every fish type in single-player by forcing it as a guaranteed reward to verify its catch challenge behavior
  • Design fish items as consumable food items with appropriate Food, Water, and Health values
  • Keep the Fishing_Catchable dictionary values within reasonable ranges; extreme values (above 5.0 for acceleration or above 0.99 for restitution) produce unpredictable behavior

Advanced considerations

Fishing rod prefab authoring

The fishing rod prefab in the master bundle must include the standard item interaction components plus an animation controller for the casting animation. The minimum prefab hierarchy is:

MyRodPrefab (root, with UseableFisher script)
├── Body (MeshRenderer + MeshFilter for the rod model)
├── Animator (Animator component with casting animation states)
│   └── Armature (if the rod has animated sub-meshes like a reel)
└── AudioSource (configured for spatial 3D for casting sound)

The Animator Controller must include at least the casting animation state. The casting animation is triggered when the player activates the rod. Fishing rods without an Animator Controller will not play a casting animation; the rod will activate silently, which is a common first-time authoring oversight.

Integrating fishing with server economies

On roleplay servers, fishing can function as an economic activity. Fish items can be sold to NPC vendors, traded between players, used in cooking recipes, or consumed for sustenance. The rod itself can be a craftable item requiring components from other professions (woodworking for the rod body, metalworking for the reel). The fishing system's modular design supports any economic model; the rod .dat and fish .dat files are the input configuration, and the server's plugin layer handles the economic rules.

Quest-integrated fishing with special catches

The quest reward system allows rods to guarantee specific catches on a first-catch basis. A rod with Quest_Rewards 1 and Quest_Reward_0 <itemID> guarantees that the player receives the specified item on the first successful catch. Subsequent catches use the standard reward table. This pattern is used for quest fish that are required for storyline progression: the player must catch a specific fish once, and after that, normal fishing resumes.

Multi-volume maps with distinct fishing zones

On custom maps, level designers can define multiple water volumes with different reward tables. A mountain lake might contain only trout, a coastal ocean volume might contain salmon and cod, and a cave pool might contain a unique legendary fish. Each water volume's reward table is configured in the level asset, not in the rod's .dat. The rod in WaterVolumes mode adapts to whichever volume the player is fishing in, providing a seamless fishing experience across the map's distinct zones.

Fish as crafting ingredients

Fish items are standard items and can be used as ingredients in crafting recipes defined in blueprint assets. A recipe might require two raw fish to produce one cooked fillet, or three specific fish types to produce a special potion. The blueprint recipe references the fish item's ID as an ingredient. See Blueprint Asset Reference for the crafting recipe configuration.

Appendix A: Fisher asset .dat field quick reference

FieldTypeRequiredDefault
IDuint16Yes,
GUIDuint128Yes,
Typeenum (Fisher)Yes,
NamestringYes,
RarityenumNoCommon
SlotenumYes,
Size_Xuint8Yes,
Size_Yuint8Yes,
Useableenum (Fisher)Yes,
Reward_Experience_Minint32No3
Reward_Experience_Maxint32No3
Reward_IDuint16No0
Fish_Bite_Interval_MultiplierfloatNo1
FishingRewardModeenumNoRod
CatchChallenge_EnabledboolNoFalse
CatchChallenge_CursorSizefloatNo0.2
CatchChallenge_GravityfloatNo1
CatchChallenge_AccelerationfloatNo1
CatchChallenge_UpperRestitutionfloatNo0.5
CatchChallenge_LowerRestitutionfloatNo0.5
CatchChallenge_CaptureSpeedfloatNo1
CatchChallenge_EscapeSpeedfloatNo1

Appendix B: Fishing_Catchable dictionary field quick reference

FieldTypeRequiredDefaultUnit
Capture_DurationfloatNo2seconds
Escape_DurationfloatNo2seconds
Spring_StiffnessfloatNo16multiplier
Spring_DampingfloatNo4multiplier
Min_Relocate_IntervalfloatNo1.5seconds
Max_Relocate_IntervalfloatNo2seconds
Max_Upward_AccelerationfloatNo1.5m/s^2
Max_Downward_AccelerationfloatNo1.2m/s^2
Max_Upward_SpeedfloatNo0.6m/s
Max_Downward_SpeedfloatNo0.45m/s
Upper_RestitutionfloatNo0.60,1
Lower_RestitutionfloatNo0.40,1
Min_Target_DeltafloatNo0.3normalized
Max_Target_DeltafloatNo0.4normalized
Min_Target_PositionfloatNo0.10,1
Max_Target_PositionfloatNo0.90,1

Appendix C: Fish rarity catch difficulty template

TierCapture_DurationEscape_DurationRelocate_Interval rangeMax_Acceleration
Common1.52.52.0,4.01.2
Uncommon2.02.01.5,3.01.5
Rare2.51.51.0,2.01.8
Epic3.01.20.5,1.52.2
Legendary3.50.80.3,1.02.5

Appendix D: External references

ResourceURLNotes
Smartly Dressed Games modding documentationhttps://docs.smartlydressedgames.com/en/stable/Official field reference; check for fishing system changes in recent Unturned updates
Unturned on Steamhttps://store.steampowered.com/app/304930/Unturned/Game changelog; changelog notes may reference fishing system changes
Item Asset Anatomy/items/item-asset-anatomyShared field reference for all item types
Blueprint Asset Reference/items/blueprint-asset-referenceCrafting recipe configuration for fish as ingredients
Master Bundle Export/items/master-bundle-exportUnity prefab packaging workflow; applies to rod prefab

Appendix E: Fisher mod authoring checklist

Before publishing a fishing rod mod to the Steam Workshop, confirm the following:

  • [ ] Type Fisher is present and correct
  • [ ] Useable Fisher is set
  • [ ] Reward_Experience_Min and Reward_Experience_Max are set to the intended XP range
  • [ ] Reward_ID references a valid spawn table or is omitted if not used
  • [ ] Fish_Bite_Interval_Multiplier is tuned for the target gameplay pace
  • [ ] FishingRewardMode is set to Rod (or WaterVolumes for custom map integration)
  • [ ] CatchChallenge_Enabled is set according to the desired fishing style
  • [ ] Catch challenge fields are tuned for the intended difficulty level
  • [ ] Master bundle contains the rod prefab with animator controller and casting state
  • [ ] At least one fish item is configured with Fishing_Catchable dictionary
  • [ ] Fish items have appropriate Useable Food or other type configuration
  • [ ] Spawn table includes the fish items (if using Reward_ID)
  • [ ] GUID is fresh, not copied from another asset
  • [ ] ID is in the 50000+ range
  • [ ] Bypass_ID_Limit True is present for IDs above 2000
  • [ ] English.dat files are authored for both the rod and each fish item
  • [ ] Tested in single-player: cast, bite, catch challenge, reward, consume

Document history

VersionDateAuthorNotes
1.02026-07-2657 StudiosInitial publication. Full Fisher asset .dat field reference, Fishing_Catchable dictionary (folded from #36), catch challenge system, reward mechanics, worked rod and fish examples, balance tuning tables.

Cross-references