Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Talking and focus

Lives in: character packs (drive on layers / pack root) and the story’s speakers

While text types, the player can drive mouth (and similar) layers. Focus can emphasise who the line is about. Speakers and (silent): Lines and speakers.

Drive reacts to live UI state (typing, focus, open choices). It is not the same as a bind, which follows a story flag — Reacting to flags live.

Mouth layers

"default": [
  { "path": "base.png" },
  { "path": "mouth_closed.png", "drive": "!typing" },
  {
    "frames": ["m1.png", "m2.png"],
    "fps": 10,
    "loop": true,
    "drive": "typing"
  }
]
Layer driveWhen that layer shows
"typing"While the typing mouth driver is on for this character
"!typing"While it is off
"focus" / "!focus"While this character is / is not in the current focus set
"choice_open" / "!choice_open"While an enabled choice menu is waiting

Text still types either way. (silent) on a speaker (or on one name in a joint line) turns that character’s typing driver off — mouths stay on the closed layer.

Voice beep is separate (game.json sounds) — Text speed and voice beeps.

Pack-root drive (focus and more)

At the pack root, drive can change the whole look while a driver is on — swap expression, tint, scale, nudge:

"drive": {
  "focus": {
    "use": "happy",
    "priority": 10,
    "scale": 1.05
  },
  "choice_open": {
    "modulate": "#ddddff",
    "priority": 5
  }
}
FieldEffect
useSwitch to another expression while the predicate holds
modulate / scaleTint / size while active
offset / rotation_degreesNudge / rotate while active
priorityWhen several root rules match, higher wins for use; modulate/scale multiply; offsets sum
transition (optional)How the drive look eases in/out
You want…Prefer
Mouth open/closed while typingLayer "drive": "typing" / "!typing"
Slight “I’m the focus” scale / tintRoot drive.focus with scale / modulate (same expression)
Different art while focused / choosingRoot drive with "use": "other_expression"
A lasting expression for the sceneStory char / HANA [happy]: (command wins until you change it)

Drivers are recomputed after load or Back — they are not stored in the save. Flag overlays stay on bind.

Joint lines

HANA [happy] & SORA (silent): — both in the group; only non-silent names get the typing mouth. One name plate for the group — Lines and speakers.

Usually you need

WantDo
Talking mouthLayer with "drive": "typing" (+ closed with "!typing")
No mouth this lineNAME (silent):
Only one mouth in a groupMark the others (silent)
Focus popRoot "drive": { "focus": { "scale": 1.05 } }

Next

Places on stage