Expand description
Behavior interpreters: the executors the Arora runtime ticks each step.
Two things share the word “behavior”, and this crate is about only one of them:
- A behavior (the noun) is an authored, editable representation of what a device should do — a behavior tree, a node graph — produced in a visual editor (Studio, the Vizij Workspace) and shipped as data.
- A
BehaviorInterpreteris the runtime-level executor that runs one of those: a behavior-tree interpreter, a node-graph interpreter. It is the thing the runtime actually ticks.
The runtime holds one Box<dyn BehaviorInterpreter> and ticks it — swapping
the interpreter replaces the behavior. The behavior tree is one interpreter
(arora-behavior-tree’s [BehaviorTreeInterpreter]); a Vizij node graph is
another. Adding a new kind of authored behavior means adding a new
interpreter here. Hand-implementing the trait to hard-code a single behavior
in Rust is possible, but it is a corner case — the promoted path is to author
a behavior in an editor and let an interpreter run it.
An authored behavior is a graph::Graph — nodes bound to functions, with
typed I/Os and links — and interpreters are edited by
applying a graph::GraphDiff. Loading a
behavior is applying a diff onto an empty graph. See graph for the model.
Each tick an interpreter gets a BehaviorContext: the shared
DataStore (read inputs, write intent /
outputs) and a CallBridge (so a
module-calling interpreter like the behavior tree can reach the engine). An
interpreter uses whichever it needs — a graph reads/writes the store; the
tree drives the caller.
Timing is not a tick argument. The runtime publishes the frame’s clock into
the store under the built_in keys before it ticks, so an interpreter that
needs dt or elapsed time reads it from the store like any other slot.
Re-exports§
Modules§
- built_
in - Built-in keys: well-known store slots the runtime maintains for every behavior.
- graph
- The shared behavior graph model: one serde-friendly data representation
every
BehaviorInterpreterreads. - interpreter_
module - The behavior interpreter as a module: the well-known ids and call
conventions under which the runtime exposes its one
BehaviorInterpreteron the engine.
Structs§
- Behavior
Context - What a
BehaviorInterpreterreceives eachtick. - Behavior
Error - An interpreter failed to tick.
Enums§
- Behavior
Status - Whether an interpreter wants to be ticked again.
Traits§
- Behavior
Interpreter - A behavior executor: something the Arora runtime ticks once per step to run an authored behavior.