Transitions
Lives in: commands · game.json → transitions · packs / screens
How pictures and menus appear, leave, and swap. Three related systems use the word “transition” — keep them apart.
Kinds (stage and chrome)
| Kind | Effect |
|---|---|
instant | Snap |
fade | Opacity / crossfade |
slide_up / slide_down / slide_left / slide_right | Slide |
Fields: transition (or transition_in / transition_out) and duration (or transition_duration).
[bg street fade 0.5]
[hana left slide_left 0.3]
{ "type": "bg", "value": "street", "transition": "fade", "duration": 0.5 }
{ "type": "char", "name": "hana", "transition_in": "slide_left", "duration": 0.3 }
Defaults (when you omit fields)
| Surface | Default kind | Default duration |
|---|---|---|
| Background | fade | 0.5 |
| Character show/hide | instant | 0 |
| Sprite / object | instant | 0 |
| Screens | often fade from fade_default | ~0.2 in samples |
Do not fight opacity with animate on the same surface at the same time — Animation.
Scene fade (full-screen veil)
Separate from per-command fades. Timing in game.json:
"transitions": { "fade_default": 0.35 }
Used for the full-screen scene veil and as a fallback when a screen has no own transition. Not the same as the bg command’s 0.5s default.
Expression swaps (characters)
Same person, new look while already on stage → pack composition_transitions, not show/hide sugar — Expression fades.
Screens
Screen push/pop can set transition_in / transition_out / transition_duration on screens.json defaults or per screen — Title, pause and settings screens.
Panel plates (thread chrome)
Named plates under panel.<preset>.plates can set their own transition_in / transition_duration for each new beat. That motion stays inside the panel body scroll and is separate from whole-panel show/hide — Theme: panel → Plates.
Usually you need
| Want | Do |
|---|---|
| Soft place change | [bg name fade 0.5] (or omit — fade is default) |
| Soft character enter | Name a kind + duration on char |
| Faster scene veil | Lower transitions.fade_default |
| Soft expression change | Pack composition_transitions |
| Chat plate enter | Per-plate transition_in on the theme preset |