
Case study: one board for everyone, how friend rooms stay fair
If you and a friend both play, but you got an easy board and they got a hard one, the race means nothing. Here is how rooms make sure everyone gets the same game, at the same time.

Step 1: a code and nothing else
A host makes a room and gets a six-letter code. Friends open the link or type the code, then pick a nickname. That is all. There is no account to make, so a room takes a few seconds to join.
Step 2: the same board from one seed
Games are full of random things: where a block falls, which fruit drops, which flag comes next. For a fair race, those must be the same for everyone. When the host presses Start, the room stores one random number, the seed. Every game builds all its random choices from that seed, so each phone produces the identical board.
This needed work in every game. Some used random numbers while playing. We changed them to use the seed. Puzzle games were changed to run through a fixed sequence of levels, so a race covers the same levels in the same order.
Step 3: starting together
Phones have different clocks. If each started a countdown from its own time, some would start seconds before others. So each device first asks the server for the time and works out how far its own clock is off. The host sets a start time a few seconds ahead, and everyone counts down to the same moment.

Step 4: scores without a referee
Each device sends its score about once a second. The room shows everyone's score as faces moving along a track, and when time is up, the final podium. Scores are limited to a sensible range, and nobody can change another player's score. Old rooms are removed automatically after a day.

What we left out on purpose
- No chat. It keeps rooms friendly and removes the need to moderate.
- No real names. Only nicknames, which are stripped of tags and odd symbols.
- No live view of other boards. Each player plays their own board and the scores are compared. That keeps it fast on a slow connection.
What we learned
- Fairness is mostly about randomness. One seed, used everywhere, is simpler than it sounds and easy to test.
- Clocks lie. Without a shared start time, a "race" can start seconds apart.
- Explain it on screen. People thought the game was turn-based or side by side. A short card before the start fixed that.
Try it: host a room, or see multiplayer browser games and the guide to running a team break.


