Activities
An activity is a structured interaction the host game runs on your behalf: a minigame, a QTE, a quiz. When an activity event fires, the runtime pauses the current commit and hands the interaction over; nothing further in the node runs until the player finishes. When the host resumes, any events you authored after the activity (a Set variable, a Jump gate, a Complete project) see the answer the player supplied.
What’s not here: field-by-field reference for the activity entity (Activity reference), and the activity event (Activity event reference).
Anatomy of an activity
- Type: the host-side handler hint (
minigame,qte, and so on). - Undo barrier: sticky-outcome toggle.
- Effect selector: the per-binding write mode (Replace value, Increment value, Read-only).
- Read-only row: the field the player sees but can’t change.
Brew tea is a minigame-typed activity with four bindings: one required bool, one required int, one optional string, and one read-only bool. Every field in the callout list is documented on the Activity reference.
Build an activity end to end
Use activity_brew_tea in the simulator-activities sample as the worked example.
-
Open the Activities tab in the Data View and click Add Activity. Name it Brew tea, and set Type to
minigamefor this walkthrough. Type is a free-text hint the host reads to pick which UI to render; leave blank when your project only needs one shape of activity UI. -
Add four bindings under Variables. For each, click Add variable, pick the project variable from the picker, and configure the field:
var_brew_honey(bool): Effect Replace value, Defaultfalse, Required ticked.var_brew_minutes(int): Effect Replace value, Default3, Boundsmin 0,max 10, Required ticked.var_brew_notes(string): Effect Replace value, Default empty, Required off.var_brew_ready(bool): Effect Read-only. Default, Bounds, and Required all hide in Read-only mode.
-
Leave Timeout, Estimated Duration, Undo barrier, and Players at their defaults for this walkthrough. Save.
Variable groups, covered below, bundle several bool bindings into one answer. Field-by-field detail for every knob above lives on the Activity reference.
Author the events that read the answer
Downstream events on the same node see the answer the player supplied. Stack them directly under the activity: on Brew tea, that’s two conditional dialogues gated on var_brew_minutes, one for >= 7 and one for < 7. Their conditions are mutually exclusive, so only one fires per completion, and it fires the moment the player finishes the activity.
The Brew tea node’s event stack:
- Dialogue: “Brew a pot of tea.”
- Activity: Brew tea.
- Dialogue: “Strong and dark, exactly right.” Condition:
var_brew_minutes >= 7. - Dialogue: “The tea is still weak.” Condition:
var_brew_minutes < 7. - Complete project.
(1) The debug row surfaces the values the player supplied during the activity. The read-only field (var_brew_ready) is absent because Read-only bindings display a value but never write, so nothing lands in the completion record. (2) The dialogue below the debug row is the downstream event whose condition evaluated against var_brew_minutes >= 7 after Complete fired, not against the default of 3.
Put dependent events on the same node after the activity, or on a node the activity’s branch jumps to. Do not spread them across multiple nodes assuming one will “wait for the other”. The runtime doesn’t queue nodes around an activity, only the events on the current node.
Group related fields
- Group name: the label the runtime reports on completion errors and the writer sees in the Members picker.
- Selection bounds:
minandmaxcount of ticked members the runtime enforces at completion. - Preset chip: shorthand for the current bounds (
Exactly N,At most N,At least N,No constraint). - Members list: the bool bindings gathered under this group.
Reach for a group when one question writes to several bool bindings at once and the count of selected members is part of the contract. “Pick exactly one role” is three bools with min 1, max 1. “Circle up to two skills” is four bools with min 0, max 2. The runtime enforces the count at completion, so downstream events can branch on the members without defensively checking that the player picked the right number.
The Members picker snaps each variable to the group’s shape when you attach it, and a preset chip next to the bounds names the shape (Exactly N, At most N, and so on). Detail lives on the Activity reference.
See also
- Activity reference
- Activity event reference
- Simulator: the Debug section covers the debug-row overlay used in the payoff screenshot above.
- Nodes and visibility: the general story of what makes an event fire.
- Expressions: condition syntax.
- Error messages: Activities: panel messages about group membership, non-boolean members, bounds, and read-only variables that also declare a default.