Breaking News

Redirected Walking in Virtual Reality

If you followed my previous blog posts, you will have seen lots of talk about creating seamless portals that connect different zones. The main intention of these portals is to make it possible to walk in a small physical play-space giving the illusion that it is much bigger.

With such portals, the player physically moves while the VR world remains stationary.

In most of VR games today you will see the exact opposite.

The VR world moves, while the player remains stationary.

This is triggered by locomotion techniques such as teleportation, arm swinging, smooth locomotion/stick movement, thread mills etc. They simply position the player into a new spot in the VR world without requiring him to physically move in his play-space. This is also the main reason for motion sickness.

These are all active techniques triggered by the player. There is an additional class of locomotion which is triggered by the environment: elevators, cable cars, trains, jet packs, moving platforms… It’s this class of movement that is highly interesting to me as it solves one thing that portals cannot do: bridge vertical or big horizontal distances in the VR world.

When using portals to move, in order to connect two distant points on a map one needs to do some smokes and mirrors while going there, as of course players cannot walk in a straight line. They only have their small physical play-space in the end. The method used by traVRsal is to generate labyrinths in-between which disorient the players so much that in the end they THINK they traveled all the distance in a semi-straight line when of course they only turned in circles.

Forced use of labyrinths leads to quite some limitations in level design though. It can also induce claustrophobia in players and after a while also can become a bit dull even with this technical miracle of seemingly endless physical locomotion. This is why I always dreamed of combining it with additional environment-triggered techniques. My theory: this would actually create the best of both worlds, amazing close quarter movement and big open worlds.

A Road Ahead

So what does all that now mean in practice? A month ago I started out with a seemingly easy challenge to myself. Design three zones that are connected by a moving platform the player can ride, two of the zones then leading into labyrinths which again lead somewhere else. Let’s dissect the consequences a bit:

  • so far zones were all occupying the same space, as each zone was built onto the actual play-space of the player, now zones need to be offset in the VR
  • zones that come after such offset zones (like a labyrinth) need to inherit this offset
  • so far only one zone was visible at a time, with parts of other zones being visible through the portals, now multiple full zones need to be visible at the same time
  • zones now form logical “clusters”, since if zone B is visible from zone A and zone C is visible from zone B this also means C is visible from A and all the reverses. Otherwise there would be pop-ins.
  • moving platforms need to ensure the player ends up in the correct physical location in his play-space after travelling
  • stepping off a platform needs to activate the new zone correctly
  • falling off a moving platform needs to be handled
  • stepping off a moving platform early needs to be considered
  • players can reach different zones from one starting zone, leading to branching of possible paths through the world
Platform moving horizontally to the exact same physical spot (lower right corner of play-space), two zones visible at the same time
Two platforms at the same time, moving horizontally and also horizontally and vertically at the same time having three zones visible at the same time

Create It

What does it take to create a world like the one shown above? I managed to get it down to just three easy steps:

  • Define an offset for the zone.
    • This will do all the magic of making it visible at the same time as surrounding ones.
  • Create a moving platform.
    • The extended Moving Platform component now supports specifying a named “Location” to travel to
  • Define a location.
    • Place the new /Base/Location tile and give it an optional name (it will use the zone name as its default otherwise to keep things simple)
Moving platform with specified target and custom prefab “Platform”
Zone offset (x,y,z) and new tile for target location

Next Steps

Luckily most of the hard work is now done. Some minor cleanup is still to do, like offset zones are not yet visible through portals, but that should come quickly. I want to push the technology a bit further still though.

  • Connect two zones with zones consisting only of multiple moving platforms (making the true zone boundaries invisible).
    • This would lead to playing a platformer in VR, like Eye of the Temple
  • Create a jetpack mechanic allowing to fly between two zones.
    • Imagine travelling between parts of a derelic space station.
    • This will require two mechanisms: dedicated take-off/landing spots and a way to ensure the player does not physically move while flying, as that would offset the play area (make him explode?)
  • Create a zip line mechanic, either horizontally but also vertically

Try It

With the new release of traVRsal yesterday I included the above Demo World as well. It can be found in the community worlds browser and also as a download on github. Go ahead and try it out! What I am most interested in is which types of motion induce motion sickness and which are rather safe to use. This will influence how I will use this new technique in upcoming worlds.

New world browser also listing community-created worlds

Now that the base mechanism is established and live, I will continuously extend the demo world with new ways of movement to show what is possible in VR, what feels good and what is rather odd. Any suggestions what you would like to try out please raise in my Discord!

Leave a Reply

Your email address will not be published. Required fields are marked *