informa
5 MIN READ
Featured Blog

Toy Ninja VR Movement Paradigm

In this post I discuss mapping player input into movement of a 3rd person avatar in virtual reality.

About a month ago I released Toy Ninja VR.  In this article I will explain my thought process on the mapping of player input to movment of a third person avatar.

I started developing Toy Ninja VR months before I got my hands on an Oculus Rift DK2.  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.  You can try out this mode out right now by downloading Toy Ninja VR from Game Jolt.

This article was originally written for my personal blog located at JackPritz.com/blog.html. At the suggestion of readers I am republishing it here for a wider audience.  If you like this article please consider checking out other articles I have written there.

Latest Jobs

Manticore Games

San Mateo, California
8.23.22
Senior Software Engineer - Mobile

Sony PlayStation

San Diego, California
6.23.22
Sr. Online Programmer

The Walt Disney Company

Glendale, California
8.1.22
Associate Marketing Manager - Walt Disney Games

Insomniac Games

Burbank, California
8.26.22
Accessibility Design Researcher
More Jobs   

CONNECT WITH US

Explore the
Subscribe to
Follow us

Game Developer Job Board

Game Developer Newsletter

@gamedevdotcom

Explore the

Game Developer Job Board

Browse open positions across the game industry or recruit new talent for your studio

Browse
Subscribe to

Game Developer Newsletter

Get daily Game Developer top stories every morning straight into your inbox

Subscribe
Follow us

@gamedevdotcom

Follow us @gamedevdotcom to stay up-to-date with the latest news & insider information about events & more