Home / Blog / 13 to 172 fish

August 11, 2026 Dev Note

Creature Fishing shipped with 13 fish. Getting to 172 was a rendering problem

The pitch for this game is a fish index. You stand on a tiny island in a wooden crate, you catch things, and the index fills up.

On launch day that index had thirteen entries in it.

Creature Fishing: an island inside a wooden crate, with a small creature on the beach
The island. Everything happens within these four walls.

Content is not free in a browser

The obvious assumption is that adding a fish means adding a fish. Draw it, give it a name, put it in the table, done.

That is not what happens. Every species is data the browser has to hold and draw, and a browser tab is not a games console. Past a certain count the whole thing starts moving through treacle. Not crashing, which would at least be honest, but getting gradually worse in a way that makes the game feel cheap.

I hit that wall well before 172. The index was the core idea of the game and the platform was telling me the core idea was too expensive.

The fix was upstream of the fish

What I had to accept is that this was never a content problem. It was a rendering problem wearing a content problem's clothes.

As long as each additional fish cost the same as the last one, the number of fish was capped by the browser, and no amount of art was going to move that cap. So instead of adding fish, I went back and rewrote how fish get drawn, with one goal: make adding another one stop being expensive.

Once that was true, the cap moved from a technical limit to a question of how many I felt like designing. Thirteen became 172.

CategoryCountWhat is in it
Common102Real fish and sea creatures, from red sea bream up to the blue whale, plus prehistoric ones like Xiphactinus
Fantasy51Invented for this game. Moon-Lantern Fish, Emberglass Koi, a juvenile rift leviathan
Mythos19Eleven Cthulhu Mythos entities and eight creatures from sea folklore

The nineteen in the last row are the ones the game is really built around. The whole point is that you are quietly working through the tuna when something ancient takes the hook.

Then it paid for itself somewhere else

Here is the part I did not expect.

Months later I was building 500 Million Years, which has voice acting in it. Adding audio blew the build size up immediately, and for a browser game that is fatal in exactly the same way too many fish is fatal.

The compression approach I had worked out for the fish applied straight to audio files. Same problem shape, completely different content, and it worked the first time.

Solving a problem properly rather than working around it means you get to keep the solution. That is not a lesson I would have believed if someone had just told me.

The other things that broke

The index was the big one, but the launch window had the usual run of smaller failures.

DateWhat happened
July 24Online play added. The game stopped being solo and became six shared islands holding up to twelve people each
July 25The index shipped, which is when the rendering rewrite happened and the count jumped from thirteen
July 26Fixed players walking through walls, fixed a sea slug that was duplicating itself, and fixed a multiplayer bug where another player could take control of your character

That last one is my favourite kind of bug: not a crash, not an error, just a player suddenly discovering that someone else is driving.

Why the waiting is not padding

One thing I get asked is why you have to sit and wait for a bite instead of just mashing.

If you press before the bite lands, the line comes back up empty. People read that as unresponsive controls. It is the opposite: the waiting is the mechanic. Take it out and the game becomes a button that dispenses fish, and the index stops meaning anything because filling it costs nothing but time spent pressing.

Once the bite hits, though, hesitation loses you the fish. How fast you go from that moment is more or less your catch rate. Slow, then sudden.

The index is still growing. Creature Fishing is free in the browser, no install and no account.

← Back to Blog