To get a better understanding of the development changes and limitations with VR development I decided to write a VR application from the ground up.
With access to the hardware and software development kit, only a simple idea was required to kick off this side project. I decided, like so many other early VR developers, to focus on taking the traditional 1st person shooter experience into the VR realm. To do this I would focus on not only the weapon control when utilizing full body motion capture in VR, but merge the digital world with physical by making weapon manipulation as realistic as possible.
It all started with an initial build which I posted a video of to show off to friends
I was pretty much hooked after that due to the endless amount of things I felt I wanted to add to make this application and VR experience even better. The next major milestone of development was enabling the ability to reload a weapon. This required a rewrite of my initial weapon class structure to allow me to utilize this logic in a global manner across all weapons I would potentially add into the application in the future. Nevertheless, the result was something that continued to motivate me to continue tinkering.
With a basic shooting system, debugging each iteration of the application was starting to get dull. So I decided the next step could be to spend some time implementing some elements of gamification. To start off with I used a simple box asset as my enemy. Boxes of random sizes would drop from random locations in the sky around the level. To aid in the 'fear factor', these boxes slowly moved toward your location. The basic game was made, destroy all the boxes! This helped let me fully understand some of the benefits as well as some of the drawbacks when attempting to build a playable game with this configuration.
With a dull, yet working demo in place, it was time to spend some more time refining the glamorous but very important aspects of the game. To start off, I added a working red-dot into the gun sights. This actually helped when aiming the weapon and I made sure it had a glow effect in dark settings to replicate a real setup. Next, I moved the shooting logic to a simplified Raycast system to ensure that I was able to properly align my weapons for VR controls and still be able to shoot when the weapon was pointed. Assets and logic for spent shell casing were added to the weapon logic to ensure a shell was sent on a ranged randomized velocity. Finally I spent time added impact effects for bullets on different sources of impact (ie. flesh, ground, wood, etc.) as well as added muzzle flashes to the weapon. In VR the bright flashes from the weapon were very realistic.
After spending many hours refining the application, I needed to add something new to keep my motivation peaked. With the new effect system, I decided to spent some time adding in grenades. Combined with some time spent on object movement filters when holding an object to smooth out jerky behavior, this was another step toward an very fun tech demo.
With a simple weapons system in place, I was still getting sick of shooting boxes. I decided to start working on a networking system to enable multi-user gameplay in this VR application. The idea being that two people are put into a level in random locations. They are locked to those locations and can move within their physical bounds configured in their VR setup. The goal of the game, is to find and shoot your enemy before he or she find you first. Along with the basic multi-user system, I implemented a better environment to hold these shootouts in. Finally to ensure that two players didn't have to be within super close proximity to one another during the online battles, I also added scope logic to the ingame M-16.
It was around this time that I ran into my first major roadblock. How was I going to enable multi-user playback without a character instance for each player in game. This player instance would need to be tracked 1:1 with in the user to ensure that when they performed a movement like hiding or ducking behind something, their in game representation would do the same. After many many tests, I decided to pull the plug on the idea of a multi-user game. There was a way to do this, it wouldn't have been perfect, but the work to get there was more than I was willing to take on during this side project. Therefore, I re-organized the game logic, added Zombies and a simple UI.
It was at this time that my interests in this specific application started to fade. I wasn't working on it as much as the ideas for new additions and fixes weren't as appealing as working on a new project all together. It was also at this time that beta versions of VR games that game studios were working on were being released for public testing. It was evident at that time that I wasn't the only person with the idea of a shooter game! It was tons of fun playing all the released variations on a similar concept to see what others did different.
Some of the released VR titles that display some amazing mechanics described in this project outline are
Feel free to contact me anytime by any of the mediums listed on the about page or via the contact form below.
Email: fisher.matt at gmail.com