characters/{id}/{pack}.json — file map
One art pack for a character. Folder characters/<id>/; pack file e.g. default.json. Expression names are free. Reserved filenames (not packs): sprites.json, objects.json, metadata.json, profiles.json.
The whole file
Keys with { … } open below. Linked names jump to that section. Grey notes say what each key does. Under each section, Keys lists type, If omitted, allowed values, and a short note.
{
"display_name": "Emily", // speaker label
"display_name_key": "char.emily.name", // translated label
"ui": { … }, // panel and draw defaults for this pack
"drive": {}, // mouth / focus rules
"composition_transitions": {}, // expression swap fades
"default": [ { … } ], // example expression — layers bottom → top
"…": { … } // more expression ids — layer arrays or inherit objects
}
Root keys
Top-level keys that are not objects.
display_name_key stringIf omitted use display_name
Catalog key for the display name.
composition_transitions objectIf omitted none
How layers crossfade — [Composition transitions](../character/composition-transitions.md).
Learn more: display_name · drive · composition_transitions
ui
Panel and draw defaults for this pack.
{
"ui": { // panel and draw defaults for this pack
"default_panel_id": "main", // panel instance
"default_panel_preset": "default", // panel preset
"default_plate": "them", // plates mode side
"default_labelplate_style_key": "default", // name plate style
"draw_layer": "behind_panel", // draw plane
"panel_slots": {} // slot art map
}
}
Keys
default_panel_id stringIf omitted routing default
Which panel this character prefers.
default_panel_preset stringIf omitted routing default
Theme
panel.<name> preset.default_plate stringIf omitted preset default_plate
Which
plates.<name> this character prefers under text_mode plates.default_labelplate_style_key stringIf omitted theme default
labelplate.<name> style.draw_layer enumIf omitted behind_panel
Values
behind_panel · above_panelIn front of or behind the dialogue box.
panel_slots objectIf omitted none
Which pack layers fill panel slots.
Learn more: ui
default
Example expression — layers bottom → top.
{
"default": [ { // example expression — layers bottom → top
"path": "base.png", // layer image
"z": 0, // draw order
"offset": [0, 0], // pixel nudge
"frames": [], // flipbook frames
"fps": 12 // flipbook rate
} ]
}
Keys
path pathIf omitted required for still layer
Path relative to the character folder / pack.
z numberIf omitted order in array
Optional explicit z.
offset arrayIf omitted [0,0]
[x, y] offset.frames arrayIf omitted still path
Frame list instead of a single
path.fps numberIf omitted pack default
Frames per second.
Learn more: default