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