the growordie blog
Guides, strategy and engineering notes from the team behind the multiplayer snake game with no food, where surviving is the score.
-
the game
growordie: the multiplayer snake game where surviving IS the score
No food, no grind. You grow 9 cm every second just by staying alive, everything you touch kills you, and kills transfer 40% of the victim's size. The full rules of growordie and why we deleted the pellet.
-
product
3 runs and gone: rebuilding a game's retention loop
Session retention looked fine and I was still losing everyone: people played three rounds and vanished. The moment it clicked, every fix I shipped after (near-miss framing, the grudge respawn, a daily board that resets, streaks, cosmetic progression), the before/after of the death screen, and the acquisition spark I still haven't found.
-
strategy
How to grow past 20 meters: a growordie strategy guide
Most players die under 8 meters playing slither.io habits. How proximity heat, boost economics, the 40% kill trade and the shrinking wall actually work, and how to exploit each one.
-
compare
Games like slither.io in 2026 (and the one that removed the food)
An honest comparison of slither.io, agar.io and wormate.io ten years into the io era: what still holds up, what aged, and where growordie fits. Biases declared.
-
history
From Nokia Snake to massive multiplayer: 45+ years of snake games
Blockade in 1976 had no food either. How one rule survived arcade cabinets, a billion Nokia phones and the io boom, and why the genre advances by subtraction.
-
behind the scenes
I don't review the code. I play the result.
Ten years an engineer, and an AI wrote every line of this one: the netcode, the collision math, the whole server. The honest split of who did what: the AI wrote the code, I did everything else, standing up the infra, buying the domain, deploying, unblocking, iterating, deciding. Plus why I think line-by-line code review is quietly ending, at least where I sit.
-
behind the scenes
How the AI plays its own game: the star bot behind the clips
I couldn't record 81 spectacular runs by hand, so I taught a program to play my own game well enough to film itself. How the star bot reasons with the real server formulas, a 16-arc lookahead, farm-then-hunt phases and a predictive cut-off, and the pipeline that cuts each run into a clip. It's a content generator, never a player.
-
engineering
1,000 players per CPU core: the architecture of a browser MMO
Authoritative 30Hz simulation, 11-byte binary snapshots, an incremental O(1) spatial hash and viewport AOI: the measured numbers behind growordie's server, on vanilla Node.js.
-
engineering
The arena has to outlive the process: zero-downtime deploys
Every deploy used to wipe the in-memory arena and silently eat every run in progress. Here is how growordie ships updates without kicking anyone out: a graceful shutdown that banks scores and snapshots the world to Postgres, then a reconnect that rebinds your socket to the same snake, so it is still there when the new code boots. With the honest limits.
-
engineering
How I fixed collision tunneling with swept segments in a 1000-player browser snake game
Players were driving straight through other snakes without dying. The two ways discrete collision tunnels: spatial (threading the gap between body samples) and temporal (a boosted head jumping the fence between ticks), the fixes that don't work, and the swept segment-vs-segment check that closes both. Real code, measured cost.
-
engineering
How growordie.io works: netcode & rendering, in animated diagrams
Five animated SVG diagrams of the engine: the incremental spatial hash, viewport AOI, binary netcode timing, swept segment-vs-segment collision, and the no-shadowBlur glow. Watch each one move.
-
engineering
O(1) collisions with an incremental spatial hash
My first prototype fell over at fifteen snakes, I was sure it was a memory leak. It was a quadratic collision loop. The boring little grid that fixed it, why a snake never teleporting is the whole trick, and where I'm honestly fudging the O(1).
-
engineering
You can't send N² updates: area-of-interest with per-client deltas
A thousand players sending everyone's state to everyone is a million snake-states per snapshot. The coarse-grid viewport query and the per-client known-set delta (add once, tiny updates after, drop it when it leaves your camera) that turns N² into N-times-what-you-can-see.
-
engineering
A snake in 11 bytes: hand-rolling a binary protocol over WebSocket
Why I ditched JSON, and how each snake update fits in 11 hand-packed bytes: u16 positions, a skin and a bot flag sharing one byte, and the 3-byte turn-intent input that quietly fixed a zigzag bug I'd blamed on my math for a week.
-
engineering
Neon in canvas 2D without shadowBlur: 0.1ms/frame
There's no shadowBlur anywhere: that thing wrecks your framerate. Every glowing snake is four flat low-opacity strokes faking a halo, plus the pile of things I decided NOT to do to hold 60fps on a phone.
-
game design
The breathing arena: designing an io game where absence is punished
Our first prototype's dominant strategy was hiding. The design story of proximity heat, the population-scaled arena, the 40% bounty, the kill cam and the deliberately boring bots.