Demo

Multiplayer

Seats, turns, presence and table talk - the things every game with more than one player at the table has to say, said the same way in all of them. The state below is fixed; there is no room behind this page.

Seats around a table

Four-handed, arranged by compass point rather than in a list, so the table on screen matches the one in a player's head. Your own seat is always the near one.

AdaPlaying5 cards
BoWaiting4 cards
YouyouWaiting6 cards
CyReconnecting5 cards
18 left

Presence

Five states, one component. A game picks the state; it does not pick the colour, the border or the wording.

AdaPlaying5 cards
It is theirs to play. Lime border, matching an active pile.
BoReadyseated
Seated and ready, before the deal.
CyWaiting4 cards
Connected, waiting on somebody else.
DevReconnectingseat held
Socket gone quiet. The seat is held, not given away.
EliWatching
Here, not playing. Dashed border, dimmed.

Your seat, and the dealer's

Two marks that have to survive being next to each other: the 'you' tag names the seat you play from, the D button names the one that deals. A player can be both.

YouyouWaiting6 cards
Youtag beside the name
AdaWaiting5 cards
Dealerbutton on the avatar
YouyouPlaying6 cards
Both, and to playall three marks at once

Waiting for the table

A game played against other people cannot deal itself - it has no way of knowing everyone has arrived - so the deal is a button, and it says what it is waiting for rather than sitting there greyed out with no reason given.

Waiting for 1 more
Shortdisabled, and says why
Deal
Enough to startminimum met, seats still free
Leave seat
Leave the seathost who wanted to arrange, not play

What the table is told

Anything the server says in words is a toast, bottom-right, raised once for every page on the socket. Components do not grow their own notice banners - these are the four tones there are.

Bo joined the table
Infosomething happened
You took two sevens from Ada
Successsomething worked
Cy has 20 seconds left
Warningsomething is about to go wrong
Not your turn
Dangerrefused, or failed

The commentary

A toast has gone by the time a player looks up. The log is the same messages kept where somebody who was away from the screen can catch up, which matters more the more people are at the table.

tableAda opened the room
tableBo joined
tableCy joined - the table is full
Adadealt
Boasked Ada for sevens
tableAda had none - Bo went fishing
tableCy's connection dropped - holding their seat

The connection itself

The dot in the game bar. A player whose socket has gone should find that out from the interface rather than from moves quietly doing nothing.

Connected
Connectedsolid, lime
Not connected
Connectinghollow, grey
Watching
Watchingseated nowhere, sees everything public

Colours

Presence is the one thing on a table that must never be ambiguous, so each state has its own.

To play#a3e635active seat border, your tag
Away#facc15reconnecting, held seat
Waiting#6b7280connected, idle
Spectator#fde047watching pill
Seat#111827seat and panel background
Avatar#374151initial circle

Measurements

Seat, minimum width
12rem (9.5rem small)
Avatar
2.5rem (2rem small)
Dealer button
1.15rem
Presence dot
0.5rem
Active seat glow
0 0 .6em rgba(163, 230, 53, .45)
Log, maximum height
14rem
Toast position
bottom-right, 4s