actor.rpg.sprite
Schema Diff
+6 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 3 non-breaking changes.
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
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
- 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
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"name": {
15
15
"type": "string",
16
16
"maxLength": 100,
17
17
"description": "Display name for the character (optional, can differ from Bluesky display name)",
18
18
"maxGraphemes": 50
19
19
},
20
20
"rows": {
21
21
"type": "integer",
22
22
"maximum": 16,
23
23
"minimum": 1,
24
24
"description": "Number of rows in the sprite sheet (typically 4 for directional sprites: down, left, right, up)"
25
25
},
26
26
"width": {
27
27
"type": "integer",
28
28
"maximum": 4096,
29
29
"minimum": 1,
30
30
"description": "Total width of the sprite sheet in pixels"
31
31
},
32
32
"frames": {
33
33
"type": "integer",
34
34
"maximum": 64,
35
35
"minimum": 1,
36
36
"description": "Total number of animation frames"
37
37
},
38
38
"height": {
39
39
"type": "integer",
40
40
"maximum": 4096,
41
41
"minimum": 1,
42
42
"description": "Total height of the sprite sheet in pixels"
43
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
+
},
44
49
"columns": {
45
50
"type": "integer",
46
51
"maximum": 16,
47
52
"minimum": 1,
48
53
"description": "Number of columns per animation cycle"
49
54
},
50
55
"createdAt": {
51
56
"type": "string",
52
57
"format": "datetime",
53
58
"description": "When this record was first created"
54
59
},
55
60
"updatedAt": {
56
61
"type": "string",
57
62
"format": "datetime",
58
63
"description": "When this record was last modified"
59
64
},
60
65
"frameWidth": {
61
66
"type": "integer",
62
67
"maximum": 512,
63
68
"minimum": 1,
64
69
"description": "Width of a single frame in pixels (if not auto-calculated from width/columns)"
65
70
},
66
71
"frameHeight": {
67
72
"type": "integer",
68
73
"maximum": 512,
69
74
"minimum": 1,
70
75
"description": "Height of a single frame in pixels (if not auto-calculated from height/rows)"
71
76
},
72
77
"spriteSheet": {
73
78
"type": "blob",
74
79
"accept": [
75
80
"image/png"
76
81
],
77
82
"maxSize": 10000000,
78
83
"description": "The sprite sheet image (PNG only). Max 10MB."
79
84
},
80
85
"animationSpeed": {
81
86
"type": "integer",
82
-
"default": 200,
83
87
"maximum": 2000,
84
88
"minimum": 50,
85
-
"description": "Milliseconds per frame for animation playback"
89
+
"description": "Milliseconds per frame for animation playback. Defaults to 200 if omitted."
86
90
}
87
91
}
88
92
},
89
93
"description": "A user's RPG character sprite. One record per user (rkey: self)."
90
94
}
91
95
},
92
96
"$type": "com.atproto.lexicon.schema",
93
97
"lexicon": 1,
94
98
"description": "A sprite sheet for an RPG character avatar."
95
99
}