Kitten Catastrophe

Spring 2019

A streaming open world game with artificial intelligence.

https://github.com/e2-dunstan/AT-OpenWorld

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.

Project | Kitten Catastrophe

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.

  • Enlarge image
  • Enlarge image
  • Enlarge image
  • Enlarge image

Advanced Technologies Showreel, featuring this project.

Play Video

Report

  • 29 Jan 2019
  • Kitten Catastrophe Technical Report
  • The technical report written for my advanced technologies module for a stream...