Nodes
The built-in node catalog, one page per palette category, with every node's signature.
The built-in catalog is 645 nodes across 28 categories. A category is the grouping you navigate in the palette, so these pages are organised the way the editor is. The nodes that Studio's built-in plugins add are listed separately, under Built-in plugins.
How to read a node
Each node is written like this:
Delay
blueprint.flow.delay· Latent
The first line under the heading is the node's type id — the value stored in the document, and what you would register from a plugin. After it come the flags that are true for that node:
| Flag | Means |
|---|---|
Pure | No side effects and no exec pins. It computes its outputs when something reads them, and it is one of the conditions for use inside a Blueprint Value. |
Latent | Suspends the graph until it resolves. Not offered in a Blueprint Value (except Call Fn), an inline story value or a branch condition. |
While Settings → General → Developer options is on, the palette also shows each node's type id on the right of its row.
Pure does not by itself mean the node works inside a Blueprint Value. That is a separate, narrower rule: the node must be pure and non-latent and belong to one of the allowed categories (Data, List, Math, Time, Text, Slider, Displayable, Element, Game, Localization), plus a short list of specific exceptions (Init and On Flush heads, non-latent Flow other than Skip Delay, local variable access, Memo, Call Fn, comments, Return Value, Get Saved Var, and five Page reads: Get Page Props, Get Page Param and the three Is Surface … reads). A Self node scoped to widgetMain is excluded regardless of its flags; inside a Blueprint Value you reach a widget through an Element literal and the Element-category reader.
Then the pin table:
| Pin | Direction | Type | Notes |
|---|---|---|---|
in | in · exec | — | |
duration | in · data | float | Seconds. Accepts an on-card literal. |
completed | out · exec | — | Fires after the wait. |
token | out · data | Timer | Feed to Skip Delay to cut the wait short. |
Exec pins carry execution; data pins carry values. A type such as array<struct:nl.ending> is an array of endings, shown on the card as Ending list; the struct types are listed under Structs. Accepts an on-card literal means you can type the value into the node card instead of wiring an edge. Some nodes have dynamic pins, projected from a selected variable, a chosen fn's signature, or a case you appended. Those are described in prose, because there is no fixed table to print.
Availability
A node appearing in this catalog does not mean it appears in your palette. These filters apply:
- Blueprint Value. A Blueprint Value offers only the nodes the rule above allows.
- Inline story values. An inline story value or a branch condition refuses latent nodes.
- Owner and widget capability. Self nodes only show in the blueprint of a widget that has that capability; a
Set Slider Valueis not offered inside a Text widget's blueprint. - Present bindings. An Element node only appears once the graph already holds a compatible
Element,Element Flush, orElement Clicknode to wire it to. - List item context.
Get List Item Index,Get List Item Key,Get List Item CountandGet List Item Propsread the item an element is rendered for, so they appear only where a row can be in scope, such as the blueprint of an element inside a List item template.Get Fieldis offered everywhere, and reads the row when its Object is left unwired in such a place. - Story Action blueprints. A blueprint called from a story row is offered no node that drives the running game or its interface: no App, Localization, Network, Sound or Voice node, and almost none of Game.
When several compatible sources exist, the palette lists the node once. Adding it auto-connects to the source if there is exactly one; with more than one it leaves the target input open for you to choose.
Node families
Some nodes are variants of one operation, such as the six comparisons or the four keyboard heads. The palette lists each such set as a family.
- Browsing. While the Search nodes box is empty, a family is one row. The row shows the family's name, and below it the category and the number of nodes, such as Math · 6 nodes. Hovering over the row lists its nodes. Choosing the row adds the family's first node, the one listed first in the table below. Element nodes are grouped the same way, with one row per family for each bound element.
- Searching. A search lists every node of a family on its own row. Typing
>orGreater ThanfindsGreater Than, and typing a family's name, such asCompare, lists all of its nodes. - Switching a placed node. The card of a node that belongs to a family has a ▾ button beside its title, Switch to another node of this kind. It lists the nodes of the family that the blueprint can hold, with a check mark beside the current one. Choosing another node changes the card in place.
When a card changes to another node of its family:
- A wire stays connected when the new node has a matching pin that accepts it. A wire into
bgmVolumeonSet BGM Volumestays connected, now intosoundVolume, when the card becomesSet SFX Volume. - A wire the new node cannot accept is removed.
- A setting is kept when the new node has the same setting:
3on anIntegerliteral stays3when the card becomesFloat. Any other setting is removed, such as the key chosen onOn Key Downwhen the card becomesAny Key Down, and the new node starts from its own defaults. - A value typed on the card moves to the matching pin when that pin takes the same type of value, and is removed otherwise.
- Ctrl+Z (Cmd+Z on macOS) restores the previous node, its wires and its values in one step.
Families change only how the palette lists nodes. Every node keeps its own name and type id, and existing graphs are unchanged.
| Family | Nodes | Category |
|---|---|---|
| On Key | On Key Down, On Key Up, Any Key Down, Any Key Up | Events |
| On Gamepad Button | On Gamepad Button Down, On Gamepad Button Up, Any Gamepad Button Down, Any Gamepad Button Up | Events |
| Literal | String, Integer, Float, Boolean, Color, Vector2D, Rect, JSON, Null | Data |
| Convert Type | To String, To Integer, To Float, To Boolean, To JSON | Data |
| Check Type | Is String, Is Number, Is Boolean, Is Array, Is Object, Is Null | Data |
| Trim Whitespace | Trim, Trim Start, Trim End | Data |
| Change Case | To Lower Case, To Upper Case, Capitalize | Data |
| Replace Text | Replace, Replace All | Data |
| Pad Text | Pad Start, Pad End | Data |
| Rounding | Round, Floor, Ceil | Math |
| Random Number | Random Integer, Random Float | Math |
| Compare | Equal, Not Equal, Greater Than, Greater Than Or Equal, Less Than, Less Than Or Equal | Math |
| Get Preference | 17 nodes: every Get … node under Preferences except Get Track Volume, starting with Get Auto Forward | Game |
| Set Preference | 17 nodes: every Set … node under Preferences except Set Track Volume, starting with Set Auto Forward | Game |
| Get Save Info | Get Save Time, Get Save Playtime, Get Save Line, Get Save Story, Get Save Preview, Get Save Metadata | Game |
| Get Text Style | Get Font, Get Font Size, Get Font Weight, Get Text Color, Get Line Height, Get Text Align, Get Text Vertical Align, Get Wrap Mode, Get Effects | Text, Element |
| Set Text Style | The Set … nodes for the same nine properties | Text, Element |
| Get Image Framing | Get Image Fit Mode, Get Image Flip X, Get Image Flip Y, Get Image Crop Rect | Image, Element |
| Set Image Framing | The Set … nodes for the same four properties | Image, Element |
| Get Visible or Enabled | Get Visible and Get Enabled of one widget type: Button, Container, Frame, Image, List, Slider, Switch or Text. As Element nodes: Get Button Visible and Get Button Enabled, and the same pair for each of those widgets | The widget's page, Element |
| Set Visible or Enabled | Set Visible and Set Enabled of one widget type, and the matching Element pair | The widget's page, Element |
Text Style, Image Framing and Visible or Enabled are separate families for a widget's own nodes and for its Element nodes, and Visible or Enabled is a separate family for each widget type. The ▾ on a card lists only the nodes of the card's own family.
Categories
Each count is what the palette offers. A family counts as all of its nodes, so the number on a category's chip in the palette, which counts a family as one row, can be lower. Nodes hidden from the palette and kept so that older graphs still run are documented on their category's page and are not counted.
| Category | Nodes | Covers |
|---|---|---|
| Events | 54 | Entry points: lifecycle, input, Surface transitions, Broadcast. |
| Flow | 12 | Branching, loops, sequencing, delays. |
| Functions | 3 | Declaring a fn, calling it, returning from it. |
| Variables | 9 | Declaring and reading blueprint and persistent variables. |
| Data | 96 | Literals, conversion, predicates, JSON, strings, arrays, struct fields. |
| Math | 25 | Arithmetic, rounding, boolean logic, comparison. |
| Time | 15 | The clock, the calendar, and dates as text. |
| Game | 96 | Story control, dialog, preferences, saves, backlog. |
| App | 31 | Surface navigation, window, application lifetime. |
| Localization | 6 | The game's player-facing language, and its translation keys. |
| Network | 3 | HTTP requests and reading the response. |
| Displayable | 9 | Geometry, appearance variants, property animation. |
| Element | 137 | Everything above, aimed at a wired Element instead of self. |
| Image | 16 | Image assets and fill. |
| Text | 28 | Text content and typography. |
| Text Input | 3 | Editable text fields. |
| Button | 7 | Button label and pointer. |
| Container | 6 | Container layout and children. |
| Frame | 8 | The Page a Frame shows, and its params. |
| List | 32 | Runtime items, selection, scrolling, item context. |
| Slider | 9 | Value, range, and snapping. |
| Debug | 2 | Logging and in-graph comments. |
| Input | 2 | Which device the player is using, and whether an action is held. |
| Sound | 7 | Playing an interface clip, and the handle that reaches it again. |
| Voice | 5 | Playing a recorded line, and the dub language in force. |
| Component | 1 | The parameter that tells one placement of a component from another. |
| Switch | 9 | The Switch widget's checked state, and its enabled and visible flags. |
| Video | 14 | Playing, pausing, stopping and seeking a video widget, and its volume, mute, loop and speed. |