actor.rpg.sprite

rpg.actor

Schema Diff

+7 -13

From

CID
bafyreiececha3kn...
Indexed At
2026-03-23 19:36 UTC
View this version

To

CID
bafyreicdnk3x57o...
Indexed At
2026-04-06 03:50 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 4 non-breaking changes.

Breaking Changes (2)
  • RemovedVertex RemovedVertex { vertex_id: "actor.rpg.sprite:body.engine" }
  • RemovedEdge RemovedEdge { src: "actor.rpg.sprite:body", tgt: "actor.rpg.sprite:body.engine", kind: "prop", name: Some("engine") }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "actor.rpg.sprite:body.source" }
  • AddedEdge AddedEdge { src: "actor.rpg.sprite:body", tgt: "actor.rpg.sprite:body.source", kind: "prop", name: Some("source") }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "actor.rpg.sprite:body.animationSpeed", sort: "default" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "actor.rpg.sprite:body.engine", sort: "maxLength" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "actor.rpg.sprite:body.engine" }

Added Elements

  • AddedVertex { vertex_id: "actor.rpg.sprite:body.source" }

Constraint Changes

  • ConstraintRemoved ConstraintRemoved { vertex_id: "actor.rpg.sprite:body.engine", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "actor.rpg.sprite:body.animationSpeed", sort: "default" }

Additional Notes

  • Breaking: RemovedEdge { src: "actor.rpg.sprite:body", tgt: "actor.rpg.sprite:body.engine", kind: "prop", name: Some("engine") }
  • Non-breaking: AddedEdge { src: "actor.rpg.sprite:body", tgt: "actor.rpg.sprite:body.source", kind: "prop", name: Some("source") }
1 1
{
2 2
  "id": "actor.rpg.sprite",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "literal:self",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "spriteSheet",
11 -
          "engine",
12 11
          "createdAt"
13 12
        ],
14 13
        "properties": {
15 14
          "name": {
16 15
            "type": "string",
17 16
            "maxLength": 100,
18 17
            "description": "Display name for the character (optional, can differ from Bluesky display name)",
19 18
            "maxGraphemes": 50
20 19
          },
21 20
          "rows": {
22 21
            "type": "integer",
23 22
            "maximum": 16,
24 23
            "minimum": 1,
25 24
            "description": "Number of rows in the sprite sheet (typically 4 for directional sprites: down, left, right, up)"
26 25
          },
27 26
          "width": {
28 27
            "type": "integer",
29 28
            "maximum": 4096,
30 29
            "minimum": 1,
31 30
            "description": "Total width of the sprite sheet in pixels"
32 -
          },
33 -
          "engine": {
34 -
            "type": "string",
35 -
            "maxLength": 50,
36 -
            "description": "The game engine format this sprite is designed for. Determines animation interpretation.",
37 -
            "knownValues": [
38 -
              "rmmz",
39 -
              "custom"
40 -
            ]
41 31
          },
42 32
          "frames": {
43 33
            "type": "integer",
44 34
            "maximum": 64,
45 35
            "minimum": 1,
46 36
            "description": "Total number of animation frames"
47 37
          },
48 38
          "height": {
49 39
            "type": "integer",
50 40
            "maximum": 4096,
51 41
            "minimum": 1,
52 42
            "description": "Total height of the sprite sheet in pixels"
53 43
          },
44 +
          "source": {
45 +
            "type": "string",
46 +
            "format": "at-uri",
47 +
            "description": "AT-URI of the generator record this sprite was composed from, if any (e.g. at://did:plc:xxx/actor.rpg.generator/self)"
48 +
          },
54 49
          "columns": {
55 50
            "type": "integer",
56 51
            "maximum": 16,
57 52
            "minimum": 1,
58 53
            "description": "Number of columns per animation cycle"
59 54
          },
60 55
          "createdAt": {
61 56
            "type": "string",
62 57
            "format": "datetime",
63 58
            "description": "When this record was first created"
64 59
          },
65 60
          "updatedAt": {
66 61
            "type": "string",
67 62
            "format": "datetime",
68 63
            "description": "When this record was last modified"
69 64
          },
70 65
          "frameWidth": {
71 66
            "type": "integer",
72 67
            "maximum": 512,
73 68
            "minimum": 1,
74 69
            "description": "Width of a single frame in pixels (if not auto-calculated from width/columns)"
75 70
          },
76 71
          "frameHeight": {
77 72
            "type": "integer",
78 73
            "maximum": 512,
79 74
            "minimum": 1,
80 75
            "description": "Height of a single frame in pixels (if not auto-calculated from height/rows)"
81 76
          },
82 77
          "spriteSheet": {
83 78
            "type": "blob",
84 79
            "accept": [
85 80
              "image/png"
86 81
            ],
87 82
            "maxSize": 10000000,
88 83
            "description": "The sprite sheet image (PNG only). Max 10MB."
89 84
          },
90 85
          "animationSpeed": {
91 86
            "type": "integer",
92 -
            "default": 200,
93 87
            "maximum": 2000,
94 88
            "minimum": 50,
95 -
            "description": "Milliseconds per frame for animation playback"
89 +
            "description": "Milliseconds per frame for animation playback. Defaults to 200 if omitted."
96 90
          }
97 91
        }
98 92
      },
99 93
      "description": "A user's RPG character sprite. One record per user (rkey: self)."
100 94
    }
101 95
  },
102 96
  "$type": "com.atproto.lexicon.schema",
103 97
  "lexicon": 1,
104 -
  "description": "A sprite sheet for an RPG character avatar. Contains the image blob and metadata for animating the character in various game engines."
98 +
  "description": "A sprite sheet for an RPG character avatar."
105 99
}

Compare Other Versions

Lexicon Garden

@