Widget bindings
bind on a content block maps to a registered player preference. Control kind comes from the engine registry — do not set type on bind blocks.
{ "bind": "master", "label": "Master", "label_key": "screen.settings.master_volume", "min": 0, "max": 1, "step": 0.05 }
{ "bind": "typing_enabled", "label": "Typing sound", "label_key": "screen.settings.typing_sound" }
{ "bind": "locale", "label": "Language", "label_key": "screen.settings.language", "style": "locale_button", "active_style": "locale_button_active" }
Omit label / label_key for a full-width control. With a label, the row uses settings_layout (label | control [| value]). Labels accept BBCode ([b], [color=…], …).
Usually you need
| Bind | Control | Effect |
|---|---|---|
master / bgm / sfx | slider | Volumes |
fullscreen | toggle | Display mode |
typing_enabled | toggle | Typing beep |
locale | locale chips | Language from i18n.locales |
All bindings
| Bind | Control | Effect |
|---|---|---|
master | slider | Master volume |
bgm | slider | Music volume |
sfx | slider | SFX volume |
typing_enabled | toggle | Typing beep on/off |
fullscreen | toggle | Fullscreen |
typing_speed_scale | slider | typing.speed_scale |
auto_advance_default | slider | Auto-advance default |
font_size_scale | slider | typography.size_scale (+ commit) |
locale | locale chips | set_locale:<id> from game.i18n.locales |
Free slider / toggle blocks (with type and hooks, no bind) are for custom UI — see Content blocks.
Slider/toggle chrome: slider · toggle. Layout: settings_layout. Content blocks · Typing.