This was a team project and our capstone project. We had a few problems with this project, and we were unable to fully finish it due to the pandemic, but in the end, we did exceptionally well and graduated with flying colors.
- Save System
- Audio Design
- Audio Programming
- Camera System
- Weapon System
- Health System
The controls were a mess when I took them over. For example, initially shoot was V for some reason. I went ahead and promptly made it left mouse. Another issue was with the dash. Originally the character could dash left/right and up/down. Everyone tried coming up with ideas on how to handle it. Eventually, we settled on making it a key combo with ctrl and WASD. Later on, we decided to just have left/right dash. One of the hardest things I had to do was the double jump. I wanted this to be handled with the space bar, but I had issues with the game detecting when the player was on the ground due to the collision tags getting screwed up. Eventually, I got it worked out.
This was honestly my pride and joy. For this, I decided to take it a step further and instead of having it save to Unity’s PlayerPref’s and instead use a binary format. The reason I did this is that I wanted to learn the proper way to do it, and have something that can save whatever I want. For example, at one point I actually had it set up to save inventory until that was removed. In the end, though I had it set up to save score, waypoints, health, and many more things.
Initially, we were all over the place when it came to the overall style of the game. We started with a SciFi dystopian theme similar to a Mirrors Edge. Then we went to a modern-day military shooter, and then we finally settled on the Alien/H.P. Lovecraft style of things. Because of this, I was changing out sound effects and music more than I wanted. In the end, I had down sounds effects and music quite rapidly with very little time. However, I think I did quite well.
This was my second pride and joy. For this, I decided to program a sound library to hold all of the music and sound effects that would be used in the game. For sake of ease, I also programmed in an audio manager to handle playing sound effects and music. Whenever a sound effect needed to be played, for example like the players’ gun shooting, the gun script would call the audio manager tell it what sound needed to be played and where in the world, if it was a 3D sound effect, and it would handle the rest.
Initially, I started out trying to program a camera system. I wanted it to have lookahead and confinement, but this proved too much for me, and I spent way more time on it then I should have. Eventually, I discovered CineMachine and implemented it into the game. I added confinement for the map and lookahead. One problem with Cinemachine that I could never fully figure out how to fix was when the player respawned the camera would freak out momentarily. I did get it somewhat smoothed out by tweaking the way the player respawned.
This is my third pride and joy. Initially, when I started with the weapon system I set it up to use raycast, but eventually, I decided to change it use projectiles. The reason I did this is that I was having issues with the raycast detecting if it hit something. Because of this I also decided to add in bullet drop and make a grenade launcher.
For the health system, I wanted to keep it simple and centralized, but I also knew I would want to expand it in the future. Therefore, I created a Living Entity system and use inheritance. This made things way easier especially when we started adding in things like health pickups, and figuring out when the player died and needed to respawn or game over.