Parkour and shoot your way out of the building - conquering room after room in this fast-paced action game.
In this project, I got to co-create the player with another programmer. I was responsible for the combat side of the player. This includes the creation of the two weapons available to the player. There is a semi-automatic and a fully automatic weapon. You can also kick enemies and slow down time.
The semi-automatic weapon is a precise, high damage weapon with a few bullets that one shots enemies in their critical zone.
The fully automatic weapon has a short wind-up before firing any bullets. These bullets deal less damage, but are fired fast.
First Person Camera
I also implemented the fps camera! I learnt a lot during the creation of the camera as I had to dabble a bit with quaternions.
Here is one of the earliest versions where I was testing out the camera in-game.
The Player Combat & Abilities
Another responsibility I had regarding the player was implementing all of the animations! For this, I worked closely with the artist who made and animated the character. I also added some simple additive animation blending to the idle and run animations. The player's animations are brought together with a Finite State Machine inspired by the animation state system present in Unity.
For this project, I also reworked and refactored a lot of the animation system that was built during the last project. In the end, this made it much easier to work with.
I implemented nearly all the UI in the game. Mainly the menus and the player UI present in-game. To create the menus and especially the settings, I created different UI elements such as buttons, sliders and toggle-buttons.
I got to do a lot of different things this project other than what I mentioned above! Some of these are mentioned below.
Because we had noticed a GPU bottleneck in our engine, I wanted to implement faster rendering. I did this by instancing our rendering of models for shadows and the G-Buffer. Even though the visual result was the same in the game, with or without the instancing, it felt good to have optimized some of the GPU work.
Point Light Shadows
One thing I spent a lot of time on was implementing shadows for our point lights. I struggled with getting this one right, but I finally got it to work after some extensive debugging with my fellow programmers!