Feline Frenzy (Unity + ML-Agents Game)
Software Design
The codebase was created entirely within C# and used external Python Machine Learning scripts within ML-Agents to train the AI agents. Some of the software design patterns I used to ensure quality and mainability, whilst also optimising game performance, were:
- Flyweight
- Publish/ Subscribe
- Object Pooling
- Service
- Factory
- Visitor
- Singleton
- State
- Observer
- Command
Machine Learning
During prototyping several deep learning techniques were experimented with, which included:
- Reinforcement Learning,
- Imitation Learning,
- And Generative Adversarial Imitation Learning (GAIL)
For the final product I settled on using Self-Play for training, which is in the category of deep reinforcement learning techniques.
The agent's observations consisted of its observations of its environment, specifically which tiles were free and which units were on the claimed tiles. These observations were then passed into the Neural Network which returned an action to perform to maximise the agent's chance of winning the match.
Visuals
All visuals, including characters and the Graphical User Interface, were created within Blender and Photoshop.
Five character models were created in total, with each one representing a different unit:
These models were exported as FBX models from Blender and imported into Unity where their materials were altered to be compatible with the Universal Render Pipeline (URP). The environment models were also created in Blender, with its textures being created in Photoshop, and then exported to Unity.