The classic board game "Mensch ärgere Dich nicht", in your browser. Create a room, send your friends the link, and play together in real time. You can also play against bots, and there's no account and nothing to install.
- Multiplayer in real time: two to four players share a room and see every move as it happens.
- Rooms: share a six-character code or a link, or make a room public so anyone can find it on the discovery page.
- The whole game: captures, home column, move timer, automatic moves when there's only one option, an optional "must spawn on six" rule, and a fair dice option so nobody waits forever for a six.
- Bots: the host can fill empty seats with computer players, so a game with just one human works too.
- Host tools: change room settings, remove players who have gone quiet, and pass the host role on automatically. After a game, everyone can vote for a rematch.
- Animation and sound: pieces walk around the board, captured pieces fly back to their yard, and the dice roll. All sound effects are generated in the browser, so there are no audio files.
- A live demo on the home page: four bots play each other using the same rules as the real game.
- English and German, light, dark and system themes, and a layout that works on phones.
- No tracking: no accounts, no ads, no analytics.
- Frontend: Next.js (App Router, React 19), Tailwind CSS v4, Radix UI / shadcn/ui, i18next, Lucide icons
- Backend: TypeScript on Bun, using its built-in WebSocket support
- Shared code: a
@ludo/shared package with the game model, the event types and the bot logic, used by both the server and the website
- Tooling: Bun workspaces,
bun test, Prettier, Docker Compose
- The server decides everything. Clients only send actions like "join room" or "move this piece". The server rolls the dice, checks that every move is legal, resolves captures, and sends the new state to everyone in the room. Nothing the browser does can change the outcome of a game.
- Animations run on top of the game state, not inside it. When a state update arrives, the board plays it out as a sequence: a piece walks to its target, and a captured piece stays where it was until the attacker arrives, then flies home. This means animations never hold up the game.
- Reloading doesn't kick you out. A player who reloads the tab or loses their connection can take their seat back for up to five minutes. If the host stays away for 30 seconds, the host role moves to another player and the game carries on.
- One package for the rules. Because the server and the website share the game types and bot logic, they can't drift apart, and the demo on the home page plays by exactly the same rules as a real game.
- Fair dice. Numbers are balanced over the course of a game so a six turns up regularly, while the order stays random.