A user's RPG character sprite. One record per user (rkey: self).
literal:self
Fixed literal value
Properties
animationSpeed
integer
Optional
Milliseconds per frame for animation playback
minimum: 50maximum: 2000200columns
integer
Optional
Number of columns per animation cycle
minimum: 1maximum: 16createdAt
string
datetime
Required
When this record was first created
engine
string
Required
The game engine format this sprite is designed for. Determines animation interpretation.
maxLength: 50 bytesrmmz, customframeHeight
integer
Optional
Height of a single frame in pixels (if not auto-calculated from height/rows)
minimum: 1maximum: 512frameWidth
integer
Optional
Width of a single frame in pixels (if not auto-calculated from width/columns)
minimum: 1maximum: 512frames
integer
Optional
Total number of animation frames
minimum: 1maximum: 64height
integer
Optional
Total height of the sprite sheet in pixels
minimum: 1maximum: 4096name
string
Optional
Display name for the character (optional, can differ from Bluesky display name)
maxLength: 100 bytesmaxGraphemes: 50 graphemesrows
integer
Optional
Number of rows in the sprite sheet (typically 4 for directional sprites: down, left, right, up)
minimum: 1maximum: 16spriteSheet
blob
Required
The sprite sheet image (PNG only). Max 10MB.
maxSize: 10.0 MBupdatedAt
string
datetime
Optional
When this record was last modified
width
integer
Optional
Total width of the sprite sheet in pixels
minimum: 1maximum: 4096View raw schema
{
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"spriteSheet",
"engine",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"description": "Display name for the character (optional, can differ from Bluesky display name)",
"maxGraphemes": 50
},
"rows": {
"type": "integer",
"maximum": 16,
"minimum": 1,
"description": "Number of rows in the sprite sheet (typically 4 for directional sprites: down, left, right, up)"
},
"width": {
"type": "integer",
"maximum": 4096,
"minimum": 1,
"description": "Total width of the sprite sheet in pixels"
},
"engine": {
"type": "string",
"maxLength": 50,
"description": "The game engine format this sprite is designed for. Determines animation interpretation.",
"knownValues": [
"rmmz",
"custom"
]
},
"frames": {
"type": "integer",
"maximum": 64,
"minimum": 1,
"description": "Total number of animation frames"
},
"height": {
"type": "integer",
"maximum": 4096,
"minimum": 1,
"description": "Total height of the sprite sheet in pixels"
},
"columns": {
"type": "integer",
"maximum": 16,
"minimum": 1,
"description": "Number of columns per animation cycle"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When this record was first created"
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "When this record was last modified"
},
"frameWidth": {
"type": "integer",
"maximum": 512,
"minimum": 1,
"description": "Width of a single frame in pixels (if not auto-calculated from width/columns)"
},
"frameHeight": {
"type": "integer",
"maximum": 512,
"minimum": 1,
"description": "Height of a single frame in pixels (if not auto-calculated from height/rows)"
},
"spriteSheet": {
"type": "blob",
"accept": [
"image/png"
],
"maxSize": 10000000,
"description": "The sprite sheet image (PNG only). Max 10MB."
},
"animationSpeed": {
"type": "integer",
"default": 200,
"maximum": 2000,
"minimum": 50,
"description": "Milliseconds per frame for animation playback"
}
}
},
"description": "A user's RPG character sprite. One record per user (rkey: self)."
}