Ludo CircleTESTER GUIDE

A LITTLE LUCK. A LITTLE STRATEGY.

Find your circle.
Make your move.

Start as a guest, choose two or four players, and bring all four tokens home.

Open the playtest

Development playtest. Availability and game settings may change.

01

YOUR FIRST GAME

From guest to game

  1. Take a seat

    Open the playtest and choose Continue as guest. Keep using the same browser profile to return to that guest.

  2. Choose your circle

    On the home screen, One on one starts a two-player game. A full circle has four players total. Both choices use free matchmaking; empty seats can be filled automatically.

  3. Roll, then move

    Your corner is bottom-left. Choose Roll dice on your turn, then tap an outlined token or its numbered button. A single legal choice moves automatically after the dice reveal.

  4. Finish the circle

    Bring four tokens home and follow the turn countdown. The game shows the final ranks. Choose Play again to return home. Confirming Quit game permanently forfeits that match.

02 · PICK UP YOUR GAME

Reconnect with your guest

Reload the same playtest tab to restore your guest and any active match. After a connection interruption, wait for the reconnect message to clear before playing.

Opening the same guest in another tab replaces the earlier connection. Use Continue here only in the tab where you want to play.

Clearing browser site data or changing browser profiles can lose access to the saved guest. A turn can expire while you are away.

03 · TRY A SLOWER CONNECTION

Watch the game catch up

Expand Network demo. Set Server → you or You → server to 150, 400, or 1,000 ms, with optional jitter. Return both to 0 ms and turn jitter off for normal play; reloading also resets the demo.

These controls delay WebSocket messages. They do not simulate login delay, connection setup, or physical packet loss. The server's turn deadline keeps running; late actions may be rejected.

Command round-trip time includes both network directions and any demo delays. It is not a measurement of one-way latency or a promised response time.

04

FOR CLIENT TESTERS

Public protocol, at a glance

This is a short guide to the player interface. The playtest handles authentication and recovery for you.

InterfacePurpose
POST /v1/auth/guestRegister or sign in with a persisted guest credential and client metadata. Retain the login request ID and body when retrying the same attempt.
POST /v1/auth/refreshRefresh an existing session. Keep the same request ID and body after an uncertain reply.
POST /v1/auth/ws-ticketExchange an access token for a short-lived browser WebSocket ticket.
WSS /v1/realtimeBrowser subprotocols: ludo.json.v1 and ticket.<ticket>. Never put credentials into a URL.
session.syncLoad player and configuration state. Wait for session.syncResult before gameplay commands.
match.join / match.statusJoin with {mode: 2, bucket: "free"} or mode 4; check the current assignment.
game.snapshotRestore the current game state after obtaining the assigned game ID.
game.roll / game.moveSend the current gameId and expectedSeq; a move also includes tokenId.

New domain mutations use a lowercase UUIDv7 requestId. If a reply is uncertain, retry the exact ID and payload. Reconnecting does not create a new match. Apply current server state before enabling another turn action.

First sync message
{
  "type": "session.sync",
  "syncId": "68bd4724-5e9b-4748-820b-a629c8557a79",
  "payload": { "appConfigKey": 1, "configVersions": {} }
}

Example only. Generate your own sync ID; later syncs report the configuration versions your client has cached.