The Project itself
Smack room is a VR dungeon crawler inspired by another VR game called Rec Room. You have the option to play on your own or in a party. There are 3 levels to choose from which all have their own unique mechanics featured within them. In order to win the player(s) have to clear all enemies within the levels with weapons chosen from a large weapon arsenal at the start of each level.
My contribution to the project
- Modular weapon behaviour class
- Weapon implementation
- Player movement
Modular weapon behaviour class
In order to implement weapons efficiently we needed a base class with all essential information that weapons could inherit from in order to keep our code structure clean and simple. I achieved this by created a main class with essential information that any weapon could use regardless of it's type. Every weapon uses this template and builds further on it to make every weapon have it's own unique function and mechanics.
Weapon implementation
Every weapon is different and should feel different to use. To do this we made a few classes that would use the base template as a foundation to build on. We added a few unique variables to each of these classes. For example how ranged weapons would work. How explosive weapons would work and how melee weapons should function. With these scripts it was very easy to implement new weapons by simply adding the script to them and setting the variables.
Player Movement
Because we were using Photon for networking we had to sync all variables that would need to be visible to other players such as position, rotation and scale for example. This proved to be quite a challenge at the start of the project as it was a new way of programming. With our lead-programmer we created a system that synced all movement and animations in multiplayer.