Platform: PC
Made With: Unity
Language: C#
Team Size: 1
Roles: All
Development Time: 8 weeks
Last Stand was a uniquely challenging project due to it being my first top-down game, making use of nav-meshes and a dynamic world space. This project was inspired by both top-down shooters and horde mode games, meaning I had to incorporate a wave spawning system and a currency / purchase system.
The wave system is relatively straightforward, where if there are no enemies present, a new wave is started. Preceding the start of a wave, a white flash effect is played for a few seconds before the UI is updated and enemies begin to spawn.
Spawn positions are simply an array of transforms, these are grouped in engine by location, so upon unlocking a new location, new spawn positions are enabled. The array is checked to remove the grouping transforms as when grabbing the child objects of the zSpawns object, the group parents are also added to the array.
The score system is very simple, where score is added on shooting an enemy or picking up a score pickup, and is removed on purchasing gates.
The only purchasable objects are gates, each using separate prices. On purchase, the gate is made inactive, the nav-mesh is updated as the gates use carving block off areas, the player loses the required score and the total game score is increased.
On finishing the game or dying, the total score is displayed alongside the options to restart the game or exit to the main menu.
The weapon system revolves around pickups that can replace the players weapon. This then replaces the shooting functionality, allowing for single, burst and spread firing modes.
Through this project I learned a lot about the Unity Engine and AI Navigation as this was my first proper delve into Unity for anything larger than a simple platformer.
Were I to redo this, I would improve the structure of the project, using both Enemy, Weapon and Pickup base classes, allowing for the easier addition of new weapons, pickup and enemy types.
Equally, following feedback, the game may have benefited from wider enemy variety, such as giants or faster enemies.
During development, I had planned to include Easter eggs, similar to those present in COD Zombies. However, time constraints due to bug fixing meant this was not finished.