Cursor
Lives in: game.json → cursor · optional cursors.json
Optional custom (software) pointer, or the normal OS cursor.
Most stories
Leave cursor out (or "enabled": false) → OS cursor. Soft cursor:
"cursor": {
"enabled": true,
"default": "default",
"config": "cursors.json",
"touch_pointer": false,
"idle_hide": {
"enabled": true,
"delay": 2.5,
"fade": 0.2,
"keep_visible": ["choices", "screens"]
}
}
// cursors.json
{
"default": "default",
"profiles": {
"default": {
"kind": "image",
"image": "sprites/pointer.png",
"hotspot": [2, 2],
"scale": 1.0
}
}
}
Soft cursor follows mouse pointing. On touch it stays hidden unless touch_pointer is true.
From the story
{ "type": "cursor", "profile": "inspect" }
{ "type": "cursor", "push": "inspect" }
{ "type": "cursor", "pop": true }
{ "type": "cursor", "reset": true }
Hover hotspots can use hook actions cursor:push:… / cursor:pop. Idle-hide still works with the OS cursor (instant hide/show; fade is soft-cursor only).
Usually you need
| Want | Do |
|---|---|
| Normal pointer | Omit soft cursor |
| Custom look | enabled: true + cursors.json |
| Hide while reading | idle_hide |
| Inspect cursor on a hotspot | cursor:push / pop hooks |
Full map
cursors.json file map · cursors detail