Contributions Summary
-
Enemy Base Systems (Excluding Movement Outside of Combat)
-
Enemy Types (Excluding Final Boss)
-
Enemy Behavior States
-
Enemy Attack Patterns and Projectile Prefab
-
Enemy Collisions/Hitbox Detection
Project Details
Galaxy Busters Elite is a 3D rail shooter with a heavy focus on narrative. It draws inspiration primarily from Star Fox 64. It was developed in Unity by a team of around 40 students in the University of Texas at Dallas's 2021 Game Lab course during the spring semester. The player destroys waves of enemies in their way as they progress through a series of three levels.
During this project, I was part of the programming department and worked, in broad terms, on the implementation of enemy AI and systems, excluding movement outside of attacks and boss mechanics, based on designer specifications. My job had me primarily meeting with game designers to discuss and implement required functionality for the various enemy types present in the game. This also included exposing fields and creating simplified visuals using Unity commands in order to communicate enemy mechanics effectively to designers working in the editor. I also worked with other programmers in my department in order to effectively weave things such as sound and visual effects implementation into enemy functionality.
​
Specific examples of enemy AI and systems implementation included defining behavior states that enemies could switch through that would end up changing their behavior patterns. Specific states were never specified by designers so I only created two for the sake of simplicity, passive and attacking, that were applied from a base enemy class to child classes for specific enemies. Enemies started in a passive state that hooked into another programmer's implementation of a node-based movement system that had enemies patrol between specified points. When the player entered an enemy's detection radius, the enemy behavior state would switch to attacking and the enemy would then begin specific attack patterns that varied based on the child class. Designers were able to edit various fields such as enemy health, attack damage, and view the detection radius through my use of an OnDrawGizmosSelected method that draws a wire sphere with a getter variable float value for the size of the radius.
This project gave me the experience of working in a large team of my peers, finding ways to optimize code structures and concepts, and implementing code that doesn't conflict with other systems. Alongside the things previously mentioned, I also learned how to participate in weekly Scrum-style department meetings. In terms of software, I learned how to work with Git through the hosting site Github as well as learning how to contribute content to a gitflow system using the GitKraken GUI.