Fishing System
Updated May 25, 2026
The Fishing System supports two fishing styles: rod fishing with bobbers, wait timing, data-table fish selection, and a minigame; and spear fishing with visible fish actors, melee hits, spear attachment, drop, and pickup.
Use this page for component setup, equipment integration, rod/spear flow, data tables, fishing spots, environmental filters, fish quality, and extension points. For shared setup guidance, see the Migration Guide and Integration Guide. Use the System Atlas to look up functions, variables, events, components, and ownership references.
Related Videos
Some videos may have been recorded before V4. The same principles still apply, but asset names, component names, and folder locations may differ. Use this written page and the current V4 names as the source of truth.
Add Fishing and Spearfishing to your project Walkthrough PlayFishing System Devlog Part 2 Play
System Overview
| Method | Requires | Flow | Result |
|---|---|---|---|
| Rod Fishing | Fishing rod equipped. | Equipment Manager -> AC_CH_Fishing -> BP_Bobber -> AC_Fishing_Spot -> minigame -> inventory. | Fish is selected from DT_FishingWaters, then added to inventory on minigame success. |
| Spear Fishing | Spear equipped and visible fish actors in the spot. | Equipment Manager -> melee attack -> BP_Fish_Base -> spear attachment -> drop -> pickup -> inventory. | Player hits visible swimming fish, then picks up the dropped fish item. |
Important: rod fishing does not use the visible swimming fish actors. Rod fishing selects fish randomly from the fishing spot’s DT_FishingWaters spawn list after the wait time. Visible fish actors are for spear fishing.
Core Components
| Component or actor | Purpose |
|---|---|
| AC_CH_Fishing | Character component that manages fishing state, equipped rod state, bobber reference, active fishing spot, current fish, minigame start, and catch result handling. |
| BP_Bobber | Spawned for rod fishing. It floats on the water, checks whether it lands inside fishing spot bounds, and provides visual feedback. |
| AC_Fishing_Spot | Defines fishing bounds, references water/fish data, provides fish data for rod fishing, and spawns visible fish actors for spear fishing. |
| BP_Fish_Base | Visible swimming fish actor used by spear fishing. It roams within spot bounds, can be hit by melee, attaches to the spear, and later drops as an item. |
Equipment and Inventory Integration
The system uses Equipment Manager to determine whether the player can fish.
- When a fishing rod is equipped, AC_CH_Fishing becomes active for rod fishing.
- When a spear is equipped, melee attack can be used against visible fish actors.
- When relevant equipment is unequipped, fishing is disabled.
Fishing rods and spears are configured through DT_Equipment and DT_Items. Example rod entries include FishingRod_Basic in both tables, with item data such as display name, description, item type, icon, mesh, weight, and value.
Inventory integration differs by method:
- Rod fishing: successful minigame -> fish item from DT_Fishes -> inventory -> catch XP.
- Spear fishing: hit fish -> attach to spear -> auto-drop item -> player pickup -> inventory -> catch XP.
Optional Attribute Manager integration can use catch XP for a fishing skill attribute.
Rod Fishing Flow
- The player equips a fishing rod.
- The player presses the fishing input.
- AC_CH_Fishing verifies rod state and enters Fishing state.
- A cast animation plays.
- BP_Bobber spawns and lands in the water.
- The bobber must be inside AC_Fishing_Spot bounds.
- After the configured wait time, the minigame starts.
- A fish is selected from the fishing spot’s DT_FishingWaters spawn list.
- Fish catch difficulty affects the minigame challenge.
- On success, the fish item is added to inventory, quality is determined, XP is awarded, and the bobber is removed.
- On failure, no fish or XP is awarded and the bobber is removed.
The default minigame is timing-based: a marker moves across a success zone, and the player presses at the right moment. Higher fish difficulty can make the success zone smaller, timing faster, or challenge longer depending on implementation.
Spear Fishing Flow
- The player equips a spear.
- Visible fish actors spawned by AC_Fishing_Spot swim in the water.
- The player aims at a fish and performs a melee attack.
- If the attack hits, the fish attaches to the spear mesh.
- The fish follows the spear for the configured duration.
- After the timer expires, the fish detaches and spawns a fish item on the ground.
- The player picks up the dropped fish item.
- The fish is added to inventory and catch XP is awarded.
Spear fishing does not use the minigame. Success is based on player aiming, timing, and fish movement.
Data Tables
DT_Fishes
DT_Fishes defines fish records, item references, catch difficulty, behavior, XP, meshes, and UI data.
| Field | Purpose |
|---|---|
| Fish ID / Row Name | Unique fish identifier. |
| Display Name | Name shown to the player. |
| Description | Fish description. |
| Item Reference | Reference to the matching DT_Items entry. |
| Catching Difficulty | 1-100 difficulty value used by the minigame. |
| Catching Behavior | Behavior such as Smooth, Erratic, Darting, or Lazy. |
| Catch XP | XP awarded when caught. |
| Static Mesh / Skeletal Mesh | Fish visuals for display or swimming actors. |
| Fish Icon | Icon used by UI. |
Example rows from the source include Fish_Bass, Fish_Salmon, and Fish_GoldenTrout, with increasing difficulty and XP values.
DT_FishingWaters
DT_FishingWaters defines water types and fish spawn lists. A water row can include fish references, spawn weights, required weather, required time of day, required season, and fish quality chances.
| Concept | Example |
|---|---|
| Water types | FreshwaterLake, River, Ocean, Pond, Swamp. |
| Spawn weights | Bass 2.0, Salmon 1.0, Golden Trout 0.2. |
| Weather filters | Bass in Sunny/Cloudy/Rainy; Salmon in Rainy/Cloudy; Golden Trout in Sunny. |
| Time filters | Bass in Morning/Day/Evening; Catfish in Evening/Night; Golden Trout in Day. |
| Season filters | Bass in Spring/Summer/Fall; Ice Fish in Winter; Salmon in Spring/Fall. |
| Quality tiers | Bronze, Silver, Gold chances. |
Spawn weights are relative. With Bass 2.0, Salmon 1.0, and Golden Trout 0.2, the total weight is 3.2, so Bass is much more common than Golden Trout.
Fishing Spots
A fishing spot defines the playable fishing area, the water data used by rod fishing, and the visible fish population used by spear fishing.
- Set fishing spot bounds.
- Assign the water type or DT_FishingWaters row.
- Configure max visible fish count for spear fishing.
- Configure fish respawn delay.
- Test bobber placement and visible fish movement.
Rod fishing reads the spawn list. Spear fishing uses the visible fish actors spawned inside the spot.
Example Map
The example map contains preconfigured fishing spots that can be copied into your own levels. Use them as working references for spot bounds, water setup, fish population, and rod/spear behavior.
Workflows
Create a New Fish
- Add a matching item row in DT_Items.
- Add a fish row in DT_Fishes.
- Set display name, item reference, catch difficulty, behavior, XP, meshes, and icon.
- Add the fish to one or more DT_FishingWaters spawn lists.
- Set spawn weight, environmental filters, and quality chances.
- Test rod fishing and spear fishing if the fish has a visible actor setup.
Configure a Water Type
- Open DT_FishingWaters.
- Create or edit a water row such as FreshwaterLake, River, or Ocean.
- Add fish spawn entries.
- Set relative weights and environmental conditions.
- Assign the water row to a fishing spot.
- Test fish selection under different weather, time, and season states.
Set Up a Fishing Spot
- Place an AC_Fishing_Spot actor.
- Configure its bounds.
- Assign the fishing water data.
- Set visible fish count and respawn delay if spear fishing is used.
- Test rod fishing with the bobber inside the bounds.
- Test spear fishing against visible fish actors.
Customize the Minigame
- Create a custom minigame widget or logic layer.
- Implement success/failure conditions.
- Use fish difficulty and behavior values from DT_Fishes.
- Integrate the result with AC_CH_Fishing.
- Test success, failure, rewards, XP, and cleanup.
Summary
Rod fishing is data-driven and minigame-based. Spear fishing is actor-driven and action-based. DT_Fishes defines fish, DT_FishingWaters defines where and when fish can appear, AC_Fishing_Spot defines fishing areas, and AC_CH_Fishing coordinates player rod fishing state.