Skip to content

A full room turns a player away with a status line and no way out #20

Description

@WilsonNet

Summary

When a room already holds MAX_PLAYERS humans, the server emits room-full and
the client sets its status text to "That room is full." — and then nothing. The
player is connected, in no room, looking at an arena that will never populate,
with no button, no retry and no explanation of what to do next.

Why it matters

This is the failure mode of a successful session. Sixteen people is the cap, and
the seventeenth is by definition someone who was invited — they followed a link a
friend sent, and the game appears to have simply not worked.

Reproduce

  1. Fill a room to sixteen humans (or use ?fill=16 and take the last seat).
  2. Open the same ?room=<id> in another client.
  3. Observe the status line and nothing else.

Suggested approach

The pieces are already there — room-full carries the roomId, and
online/room.ts can mint a fresh id and rewrite the address bar — so this is
mostly a UI decision:

  • Say what happened plainly, in the React overlay rather than the canvas status
    line, which is easy to miss.
  • Offer the one useful action: start a new room, which is a fresh uuid and a
    reload.
  • Possibly offer to retry the same room, since a seat may free up.

Definition of done

  • A player turned away sees a modal explaining it and can act without touching
    the URL bar.
  • verify-modes.mjs gains a mode that fills a room and asserts the seventeenth
    client is told, rather than left hanging.

Notes

Found while adding uuid-addressed rooms. The room-full message was added in the
same change specifically so this state would not be silent on the wire — the
client half is what is missing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions