How colochampre/chess-sweeper works
Chess Minesweeper combines chess legality with hidden mines, cascading reveals and chain explosions. Players choose local, AI or online play; the engine owns authoritative game and room rules, while the client renders event sequences and the server/Worker carry online play. The README documents matchmaking, room codes, clocks, rematches, private flags and synthesized audio. Paths and arrows follow the tree, excerpts and explicit README contracts; unsampled subsystems are included only where documented, with uncertain wiring omitted.
Main entry points: store.ts Client game state · game.ts Game orchestration · index.ts Cloudflare Worker · online.ts Online transport
Components 22
Player experience
- Modes and setup
packages/client/src/components/Menu.tsx - App shell
packages/client/src/App.tsx - Client game state
packages/client/src/store.ts - Board and table
packages/client/src/components/Board.tsx - HUD and lobby
packages/client/src/components/Hud.tsx - Event playback
packages/client/src/anim/eventPlayer.ts - Synthesized sound
packages/client/src/sfx.ts - Online transport
packages/client/src/online.ts
Game engine
- Game orchestration
packages/engine/src/game.ts - Chess legality
packages/engine/src/legality.ts - Mine placement
packages/engine/src/minefield.ts - Reveal cascade
packages/engine/src/reveal.ts - Chain explosions
packages/engine/src/explosion.ts - Room and clocks
packages/engine/src/room.ts
AI opponent
- Bot decisions
packages/ai/src/bot.ts - Mine probabilities
packages/ai/src/probability.ts - Move search
packages/ai/src/search.ts
Online play
- LAN server
packages/server/src/server.ts - Cloudflare Worker
packages/worker/src/index.ts - Room storage
packages/worker/src/index.ts
Other components
- Player
- Online opponent
Connections 34
- Player → Modes and setup: chooses mode
- Modes and setup → App shell: selects screen
- Modes and setup → Client game state: starts or joins
- App shell → Board and table: renders
- App shell → HUD and lobby: renders
- Client game state → Board and table: provides view
- Client game state → Game orchestration: submits moves
- Game orchestration → Chess legality: checks moves
- Game orchestration → Mine placement: places mines
- Game orchestration → Reveal cascade: reveals cells
- Game orchestration → Chain explosions: detonates mines
- Game orchestration → Client game state: returns events
- Client game state → Event playback: plays events
- Event playback → Board and table: updates pieces
- Event playback → Synthesized sound: plays sounds
- Client game state → Bot decisions: requests move
- Bot decisions → Mine probabilities: infers mines
- Bot decisions → Move search: searches moves
- Move search → Chess legality: generates moves
- Move search → Mine probabilities: scores risk
- Bot decisions → Client game state: returns move
- Client game state → Online transport: sends intent
- Online transport → LAN server: WebSocket
- Online transport → Cloudflare Worker: WebSocket
- Player → LAN server: connects
- Player → Cloudflare Worker: connects
- Online opponent → LAN server: connects
- Online opponent → Cloudflare Worker: connects
- LAN server → Room and clocks: handles room
- Cloudflare Worker → Room and clocks: handles room
- Room and clocks → Game orchestration: applies moves
- LAN server → Online transport: relays events
- Cloudflare Worker → Online transport: relays events
- Cloudflare Worker → Room storage: stores room