Toy Ninja VR Movement Paradigm

Toy Ninja has been submitted to the Oculus Share today. In this blog post I will discuss the movement/controls paradigm for the Ninja in VR.

If you're wondering why Toy Ninja is being experimented with on the Rift, here's a brief history lesson: At PAX East 2014 I had the opportunity to try out the Rift. The demo running that day was Couch Knights, and I was intrigued by the idea of 3rd person platforming in VR. Toy Ninja was started as a mission to explore and identify optimal design choices for 3rd person platformers. Now that I have a Rift on my desk and a Unity Pro trial ticking away you can expect blog posts fairly often detailing my most recent experiments.

Today's first release is a movement test. Without the Rift on my desk I had brainstormed four movement modes that could possibly work in VR. I suspect they could all work with proper game design decisions, but I am looking for a natural-feeling movement-to-button mapping. In the next few paragraphs I will step through the four movement modes and discuss how they fared in my testing.

  1. Plane Mode - allows the Ninja to move along one axis parallel to the ground and to jump. This is the movement mode used by the Toy Ninja alpha. It works terrific with a fixed, isometric camera, but I never meant it to be used in the VR version. Restricting movement to a predetermined path like this may work for side scrollers such as Action Henk, but it just doesn't work for Toy Ninja. In VR we have a terrific sense of depth, and I think it would be silly to waste that depth by not allowing the player to explore it. Unless we have a moving player camera (i.e. - camera on wheels) we restrict the Ninja to a small strip of real estate. According to the Oculus Rift Best Practices Guide, as well as my own experiences, camera location movement increases the risk of motion sickness. I may explore this mode or side-scrolling at a later time, but for now I see enough evidence to pursue other movement modes.

  2. World Mode - allows the Ninja to move along both axes that are parallel to the ground and to jump. This is an obvious extension to Plane Mode, but it isn't enough to give me an easy time controlling the Ninja in VR. I tested this code to see how the new video game articulation point created by neck movement affects spacial reasoning in a video game player. Personally, I found this mode required some unnecessary mental steps in figuring out which key needed to be pressed to go in the direction I wanted. When I press 'go left,' I expect the Ninja to go left. Following one world axis just did not feel right. Having the Ninja far to the World space's left then necessitates that I press the down arrow key to make the Ninja move left relative to my view of it. Bottom line: World Mode feels difficult. Players who buy the consumer version of the Oculus Rift will expect mind-blowing experiences. Those experiences will be hindered if they have to think about what button they need to press.

  3. Cylinder Mode - allows the Ninja to travel in a circle around the player's camera and to jump. This mode tries to adapt Plane Mode to the new articulation point I mentioned in the last paragraph. Much like Plane mode, however, it feels restrictive. Cylinder mode was meant to be a checkpoint in achieving the final initially brainstormed four movement modes. I do not feel comfortable using it. Pressing left, I expect the Ninja to go left! Seeing it curve in a circle kicks at my brain in a negative way.

  4. Cylinder Space Mode - allows the Ninja to travel in a circle around the player's camera, to move towards or away from the player's camera (therefore changing the radius of the cylinder), and to jump. This, I thought, would be the winner for 3rd person VR platforming. It moves the Ninja relative to the camera, and allows exploration of the full world. Unfortunately, moving left and right in a circle kept it from feeling natural. Just like World Mode, it did not feel easy to figure out where to go! It is odd, I think, to hold the left button and go in a circle instead of continuing in a straight line. The starting direction felt perfectly fine, but the circular path makes it difficult to platform in the world. I set a few books in my test environment to create a platforming path, and the amount of time I spent lining up and thinking about the buttons I needed to press was just too much.


The four original brainstormed methods did not feel right, but Cylinder Space Mode was the closest. The starting movement vector feels fine, but the continued path does not. In order to fix this problem I recommend Toy Ninja's current movement mode: Cylinder Space Freeze Mode.

When a movment key is pressed it freezes one of the movement axes. Let's say the player moves the ninja left: The left/right movement vector will be frozen so that as long as the player holds down the left key the ninja will continue moving in a straight line. When the left and right movement keys are both up the left/right movement vector will be unfrozen and jump to a new value based on the Ninja and camera's location.

This movement method, to me, feels the most natural. This method may undergo slight tweaks as I explore platforming against various geometry. For now Cylinder Space Freeze Mode (you may call it Pritz mode if you prefer ;-D) is the movement method I recommend for virtual reality third person platforming. Right now Oculus is reviewing Toy Ninja for publication on the Share page. You can download it right now from Game Jolt here.

Is anything I discussed confusing or worded poorly? Please let me know so that I can clarify my point to you and to others. Thanks for reading!

Previous
Previous

Alien: Isolation Technical Observations

Next
Next

Why did I make “How Do I Draw?” - and what I found instead