Skip to Content
Editor GuideChoices & Branching

Choices & Branching

Choices are how blocks connect to each other. Every block has zero or more choices, and each choice points at the next block in the story.

Adding a choice

Select a block, open its Node inspector, scroll to Branching, and click + Add choice. Give the choice a label and connect it to the target block.

How choices look to players

For Text and User Input blocks, each choice becomes a button at the bottom of the screen:

  • One choice — shown as a single, full-width “Continue”-style button.
  • Multiple choices — shown as several buttons side by side, one per choice. This is real branching: the story takes a different path depending on which one the player clicks.
  • No choices — the player has reached the end of the story (or an ending branch). They’ll see a “You finished the story” screen with options to try again or go back home.

A choice’s label is exactly the text players see on the button — so write it the way you’d want a reader to see it (“Open the door”, “Run away”, …).

Instant blocks

Set Variable Value and Change Variable Value blocks don’t show buttons to the player — they have a single choice that the engine follows automatically, right after running. Use them as an invisible “next step” in the middle of a longer chain of logic.

Variable Router conditions

A Variable Router block is the exception: its choice labels aren’t button text — they’re conditions, checked against the router’s chosen variable.

The router checks its choices in the order they’re listed and follows the first one whose condition matches. Write conditions based on the variable’s type:

Number variables (int / float)

LabelMatches when the variable is…
10equal to 10
>10greater than 10
<10less than 10
!10not equal to 10

String and bool variables

Only exact-match conditions are supported — the label must equal the variable’s value exactly:

  • For a bool variable, use true or false.
  • For a string variable, use the exact text you’re comparing against.

Always include a choice whose condition is guaranteed to match (a “catch-all”), or the story can get stuck if none of the conditions fit the variable’s current value. For numbers, ! with a value the variable will never actually hold works well as a catch-all.

Example

A score (int) variable feeding a Variable Router with three choices, in this order:

  1. >50 → “Great ending” block
  2. >20 → “Okay ending” block
  3. !0 → “Bad ending” block (catches everything else, including negatives)

If score is 35, the router skips choice 1 (35 > 50 is false), matches choice 2 (35 > 20 is true), and jumps straight to the “Okay ending” block — the player never sees this happen.


Choices & Branching — Skaz Docs