Hive: Armada
Take Flight To Defeat The Deadly Armada
Hive: Armada is a virtual reality bullet hell shooter where players control a gunship attached to the controller, facing off against a multitude of enemy drones across multiples waves of unique challenges, all while collecting in game iridium to buy more weapons and ship skins.
Team Members
Perry Sidler
Miguel Gotao
Chad Johnson
Marc Karam
Ryan Britton
Kara Mendez
Time Frame
August 2017 - May 2018
Technologies
Unity
SteamVR
HTC Vive
Oculus Rift
My Roles
Assistant Team Manager
Lead Programmer
GitHub Manager
Awards
IEEE GameSIG - Intercollegiate Computer Game Showcase 2018 Top 10 finalist and recipient of the Accessibility Award
Features
5 wave standard mode with boss
Infinite arcade mode
Object pooling
Colorblind mode
4 weapons
2 ship skins
5 power-ups
7 enemies
Object Pooling
Goals
Reduce lag
Simplify spawning
As development progressed, we started noticing lag in the game. Initially we thought the lag was caused by the number of enemies and projectiles being spawned. I researched causes and solutions for lag in Unity and discovered that the culprit was actually garbage collection dealing with all of the destroyed objects.
I created our object pool manager after one of our professors suggested we look into object pooling as a solution to our lag issues. The manager assigns a type identifier (short ID) to each object type in the pool and a pool identifier (uint ID) that is unique for every pooled object. The pools are stored as an array of Stacks for inactive objects (arranged by type) and a Dictionary for all active objects. When an object is spawned it is removed from its Stack and placed into the Dictionary with its pool identifier as the key. The process is reversed for despawning. I use Stacks for the inactive pools to maximize reusing of objects, therefore limiting the loading and unloading of objects from memory. I used a Dictionary for the active pool for its O(1) search and insertion time complexity.