HomeProduct wikiSmart Objects: models, nodes and safe playtests
Map Builder 6 min read

Smart Objects: models, nodes and safe playtests

Start with an interactive model, customize its logic and test behavior before applying it to the game.

A door blueprint connects interaction, a light, a message and a state change. Gravewright 0.3.0, English interface.
A door blueprint connects interaction, a light, a message and a state change. Gravewright 0.3.0, English interface. · Open full screenshot ↗

Start with an event

Doors, objects, levers, torches, Empty Objects and presence regions share a visual blueprint editor. Double-click an editable element in Map Builder to open Smart Object. Select a starting event, connect its output to a node and configure explicit actions. An empty authored interaction graph does nothing: no implicit toggle is added.

Doors offer On interact and On destroy. Objects also support On area enter/exit; regions offer area entry/exit and destruction. Named signals provide On signal. An event starts execution; it does not compare a state or choose an image by itself. Legacy state-specific interaction/entry/exit graphs and change events are discarded rather than migrated; recreate their behavior with current events and logic nodes.

Choose one of the 14 ready-made models

Select an Object or Empty Object and open Object options → Ready-made models, choose a model in Behavior, or open Object catalog in the node editor. These entry points share the same editable catalog.

ModelStarting behavior
Interactive switchToggle the object and optionally a linked door
ChestOpen/close and show a message on its first opening
Secret passageToggle a required linked door
Readable bookOpen an authorized journal handout for chosen recipients
AltarShow a message with a five-second cooldown
Warning trapWarn on token entry while armed; interact to arm/disarm
BellNotify chosen recipients with a short cooldown
Pressure plateOpen a linked door on entry; close when the last token leaves
Dice challengeAsk selected recipients to roll explicitly
Quest giverSet a bound quest active and open its journal entry
Quest completionSet a bound quest completed and open its journal entry
Entrance signShow a message on first entry; interact to read it again
Timed switchActivate, optionally open a door, then reset after a delay
Door buttonOpen a linked door when pressed

Search the catalog, choose the model and supply its required door, journal/quest, recipients, message, expression or delay. Add a sound when activated enables a campaign sound and volume; Use an active image enables another Object image for the active state. Leaving either unchecked adds no corresponding override. The inactive state keeps the original image, and Empty Objects remain image-free.

Choose Apply, inspect the generated nodes and customize them as needed. Applying preserves the object's identity and geometry as one Undo step; closing the catalog without applying leaves it unchanged. Replacing existing authored nodes requires confirmation. The warning trap reports a warning: damage, RPG checks, item consumption and system-specific rewards belong to the RPG system package, not these generic models.

Build a door toggle

  1. Select On interact and connect Check state, configured to compare Closed.

  2. Connect True → Change state: Opened.

  3. Connect False → Change state: Closed.

  4. Add Control light, Play sound or Change image after the appropriate action when desired.

  5. Bind another target using a typed Element reference, Light reference or compatible group. Without a target connection, element actions normally address the edited element.

  6. Simulate both initial states, then run a server playtest before updating the scene.

Value nodes supply typed data; they do not execute a chain by themselves. Compare state/value, All conditions and Any condition can feed the Boolean Test input of a decision. Sequence runs its branches in order; Choose path selects a typed case; Random selects a weighted branch.

Remember a puzzle with variables and signals

Use Get variable/Set variable with a case-sensitive name, scope This element or Scene, and type Boolean, Number or Text. For example, set scene Boolean PuzzleSolved to True, then emit the named signal PuzzleSolved. A receiving On signal graph reads that variable and opens its passage.

Each event reads an initial state/variable snapshot. A later read inside that same event still sees the initial value; the next queued receiving event sees the assignment. A signal alone does not open a door, carries no custom payload and remains inside the scene. Configure the receiver's action explicitly. GM Automation → Variables inspects memory; resetting a variable removes that entry without running a graph.

Area events run for eligible token crossings. A token crossing the entire area can cause entry and exit in one accepted move. Use event context and conditions when you want only the first arrival or last departure to matter. Interact with object explicitly runs a target's interaction behavior; Change state alone does not run another graph or its image/sound actions.

Request a roll or advance a quest

For Request dice roll, choose the native expression, optional label, recipients and result visibility. The server checks membership and scene access before delivering each request. The recipient must press Roll; streamers cannot receive an actionable prompt. Retrying or opening another tab reuses the recipient's logical roll. The graph continues without waiting for a result. See Chat and dice for native notation.

For Open journal, bind a campaign journal, quest or board and choose recipients who already have access. Opening it does not grant permission to read it. Set quest status binds one fixed campaign quest and desired status authored by the GM. A player can trigger that configured change through the object without gaining general journal editing rights. Check the quest's own visibility and permissions separately; see Journals and quests.

Use time deliberately

Delay persists a continuation; Timer is a named one-shot countdown whose expiry runs the matching named signal. They survive closed browsers/server restarts, and pausing scene automation keeps pending jobs waiting. GM Automation → Waiting shows the queue. Behavior changes, removed targets or lost access can cancel pending work. Exports, campaign snapshots and copies omit these jobs; a full database backup includes them.

Simulate, playtest and publish

Simulate is a local graph preview. Test behavior runs the server engine against the unsaved Builder document or a live element, showing predicted state, variable and cross-element changes. Choose an optional test actor/token for token-dependent actions. Tests use GM permissions, so also test a real player separately.

Tests roll everything back and deliver no live sounds, messages, handouts, roll prompts or camera changes. Quest changes and roll requests appear in the report without saving quest state or opening recipient windows. Delay stops at the wait; Timer scheduling is listed without advancing time or firing receivers. Verify actual timing in a controlled live scene. After successful editing, wait for autosave and choose Generate scene/Update scene; returning to the table alone does not apply project graphs.

Limits and troubleshooting

Each event graph allows 32 nodes and 64 connections; a door's graphs allow 128 nodes combined. A scope stores up to 64 variables. Delay/Timer share 64 pending jobs per scene and 256 per campaign. Cycles, invalid typed connections and oversized chains are rejected.

If nothing happens, check the starting event, connected actions, targets, pause state and Automation log. A player-triggered chain cannot lock/unlock by default; the GM must explicitly allow player locking/unlocking on that state action. A missing target can be skipped with a diagnostic. Teleport is within the same scene; these tools do not promise cross-scene or group transport.

More screenshots for this guide (1)
The safe playtest previews a door mechanism and reports its predicted changes. Gravewright 0.3.0, English interface.
The safe playtest previews a door mechanism and reports its predicted changes. Gravewright 0.3.0, English interface. · Open full screenshot ↗