The Behave project

Behave is a solution for designing, integrating and running efficient AI behaviour logic. At its core Behave has a drag-drop designer and a highly effective and flexible compiled runtime.

Express your AI concepts through industry standard methods such as behaviour trees, utility theory and blackboard.

No funky runtime data formats or interpretation. Designer → Compiler → Your code.




  • Unobstructed design process - designer is not blocked by developers not having implemented needed actions.
  • Flexible, non-limiting integration - no heavy API requring you to jump through hoops to integrate with your code.


Completing the circle of tools and runtime, Behave ships with a powerful debugger runtime and UI with the following feature set:

  • Seamless integration – just build for debug.
  • Live visualisation of tree state as running in the Unity editor or on your target device.
  • Full support for execution break, step and reset within a running simulation.
  • Breakpoints.
  • Action return value overrides for scenario testing and working with yet unimplemented actions.


The default Behave package is available on the Unity Asset Store and lets you use the designer inside the Unity editor, compiling your Behave libraries to the Unity .net runtime.

Should you so desire, other compilers and a stand-alone editor is available on alternative licenses. For custom licensing, see the License page.

Documentation & Support

As a Behave user you get access to the AngryAnt community which provides you with fast support, a direct line of feedback, a closed community to discuss design and use cases in, detailed documentation and more.

For more information and public examples, see the community page.

Walkthrough Videos


If you are familiar with Behave 1 and wondering what the changes are in Behave 2, here’s an excerpt from the changelog:

  • Unified all controls into one window, new keyboard interface.
  • All the extras in the debugger as described above.
  • Decorator rewrite into a control node.
    • No specific decorator handlers on agents.
    • Control is achieved via third connection socket.
    • Two initial decorator types: Repeater and Interrupter.
  • IAgent.Tick (Tree, bool) changed to IAgent.Tick (Tree)
    • Init calls can now only be handled explicitly
  • Auto complete on context, action names and string parameters.
  • Parameterised trees.
  • Partial library export as well as import-to-library.
  • Full coverage online documentation and other community resources.
  • Countless fixes and polish items.