Rooms, NPCs, quests, and jokes stay in typed modules compiled into the Worker. A bad line is a revert, not a migration.
// featured case study · games and interactive · 2026
The Department of Destiny issued ticket 0001 to the entire queue.
The villain is a filing system. It is winning.
We built a free comedy MUD in the browser. You are the Chosen One. So is everyone else in the room. Shared world. Persistent. Playable in a tab. Typing optional.
- Product problem
- Prophecy games center one hero. Bureaucracy centers the paperwork.
- Build decision
- One shared persistent world as typed TypeScript modules, not CMS rows. One Durable Object per zone. Hibernating WebSockets.
- Player access
- Free. Nothing to install. Clickable green words.
- Content rhythm
- Zones ship like seasons, authored as code.
// the product problem
Most chosen-one games ask you to believe you are special alone.
That joke is tired. The funnier truth is institutional: the letter goes out hundreds of times, the clerk is pleasant, the procedure is intact, and nobody has filed a correction. We wanted a multiplayer text world where the satire lands on the office, not on the player.
// product decision
When the joke is the product, the authoring surface has to move at the speed of a commit.
We could have put rooms in a CMS. We did not. The live game is a browser MUD, not a graveyard of earlier prototypes marketed as a roadmap.
Typing is optional on purpose. A comedy MUD that gates laughs behind keyboard fluency is a different product. Keeping the door open mattered more than looking hardcore.
The world is multiplayer and persistent. It does not need to burn money while empty. Durable Object hibernation keeps the fiction alive without a permanent party in the server room.
// the system
A shared world that ships like a season, not a server demo.
One shared world. A terminal that behaves. Zones that open like seasons. A marketing site that talks like an intake counter, not a landing-page template. Under that surface, the build keeps mutable state narrow and the deploy honest.
- 01 Shared world
Several hundred wrong Chosen Ones can hold the same ticket at once. Every green word is clickable. The prompt suggests the rest.
- 02 Edge runtime
Cloudflare Workers with one Durable Object per zone, plus hibernating WebSockets so the world can sleep without going soft.
- 03 Data split
Neon and Drizzle for what actually needs a database. Rooms, NPCs, quests, and jokes stay in typed modules. An eight-validator build gate stops a broken world-graph from shipping.
- 04 Delivery
CDN for generated art at media.wrongchosen.com. Marketing SEO, accessibility, and performance shipped with the game, not as a later cleanup.
// the product, in frames
Screens from the shipped surface.
// what it holds
Proof, not adjectives.
The useful bits: what changed for the people using it, and what the stack actually is.
Playable at wrongchosen.com in the browser. No download, no launcher, no pretend beta gate.
Featured on games.threesided.com as the studio hot build (changelog v0.11.0, 2026-08-11).
Durable Objects per zone, hibernating WebSockets, TypeScript world modules, and an eight-validator build gate on threesided.com/work.
- TypeScript
- Cloudflare Workers
- Durable Objects
- Neon
- Drizzle ORM