games.cavu.clientFrame

Frames a client sends up the games.cavu.subscribeSession socket (DAG-CBOR event-stream framing: header {op:1, t:'#join'|'#intent'|'#ping'} + body).

Repository @pardy.at did:plc:dp7v5b5kejmmzzpwmqyf5wj6 namespace authority
Details · object
Kindobject
Authoritycavu.games
Indexed

Object

object

Properties

frame

requiredunion

#intent

object

A game intent. The host stamps `viewer` and `serverTime` before the game's reduce() sees it; any client-sent values for those are overwritten.

Properties

intent

requiredunknown

Typed by the game: games.cavu.<game>.defs#intent.

seq

requiredinteger

Client sequence number; echoed back as `ack` in snapshots so the client can drop confirmed predictions.

  • minimum: 1

#join

object

Enter a game room. Rooms are chosen by the server for games that declare them (e.g. one room per UTC day).

Properties

game

requiredstring

Pack id, e.g. 'haiku-day'.

  • maxLength: 64

room

string
  • maxLength: 128

viewer

requiredstring

Guest id. Superseded by the authenticated DID once atproto OAuth lands.

  • maxLength: 256

#ping

object

Properties

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Frames a client sends up the games.cavu.tier-madness.subscribeGame socket. Intents only: the server validates each, records it in the player's own PDS (secret move + public commitment), and only then applies it.

  • Bidirectional game session. Server->client messages are below; client->server frames are games.cavu.clientFrame.

  • A game's live channel. The socket is bidirectional: the client sends games.cavu.tier-madness.clientFrame frames (#auth then #create/#join to play, or just #spectate to watch); the server sends a #snapshot of the game as that viewer may see it whenever it changes.