Skip to content
Bit Quirky Behavior Trees and
State Machines

Search documentation

All topics and APIs

Close returns focus to Search.

What are you looking for?

Try a common topic or enter a complete API identifier.

Browse the reference instead

Esc closes · Tab reaches results · Enter opens the focused link

v0.6.0
Menu

What it does not do yet

One honest list of the nodes, controls, and debugging powers this release leaves out, each with the way to get the same result today.

If you have used another behavior tree asset, some of the palette you remember is missing here. This page is the whole list, in one place, so you find out in ten seconds instead of hunting the menus. Every row names what to do today, and the rows that name a sample game link the pattern page where you can read the graph it comes from.

Not in this release What to do today
Random Sequence For a random pick between orders you care about, put a Random Selector over two or three branches, each the Sequence you wanted. For every child in a shuffled order, wrap the Random Selector in Repeat on Count and gate each branch with the same already-run variable the next row describes.
A Random Selector that never repeats a pick Each pass picks by weight on its own, so store the last pick in a blackboard variable and gate the branches with Conditional.
Utility Selector Score the options in your own C#, write the winner to a blackboard value, and put a Selector over branches whose conditions compare it. Racing Line’s CPU driver decides its catch-up pressure exactly that way.
Switch A Selector whose children each carry a Conditional comparing one variable is the same decision, and it shows which case won in Live.
Step Sequencer Give each step a mode in a state machine, which also survives being interrupted halfway through.
Cooldown decorator Hold the next-allowed time in your own component and bind a field: that is exactly how Horde Survival’s attack with cooldown works.
Execution Limit Repeat on its Count policy bounds a loop, and a counter in a variable plus a Conditional bounds a branch over the agent’s life.
Iterator Loop inside your own method and return a result the graph routes. The graph decides; your code does the walking.
Wait Until An Event Condition waits for a C# event, and a Member Condition under Repeat on Until Success retries a check every update.
Monitor Watch the value with an Event Condition, or put the check on a continuous transition so it is re-read every tick.
Guard Gate the branch with Conditional over a flag your own code owns, which keeps the arbitration rule in one readable place.
Force Success, Force Failure Set a member node’s Result to Always and choose the outcome it reports. Inverter covers the flip.
Not in this release What to do today
Abort mode Both Pick Lower Priority or Self for the node that owns the interruption, and add a second interrupting condition where you need the other reach.
Scene or project blackboard scopes A blackboard belongs to one graph instance. Share state across agents through a component or a static declaration the graph binds with a target.

Parallel is the honest exception on this page, because it is in the palette and it works. In this release it visits its children in Children order, exactly like a Sequence: Success once all of them have succeeded, Failure the moment one fails, and no completion policy to choose. Concurrent children with a policy are planned. Until then, use it to group the children that all have to succeed, and read do together for what that buys you over a Sequence.

Not in this release What to do today
Breakpoints on an entity Unity’s global pause plus the entity Live view reads the graph of the exact entity you selected. GameObject agents have per-agent breakpoints.
Editing values on a running entity Entity Live observes. Change the ECS data from your own system, and the next tick reads it.
Editing values in the graph-wide Blackboard panel That panel is a snapshot. The editable rows are on the member cards of a GameObject agent’s bindings.
Live editing a struct whose fields are not all floats on a member card The card shows the struct’s fields and its real type. Change it from your own code, or surface the part you want to tune as its own property.
Seeing a hosted tree’s nodes on the Live machine canvas The machine canvas draws modes. The rail’s Runtime card names the active state and the action running inside its hosted tree.
A result badge on every card in a GameObject Live tree The GameObject Live canvas carries one status pill, on the node the cursor is holding, showing the graph’s latest result. A leaf that succeeds hands the cursor on inside the same tick, so its card never shows a green badge. Read the rail’s Graph runtime status card for the last result, or run the graph on an entity, where every evaluated card keeps its badge.
The A key on an empty canvas, and Cmd+R for Reload Both are named by tooltips that no handler maps. Click the buttons. Every shortcut that is bound is listed.

Everything above was read out of the shipped package or observed in the editor while this documentation was written. When a row moves, it moves in the release notes first.

Looking for a capability and not finding it here? Ask on the Bit Quirky Discord. A missing row is a documentation bug worth reporting.

Full-size image