top of page

Behavior Tree Editor Post Mortem

The Problems I Wanted To Solve:

Add behavior tree functionality to Unity

Unlike Unreal, Unity doesn’t have default support for behavior trees.  Behavior trees are a powerful tool for game AI that I wanted to make accessible to myself and others when working in Unity.  I wanted to make an Unity package that would give a Unity project built in behavior tree support.

Make it easier to create complex AI in Unity

For many non-technical designers, game AI was major handicap in solo projects.  A common struggle among my fellow designers was implementing advanced AI in Unity.  I wanted to created an editor for my behavior tree system that could be used by non technical designers to create advanced AI.

​

Major Iterations:

Blackboard

My first major change was making a global behavior tree.  Traditions behavior tree implementations in Unity have required scripts to be written for each AI blackboard.  I wanted a blackboard that could reference any public variable in a Unity project without having to add any additional scripts.  This created a somewhat unique take on blackboards that allowed the creation of new AI without new scripts.

​

What Went Right:

Advanced AI could he made quickly and easily

The behavior tree editor succeeded in making it easier to create advanced AI in Unity.  The example AI I created to demonstrate the tree only took a days work to plan and implement despite it being quite complicated.  Even less technical designers who used the tool were able to create more advanced AI then they otherwise would have been able to.

The editor successfully conveyed behavior tree functionality

The editor I made for the behavior tree system successfully communicated how it worked.  Users with a basic understanding of behavior trees were able to use the editor with little to no direction.  I was also able to add every quality of life feature (such as copy/paste) that was requested during playtesting. 

​

What Went Wrong:

The black board wasn’t very intuitive 

The black board was the weakest part of the editor in terms of usability.  The blackboard I implemented worked a little differently then traditional systems which made it difficult for new users to understand.  While playtesting, most users were not able to use the blackboard without a it being explained to them.

Didn’t make as many supporting nodes 

I originally planned to include a wide range of basic leaf nodes for the behavior tree in the Unity package.  I ended up very getting around to this and only including the leaf nodes needed for the example AI.  The package would of been a lot stronger if it had multiple examples and a wider range of default nodes.

​

What I Learned:

The importance of UX in tools

My biggest takeaway was how important UX is when making a tool.  Even though tools are made for experienced users, good UX is still as important as ever.  Features that I thought were really useful were often not used because they weren’t intuitive enough.  Only the features will very good UX design were the ones people favored in playtests. 

bottom of page