Multiplayer without servers: how match codes work
Why you can play a friend on another device without an account, a lobby or a queue: the city, the wind and the whole match fit in a short code.
Asking two people who want to play a game to first create two accounts is a good way to lose both of them. So we made the match itself portable: a code you can paste into a text message.
The city comes from a seed
Every match starts from a seed, and that seed decides the skyline and the wind. The same seed always produces the same city. This is why the code can be short: it does not carry a map, it carries the instructions to rebuild one, identically, on the other device.
The whole state is small
The code also packs the mode, the round, whose turn it is, the score and the craters that the shots have made so far. That is all a turn-based artillery match needs. Because nothing moves between turns except the banana, the state stays tiny — and tiny state is what makes a code, rather than a server, the right container.
Two ways to use it
You can play live: both of you have the game open, and each turn is one new code. Or you can play by correspondence: take your shot, send the code, and come back later. The game does not care which, because it does not need to be connected while it waits.
Where a server still helps
Not everything fits in a code. The online leaderboard is the one part that genuinely needs a server, because its whole job is to remember something across everyone who plays. Everything else — the city, the physics, the match — travels in the code, which is why a duel needs nothing more than two browsers and a way to send a line of text.