Fly Fishing Game
A playable Godot prototype where river structure drives fishing behavior.
Fly Fishing Game turns procedural river anatomy, fish holding logic, casting, mending, hatch matching, and a 3D generated river environment into a fly fishing simulator.
What it solves
This is a project that had been in the back of my head of at least a decade, however I knew it would be a big one and challenging to get right. My recent work with AI coding tools made it feasible as much of the technology used is out of my wheelhouse. This is as close to vibe coding as have gotten, and that learning is the biggest thing it solves. I've been pretty happy with the progress I've been able to make without caring much about the code. It will continue to be an AI play ground and hopefully a playable game in the near future.
Current build: procedural river sections, sprite-based angler
and fish systems, and a renderer driven by authored water,
shoreline, gravel, terrain, and prop modules.
Who this is for
- Players who want fishing to depend on reading water
- Godot developers interested in procedural gameplay systems
- Designers balancing simulation detail against readable UI
- Pixel-art builders joining authored tiles with generated worlds
What it does
Fly Fishing Game was a 16-bit style fly-fishing prototype set on a side-scrolling river inspired by the Madison that was been converted to 3D. The current loop lets the player configure a session, scout water, approach fish, manage line, cast, mend, match the hatch, respond to takes, and log catches.
The river simulation models pool-riffle-run cycles, fords, pocket water, exposure, species-specific holding preferences, V-seam spawn offsets, rock and boulder eddies, and seeded section streaming. Fish behavior uses directional vision, intrusion memory, exposure-adjusted spook sensitivity, hatch state, fly matching, and hookset timing. Still rough as I work through the details.
Workflow covered
- Generate fishable water - create river sections with anatomy, depth, current, structure, habitat, and hold scores.
- Read and approach - expose fish behavior, spook rules, visibility, cover, and approach angle through the playable exploration loop.
- Cast and resolve - handle line length, presentation, mending, hatch matching, takes, hooksets, and catch logging.
Technical highlights / stack
Why it matters
This is product and systems work in game form: model the real domain deeply enough that player choices matter, then build a UI and renderer that make the hidden state understandable.
Challenges
- Making procedural rivers feel like readable fishable water instead of noise.
- Keeping simulation and rendering decoupled while still visually coherent.
- Tuning fish spook, cover, fly rejection, line slap, wading, and hook timing together.
- Making casting readable without turning it into an unrelated timing minigame. Realistic casting dynamics are core to the game play, and proving difficult for AI to understand and translate to the game.
- Reducing visual seams at shoreline corners, bank transitions, and section boundaries.
Current scope
Works now
- Session configuration
- Exploration and fish approach
- Casting, drift, and mending
Core systems
- RiverGenerator
- RiverRenderer
- CastingController
- SpookCalculator
- Terrain module pipeline
Still improving
- Bank material transitions
- Section-boundary continuity
- Visual smoke passes
- Fly matching and hooksets
- Catch logbook
- Windows, Android, and iOS support
Related work
What to do next
Review the source if you want to inspect the river generator, renderer split, casting controller, fish behavior, or terrain module pipeline.