We implemented and compared video game non-player character design patterns, including Utility AI, behavior trees, goal-oriented action planning (GOAP), and finite state machines. We evaluated the strengths and weaknesses of each design pattern. Some metrics included the ease of implementation, effectiveness at accomplishing a given task, and variation in behavior.
In this project, I implemented a Behavior Tree. Behavior trees provide a modular and hierarchical framework in which each node represents a self-contained task or decision. This structure allows for flexible and scalable AI design, making it easy to add or modify behaviors without modifying a lot of code. Therefore, the implementation of this method was fairly simple. However, the transition between behaviors can feel a bit too rigid if not carefully designed. In our observations, this results in AI that feels unnatural/predictable.