Portable game definitions

games.atmosphere.define

A define record is a compact, developer-owned game listing for the AT Protocol. It lets portals discover the game, describe what records a player needs to play it, and list the records the game reads or writes.

What the record does

One games.atmosphere.define record per game, published in the developer's own repo. Keep the same rkey to update it in place. Portals index it by AT URI.

  • name, tagline, description, url, cover, and media describe the game.
  • publisher is the AT-URI of the repo that owns the record. It must match the record's actual repo.
  • developer names the person or studio, with an optional DID and website.
  • legacyIds lists any old IDs for this game used by other catalogs or tools. Portals use these for deduplication.
  • catalog links to matching entries in other AT Protocol game catalogs (such as gamesgamesgamesgames.games or cartridge.dev) without affecting playability.

Required vs optional records

The key distinction is whether a record gates play.

requires[]

Hard gates. Every rule must pass before the portal marks a player as ready to play.

uses[]

Non-gating records. Stats, perks, cosmetics, inventory, sessions, leaderboards, and interop data. Never gates play.

.verify

An additional proof attached to a rule or use. Confirms a claim without blocking play on its own.

Rule checks

Rules are small checks over records in a player repo or a trusted authority repo.

  • record passes when the player has any record in the collection.
  • field checks one field on a specific rkey, or scans the collection with rkey: "any".
  • matches passes when one record satisfies all filters at once.
  • vouch reads a trusted authority DID. Use it for grants, awarded items, and approvals one account issues about another.
  • all, any, and not compose smaller rules.

Discovery

Portals discover define records from any publisher via the AT Protocol Jetstream. The server-side index at /api/define/index is seeded at boot and kept current by a live Jetstream subscription. No polling or known-repo list is needed for portals that consume the index.

Developers publish one record in their own repo. Portals will pick it up automatically.

Minimal example

This game requires an rpg.actor sprite to play, and uses a stats record for progress.

{
  "$type": "games.atmosphere.define",
  "name": "Example Quest",
  "url": "https://example.quest",
  "publisher": "at://did:plc:developer",
  "category": "browser",
  "status": "live",
  "createdAt": "2026-07-21T00:00:00.000Z",
  "requires": [{
    "check": "record",
    "nsid": "actor.rpg.sprite",
    "label": "An rpg.actor sprite",
    "acquire": "https://rpg.actor/generator"
  }],
  "uses": [{
    "role": "stats",
    "nsid": "example.quest.stats",
    "rkey": "self",
    "purpose": "Progress and best score"
  }]
}

Portal APIs

These endpoints are available for portals and tools.

Evaluator

Unknown rule checks do not pass. Self-vouching fails. Required verify rules must pass. Optional uses without verify are available but unconfirmed.

Schema

The raw lexicon is served as JSON for tools and implementers.