Results: Ease of use
2. Additional knowledge was required for the user to create this behaviour tree:
- New Tasks can be created with custom actions and placed in the graph
- Tasks have properties that must be initialized from the default window
- Decorators have properties that must be initialized from the default window
3. The shortest possible re-implementation took 17 clicks, including 3 click and drags as well as 2 right clicks. I also typed 3 times to filter nodes after clicking and dragging to add nodes to the behaviour tree, only hitting 2 keys each of those times.
Note that the number of clicks actually increased because more properties were customized to create this simpler layout. Each default property, excluding booleans, requires 2 clicks to be changed from the initial value. Removing unused Blackboard keys (to autopopulate the defaults correctly) reduced the total number of clicks by 4.
4. Here is additional documentation describing how Tasks can be implemented:
https://docs.unrealengine.com/latest/INT/Engine/AI/BehaviorTrees/QuickStart/12/
Results: Visual feedback
A lot of the other basic actions are more discoverable, for instance, the Root node can only connect to a Composite node so one is forced to learn the difference between Composites and basic Tasks. Having the Wait and MoveTo basic Task nodes available immediately is very helpful for beginners, because they provide everything needed to create basic AI. Since the resulting node from clicking New Task is almost exactly the same as MoveTo node, I think some user experience improvements could be made to help new users discover what other functions Tasks can accomplish. One suggestion would be to add a right click menu option to convert a Wait or MoveTo node to a new Task node.
The visual quality of the product is greatly improved by this new implementation. Some of the flickering from the previous test results was caused by the Service's update intervals, and additional engineering-side conditions to keep track of the character state helped smooth the transitions. The new test results were implemented in a way that is much simpler than the Blueprint implementation and could be accomplish with a modest understanding of Behavior Trees. Overall, there was a strong improvement with a few hours of iteration on the previous method.
Getting further improvements will likely require starting from scratch, and will be completed in the near future when I have time to create a third person camera. In the meantime, I will be doing experiments to compare behaviour trees with state machines and tinkering with advanced AI features with applications to gameplay cameras; for example, the Environmental Querying System (EQS).