RCWeb Dominoes

Dominoes is a shared-screen draw dominoes table for RCWeb. One browser becomes the table display, while every phone becomes a private hand and action controller for its player. The display shows the board, the boneyard, turn flow, and round results, while each phone keeps that player's tiles hidden from the rest of the room.

Icon

icon

The Game

Dominoes recreates a lively shared draw-dominoes table with a digital display-controller split that fits a room really well. The shared screen holds the public state: the chain on the table, the open ends, the boneyard, the current turn, and the running scoreboard. Phones handle the private state: your hand, your legal plays, and your choices about drawing, passing, or choosing which end to play on.

The game supports 2 to 12 players. Each round deals 7 tiles per player, automatically adding extra double-six sets when the table is large enough to need them. The opening move is determined by the strongest opening tile in hand, with the highest double taking priority. After that, players build out from the open ends of the chain, drawing from the boneyard when stuck and passing only when no legal play remains and the boneyard is empty.

Rounds can end in two ways. A player who empties their hand wins immediately and scores the total pip value remaining in everyone else's hands. If the table becomes blocked because everyone passes in succession, the player with the lowest pip total wins the round instead and scores the difference between their hand and the rest of the table. The match continues until someone reaches 100 points.

How To Play

Open /dominoes/ on the shared screen. Players scan the QR code to open /dominoes-control/ on their phones in the same room. Once at least two players are connected, any phone can start the match.

When the round begins, the opening player must place the required starting tile. After that, play moves clockwise. On your turn, tap a playable tile in your hand. If that tile fits both ends of the chain, your phone will ask whether you want to place it on the left or the right.

If you have no legal move and the boneyard still has tiles, draw from it. If the drawn tile can be played, you can use it right away; otherwise it stays in your hand. If the boneyard is empty and you still cannot play, pass the turn.

When someone empties their hand, the round ends and points are awarded from the pips left in the other hands. If the table locks up and everyone passes, the round is blocked and the lowest remaining hand wins instead. After each round, the display shows the result and automatically deals the next one after a short countdown.

Powered By RCWeb

Dominoes uses RCWeb's room-based WebSocket layer to split the experience between one display and many private phone controllers. The display and all phones join the same RCWeb room using the rc values injected by the Java server. The display publishes a QR code with the room already selected, so players can join the correct table without typing anything.

The display owns the live table state. It builds and shuffles the domino sets, deals hands, determines the opening tile, validates legal moves, tracks the open ends, manages the boneyard, resolves blocked rounds, computes scoring, and decides when the next round begins. Because the shared screen is the single source of truth, every phone stays synchronized with the same table and reconnects cleanly if refreshed.

Phones communicate with the display through comms.js and RCWeb function calls. A controller registers the player, receives a tailored snapshot containing that player's private hand and the current public table state, and sends actions such as start, play, draw, and pass. The display pushes individualized updates back after every change, including legal sides for each tile, score updates, turn status, and hand animations. The result feels like a proper shared dominoes table, but it runs on RCWeb's lightweight Java backend and vanilla browser apps.

DocumentationServer TelemetryServer StatsServer HTTP LogServer WebSocket Log