Kitten Catastrophe
Spring 2019
A streaming open world game with artificial intelligence.
Streaming
The streaming system in this game is node-based. I created an inspector editor script which draws a grid with defined node sizes and overall size, and the objects in each node are saved to a 'Tile' class holding all the necessary data for them to be loaded and unloaded at runtime. These tiles are saved to an XML file. When the player moves between nodes, the objects are loaded/unloaded in batches across multiple frames to reduce stuttering. The tiles adjacent to the active tile have the AI behaviour disabled. The entire system may be faster if the objects were simply pooled however the brief was to load from a file. More information on all of this can be found in the technical report linked below.
A* Pathfinding
Unity's NavMesh system was a strong contender for the AI navigation in Kitten Catastrophe, however I'd never really delved into AI prior to this so I chose to implement A*. I used a path request and queue system with the heap (C# interfaces and delegates) which sped up the average time to find a path from 12ms to 3ms. I still kept NavMesh for the kittens following the player because they needed to update their destinations more frequently than the NPCs.
Advanced Technologies Showreel, featuring this project.