Voidfin devlog 04  ·  22 August 2026

What the deep lets you keep

Last time, Voidfin got its verb: you can fish now. But a verb isn't a game. For a few days you could stand at the water, land a salmon, watch it drop into your pack — and then nothing. The fish weighed nothing. You could catch a hundred and feel exactly as much as catching none.

A thing you can do, with no reason to do it, is a toy. This entry is about the three systems that turn the fishing into a game — by giving the catch something to lose, something to keep, and something to share.

The long climb back

The oldest idea in a roguelike is permadeath: lose, and you lose everything. Voidfin sharpens that to a single object — your hold.

A fish you land isn't yours yet. It sits in the hold, provisional. Every level now has a < as well as a > — a way back up, and eventually a way out. To keep a catch you have to carry it all the way to the surface and bank it there. Only then is it real. Die on the way — starve in the dark, or worse, once there are worse things — and the whole hold goes back to the deep. You climb out with what you can carry, or you don't climb out at all.

And here's the cruelty that makes it work: the best fish are the deepest. The rarer a species, the lower it lurks, so the catch you want most is the one you must carry up the longest, hungriest, most dangerous climb. Every pool deeper is a better prize and a worse gamble. The entire game lives in one sentence you'll say to yourself over and over: one more pool, or out while I still can?

A ledger that outlives you

Permadeath has a quiet design problem. If death erases everything, why should you care about a run three deaths ago? Without something that lasts, the game is just an amnesiac loop — each run sealed off from the last, none of them adding up to anything.

So one thing, and only one thing, survives your death: the bestiary. Every species you have ever banked is written down there permanently — through deaths, through closing the tab, through everything. Press B to see it. The common fish fill it in quickly. The rare, deep ones sit as locked, unnamed rows until the day you finally carry one up into the light.

Voidfin's bestiary screen: a list of fish species, the caught ones named with a tally of how many have been banked, the uncaught ones shown as locked unknown rows, with a count of species logged.
The bestiary: everything you've ever banked, kept forever. The commons fill fast; the deep rarities stay locked until the day you carry one out. There's one down there the guidebook has no name for.

This is the reason to come back tomorrow. A run can end badly — you can die on the climb with a full hold and lose the lot — and still matter, if somewhere in it you banked one fish you'd never landed before. Death empties your pockets. It never touches your record.

Everything you carry is a maybe. The only thing you truly own is the list of what you've already brought home.

The same dark, for everyone

Back in the very first devlog I mentioned, almost in passing, that every level grows from a seed — one number, and the same number always grows the same dungeon. At the time that was a convenience for me: reproducible bugs, shareable levels. It turns out I'd built the daily run months before I got round to adding it.

Point that seed at the calendar and you get exactly that. Press D on the title screen and you play today's run: everyone who fishes on a given day gets the same dungeon, the same water, the same fish in the same places. Which means, for the first time, your run and mine are worth comparing. Climb out and you can copy a spoiler-light result to paste wherever you like:

Voidfin 🎣  Daily 2026-08-22
▼ depth 5   🐟 7 banked   ✦ 1 new
rarest: voidfin
gamecodeschool.com/games/play

There's a lesson in how cheap that was to build, and it's one I'd hand to anyone making anything: make the world deterministic from day one. Reproducibility is nearly free if you bake it in at the start and worth a small fortune later. The daily cost me almost nothing, because first-devlog me — for entirely selfish, debugging reasons — already made the same number always grow the same dark.

A game now, not a toy

So that's the shape of it. Descend for rarer fish; gamble the climb to bank them; watch the ledger slowly fill with things you've pulled from the deep; and see how today's dungeon treats everyone else. Fishing was the verb. This — the hold you can lose, the record you can't, and the day you all share — is the game built around it.

No roadmap, as ever. The door that leads somewhere colder than any dungeon is still a rumour between me and the deep. But there's a real game here now, with stakes and a memory, and a month ago there wasn't. That still feels like the whole point.