Inspiration

FATHOM started from one image: a diver's flashlight is the only thing keeping them alive in the dark, and the only thing that gives them away to whatever's down there. Everything else in the game grew out of taking that tension seriously - light as your one resource, and using it always costs you something.

What it does

FATHOM is a top-down deep-sea diving game. You harvest kelp for a quick, low-stakes trickle of light, and hold your beam on glowing creatures to scan them - a 5-second read that reveals whether they're safe (a big reward) or a hunter in disguise (a real cost, and it gives your position away). The deeper you go, the harder that read gets: a hunter's tell shifts from an obvious red glow near the surface to a wrong pulse rhythm, then a wrong shape entirely, then all of it mixed together at the greatest depths. Checkpoints, three lives per dive, and a currency earned from how deep you got keep every attempt building toward the next one.

How we built it

Built end-to-end with Claude Code (Claude Sonnet 5) — self-contained Three.js and HTML5, no engine, no build step, no CDN. Every mechanic went through the same loop: describe the feel we wanted, get a working version, actually play it, then adjust based on what the play revealed rather than what the plan predicted.

Challenges we ran into

Keeping a "fair but hard" read fair was the constant fight — a tell that's too obvious isn't tension, one that's genuinely unreadable isn't fair, and the right answer changed as the depth-based escalation system got built out. A few real bugs came from multiple hunters resolving in the same frame and a scan beam not clearing itself after certain deaths — both root-caused and fixed with dedicated regression tests rather than guessed at.

What's next for FATHOM

More creature species with their own tell logic, a deeper equipment economy built on the Fathoms currency, hand-authored trench biomes, and eventually a social layer - async multiplayer where one player pilots the sub while others harvest alongside them, turning a dive into a shared run.

Built With

Share this project:

Updates

Submission history