actor.rpg.sprite

rpg.actor

Schema Diff

+7 -15

From

CID
bafyreifynapwtt5...
Indexed At
2026-03-23 18:15 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, 3 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 (3)
  • 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" }

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.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 -
            "description": "The game engine format this sprite is designed for. Determines animation interpretation.",
36 -
            "knownValues": [
37 -
              "rmmz",
38 -
              "rmmv",
39 -
              "rpgmaker2003",
40 -
              "custom"
41 -
            ]
42 31
          },
43 32
          "frames": {
44 33
            "type": "integer",
45 34
            "maximum": 64,
46 35
            "minimum": 1,
47 36
            "description": "Total number of animation frames"
48 37
          },
49 38
          "height": {
50 39
            "type": "integer",
51 40
            "maximum": 4096,
52 41
            "minimum": 1,
53 42
            "description": "Total height of the sprite sheet in pixels"
54 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 +
          },
55 49
          "columns": {
56 50
            "type": "integer",
57 51
            "maximum": 16,
58 52
            "minimum": 1,
59 53
            "description": "Number of columns per animation cycle"
60 54
          },
61 55
          "createdAt": {
62 56
            "type": "string",
63 57
            "format": "datetime",
64 58
            "description": "When this record was first created"
65 59
          },
66 60
          "updatedAt": {
67 61
            "type": "string",
68 62
            "format": "datetime",
69 63
            "description": "When this record was last modified"
70 64
          },
71 65
          "frameWidth": {
72 66
            "type": "integer",
73 67
            "maximum": 512,
74 68
            "minimum": 1,
75 69
            "description": "Width of a single frame in pixels (if not auto-calculated from width/columns)"
76 70
          },
77 71
          "frameHeight": {
78 72
            "type": "integer",
79 73
            "maximum": 512,
80 74
            "minimum": 1,
81 75
            "description": "Height of a single frame in pixels (if not auto-calculated from height/rows)"
82 76
          },
83 77
          "spriteSheet": {
84 78
            "type": "blob",
85 79
            "accept": [
86 80
              "image/png"
87 81
            ],
88 82
            "maxSize": 10000000,
89 83
            "description": "The sprite sheet image (PNG only). Max 10MB."
90 84
          },
91 85
          "animationSpeed": {
92 86
            "type": "integer",
93 -
            "default": 200,
94 87
            "maximum": 2000,
95 88
            "minimum": 50,
96 -
            "description": "Milliseconds per frame for animation playback"
89 +
            "description": "Milliseconds per frame for animation playback. Defaults to 200 if omitted."
97 90
          }
98 91
        }
99 92
      },
100 93
      "description": "A user's RPG character sprite. One record per user (rkey: self)."
101 94
    }
102 95
  },
103 96
  "$type": "com.atproto.lexicon.schema",
104 97
  "lexicon": 1,
105 -
  "revision": 1,
106 -
  "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."
107 99
}

Compare Other Versions

Lexicon Garden

@