Puppeteer is a goal-oriented AI planner toolkit I developed in the scope of my undergraduate dissertation “A Goal Oriented Utility AI Planner Toolkit Supporting Authorable and Comprehensible Behaviour Design“.
Artificial intelligence is an essential part of games. From the inception of the computer game medium, AI has played an essential role in creating unique and immersive experiences. Driven by constant graphical improvements in games, expectations towards realism, complexity, and emergence in game AI rise steadily.
AI planning presents itself to be a fitting, structured, scalable, maintainable, and re-usable solution to just these requirements but is, for many reasons, still seldom seen outside of big budget productions. Through the tool, I wanted to demonstrate that, provided a suitable technology, creating, understanding, and configuring reactive AI behaviour using AI planning can be made far more accessible to a bigger audience.
The dissertation set out to create a comprehensible toolkit for the popular Unity game engine which allows them to easily author, debug, design, and comprehend AI behaviour. At the end of production, its success in these areas could conclusively be verified through user tests.
Ultimately, I received the best possible grade on the dissertation.
- Engine Agnostic Goal-Oriented Action Planner (GOAP) Implementation in C#.
- Regressive A* Pathfinding for fast plan generation.
- A Custom Editor for the Unity Engine that enables users to create and configure everything aside from discrete logic in a specialised editor.
- A simple and concise API to implement concrete sensor and action logic.
- Utility Curves which define world state dependent utilities for goals.
- Sensors which offer a versatile way agents can be provided with world state information.
- The concept of Archetypes which are concise collections of goals, sensors, and actions of different AI classes.
- A graph-based Plan Visualiser which displays the planner’s choices in clear and retroactively verifiable way.
- XML Serialisation for configurations enabling simplified version control.
Part of why I chose this topic for my undergraduate dissertation was that i wanted to spend an extended period of time working on planner AI and GOAP specifically.
It was an incredibly insightful experience into the technology, gave me a deeper appreciation and understanding of behavioural game AI in general, and further solidified my desire to continue to work with game AI in the future.
Lastly, while the project was a great success already, there are definitely some features that I would still like to add and extent. Given I find the time to do it, I certainly want to continue working on Puppeteer.