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.

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
.datfields:Reward_Experience_Min,Reward_Experience_Max,Reward_ID,Fish_Bite_Interval_Multiplier,FishingRewardMode - The catch challenge system and its 10 configurable fields
- The
Fishing_Catchabledictionary and its 18 per-fish catch difficulty fields - The
FishingRewardModesystem:Rodmode vs.WaterVolumesmode and fallback behavior - The quest reward system integration for fishing rods
- A complete worked rod
.datexample - A complete worked catchable fish item
.datexample using theFishing_Catchabledictionary - 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.
| Mode | Enum value | Behavior | Fallback |
|---|---|---|---|
| Rod-defined | Rod | The 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-defined | WaterVolumes | The 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 descriptionEach 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 descriptionThe 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.
| Field | Type | Example | Notes |
|---|---|---|---|
ID | uint16 | 50070 | Unique item ID. Use 50000+ range. |
GUID | uint128 hex | a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d | 128-bit globally unique identifier. |
Type | enum | Fisher | Must be Fisher for this asset type. |
Name | string | MyFishingRod | Internal name; also the prefab lookup key. |
Rarity | enum | Common | Rarity tier; see Rarity enum reference in Item Asset Anatomy. |
Slot | enum | Primary or Secondary | Fishing rods are typically equipped to Primary. |
Size_X | uint8 | 3 | Inventory grid width. |
Size_Y | uint8 | 1 | Inventory grid height. |
Bypass_ID_Limit | bool | True | Required for IDs above 2000. |
Useable | enum | Fisher | Must be Fisher. This enables the fishing rod interaction system. |
Reward experience fields
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Reward_Experience_Min | int32 | Optional | 3 | 5 | The minimum amount of XP (inclusive) granted to the player upon successfully catching something. Combined with Reward_Experience_Max to form a range. |
Reward_Experience_Max | int32 | Optional | 3 | 15 | The 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
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Reward_ID | uint16 | Optional | 0 | 2001 | The 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_Rewards | uint16 | Optional | 0 | 1 | The 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
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
Fish_Bite_Interval_Multiplier | float | Optional | 1 | 0.5 | A 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. |
FishingRewardMode | enum | Optional | Rod | Rod | Controls 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
| Field | Type | Required | Default | Example | Purpose |
|---|---|---|---|---|---|
CatchChallenge_Enabled | bool | Optional | False | True | If 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_CursorSize | float | Optional | 0.2 | 0.15 | The 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_Gravity | float | Optional | 1 | 1.5 | The 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_Acceleration | float | Optional | 1 | 1.2 | The 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_UpperRestitution | float | Optional | 0.5 | 0.6 | The 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_LowerRestitution | float | Optional | 0.5 | 0.4 | The proportion of velocity preserved when the cursor bounces off the bottom boundary. Same behavior as UpperRestitution but for the lower boundary. |
CatchChallenge_CaptureSpeed | float | Optional | 1 | 1.5 | A 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_EscapeSpeed | float | Optional | 1 | 0.8 | A 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
}| Field | Type | Required | Default | Unit | Purpose |
|---|---|---|---|---|---|
Capture_Duration | float | Optional | 2 | seconds | How long the player must keep the cursor within the target zone before the fish is caught. Higher values require longer sustained accuracy. |
Escape_Duration | float | Optional | 2 | seconds | How 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_Stiffness | float | Optional | 16 | multiplier | Scales 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_Damping | float | Optional | 4 | multiplier | Reduces 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_Interval | float | Optional | 1.5 | seconds | The 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_Interval | float | Optional | 2 | seconds | The 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_Acceleration | float | Optional | 1.5 | m/s^2 | The upward acceleration of the target zone cannot exceed this limit. Caps how fast the target can move upward when relocating. |
Max_Downward_Acceleration | float | Optional | 1.2 | m/s^2 | The downward acceleration of the target zone cannot exceed this limit. Caps how fast the target can move downward when relocating. |
Max_Upward_Speed | float | Optional | 0.6 | m/s | The 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_Speed | float | Optional | 0.45 | m/s | The 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_Restitution | float | Optional | 0.6 | 0,1 | The proportion of velocity preserved when the target bounces off the top boundary. A value of 0.6 means 60% of velocity is retained. |
Lower_Restitution | float | Optional | 0.4 | 0,1 | The proportion of velocity preserved when the target bounces off the bottom boundary. |
Min_Target_Delta | float | Optional | 0.3 | normalized | When 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_Delta | float | Optional | 0.4 | normalized | When 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_Position | float | Optional | 0.1 | 0,1 | The 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_Position | float | Optional | 0.9 | 0,1 | The 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_Intervaland lowMax_Relocate_Intervalmoves its target zone frequently, making it harder to track - A fish with high
Spring_Stiffnesssnaps to new positions quickly, creating sudden target shifts - A fish with high
Max_Upward_Acceleration, highMax_Downward_Acceleration, and high speed caps has a large movement range and is harder to pin down - A fish with high
Upper_Restitutionand highLower_Restitutionbounces energetically off the boundaries and is hard to stabilize - A fish with a small
Min_Target_Position/Max_Target_Positionrange restricts the target to a narrow band and makes the fish easier to track - A fish with low
Capture_Durationand highEscape_Durationgives 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.0Companion 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.8The 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 FalseThe 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 quality | Recommended multiplier | Effective wait (seconds) | Design intent |
|---|---|---|---|
| Beginner | 1.5,2.0 | 15,40 | Longer wait; fishing is a relaxed activity |
| Standard | 0.8,1.2 | 8,24 | Balanced wait; moderate engagement |
| Expert | 0.3,0.5 | 3,10 | Fast bites; active fishing gameplay |
| Handicap | 3.0+ | 30,60 | Very 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 rarity | Capture_Duration | Escape_Duration | Spring_Stiffness | Relocate_Interval range | Speed caps |
|---|---|---|---|---|---|
| Common | 1.0,2.0 | 2.0,3.0 | 8,14 | 2.0,4.0 | 0.3,0.6 |
| Uncommon | 1.5,2.5 | 1.5,2.5 | 12,18 | 1.5,3.0 | 0.4,0.7 |
| Rare | 2.0,3.0 | 1.0,2.0 | 16,22 | 1.0,2.0 | 0.5,0.8 |
| Epic | 2.5,3.5 | 0.8,1.5 | 20,28 | 0.5,1.5 | 0.6,0.9 |
| Legendary | 3.0,4.0 | 0.5,1.0 | 24,32 | 0.3,1.0 | 0.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
- Place the rod's master bundle and
.datfiles in the local Unturned™ install's mod folder:Workshop/Content/304930/<modID>/Bundles/andWorkshop/Content/304930/<modID>/Items/<RodName>/. - Place the catchable fish item
.datfiles in their respective item folders. - Configure a spawn table or reward ID that includes the catchable fish items, or use the quest reward system to guarantee specific drops.
- Launch Unturned™ in single-player mode.
- Open the in-game console with the tilde key (
~). - Spawn the fishing rod:
@give <rodID>. - Equip the rod in the primary slot.
- Approach a body of water (a lake, river, or ocean shoreline).
- Cast the line by aiming at the water surface and activating the rod (left mouse button).
- Wait for the bite indicator. The time before a bite occurs depends on the
Fish_Bite_Interval_Multiplier. - If
CatchChallenge_EnabledisTrue, the catch challenge mini-game appears. Complete the mini-game by keeping the cursor in the target zone. - If the catch succeeds, confirm that XP is granted and a reward item appears in the inventory.
- Verify that the reward item matches the configured spawn table or quest reward.
Diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Rod cannot be equipped | Useable field not set to Fisher | Set Useable Fisher in the .dat file |
| Cast line does not appear | Prefab missing or Type not Fisher | Confirm Type Fisher; validate prefab in bundle |
| Bite never occurs | Fish_Bite_Interval_Multiplier too high or water volume not detected | Reduce multiplier to 0.5,1.0; confirm casting into valid water |
| Bite occurs instantly | Multiplier too low or no water volume check | Set multiplier to 1.0 or higher for standard behavior |
| Catch challenge does not appear | CatchChallenge_Enabled is False or missing | Set CatchChallenge_Enabled True |
| Catch challenge cursor too large or small | CatchChallenge_CursorSize value is wrong | Adjust to 0.1 (hard) to 0.3 (easy) |
| Player always wins the challenge | Capture_Duration too low or Escape_Duration too high on all fish | Tune per-fish catchable properties; check the fish item's dictionary |
| Player always loses the challenge | Capture_Duration too high or Escape_Duration too low on the fish | Tune the fish's dictionary values; verify the cursor size is not too small |
| Reward item is not a fish | Spawn table (Reward_ID) contains non-fish items | Configure the spawn table to contain only fish-type items |
| XP reward always the same value | Reward_Experience_Min equals Reward_Experience_Max | Set different min and max values for a random range |
| Fish appears in inventory but cannot be consumed | Useable field on fish item is not set correctly | Set Useable Food on the fish item if it should be consumable |
| Fish has no Fishing_Catchable behavior | Fishing_Catchable dictionary missing from fish item | Add the Fishing_Catchable block with at least the core fields |
| WaterVolumes mode falls back unexpectedly | Water volume has no reward table defined in the level asset | Define per-volume rewards in the level asset; or switch to Rod mode |
| Quest reward does not appear on first catch | Quest_Rewards and Quest_Reward_N fields missing or referencing wrong ID | Add Quest_Rewards 1 and Quest_Reward_0 <itemID> |
| Rod prefab shows pink material | Material not assigned or shader missing in the bundle | Rebuild 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 Truefor interactive fishing gameplay,Falsefor simple resource gathering - Tune
Fish_Bite_Interval_Multiplierbased 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 Rodfor standalone fishing mods; useWaterVolumesonly on custom maps with designed fishing zones - Set
Capture_Durationlower thanEscape_Durationfor easy fish, higher for hard fish - Ensure
Reward_Experience_MinandReward_Experience_Maxform a meaningful range; avoid identical values when variance is desired - Match the
Fishing_Catchablevalues 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, andHealthvalues - Keep the
Fishing_Catchabledictionary 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
| Field | Type | Required | Default |
|---|---|---|---|
ID | uint16 | Yes | , |
GUID | uint128 | Yes | , |
Type | enum (Fisher) | Yes | , |
Name | string | Yes | , |
Rarity | enum | No | Common |
Slot | enum | Yes | , |
Size_X | uint8 | Yes | , |
Size_Y | uint8 | Yes | , |
Useable | enum (Fisher) | Yes | , |
Reward_Experience_Min | int32 | No | 3 |
Reward_Experience_Max | int32 | No | 3 |
Reward_ID | uint16 | No | 0 |
Fish_Bite_Interval_Multiplier | float | No | 1 |
FishingRewardMode | enum | No | Rod |
CatchChallenge_Enabled | bool | No | False |
CatchChallenge_CursorSize | float | No | 0.2 |
CatchChallenge_Gravity | float | No | 1 |
CatchChallenge_Acceleration | float | No | 1 |
CatchChallenge_UpperRestitution | float | No | 0.5 |
CatchChallenge_LowerRestitution | float | No | 0.5 |
CatchChallenge_CaptureSpeed | float | No | 1 |
CatchChallenge_EscapeSpeed | float | No | 1 |
Appendix B: Fishing_Catchable dictionary field quick reference
| Field | Type | Required | Default | Unit |
|---|---|---|---|---|
Capture_Duration | float | No | 2 | seconds |
Escape_Duration | float | No | 2 | seconds |
Spring_Stiffness | float | No | 16 | multiplier |
Spring_Damping | float | No | 4 | multiplier |
Min_Relocate_Interval | float | No | 1.5 | seconds |
Max_Relocate_Interval | float | No | 2 | seconds |
Max_Upward_Acceleration | float | No | 1.5 | m/s^2 |
Max_Downward_Acceleration | float | No | 1.2 | m/s^2 |
Max_Upward_Speed | float | No | 0.6 | m/s |
Max_Downward_Speed | float | No | 0.45 | m/s |
Upper_Restitution | float | No | 0.6 | 0,1 |
Lower_Restitution | float | No | 0.4 | 0,1 |
Min_Target_Delta | float | No | 0.3 | normalized |
Max_Target_Delta | float | No | 0.4 | normalized |
Min_Target_Position | float | No | 0.1 | 0,1 |
Max_Target_Position | float | No | 0.9 | 0,1 |
Appendix C: Fish rarity catch difficulty template
| Tier | Capture_Duration | Escape_Duration | Relocate_Interval range | Max_Acceleration |
|---|---|---|---|---|
| Common | 1.5 | 2.5 | 2.0,4.0 | 1.2 |
| Uncommon | 2.0 | 2.0 | 1.5,3.0 | 1.5 |
| Rare | 2.5 | 1.5 | 1.0,2.0 | 1.8 |
| Epic | 3.0 | 1.2 | 0.5,1.5 | 2.2 |
| Legendary | 3.5 | 0.8 | 0.3,1.0 | 2.5 |
Appendix D: External references
| Resource | URL | Notes |
|---|---|---|
| Smartly Dressed Games modding documentation | https://docs.smartlydressedgames.com/en/stable/ | Official field reference; check for fishing system changes in recent Unturned updates |
| Unturned on Steam | https://store.steampowered.com/app/304930/Unturned/ | Game changelog; changelog notes may reference fishing system changes |
| Item Asset Anatomy | /items/item-asset-anatomy | Shared field reference for all item types |
| Blueprint Asset Reference | /items/blueprint-asset-reference | Crafting recipe configuration for fish as ingredients |
| Master Bundle Export | /items/master-bundle-export | Unity 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 Fisheris present and correct - [ ]
Useable Fisheris set - [ ]
Reward_Experience_MinandReward_Experience_Maxare set to the intended XP range - [ ]
Reward_IDreferences a valid spawn table or is omitted if not used - [ ]
Fish_Bite_Interval_Multiplieris tuned for the target gameplay pace - [ ]
FishingRewardModeis set toRod(orWaterVolumesfor custom map integration) - [ ]
CatchChallenge_Enabledis 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_Catchabledictionary - [ ] Fish items have appropriate
Useable Foodor 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 Trueis present for IDs above 2000 - [ ]
English.datfiles are authored for both the rod and each fish item - [ ] Tested in single-player: cast, bite, catch challenge, reward, consume
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial 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
- Tool Asset Reference , the previous article in this section.
- Vehicle Lockpick Tool Reference , the next article; covers the vehicle lockpick tool asset type.
- Item Asset Anatomy , the shared field reference; documents the identity and inventory fields that Fisher assets share with all item types.
- Blueprint Asset Reference , blueprint configuration for fish as crafting ingredients.
- Master Bundle Export , Unity prefab packaging workflow.
- Smartly Dressed Games modding documentation , official field reference.
- Unturned on Steam , game page and community.
