Movement and locomotion are integral to the VR experience, and while this sort of design can be especially difficult when considering accessibility and the potential for simulation sickness, designing accessible locomotion systems serves all audiences, not just those with limited mobility. We can think of movement in 2 different ways:
Locomotion: Moving the user from point A to point B to navigate within the virtual world
Movement: the finer-tuned movements of the user’s arms, head, and hands, and performing different actions required by gameplay
Throughout this section we’ll discuss the various locomotion methods, be sure to consider how users with limited mobility will perform these movement actions. Will someone be able to stay seated and still navigate your virtual world? Can someone who is unable to lift their arm teleport to all the key places in your application? Consider your users’ needs and most importantly, provide multiple options for locomotion and movement.
For more in-depth information about how to implement locomotion in general, see the Locomotion documentation.
This document contains the following sections:
We want to start by noting that VR simulation sickness stems from a disruption to your proprioception-- what is happening in the virtual world (your character walking) is different from what is happening in the real world (your body sitting in a chair). In turn, one of the greatest contributors to simulation sickness is movement and locomotion. We’ll provide a number of options to minimize this disturbance of user proprioception throughout this guide, and further content throughout the Developer Center.
It should come as no surprise that many VR users do not have a playspace big enough to enjoy VR apps at room-scale. With this in mind, you should design your environments, your interactions, and control schemes for playspaces of all shapes and sizes. Here are just a few things to keep in mind as you design and develop your app, the environments, and interactions for accessible locomotion and movement:
As with so many of the considerations offered throughout this guide, the ability to customize settings is especially important to maximize accessibility and minimize motion sickness when it comes to controller-based locomotion.
Controller-based locomotion is imperative to providing for a comfortable user experience for people with physical disabilities and visual impairments, and also accommodates the largest audience for your application. Start by exploring joystick locomotion, teleportation, or a combination of the two but also consider others as well.
Joystick or sometimes called ‘Smooth’ locomotion equates to using the joystick to move the player in a specific direction without the player physically moving. Of particular benefit to accessibility is that joystick locomotion historically requires the user to move using only their thumbsticks rather than multiple buttons. It often doesn’t even require people to lift their controller or point in a certain direction. This option 1) does not require people to physically move their body in order to move to a new location and 2) uses a minimal amount of input on the controller to execute the movement.
Teleportation requires a player to select where they want to go, often using a combination of inputs to rotate the player, set the teleportation distance, and move the player to the desired location. This option requires more input from the person to execute, but because it uses a controller, it may be more comfortable and help them to discern where there is/isn’t a walkable space. As a developer, you can also use teleportation to direct the user’s attention, strategically limiting where the user can move, and helping them effectively progress through the environment.
For those with limited mobility but who can use hand controllers, you might use an indirect locomotion like “grabbing and pulling”, enabling the user to manipulate the space around the player rather than the user’s own movement. In this mode, people can “grab” the virtual world to move forward, backward, or sideways and rotate to face the desired direction. For those with limited mobility, this can give a stronger sense of agency in the application.
See below for a great example of grab and pull locomotion from the world building section of Facebook Horizon.
Along the many options provided within the guide, here are a few more movement-focused options/settings you could provide to your audience to maximize
Comfort Mode / Vignetting: To combat VR motion discomfort, many developers have been successful implementing heavy vignetting, usually labeled as “comfort mode”, when moving via joystick or teleporting the player (if they don’t fade to black). See below for an example from Facebook Horizon.
Movement Setting Options: You can also enable users to modify step size, jump height, locomotion and movement speed, and other factors to create a more comfortable movement mode.
Real World Physics is Recommended: In regards to the speed or pace of your comfort settings, mirroring realistic physics (smaller jump height, slower speed, etc.) will help minimize user discomfort.
Hand tracking (as mentioned in the Controls and Interactions section) allows users who might not be able to hold controllers comfortably for a prolonged period of time, or at all, to be able to interact with the virtual environment. With some creative designing, hand-tracking can also be used as a method for movement and locomotion. For example, a person could point in the direction they wish to turn or open and close their hand for stop and go movement. For more information on hand tracking, refer to the Hand Tracking Design documentation.
Some users may be able to use handheld controllers but have difficulty with maintaining their arms at a certain position or fully extending them. Developers can accommodate by allowing them to adjust the position of the virtual hand positions (e.g., changing the height/rotation of the virtual hands or their distance from the user’s body) and/or virtually support physical gestures by amplifying movement (e.g., virtual arm is fully outstretched even though the user’s physical arm is bent halfway). You can give users the option to customize parameters for each hand and set “hand profiles” to accommodate users who exhibit limited mobility in one arm or differing levels of mobility in each.