Sign in to follow this  
Raziel Anarki

Proto* AI/prototyping framework - nestable coroutine AI (and other handy classes)

Recommended Posts

Presenting a new approach to writing behavior-tree-like AI logic, using nestable coroutines analogous to behavior nodes, resulting in a runtime-dynamically-created “tree” of behavior nodes, specified more expressively trough actual coderather than abstracted node-based-trees/graphs.

This way, most of the Selector/Sequence/Loop/Inverter/Succeeder/etc nested node logic in behavior-tree DSL-land can be replaced by writing regular code consisting of if/switch/do/while/for statements inside iterators yielding subroutine nodes.

Asset store link

Also included: simple object, and GameObject pooling solutions, and a Signals implementation of the Observable pattern as a type-safe event system, with an example scene and an in-depth manual.

Aims to be a simple, hackable and to-the-point prototyping bootstrap solution for your projects.



How it works:

- you write IEnumerable<Routine> return-typed coroutines
- which yield special Routine instructions (or nulls) between blocks of regular coroutine code
- you "invoke" child nodes using various (Routine).Run(...); -like calls
- you only need to tick the Update() function of the root node (a Routine) yourself

- a dynamic "behavior tree", with a current "active branch" will be automatically maintained trough yielding, in the background (with additional pooling and reusing of nodes for efficiency)
- use the Unity Profiler to visualize the dynamic behavior tree

Some of the philosophies behind- and the example scene included were inspired in part by the highly informative articles of Jean Simonet on the same subject (altough my implementation is a bit different from his as you'll see) : and


Share this post

Link to post
Share on other sites
Sign in to follow this