Published on

Easier VR Development Using Headless VR



The Headless VR approach has the potential to significantly improve VR development workflows. There are multiple pain points when developing/designing VR experiences.

VR experiences are programmed using IDEs on desktop computers and then the VR app is loaded/run on the VR headset everytime you make a change. This can be very tedious as you wait a long time after each code change because you have to wait for the app to compile and be loaded onto the headset.

It is also very tiring having to take the headset on and off, constantly switching from being in VR trying out your changes and then taking it off to make your next set of programming changes. You can easily do this hundreds of times a day.

For WebXR development at least, the debugging tools are more polished/rich when running your app locally in desktop browsers compared to remotely debugging WebXR apps running on a VR device.

Animation of someone taking their VR headset on and off repeatedly

By running your VR experience on your Mac/Windows device and simulating all VR API: you would skip the syncing step, skip compiling for mobile, not have to take off/on your headset repeatedly, you'd get a better debugger/inspector, and still be able to test out spatial controller heavy UX.

Headless VR Live Coding

Here's a proof of concept where I live coded my original Headless VR prototype. I change the color of the cube in code, from red to blue. The change was nearly instantly applied and I never had to to don/doff a VR Headset.


The pain points are worse when making native mobile VR apps than WebXR because with WebXR there are no compile/syncing times. So doing the work to support Headless VR in Unity/Unreal would be the most appreciated. Me being more of a web dev though, I'll focus on what might be done next to improve WebXR development.

I think creating an extension or polyfill that emulates the WebXR APIs would be the smart way to go, WebXR apps would then work with a Headless VR workflow without requiring changes. This browser extension/project looks like it has done a lot of the heavy lifting to emulate the WebXR APIs.

Animation of the WebXR browser extension

I won't be focusing on implementing general workflow tools anytime soon though. I wanted to put this out there for others who might be more motivated to make this happen sooner. Reach out if you are interested and I can fill you in on what I've done so far.

Follow @seflless and @convey_it on Twitter, to see Convey's progress and more experiments.
Request Early Access to Convey