-
Notifications
You must be signed in to change notification settings - Fork 10
Logic Entities
Logic entities are invisible helper "things" that don't appear in the game world — they exist purely to build map logic. Instead of doing anything on their own, they are wired together with other entities through the I/O (Input/Output) system: an output on one entity (for example a trigger brush's OnTrigger) is connected to an input on another (for example a door's Open).
Logic entities sit between those endpoints and shape the signal — delaying it, gating it on a condition, repeating it, storing a value, or running a command — so you can build behaviour without writing any code.
Add them by right-clicking in the 2D view and choosing from the Logic submenu, then wire them up visually in the Logic Graph Editor (Ctrl+L).
Every connection you make in the graph has three parts, edited in the Property editor:
- Name — the target entity the signal is sent to
- Type — which input (or output) fires
- Value — an optional parameter passed with the signal (and an optional time delay)
A simple pass-through switch. When its Trigger input fires, it fires its own OnTrigger output — but only while it is enabled. This lets you turn a whole chain of logic on or off from one place, or fan a single trigger out to many targets from one reusable node.
- Set
Fire Onceso the relay fires a single time and then stops. -
Enable/Disable/Togglegate whether incoming triggers pass through. -
CancelPendingclears any delayed triggers that haven't fired yet.
| Input | Description |
|---|---|
Trigger |
Fire the OnTrigger output (if enabled) |
Enable |
Enable this relay |
Disable |
Disable this relay |
Toggle |
Toggle enabled state |
CancelPending |
Cancel any pending (delayed) triggers |
| Output | Description |
|---|---|
OnTrigger |
Fired when the relay is triggered |
A multi-input boolean gate. It remembers the on/off state of each source that feeds its Trigger input and fires OnTrigger only when the combination satisfies the chosen logic type.
-
Logic Type— one ofAND,OR,XOR,NAND,NOR. -
Initial State— the gate's starting output state (on/off). - Use it to require several conditions at once (e.g. two switches held down → open a door with an
ANDgate), or to branch behaviour.
| Input | Description |
|---|---|
Trigger |
Send an input signal into the gate |
Reset |
Reset all remembered input states |
Enable |
Enable the gate |
Disable |
Disable the gate |
| Output | Description |
|---|---|
OnTrigger |
Fired when the gate condition is met |
A countdown / interval timer that fires OnTimer after a set duration — once, or repeatedly. Ideal for delayed actions or things that happen on a beat (spawning waves, flashing lights, timed sequences).
Full details: LogicTimer
-
Interval— time in seconds before it fires. -
Start On— start the timer automatically at level load. -
FireTimerfires it immediately;ResetTimerrestarts the countdown.
| Input | Description |
|---|---|
Enable |
Start the timer |
Disable |
Stop the timer |
Toggle |
Toggle the timer on/off |
FireTimer |
Fire immediately |
SetTime |
Set the interval in seconds [float] |
ResetTimer |
Reset to the initial time |
| Output | Description |
|---|---|
OnTimer |
Fired each time the interval elapses |
Runs a debug-console command when triggered, letting map logic drive anything the console can do (cam 2, wireframe, ent_fire, spawning, and more).
Full details: LogicConsoleCommand
-
Command— the command line to run when no parameter is supplied (defaultcam). - The connection's Value parameter overrides the
Commandproperty. - The command is queued and executed on the main UI thread, so it is safe to touch the renderer and editor state.
| Input | Description |
|---|---|
RunCommand |
Run a console command (param: the command line; blank uses Command) [string] |
SetCommand |
Set the default command string [string] |
Enable |
Allow this entity to run commands |
Disable |
Prevent this entity from running commands |
| Output | Description |
|---|---|
OnCommand |
Fired after a command is queued (param: the command line) [string] |
A cinematic camera that takes control away from the player and glides along a chain of PathNodes — used for cutscenes and scripted reveals. Control returns to the player when the sequence stops.
Full details: Camera · Demonstrated in
maps/Maze.json
-
Path Target— the first PathNode of the chain to follow. -
Speed— travel speed in world units per second. -
FOV Override— optional field-of-view during the shot. -
Look Ahead— aim at the next node (true) or follow the path tangent (false).
| Input | Description |
|---|---|
Start |
Begin the cinematic sequence |
Stop |
Abort and return the camera to the player |
Pause |
Freeze the camera at its current position |
Resume |
Continue a paused sequence |
SetSpeed |
Override travel speed [float] |
| Output | Description |
|---|---|
OnStart |
Fired when the sequence begins |
OnReachNode |
Fired each time the camera arrives at a PathNode |
OnFinished |
Fired when the camera reaches the last node |
Creates a new entity at a PathNode's position when triggered — monsters, pickups, even another spawner. Great for waves, ambushes and dynamically populated rooms.
Full details: Spawner · Demonstrated in
maps/Spawner_Test.json
-
Spawn Type— which entity type to create (defaultMonster). -
Target Node— the PathNode used as the spawn point. -
Max Spawn— cap on total spawns (0= unlimited). -
Spawn Properties— extra properties merged into each spawned entity.
| Input | Description |
|---|---|
Spawn |
Spawn one entity at the target PathNode |
Enable |
Allow spawning |
Disable |
Prevent spawning |
SetTargetNode |
Change the spawn location to a different PathNode [string] |
| Output | Description |
|---|---|
OnSpawn |
Fired each time an entity is spawned |
OnMaxReached |
Fired when the Max Spawn limit is hit |
A small global store (up to 25 key/value pairs) that survives level changes, so events in one map can affect another — quest flags, puzzle state, counters, and simple inventories.
Full details: LogicKeyValueStore
- Give stores in different levels the same
store_nameand they share the same data automatically. -
SetValuewrites,GetValuereads, andTestValuecompares-and-branches viaOnCompareTrue/OnCompareFalse. -
Increment/Decrementtreat values as numbers;ClearKey/ClearAllreset them.
| Input | Description |
|---|---|
SetValue |
Store a key=value pair |
GetValue |
Read a key and fire OnValueRead with the value |
TestValue |
Compare a stored key and fire OnCompareTrue / OnCompareFalse
|
ClearKey |
Remove a single key |
ClearAll |
Remove all keys |
Increment / Decrement
|
Adjust a numeric value up or down |
| Output | Description |
|---|---|
OnValueSet |
Fired when a key is set or modified |
OnValueRead |
Fired by GetValue with the value |
OnCompareTrue / OnCompareFalse
|
Result of a TestValue comparison |
OnKeyNotFound / OnStoreFull
|
Error signals |
(See the dedicated page for the full input/output list and cross-level persistence details.)
- Triggers & The I/O Logic System — how inputs, outputs, parameters and delays work
- Logic Graph Editor — the visual wiring editor (Ctrl+L)
- PathNodes — waypoints used by the LogicCamera and LogicSpawner
- Console commands — everything the LogicCommand entity can run