Inspiration
Whale migration is one of the longest journeys any animal makes, and almost every part of it now crosses something humans built: shipping lanes, fishing gear, noise, warming water. I wanted a game where you don't read about that in a textbox. You plan the route, you watch the pod shrink, and you feel why "the long way home" got longer.
What it does
Long Way Home is a migration strategy game for five whale species: humpback, gray, North Atlantic right, blue, and sperm. You pick a species, then scrub an era ruler from 1700 to a 2100 future scenario. Each century changes the threats on the route, and the population readout follows sourced historical estimates, with gaps and reconstructions labeled honestly.
Each era has five levels. The first three teach one obstacle each, level four runs the full route, and level five runs the same plan against two weather layouts you see in advance. Every run gives you three cards, each usable once: Reroute, Dive, and Speed, with the third card becoming human help in later eras (Protection in 1900, Slow zone in 2000, Moving sanctuary in 2100). Drag them onto legs of a live 3D ocean atlas, press Enter, and watch the trial play out.
How I built it
- Engine: Godot 4.7.2, GDScript, Forward+ with Metal on an M2 Mac. About 13,000 lines of game scripts.
- Simulation: Trials are deterministic. Each leg's loss fraction is
$$ h = \min!\left(c,\; b_t \cdot s \cdot k_{\text{leg}} \cdot k_{\text{era}} \cdot v_{\text{species},t} \cdot w \cdot f_{\text{card}} \cdot f_{\text{fatigue}}\right) $$
where $b_t$ is the base damage for threat $t$, $s$ is severity, $v$ is species vulnerability, $w$ is the weather modifier, and $f_{\text{card}}$ is the hazard factor of whatever card sits on that leg. Hover previews run the real trial, so the number you see is the number you get.
- Data: Species facts and population timelines come from NOAA Fisheries species pages, cross-checked during the event. Coastlines are Natural Earth 1:110m. Game penalties are authored rules, and the UI says so.
- Art: Each species has a composed flock of 16 individually drawn whales. Vector region masks let individual animals fade out as the sourced population falls, so the opening screen is a population chart you can feel.
- Testing: 29 native Godot test scenes, around 22,000 lines, covering simulation, balance, atlas navigation, fullscreen scaling, storage migrations, and a screenshot capture run that checks 235 layout assertions at two window sizes plus fullscreen.
Challenges I ran into
- Being honest with numbers. The hardest design problem was showing real population data next to game outcomes without letting players confuse them. I ended up labeling every readout: estimate date, source, interpolation, and a clearly marked illustrative projection that holds after ten years instead of pretending to forecast.
- Fullscreen and Retina. With stretch disabled, Godot scales nothing for you. Getting artwork, text, and drag targets to scale together across 960×720, 1440×900, and a 3360×2040 fullscreen took its own test suite.
- Three cards, not a tech tree. Earlier versions had four purchasable protection upgrades. I cut them. Whales don't buy sanctuaries; humans coordinate them. Those became educational facts, and the game got sharper.
- Parallel development. I ran three AI coding agents on separate files under a written contract, with one coordinator owning integration and browser verification. Keeping that from stepping on itself was its own small project.
What I learned
A simulation doesn't need to be realistic to be truthful. It needs to say which parts are real. Once I drew that line clearly, the game could be dramatic about losses and still send players to the sources.
Log in or sign up for Devpost to join the conversation.