Finite-State Machine / Behavior Tree / Utility AI

Morten Reinholdt Apex Utility AI

A short update on our work.

We are currently working on a couple of full demos for the Utility AI; an RTS demo and a Sims-like demo.

I just wanted to share a little mid-time research.

The following images are the same AI implemented using a Finite-State Machine / Behavior Tree methodology and the Utility AI methodology. Basically, the AI is a perpetual AI for people oscillating between sleeping and working … almost like life :-)

The difference in complexity for solving the same tasks is quite significant. We actually implemented the FSM first. However when we were about to extend the number of desires from two (2) to four (4) the pain of updating conditions for the state machine / tree was simply unbearable. So the full features AI will be Utility AI only 😉

During the development we also experienced the pain of debugging an FSM. We had forgot to set the score on a Qualifier. Consequently, the default action kept getting triggered, leading to a failure of the people picking up work tasks as they were supposed to do. We thought we had checked all scores on all Qualifiers, but due to the size of the tree we had missed one. This would not have happened in a Utility AI.

Finite-State Machine / Behavior Tree :


Apex Utility AI – FMS implementation


Utility AI:


Apex Utility AI – Utility AI implementation



The demos are available soon.