games.cavu.tier-madness.move

chris.pardy.family

Documentation

One secret move by a player, written (by the game server, on the player's behalf, or by the player) to the round's secret space (skey `{game}-r{round}`). Only the game server can read it until that round's reveal, when the game's players can too (round 0, the category vote, opens at game end). Its CID is published as a games.cavu.tier-madness.commitment (same rkey) in the game's commitment space, so the move can't be changed later. The nonce stops anyone from guessing a low-entropy move (e.g. a tier) by hashing every possibility.

main record

One secret move by a player, written (by the game server, on the player's behalf, or by the player) to the round's secret space (skey `{game}-r{round}`). Only the game server can read it until that round's reveal, when the game's players can too (round 0, the category vote, opens at game end). Its CID is published as a games.cavu.tier-madness.commitment (same rkey) in the game's commitment space, so the move can't be changed later. The nonce stops anyone from guessing a low-entropy move (e.g. a tier) by hashing every possibility.

Record Key tid Timestamp-based ID

Properties

createdAt string datetime Required

An RFC 3339 formatted timestamp.

game string Required

The game's id.

maxLength: 64 bytes
nonce string Required

Random, at least 128 bits (base64url).

maxLength: 64 bytesminLength: 16 bytes
round integer Required

Round number; 0 is the pre-game category vote.

minimum: 0maximum: 20
View raw schema
{
  "description": "One secret move by a player, written (by the game server, on the player's behalf, or by the player) to the round's secret space (skey `{game}-r{round}`). Only the game server can read it until that round's reveal, when the game's players can too (round 0, the category vote, opens at game end). Its CID is published as a games.cavu.tier-madness.commitment (same rkey) in the game's commitment space, so the move can't be changed later. The nonce stops anyone from guessing a low-entropy move (e.g. a tier) by hashing every possibility.",
  "key": "tid",
  "record": {
    "properties": {
      "action": {
        "refs": [
          "#vote",
          "#place",
          "#swap",
          "#double"
        ],
        "type": "union"
      },
      "createdAt": {
        "format": "datetime",
        "type": "string"
      },
      "game": {
        "description": "The game's id.",
        "maxLength": 64,
        "type": "string"
      },
      "nonce": {
        "description": "Random, at least 128 bits (base64url).",
        "maxLength": 64,
        "minLength": 16,
        "type": "string"
      },
      "round": {
        "description": "Round number; 0 is the pre-game category vote.",
        "maximum": 20,
        "minimum": 0,
        "type": "integer"
      }
    },
    "required": [
      "game",
      "round",
      "nonce",
      "action",
      "createdAt"
    ],
    "type": "object"
  },
  "type": "record"
}
double object

The item the player doubles: bonus if it matches the group's tier, penalty if not. Absent when the player didn't double.

Properties

item string Optional

No description available.

maxLength: 300 bytes
View raw schema
{
  "description": "The item the player doubles: bonus if it matches the group's tier, penalty if not. Absent when the player didn't double.",
  "properties": {
    "item": {
      "maxLength": 300,
      "type": "string"
    }
  },
  "type": "object"
}
place object

Placing the index'th dealt card: a rating, embedded rather than written as a garden.lexicon.dazzling-boarfish.rating.rate record. Its scale is the game record's and its prompt is the round's. Placements are final once committed.

Properties

index integer Required

Deal order, from 0.

minimum: 0maximum: 19
View raw schema
{
  "description": "Placing the index'th dealt card: a rating, embedded rather than written as a garden.lexicon.dazzling-boarfish.rating.rate record. Its scale is the game record's and its prompt is the round's. Placements are final once committed.",
  "properties": {
    "index": {
      "description": "Deal order, from 0.",
      "maximum": 19,
      "minimum": 0,
      "type": "integer"
    },
    "item": {
      "description": "The full card as dealt, so a game can be replayed from moves alone.",
      "ref": "games.cavu.tier-madness.defs#item",
      "type": "ref"
    },
    "subject": {
      "description": "What's rated: the card's source (its Wikipedia article).",
      "ref": "garden.lexicon.dazzling-boarfish.rating.rate#subjectUri",
      "type": "ref"
    },
    "value": {
      "description": "The tier, as a value on the game's scale.",
      "ref": "garden.lexicon.dazzling-boarfish.rating.scale#ordinalValue",
      "type": "ref"
    }
  },
  "required": [
    "item",
    "subject",
    "value",
    "index"
  ],
  "type": "object"
}
swap object

The round's one swap: two items in different tiers trade places. Empty when the player skipped it.

Properties

items array of string Required

No description available.

maxLength: 2 itemsminLength: 0 items
View raw schema
{
  "description": "The round's one swap: two items in different tiers trade places. Empty when the player skipped it.",
  "properties": {
    "items": {
      "items": {
        "maxLength": 300,
        "type": "string"
      },
      "maxLength": 2,
      "minLength": 0,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
vote object

Secret pre-game vote for favourite categories. Carries the full ballot shown, so the vote can be replayed on its own.

Properties

ballot array of string Required

Every category offered, in the order shown.

maxLength: 20 itemsminLength: 1 items
categories array of string Required

The ones this player picked (a subset of ballot).

maxLength: 3 itemsminLength: 1 items
View raw schema
{
  "description": "Secret pre-game vote for favourite categories. Carries the full ballot shown, so the vote can be replayed on its own.",
  "properties": {
    "ballot": {
      "description": "Every category offered, in the order shown.",
      "items": {
        "maxLength": 300,
        "type": "string"
      },
      "maxLength": 20,
      "minLength": 1,
      "type": "array"
    },
    "categories": {
      "description": "The ones this player picked (a subset of ballot).",
      "items": {
        "maxLength": 300,
        "type": "string"
      },
      "maxLength": 3,
      "minLength": 1,
      "type": "array"
    }
  },
  "required": [
    "ballot",
    "categories"
  ],
  "type": "object"
}

Lexicon Garden

@