Interoperable Game Definitions

games.atmosphere.define

A portable AT Protocol record for declaring a game and the records it uses.

This is an evolving community lexicon. Proposals and implementation feedback are welcome at play@atmosphere.games.

Purpose

A definition identifies a game, its publisher, where to access it, and which AT Protocol records it requires or uses. Portals can use definitions to discover games and explain their compatibility.

Publish

Publish one record for each game in the developer's own repository. Keep its rkey stable when updating it.

  • name, url, publisher, category, and createdAt are required.
  • publisher must be the AT-URI of the repository publishing the record.
  • requires declares compatibility gates; uses declares optional integrations.
  • catalog and legacyIds may link the same game across other catalogs.

Developer identity

The DID is the only durable identity anchor. When you self-publish (the normal case), publisher already is your DID, so developer is purely cosmetic display text and nothing else needs to reference it.

Records held on a developer's behalf — for example, atmosphere.games seeding a listing before the developer has published their own — must set developer.did to the real developer's DID. That DID is what lets the real developer claim the record and is resolved back to their current handle automatically, even after they rename. developer.name/developer.url are display text only; they are never trusted to authorize a claim and go stale silently if the account renames without developer.did set. A held record with no developer.did at all cannot be claimed by anyone.

claimAllowed can list extra DIDs or handles (besides developer.did) permitted to claim a held record. Prefer DIDs there too — a bare handle is only resolved best-effort and breaks if that account renames.

Discovery

Games publish their own definitions. Directories and clients can discover them through AT Protocol repository events, including Jetstream and the firehose.

Basic Example

A simplified version of the real Clun's Cannon definition record.
Requires an actor.rpg.sprite to play, and uses a Jet Pack .item vouched for by protoimsg.app.

{
  "$type": "games.atmosphere.define",
  "name": "Clun's Cannon",
  "url": "https://rpg.actor/cannon",
  "publisher": "at://did:plc:kwgllf365cwmxbnxitx4pjdj",
  "category": "browser",
  "status": "live",
  "createdAt": "2026-07-17T14:54:25.448Z",
  "requires": [{
    "check": "record",
    "nsid": "actor.rpg.sprite",
    "label": "Your character sprite",
    "acquire": "https://rpg.actor/generator"
  }],
  "uses": [{
    "role": "perk",
    "nsid": "equipment.rpg.item",
    "purpose": "Owning a Jet Pack offers an extra boost when launched",
    "acquire": "https://protoimsg.app/games",
    "verify": {
      "check": "vouch",
      "nsid": "equipment.rpg.item",
      "authority": "did:plc:ew5e3up4h2jf4j263qhdjo4e",
      "filters": [
        { "field": "item", "op": "eq", "value": "jet_pack" },
        { "field": "recipient", "op": "isPlayer" }
      ]
    }
  }]
}

Compatibility Rules

  • record, field, and matches inspect player records.
  • vouch checks a trusted authority's repository.
  • all, any, and not compose rules.
  • Unknown checks must fail. Optional uses never block play.

Schema

The JSON schema is available at /lexicons/games.atmosphere.define.json. Its public source and documentation are maintained at tangled.org/atmosphere.games/lexicons.