Hello and welcome back! This past Christmas has helped so much in progressing toward making my VR game. My grandparents had gifted me the consumer version of the Oculus Rift (previously using DK2). This not only helped upgrade comfort and visibility of my project, but also gave me the ability to begin testing with the touch controllers! I’ve been waiting so long to get down and dirty with the game mechanics and now I have my chance!
During the holidays, I was pretty busy bouncing back and forth between stores and families, so not much else could get done in the way of working on my game. After, I focused more on updating my job application documents so I could apply for internships. I knew the upcoming winter quarter at OSU would be too busy, and I wanted to put my full effort into these documents. In addition, I also experimented with the touch controllers in a few Oculus titles to get a feel for how developers were using this new technology.
Now that that’s out of the way, onto the project!
To begin, I knew Epic Games had been beefing up their VR templates for a couple of years, so I wanted to get my feet wet by integrating their templates within my game. It took surprisingly longer than I thought because I took the long way around when coding. I began by taking my original HMD (head mounted display) Pawn and added the template VR hands for each touch controller. This made sense at the time as I knew they would be need to be separate objects in the game world.
What I did not realize is how convenient Epic Games made their engine for hitting the ground running with VR. The “Motion Controller Pawn” template included integrated touch controllers and basic VR movements (teleportation/gripping). Once I figured this out, I hooked everything up and mapped my controllers to the blueprints.
Though this was a great start, I saw a problem with their generic teleportation mechanic. When rotating your view within your teleportation circle (see picture below), if you took your hand off the joystick, it would snap back to the forward-facing position. This means, to change rotation of the player, you would need to hold the joystick down while hitting the teleport button. Though not too difficult with practice, I wanted to make such a common action effortless to the user. When my fiancée tried it as well, she complained about the issue without me telling her about it. That was 2 out of 2 people disappointed with the mechanic; I needed to modify it (fun!!).
The simplest thing that came to mind was to disable the snapping mechanism. In the new version, I would have teleportation circle pop up with the arrow facing forward by default. Then, the user could change the direction easily with no snapping involved. After researching the blueprints, it took a couple of iterations, but I managed to finally remove the snapping mechanism.
To get an idea, I’ll explain how Epic has their teleportation template designed. When the player moved his/her joystick, the arrow would rotate indicating the direction they would face after teleportation. However, when releasing the joystick, a branching “if” statement recognizes this and snaps the arrow back to the forward position. I removed this statement and inserted code to update the arrow rotation only if it was different than the forward-direction of the player (0, 0, 0). This prevented the arrow location updating if the player did not have their finger on the joystick.
The latter portion of the code took some iteration to get right. I did not know that the rotation of the touch controller was always (0, 0, 0) when untouched. I had originally connected the touch controller rotation to the Player Pawn’s rotation so the joystick could be oriented correctly independent of the player’s rotation. This was originally in Epic’s code and was a fantastic idea. However, I had thought that the orientation of the controller would be the rotation of the player and not (0, 0, 0). My mistake was discovered when I added debug text to my game to see what values were being recorded when pushing the joystick in different directions.
The last part of tweaking the teleportation was to change the joystick sensitivity. Though the movement worked correctly, the reading of the joystick movement was way too sensitive. When the player would push the joystick to set a direction and then release it, the flicking back of the stick would skew their set value. This was fixed by reusing the thumbstick deadzone code I originally took out.
With all these mechanics tweaked, I felt really good about the operation of this mechanic. Though not a big part of my game, I felt it was good to refine an already proven mechanic to give the player a good base to feel comfortable with.
Lastly, I wanted to try making a unique mechanic that would also appear later in my game. I needed a general flight mechanic for my player to control. From doing research, I know not to include any acceleration, but I do want the character to be able to move in the air. I know I’m looking at many nights around the toilet doing this, but it’s too great of an experience for people for me to pass up.
After looking at a few tutorials and researching the given code, I was able to nail down a solid method binding buttons and performing the movement on my character. More on the expansion of this mechanic later.
Well, it has been a great winter break. I was able to not only start my project up again, but also make some real progress to getting a demo out. I now have a general hub area constructed for testing, audio visualizer to tweak for the environment, environment art, touch support, and a road paved to begin working on game mechanics. Last, but not least, I have expanded the story and structure of my game and did even more research on my competition in the market.
Though I’ll be heading into my Winter term at OSU this coming Monday, I will be learning skills that will help me make games better and faster. I may drop off the radar for a while while studying, but will give you all updates on a monthly basis of where I am in school and life. Have to let you know all I’m still alive and kicking!
The plans for the future development will mainly be focused on gameplay mechanics. I want an extremely solid gameplay experience for my players and it is something I can realistically deliver (because I may be a little artistically challenged…). Until then, I hope you all had a great start to your 2018 year and keep pushing yourself! You never know where you will end up. Follow your dreams and keep fighting for what you love.