Code Vipers was the name of the group I finished my midterm class trilogy with. Previous to the Code Vipers, I
was a part of another group, but due to issues, not everyone made it to the final month and I was assigned to a
new group, which was the Code Vipers. Due to coming into a new group in the final month of the midterm projects,
I had assumed I was coming in on a mostly finished game that just needed to be polished. Boy was I wrong.
To start with, the Code Vipers lost two other people the same month I joined in, bringing them down to a three man group, with myself being the fourth and another person joining in being the fifth. With nearly half of the group being new, I suggested we sit down and go over what was left to do, and what all the project was about. To my horror and dismay, roughly seventy percent of the project had to be scrapped, as it was all the work from the two who had been removed, and they didn't explain their work to the rest of the group.
With that in mind, I settled in to making a guideline for us to use and hopefully finish in time for turn in later that month. The two who had left were in charge of the AI and the environment, with the User Interface developer, the character developer, and the AI assistant developer being the ones that were left in place. After picking through the smash of code that had been left behind, I agreed that we would just have to cut it and rebuild from what we had left.
Between keeping the other three working together, through a predetermined agreement not to touch each other's code ever, and rebuilding the environment while assisting in any other area, that month was probably my most hectic at the school. I had my hands in everything from the user interface design and development, to the AI behaviors and how they would interact with everything, to how the character moved and reacted to the environment. As the only one in the group with previous experience in Unity, it was my job to make sure everything ran smoothly and came to together in the end.
Beyond just assisting and managing the team, my official task was to redesign the environment to make it feel right, along with designing and implementing the wave based game system that was requested of us by the instructor. For the environment creation, it was simply clicking and dragging different props that had already been pulled into the project, making everything work well together and modifying how the game itself looked to fit the backstory. The code for modifying the landscape was simple enough, as all blockades were just props, or a small collection of props, that blocked the passageway to the next area, so I just had an overseer for the barricades that would remove each one after its waves had been defeated. This same overseer also controls the arrow pointing to the spot that has been opened, to help guide the player. There were also spotlights that I threw into the world after realizing how dark the lights I had in the scene made it, and with it being a war zone, I needed to have some that were damaged and flickering. This was solved by just doing a float that was incremented upwards by a small random amount every unity update that would turn on or off the light once it reach a set amount, before resetting itself back to zero.
The code for the wave spawns was a bit more tricky, and I ended up cutting a few corners to get the implementation working as quickly as I needed, having been only given two days for the entire system to be in place before we had to present our finished game. The first idea was to have a overarching empty box that was invisible and didn't cause collision to use as the area to pick random spots inside of. Now, I could go back and find the random X and Z position inside of the box with the locked Y, but at the time I was unable to reach that conclusion. Instead, I scrapped the idea of a bounding box for each area, and instead placed a large amount of spawn points around in each wave zone before modifying the wave overseer to pick a random one of those points to spawn the next enemy at. Of course, with how bad modding by a number on Unity's random number generator was, this led to multiple spots being picked more times than others, but it was complete and worked well enough for the time being.
Along with that, I scripted various small tasks, like the enemies and destructible objects breaking apart into visual effects to drop items. The actual destruction of the objects was done by destroying the visual model of the target while also instantiating the death explosion animation that I created, sending a single wave of particles flying back away from the impact point that shared color with the object being destroyed. The items were a mixture of what was there and what I had to build, with the props having existed but never having been implemented yet, and the code behind drop rates also needed to be written. That ended up just a basic random number choice with a set range for whatever the parent object was, with certain items only able to be dropped by higher tier enemies, and then a spatial detector that recognized when the player was close enough to begin an ever-increased speed application to the item until it caught the player and was "picked up" or removed from the game scene and added to the players inventory.
Looking back at everything, I'd have to say the hand placing of every prop on the world was probably the most exhaustive process of the project. The code I could easily go back and replicate, or even make better now, in less time than it took previously. Though, all in all, I feel like it was a good test of my skills at the time, and I don't believe neither I nor my team did terrible with what we had been given.