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

Message

Fire one void call and move on, with nothing to wait for and nothing to interpret.

Some calls have nothing to say back. Light the lamp, play the sound, raise the alarm. A message sends one void call and the graph carries on.

A method binding asks you what the return value means. For void Shine() that question has no answer, and a node that keeps asking it hands you a Result card of tests that can never run.

BeaconWarmUp.bqbehavior ends with light the lamp, a message bound to Beacon.Shine(). The node says what it does and nothing else, which is the point.

  • A one-shot command your component performs immediately: play a sound, spawn a hit effect, set a flag through a method.
  • A notification to another system that does not report back.
  • A call with arguments but no answer, like the Platformer gallery’s request slam, bound to Players.Slam(float power) with the parameter left on its declared default.

Use method when a return value, waiting, or result mapping matters.

A message member node requesting a slam
Figure 1. A message names the void method it sends. There is no return value to compare, so what the node reports is the call itself.
The message rail from its Target card down to its Result card
Figure 2. One void call. The parameter stays on its declared default, and Result carries Always with its Reports row on succeeded.
  1. Add message from the picker, under ACTIONS, described as “send a message; fire and forget”.

  2. Finish Target.

  3. Use Member > Change and pick the void method. A method with a return type is refused here, with the picker saying that message operations need a void-returning method.

  4. Fill any Arguments rows the declaration exposes. Optional parameters can stay on Default, and params, ref, and out rows appear when the signature has them.

Result

Success
The call was made and the node reported what Reports names, which is succeeded unless you changed it.
Failure
The call threw, or the target could not be resolved, which is reported as a fault rather than an authored failure.
Running
Nothing waits here. The void call settles inside the evaluation that made it.
  • The member has to be an exact public void method. Validation rejects anything else.
  • There is no completion to wait for and no value to store or test. What you can author is the result the node reports: Always plus Reports, which is succeeded out of the box. A void method that also writes out or ref values states that contract on the card instead.
  • Arguments behave exactly as they do for a method, including ref reads, out destinations, and params rows. See arguments and results.
  • A thrown call reports a fault with the graph, node, and member recorded, and commits no outputs.
  • On the entity path a message is only available against a static declaring type, because an entity component has no instance call site. Entity bindings has the detail.

When it goes wrong

SymptomCheckFix
The method you want is missing from the picker.Confirm it returns void.Use a method node for a returning member, or add a void wrapper if the command really is fire and forget.
The effect happens too early.Look at the sibling order: a message finishes immediately, so the next node runs on the same update.Put the message after the node whose completion it depends on, such as an event condition.
The call happens more than once.Look for a Repeat above it, or a parent that re-enters the branch.Gate the branch, or move the message where re-entry is the behavior you want.
A NullReferenceException lands inside your method.The fault trace names the graph, the node, and the member.Fix the component state the method assumes, since the graph reports the fault instead of hiding it.
You wanted to know whether the command worked.A message has no answer by design.Bind a method returning bool and map When true and When false.
Full-size image