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 branches aren’t buttons the player clicks — they’re conditions, checked against the router’s chosen variable.

Each branch has an operator and a value, which you pick right on the block (a dropdown for the operator, plus a field for the value — or a true/false toggle for bool variables). The router checks its branches in the order they’re listed and follows the first one whose condition matches. Which operators are available depends on the variable’s type.

Number variables (int / float)

OperatorShows asMatches when the variable is…
equals== 10equal to 10
not equals!= 10anything except 10
greater> 10greater than 10
greater or equal>= 1010 or more
less< 10less than 10
less or equal<= 1010 or less

String and bool variables

Only equals and not equals are available — the value is compared exactly.

  • For a bool variable, the value is a true / false toggle.
  • For a string variable, type the exact text you’re comparing against.

Otherwise (catch-all)

Every branch also offers an Otherwise operator — it always matches, no matter the variable’s value. Use it as the last branch so the router always has somewhere to go.

If none of a router’s branches match, the story can’t advance. Give every Variable Router a final Otherwise branch (or another condition that’s guaranteed to match) so it never gets stuck.

Example

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

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

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


Choices & Branching — Skaz Docs