actor.rpg.generator

rpg.actor

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Stores the individual recolored layers and configuration used to build a sprite via the generator. Enables recomposition by third-party tools (e.g. adding items/overlays) without the full generator pipeline. One record per user (rkey: self).",
      "key": "literal:self",
      "record": {
        "properties": {
          "bodyType": {
            "description": "Body type used (e.g. 'male', 'female').",
            "maxLength": 20,
            "type": "string"
          },
          "createdAt": {
            "description": "When this record was first created.",
            "format": "datetime",
            "type": "string"
          },
          "eyes": {
            "description": "Eye color configuration.",
            "properties": {
              "hex": {
                "description": "Custom eye hex color.",
                "maxLength": 7,
                "type": "string"
              },
              "mode": {
                "description": "'gradient' or 'custom'.",
                "maxLength": 10,
                "type": "string"
              },
              "tone": {
                "description": "Gradient eye tone index.",
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "type": "object"
          },
          "items": {
            "description": "Freeform item identifiers applied on top of the sprite (e.g. 'popcorn').",
            "items": {
              "maxLength": 50,
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "layers": {
            "description": "Ordered array of recolored layer images, back-to-front. Body is always index 0.",
            "items": {
              "properties": {
                "assetName": {
                  "description": "Generator asset filename (e.g. '001_basic_short').",
                  "maxLength": 100,
                  "type": "string"
                },
                "blob": {
                  "accept": [
                    "image/png"
                  ],
                  "description": "The recolored layer PNG.",
                  "maxSize": 1000000,
                  "type": "blob"
                },
                "colors": {
                  "description": "Color selections applied to this layer.",
                  "properties": {
                    "main": {
                      "maxLength": 7,
                      "type": "string"
                    },
                    "sub1": {
                      "maxLength": 7,
                      "type": "string"
                    },
                    "sub2": {
                      "maxLength": 7,
                      "type": "string"
                    },
                    "sub3": {
                      "maxLength": 7,
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "id": {
                  "description": "Layer category identifier (e.g. 'body', 'tops', 'hair', 'bangs').",
                  "maxLength": 30,
                  "type": "string"
                },
                "title": {
                  "description": "Human-readable name derived from the asset filename.",
                  "maxLength": 100,
                  "type": "string"
                }
              },
              "required": [
                "id",
                "blob"
              ],
              "type": "object"
            },
            "maxLength": 20,
            "type": "array"
          },
          "skin": {
            "description": "Skin configuration.",
            "properties": {
              "hex": {
                "description": "Custom skin hex color (if mode is custom).",
                "maxLength": 7,
                "type": "string"
              },
              "mode": {
                "description": "'gradient' or 'custom'.",
                "maxLength": 10,
                "type": "string"
              },
              "tone": {
                "description": "Gradient skin tone index.",
                "maximum": 100,
                "minimum": 0,
                "type": "integer"
              }
            },
            "type": "object"
          },
          "updatedAt": {
            "description": "When this record was last modified.",
            "format": "datetime",
            "type": "string"
          },
          "version": {
            "description": "Generator version that produced this record.",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "version",
          "bodyType",
          "layers",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "Generator metadata and decomposed layers for a sprite built with the rpg.actor sprite generator.",
  "id": "actor.rpg.generator",
  "lexicon": 1
}

Validate Record

Validate a record against actor.rpg.generator

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:kwgllf365cwmxbnxitx4pjdj
CID
bafyreibdoynjsn4fhstlorwk4euxgppifybtgkr3t3l6odfmcv3lriqfpe
Indexed At
2026-10-02 21:40 UTC
AT-URI
at://did:plc:kwgllf365cwmxbnxitx4pjdj/com.atproto.lexicon.schema/actor.rpg.generator

Version History (3 versions)

Similar Lexicons

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

  • A player's owned item, accepted from a provider's give record. Lives on the player's PDS.

Lexicon Garden

@