DEV Community

Cover image for I built a free multiplayer board-game portal — no download, just a browser
diceonaut
diceonaut

Posted on

I built a free multiplayer board-game portal — no download, just a browser

I wanted a place to play the board games I grew up with — Ludo, Carrom, Snakes & Ladders — with friends, without everyone installing yet another app. So I built one: Diceonaut.

It's a free, browser-based portal for classic board and skill games. No download, no install, no sign-up to start.

What's in it

  • Ludo — the classic 4-player race, online Diceonaut — free multiplayer board and skill games in your browser
  • Carrom — flick, pot, win, with real board physics Diceonaut — free multiplayer board and skill games in your browser
  • 9-Ball Pool — turn-by-turn pool with a proper physics engine Diceonaut — free multiplayer board and skill games in your browser
  • Quoridor — race across the board while walling your opponent off
  • Connect 4, Gomoku, Snakes & Ladders, Tic-Tac-Toe, Duel Deck

Every game runs three ways: online against real players, against AI, or pass-and-play on a single device. You can challenge a friend with a private-room link, climb per-game and global leaderboards, and earn a shared currency across every game.

The tech (briefly)

  • Backend: Go, with authoritative match state held in memory (goroutine-per-match) — the server is the source of truth for every roll and move, so online play can't be cheated.
  • Frontend: React for the portal/lobby (SEO-friendly, prerendered) + Phaser for each game canvas.
  • Realtime: a message-bus transport with a binary fast path for the hot loop.
  • Infra: self-hosted on a single box (Podman), fronted by Nginx + Cloudflare.

Server-authoritative dice were the fun part — the roll is generated and validated server-side, broadcast to every client, so there's no trusting the browser.

Try it

It's live and free: diceonaut.com. Feedback very welcome — especially on the physics games.

Top comments (1)

Collapse
 
frank_signorini profile image
Frank

How did you handle real-time updates and latency in the browser, was it using WebSockets or WebRTC? I'd love to swap ideas on this, following for more content on multiplayer dev.