Final Year Project
The goal of my final year project was to research and gain an understanding of some of the best real-time AI techniques used in modern games. Then to use this knowledge as a basis for creating my own AI control architecture within a 3D game environment with player interaction.
Although I knew it would not be attainable, I wrote a high-level pitch for the game I had in mind when creating this. This should help to provide some context on the purpose and design of the AI system:
Island Outpost is a colony management style simulation game. The player is put in charge of a group of characters that are completely controlled by AI. It is the task of the player to act as a guiding hand, issuing jobs for the characters to complete, and acting to ensure their survival. As with most simulation games there isn't really an end goal, the player can lose if all their characters die, but the player finds fun in exploring the different simulation outcomes, and in trying to complete their own self-driven goals.
I created a prototype which achieved all of the base goals of the project:
- Multiple AI agents with individually tracked needs (eating, drinking, and socializing).
- AI fulfils basic needs autonomously.
- Player can issue jobs at any valid world location.
- Utility theory based AI decision-making architecture.
- Behaviour Trees used to carry out tasks.
- A* search algorithm used for AI path-finding, optimized for grid-based map.
- 3D architecture using simple GLSL shaders, objects drawn using billboard sprites, cube-based terrain
For what I set out to do, the prototype is feature complete. I would have liked to have had enough time to polish the visuals and flesh it out a bit more as it is admittedly lacking visually and gameplay wise.
Below is a screenshot of the game prototype. There are three AI agents moving toward a job target, indicated by the red arrow, where they will build a wall. Food and water are scattered around the map, and the AI agents will seek these out when they become hungry or thirsty. The player controls a yellow cursor, which allows them to issue jobs within the world.

The time constraints I had to work under were extremely demanding for the scope of the project. It was unfortunately not feasible to also build a fleshed-out gaming experience with all the other work required.