games.atplay.game.release

atplay.games

Documentation

One published build of a game: its logic, its display, and what it replaces. Everything that doesn't change between builds lives on the game's title instead (ADR 0037).

main record

One published build of a game: its logic, its display, and what it replaces. Everything that doesn't change between builds lives on the game's title instead (ADR 0037).

Record Key tid Timestamp-based ID

Properties

assets array of ref #assets Optional

No description available.

createdAt string datetime Optional

When this version of this game was released

gamelogic blob Required

Javascript IIFE module containing game logic conforming to the AtPlay standard

replaces ref #replaces Optional

No description available.

title string at-uri Required

The game this is a release of. A plain AT-URI rather than a strongRef, because a title's CID changes whenever its `latest` pointer moves and this names the game, not a version of the record. Must be in the same repo as this release; readers ignore releases that name a title belonging to another DID.

maxLength: 512 bytes
version string Required

The game logic's version number in the format 'X.Y' or 'X.Y-alpha'. An increment in X means gameplay is intentionally (likely incompatibly) different, an increment in Y means a compatible fix (players could and may wish to upgrade mid-game). The presence of a hyphen + alpha string means unstable game logic, which may or may not be compatible with the subsequently released game logic vX.Y.

maxLength: 32 bytesminLength: 3 bytes
View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "title",
      "version",
      "gamelogic"
    ],
    "properties": {
      "title": {
        "type": "string",
        "format": "at-uri",
        "maxLength": 512,
        "description": "The game this is a release of. A plain AT-URI rather than a strongRef, because a title's CID changes whenever its `latest` pointer moves and this names the game, not a version of the record. Must be in the same repo as this release; readers ignore releases that name a title belonging to another DID."
      },
      "assets": {
        "type": "array",
        "items": {
          "ref": "#assets",
          "type": "ref"
        }
      },
      "version": {
        "type": "string",
        "maxLength": 32,
        "minLength": 3,
        "description": "The game logic's version number in the format 'X.Y' or 'X.Y-alpha'. An increment in X means gameplay is intentionally (likely incompatibly) different, an increment in Y means a compatible fix (players could and may wish to upgrade mid-game). The presence of a hyphen + alpha string means unstable game logic, which may or may not be compatible with the subsequently released game logic vX.Y."
      },
      "replaces": {
        "ref": "#replaces",
        "type": "ref"
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "When this version of this game was released"
      },
      "gamelogic": {
        "type": "blob",
        "accept": [
          "application/javascript"
        ],
        "description": "Javascript IIFE module containing game logic conforming to the AtPlay standard"
      }
    }
  },
  "description": "One published build of a game: its logic, its display, and what it replaces. Everything that doesn't change between builds lives on the game's title instead (ADR 0037)."
}
assets object

No description available.

Properties

files array of ref#file Required

No description available.

minLength: 1 items
intent string Required

The intended purpose of these assets.

maxLength: 128 bytesminLength: 1 bytes
Known values: games.atplay.game.release#webDisplay
View raw schema
{
  "type": "object",
  "required": [
    "intent",
    "files"
  ],
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "ref": "#file",
        "type": "ref"
      },
      "minLength": 1
    },
    "intent": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "description": "The intended purpose of these assets.",
      "knownValues": [
        "games.atplay.game.release#webDisplay"
      ]
    }
  }
}
file object

No description available.

Properties

contents blob Optional

No description available.

maxSize: 2.1 MB
path string Optional

The path this file should be accessible at

maxLength: 256 bytesminLength: 1 bytes
View raw schema
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "description": "The path this file should be accessible at"
    },
    "contents": {
      "type": "blob",
      "maxSize": 2097152
    }
  }
}
replaces object

A statement that this game logic is intended to replace this previous version for new games

Properties

changeNotes string Required

A description of what changed between the referenced previous version, and this one. Supports markdown.

maxLength: 10000 bytesmaxGraphemes: 1000 graphemes
View raw schema
{
  "type": "object",
  "required": [
    "previous",
    "changeNotes"
  ],
  "properties": {
    "previous": {
      "ref": "com.atproto.repo.strongRef",
      "type": "ref"
    },
    "changeNotes": {
      "type": "string",
      "maxLength": 10000,
      "description": "A description of what changed between the referenced previous version, and this one. Supports markdown.",
      "maxGraphemes": 1000
    }
  },
  "description": "A statement that this game logic is intended to replace this previous version for new games"
}
webDisplay token

These assets are intended to display this game on the web.

Referencegames.atplay.game.release#webDisplay

Tokens have no data representation. Use the reference string as a value.

View raw schema
{
  "type": "token",
  "description": "These assets are intended to display this game on the web."
}

Lexicon Garden

@