Link to the demo:

The Freedom Locomotion VR demo is finally ready to launch on the Steam platform. It's worth noting that the HTC Vive only version of this demo has been available on the site for over a month now, so essentially I've held off on the Steam release mostly so that I could make it fully compatible with the Oculus Rift + Touch controllers.

Going by the events of the last week and a half, this is a timely release, with Oculus winning back the favour of the VR consumer public, by (mostly) fixing up long standing tracking issues, providing a significant price drop to their Rift and Touch system and also releasing the first real 'Killer App' for VR in Epic's Robo Recall.

While the original Freedom Locomotion VR demo would 'run' on the Rift platform, it had significant compatibility issues including the fact that it wasn't properly tracking the head motion, that the menu was inaccessible, hand rotation was off, grab functionality was off, and that the Vive control scheme didn't gel well with the Touch control scheme (for example, having to push and hold down the Vive touchpad to move).

All these issues have since been rectified, and significant effort has been put into ensuring that the locomotion controls are well suited to the Rift. Differences between the Touch and Vive controllers have resulted in the need for individualized differences in options for the two platforms - the touch keeps full thumb stick directional input, while the Vive now defaults to 'simple touch' where the direction depends on the direction of the controller itself (but allows for either a forward or backwards movement based on that orientation).

Similarly, the HUD elements are repositioned slightly to account for differences in Field of View between the two devices (side note: the Rift has a facial interface that biases it towards more angular european faces while the Vive has a flatter facial interface that biases it towards flatter asian faces like my own - which in turn alters the amount of field of view achieved on either device). Additionally, all the graphics and tutorials have been customized to fit the Rift.

Just as much time has been poured into improving and iterating the original system based on the detailed feedback provided by many users. The system now has a calibration process that better tailors the sensitivity of the locomotion to the individual user. It also has complete control at the lowest movement ranges, so even a very tiny amount of head movement while movement is active will result in some small degree of motion.

The HTC side has also received various changes that will hopefully improve the experience for users. The most important is a small change in how movement activation works. Instead of press and holding the touchpad to keep the movement active, users can now simply click the touchpad and maintain thumb contact.

This has the benefit of rejecting erroneous thumb touch as movement input (the touchpad is a big surface with excellent thumb resting potential), while reducing the amount of stress and strain affecting both the user's thumb, and the touchpad itself - which is unfortunately afflicted by a design issue where a component is liable to slip out during usage, resulting in erroneous double clicking among other things.

Dash and Blink step locomotion has been changed up as well, and made to match the Oculus version. Instead of clicking faster to move faster (to reduce unnecessary stress on the touchpad), you now use a combination of elbow/hand angle and distance of hand from body to determine step speed and step size respectively. If you point it towards the ground, you'll go slow. If you point it towards the horizon with your arm stretched out, you'll go fast.

This has a nice effect where you can affect a wide range of motion in Dash or Blink step without uncertainty (i.e. you're not going to accidentally touch the outer portion of the touchpad and suddenly move 4x faster than you expected by touching the middle portion of the touchpad).

The Steam launch of this demo sees the inclusion of a new (optional) turning mechanic. The snap turn is familiar in name, and similar in function to other existing snap turns (in that the user will instantly rotate to face the new direction, avoiding vection from visual motion completely), but has a key difference that I feel helps to elevate it into a fantastic turning solution for VR.

Where other snap turn mechanisms has you push the analogue stick or press the touchpad to turn a fixed angle in the direction you indicate (sometimes 30 degrees, sometimes 45 and sometimes 90 degrees), with the Snap Turning in Freedom Locomotion, it's variable, based on the angle of the controller relative to the angle of the HMD.

This means if you want to Snap Turn directly to your right, you can point to the right and press the button. If you want to turn incrementally to the left, you just point left a bit and click the button a few times. And if you want to do an immediate 180, you point backwards and press the button.

Once you've played around with it for a few minutes, you'll be able to turn in the exact direction you want with very little error, and no nausea.

Finally, as a last minute tweak, I changed up the way that the system smooths out the head motion, making it more direct than before. It feels like a substantial improvement in terms of responsiveness, and gives you a much more direct 1 to 1 control over your foot and head motion and your motion in the virtual world. This change applies to both the Vive and Rift versions.

Beyond the demo itself, work will continue on the locomotion system. The primary intent behind the Freedom Locomotion System is ultimately to provide a system that provides the widest range of users with accessibility to a system that allows for large scale continuous movement like the type that we're familiar with from traditional games.

To that end, I have plans to include sliding locomotion... at this point, I think there is an entrenched user base that simply won't compromise on this one. As much as sliding locomotion is unsuitable for all potential VR users, it is also the best solution for a pretty reasonable range of the existing (and probably future) users.

I'd also like to add in a proxy based teleportation system. A proxy teleportation system essentially has the user pilot an avatar to a location before the user teleports and assumes control of the avatar, which provides a nice compromise between the 'safeness' of pure teleportation and the game play preserving functionality of continuous locomotion (whatever its form), where the player must account for obstacle traversal and enemy avoidance.

We've already seen proxy teleportation in a couple of VR experiences - like VRChat and Skeleton Fighter VR (both available on Steam), so have ample evidence to show that this works very well. Of course we'll add our own twist on the formula to make it better gel with the rest of the system - but it'll essentially offer an option that allows for any user that can only stomach room scale and teleportation VR to also play games that end up using the Freedom Locomotion System.

Speaking of which, the plan is still to develop the Freedom Locomotion System into a plugin that will be initially available on the Unreal Engine and then eventually on the Unity engine, so that other developers can tap into a ready made versatile, high quality locomotion solution that provides them with the ability to design a game flexibly without having to worry too much about game play incompatibilities between the various locomotion solutions.

This is work that will happen following the optimization of the demo and will hopefully help to positively impact the VR industry as a whole in the years to come.