Arbor 3.0.0 release

We released Arbor 3 which implements behaviour tree and hierarchical node graph etc.

New function summary

Behaviour Tree

We have implemented a behaviour tree which is the best node graph for AI’s behavior control.


Since the priorities and conditions of the nodes to be executed can be visualized, it is easier to create a neat graph even if you construct more complicated behaviors compared to conventional state machines.

For details on the behaviour tree, please click here.

Behaviour Tree

Hierarchicalization of node graph

By using SubStateMachine and SubBehaviourTree, node graphs can now be hierarchized.


By using EndStateMachine, success or failure can be reported to the parent graph.


Rerouting of StateLink

StateLink’s reroute node makes connection line shaping easier.


Please use it when it overlaps other nodes and it is hard to see.

Rerouting of CalculatorBranch

Like StateLink, CalculatorBranch also implemented a reroute node.


Update contents

New: Behavior Tree


As a new function, Behaviour Tree which can combine behaviors while visualizing priority by tree structure has been added.

There are RootNode which becomes active first, CompositeNode which decides execution order of child nodes, and ActionNode which specifies action.

In ActionNode, you can set a script ActionBehavior which describes behavior.
ActionBehaviour can be customized as well as ArborFSM’s StateBehaviour.

For CompositeNode and ActionNode you can also add a script Decorator which checks the condition to execute and repeats it.
Customization is also possible here.

Besides, flexible AI can be created by Service script executed while the node is active.

Also, as with ArborFSM, data can be exchanged between nodes by using calculator nodes and calculator slots.


  • Added BehaviourTree component.

Built-in CompositeBehaviour

  • Added Selector.
  • Added Sequencer.

Built-in ActionBehaviour

  • Added Wait.
  • Added PlaySound.
  • Added PlaySoundAtPoint.
  • Added PlaySoundAtTransform.
  • Added StopSound.
  • Added SubStateMachine.
  • Added SubBehaviourTree.
  • Added InstantiateGameObject.
  • Added DestroyGameObject.
  • Added ActivateGameObject.
  • Added AgentPatrol.
  • Added AgentMoveToPosition.
  • Added AgentMoveToTransform.
  • Added AgentMoveOnWaypoint.
  • Added AgentEscapeFromPosition.
  • Added AgentEspaceFromTransform.
  • Added AgentStop.

Built-in Decorator

  • Added Loop.
  • Added SetResult.
  • Added InvertResult.
  • Added ParameterCheck.
  • Added CalculatorCheck.
  • Added ParameterConditionalLoop.
  • Added CalculatorConditionLoop.
  • Added TimeLimit.
  • Added Cooldown.


  • Added CompositeBehaviour to control execution of child nodes.
  • Added ActionBehaviour to execute action.
  • Added Decorator to decorate nodes.
  • Added Service to run while the node is active.


Arbor Editor

  • Implement hierarchy of graphs.
  • Added Graph item to the side panel.
  • Added menus when dropping on nothing when StateLink is dragging.
  • Added a reroute node of the StateLink connection line.
  • Added a reroute node of CalculatorBranch connection line.
  • Added to log to Console by clicking the value of CalculatorBranch.
  • Adding a function that does not move the nodes in the group when moving the group node while holding down the Alt(Option on Mac) key.


  • Flag to play at start Added Play On Start field.
  • Added Update Settings field to set update interval etc.


  • Added type specification of Component parameter.
  • Added Color parameter.

Built-in StateBehaviour

  • Added SubStateMachine.
  • Added EndStateMachine.
  • Added SubBehaviourTree.
  • Added Center Type field to AgentPatrol.
  • Added Center Transform field to AgentPatrol.
  • Added Center Position field to AgentPatrol.
  • Added Is Check Tag field to RaycastTransition.
  • Added Tag field to RaycastTransition.


  • Added base class NodeGraph for handling graphs.
  • Added interface INodeBehaviourContainer to be used when Node stores NodeBehaviour.
  • Added interface INodeGraphContainer to be used when NodeBehaviors store child graphs.
  • Added OnCreated method called when creating NodeBehaviour.
  • Added OnPreDestroy method called before NodeBehaviour discard.
  • Added Play and Stop methods to ArborFSMInternal.
  • Added Pause and Resume method to ArborFSMInternal.
  • Added playState property to ArborFSMInternal.
  • Added TimeUtility.CurrentTime method to return current time from TimeType.
  • Added GetClosestParam method to Bezier2D.
  • Added GetClosestPoint method to Bezier2D.
  • Added SetStartPoint method to Bezier 2D.
  • Added SetEndPoint method to Bezier 2D.
  • Added ComponentParameterReference so that the type of Component referenced by SlotTypeAttribute can be specified.


Arbor Editor

  • Renamed state list of toolbar to side panel.
  • Renamed state list of side panel to node list.
  • When copying and pasting the state, when copying source and copying destination were the same ArborFSM, changed to paste with StateLink connected.
  • When copying and pasting the state, change StateLink so that StateLink will stay connected if the state to which StateLink is connected is also pasted node.
  • Change color when mouse over of StateLink’s line.
  • Changed to display the menu even when right-clicking the title bar of StateBehaviour.
  • Change the way to display the value of CalculatorBranch during execution by mouse over the line or checking “Always display value” from the right click menu.
  • Change the design of the current state being executed.
  • Adjust scrolling to move to the selected node.

Built-in StateBehaviour

  • Agent MoveOnWaypoint Changed to move to the current target point at the start and move the target point to the next after the movement is completed.


  • ArborFSMInternal changed to inherit from NodeGraph.
  • Remove the fsmName of ArborFSMInternal (the use of graphName to NodeGraph).
  • Changed FindFSM and FindFSMs of ArborFSM to Obsolete (use FindGraph and FindGraphs of NodeGraph).
  • Changed stateID of StateBehaviour to Obsolete (use nodeID).
  • Changed the graph referenced from Node and NodeBehaviour from ArborFSMInternal to NodeGraph.
  • Changed to manage CalculatorNode by NodeGraph.
  • Changed to manage GroupNode with NodeGraph.
  • Changed to manage CommentNode with NodeGraph.
  • Changed to manage ClaculatorBranch by NodeGraph.
  • Change the stateMachine field of CalculatorSlot to the nodeGraph field.
  • Move the stateMachine property of NodeBehaviour to StateBehaviour.
  • Changed lineEnable of StateLink to NonSerialized.
  • Delete StateLink’s lineStart and add a bezier field.
  • Move the TimeType in the TimeTransition class to the Arbor namespace.
  • Changed the built-in StateBehaviour namespace to Arbor.StateMachine.StateBehaviours.
  • Changed to specify Parameter to be referenced by SlotTypeAttribute specified by FlexibleComponent.
  • Changed so that you can use the RequiresContentRepaint method of the Editor class when redrawing is required.


  • Dragged from NodeGraph from Inspector to Hierarchy so that it can not be moved.
  • Move built-in NodeBehaviour related scripts to the BuiltInBehaviours folder.


Arbor Editor

  • Fixed Copy node disappearing when ArborFSM Copy Component is executed after copying node.
  • Fixed that StackOverflowException occurred when repeating transition by TransitionTiming.Immediate.
  • Fixed that it did not stop if you wanted to transition by TransitionTiming.Immediate even if a breakpoint was set in the state.
  • Fixed an exception occurred when entering search word during hierarchical animation in AddBehaviourMenu window and AddCalculatorMenu window.
  • Fixed that Arbor Editor reference does not return when Unode of Remove Component of NodeGraph.
  • Fixed so that menu of graph is not displayed when right clicking in node.
  • Fix to call OnStateAwake and OnStateBegin when behaviourEnabled is switched during execution.
  • Fix to call OnStateAwake and OnStateBegin when StateBehaviour was added during execution.
  • Fixed a log of “Removed unparented EditorWindow while reading window layout” appearing in TypePopupWindow when starting Unity.
  • Fix to always do redrawing during execution only when necessary.
  • Fix to grid snap when creating nodes.
  • Fixed display of node blurred when size of graph area was changed by node creation etc.


  • Fixed that EachField enumerated duplicate public and protected fields of base class.


  • Fixed that NodeBehaviour remains internally when Reset from Inspector.
  • Fixed that Calculator remained internally when deleting ArborFSM component.

Asset Store

Arbor 3 has been released as a separate package, so even if you have already purchased Arbor 2, a separate upgrade fee will be charged.

However, if Arbor 2 was purchased after February 7, 2018, it can be upgraded for free.

Update procedure

Please follow the procedure below when updating Arbor.

  1. Please be sure to make a backup of the project before the update.
  2. If you are opening an existing scene, create a new scene from “File / New Scene” in the menu.
  3. If you are opening the Arbor Editor window, close it once.
  4. Already Removed Arbor folder that have been imported.
  5. Import a new version of Arbor.