Trailer · 16∶9, as made for the game · silent
Browser game · solo build · live
Camelot Nights
卡美洛之夜
Social deduction for 5–10 players, with bots, voice chat and cinematic reveals.
- My part
- Everything in the repository: rules engine, bots, realtime server, web app
- Kind
- Browser game
- Tags
- Browser · 5–10 players · Bots · Voice chat
The game
Merlin knows the traitors; the Assassin hunts Merlin.
Everyone is dealt a secret role. Each round a leader proposes a quest team, the table votes, and the team plays success or fail in secret. Three successes win for the loyal side, unless the Assassin then names Merlin.
Making of
01 Built
One engine, every screen
A pure TypeScript rules engine gives each player only their own view of the game. The bots play from that same view, so they cannot cheat: they keep suspicion scores and propose teams from them. The engine is tested with 1,500 simulated games.
Source · packages/engine · commit 34b594d, 2026-09-30
02 Problem
A reveal is a shared moment
The role reveal, the vote flip and the quest cards are cinematics. Every seat has to see them in the same order, and nobody may act while one is still playing.
Source · commit f0bc526, 2026-09-30
03 Decision
The server keeps the clock
Cinematics are queued with server timestamps, results are held until each reveal ends, actions are rejected while revealing, and the game waits for every player to confirm their night. The realtime server became one Cloudflare Durable Object per room, with hibernating WebSockets and alarms that wake the bots.
Source · commits f0bc526 and b2a4a77, 2026-09-30
04 Now
On phones, and under test
On a phone you press and hold the card to turn it, and the quest track sits above the table. A suite of 61 multi-client scenario checks runs in CI against a local Worker.
Source · commits 1f3028f and 46c307f, 2026-09-30
On screen
The roles
Turn the cards over to see who is who.
Tap a card to reveal a role · Illustration


