Choice Node
The Choice node presents the reader with a set of options and branches the story based on their selection. It is the primary mechanism for reader interaction and is essential for creating branching narratives.
Options
Each Choice node contains a list of options. Every option has:
- Text — The label displayed to the reader. Supports variable interpolation (e.g.,
Go to {locationName}). - Output handle — Each option creates its own output handle on the right side of the node. Connect each handle to the node that begins that branch of the story.
- Condition — An optional condition that controls whether the option is available.
- Visible flag — Controls behavior when the condition is false (see below).
- SetVar actions — Variable changes that execute automatically when this option is selected.
You can add, remove, and reorder options in the Inspector panel.
Conditional Options
Each option can have a condition attached using the inline ConditionEditor. Conditions use the same system as the Condition node: select a variable, an operator (==, !=, >, <, >=, <=), and a comparison value. Compound conditions with AND/OR logic are supported.
When a condition is set:
- If the condition is true, the option is available for selection.
- If the condition is false and
visibleis false, the option is hidden entirely. - If the condition is false and
visibleis true, the option is shown but greyed out (disabled). The reader can see it but cannot select it.
This lets you hint at locked options ("You need the key..." shown greyed out) or hide irrelevant choices entirely.
Inline Badges
The Inspector shows inline badges on each option summarizing its configuration:
- A condition badge if a condition is set.
- Variable change badges showing which variables are modified when the option is selected.
This gives you an at-a-glance view of what each option does without expanding its details.
SetVar Actions
Each option can have one or more SetVar actions that execute when the reader selects that option. These use the same operations as the SetVariable node:
set— Set a variable to a specific value.toggle— Toggle a boolean variable.increment— Add to a number variable.decrement— Subtract from a number variable.reset— Reset a variable to its default value.
This eliminates the need for a separate SetVariable node after each choice branch in simple cases.
Layout
The Choice node has a layout property:
- vertical (default) — Options are displayed in a vertical list.
- grid — Options are displayed in a two-column grid layout.
The visual styling of choice buttons (colors, fonts, borders, shadows) is controlled through the theme system in Design Mode and applies to all Choice nodes in the project.
Timeout
The Choice node supports an optional timeout:
- timeout — Duration in seconds. When set, a countdown is displayed to the reader.
- timeoutDefaultIndex — Which option is automatically selected when the timer expires (by index, starting at 0).
This creates urgency in dramatic moments or implements a "silence is also a choice" mechanic.
Prompt
An optional prompt text can be set at the top of the choice. This text is displayed above the options, providing context like "What do you want to do?" The prompt supports variable interpolation.
Connecting Choices to Story Paths
Each option's output handle should be connected to the node that begins that branch. Branches can converge later by connecting to the same downstream node, or they can diverge all the way to different End nodes.
A Choice node with no options connected will halt the player, so make sure every option has an outgoing edge.