Ata Kuyumcu's blog is static. Underneath it sits a multiplayer dungeon with slimes, chests, spatial shouts and a dungeon master elected among the browsers.

There is no game server.1

That constraint is what makes the project interesting. Kuyumcu wanted to hide a small dungeon crawler under every page without turning a lightweight site into a permanent backend for a joke most visitors will never discover.

The game is built around two ideas: browsers can talk directly, and they do not need to transmit a world they can all reconstruct themselves.

The blog does not need its own signaling server

Multiplayer uses WebRTC through Trystero.1 2

WebRTC lets browsers open peer-to-peer data channels, but peers first need some shared place to exchange connection information. Trystero can use existing public infrastructure for that introduction, including Nostr relays, BitTorrent trackers or MQTT brokers depending on the chosen strategy.2

In the dungeon, visitors on the same UTC date join the same room. After the handshake, game traffic travels directly between peers.1

Kuyumcu describes the server-side footprint on his blog as one Content-Security-Policy change allowing the relay WebSockets.1

This is not literally infrastructure-free. Public relay infrastructure is still needed for discovery. What disappears is a game server the author has to run.

Everybody gets the same dungeon without downloading it from each other

The map is deterministic.

Every browser takes the current date, derives a seed and feeds the same pseudo-random generator. Same seed, same rooms, corridors and initial monsters.1

Deeper floors derive their own seeds from the date and depth.

Nobody needs to transmit the full dungeon geometry because the geometry is already implied by the generation rule.

The network mostly carries what changes during play: positions, health and events such as opening a chest. Kuyumcu reports that a full update stays under one hundred bytes in his implementation.1

It is an old distributed-systems idea made visible by a tiny game: if two machines know the same function and the same input, sending the complete result can be wasteful.

Monsters still need somebody to obey

Determinism solves the initial state. It does not solve the slime that decides to move left two seconds later.

Two players need to see that monster in the same place, so the game elects an authority.1

On each floor, the peer with the lexicographically lowest id becomes authoritative. It advances monsters every 400 ms, resolves actions and broadcasts state to everybody else.1

If that browser closes, the next-lowest peer takes over from the last broadcast state. Every client already held a copy.

Solo play has unusually efficient governance: you automatically win the election.

The scheme is not trying to solve the cheating and consistency requirements of a competitive MMO. It creates just enough agreement for two strangers to watch the same mimic bite the same player.

1,057 bytes before the door opens

The blog pays almost nothing while nobody discovers the game.

Kuyumcu measures 1,057 bytes for the script loaded on every page. It only listens for the way in. The actual game is dynamically imported afterward: a 94 KB bundle including Trystero and roughly 10 KB of tiles.1

The artwork comes from Kenney's Tiny Dungeon and Tiny Town packs, released under CC0.3 4

Even the sounds are not files. The browser synthesizes them with Web Audio oscillators and gain envelopes.1

That gives the easter egg a nice rule: the cost of the secret is paid by the people who find it, not by everyone walking past.

AI writes the network; the human notices the bricks

Kuyumcu says most of the project was built with Claude Opus during one evening of back-and-forth.1

The model wrote the networking code, then launched two headless browsers that found each other through real public relays and produced screenshots showing that both clients could see each other.1

The human contribution is almost funnier. Kuyumcu noticed that the walls looked wrong.

Kenney's tiles have a visual grammar. Some brick tiles carry edge shadows intended for specific orientations. The first renderer scattered them as ordinary decoration. Kuyumcu opened the sample Tiled map shipped with the asset pack to understand how the pieces were meant to fit, then corrected the renderer.1

That is the sort of thing automated checks struggle to express. Two bots can prove a WebRTC channel works. They may not notice that a wall simply feels visually wrong.

Shouting beats another minimap

The game also has a shout button.

A player broadcasts their position. Others hear a two-note call panned left or right based on direction and faded with distance. If the caller is on another floor, pitch changes to indicate whether they are above or below.1

Kuyumcu says it is his favorite feature.

It is easy to see why. A minimap or arrow could expose the same information. A shout keeps the information inside the fiction: somebody yells in a dungeon and your ears tell you where to look.

The project keeps making decisions like that. The shared world comes from a seed instead of a download. Authority comes from a peer instead of a server. Sound comes from the browser instead of audio files. Game code only arrives after someone discovers the entrance.

The static blog remains a static blog.

It just has an unnecessarily elaborate basement.