Oculus annoucned an update on Facebook to its Unity integration package making to easier for developers of Rift-only games to port to HTC Vive. When version 1.31.0 was released, it included “cross-platform development support”. It did say it was an experiment and that it “may changed or be removed”. The future is still unclear.
Up Until Now
Unity in this situation is not only useful for developers, but end users as well. Thats because they support many platforms with the same type of code and project, eliminating the time to “port” a game from one type of gaming system to another. The goal of Unity here is to make you focus more on the making of your game, and let the engines themselves focus on the differences between the platforms.
As simple as we make that sound, it’s a tough place to be, especially in the VR space. Unity already supports both the SteamVR API and the Oculus API, and the developer doesn’t even have to mess with it, with essential features. So Valve and Oculus provide their own packages on top of their own APIs – the Oculus Integration and SteamVR Plugin. These packages contain scripts, prefabs, example scenes, recourses, and even extra APIs to give developers more than just the simple bare minimum that Unity provides in their own engine.
The problem lies in the fact that the SteamVR Plugin does not support the Oculus API, and on top of that, the Oculus Store requires submissions to have direct Oculus API support to be approved. If a certain developer would like to release on the Oculus Store for Rift and Steam for Rift and HTC Vive, they would need to use both packages, or just the basic Unity XR framework, but it widely considered inferior to both. Using both packages would take an extra amount of effort, including a whole side to the project.
The biggest change to this new Oculus Integration release is that its main and core features and specs are now in support of the SteamVR API, instead of just the Rift’s Oculus API. Looking through the lens of a developer, not a lot, if anything, changes. Aside these prefabs and and APIs are in place to set ad return values for a HTC Vive instead of a Rift alone.
The features that are supported so far are the:
Camera: the OVRCameraRig prefab used to handle the virtual cameras for the user’s eyes and game objects for the user’s controllers fully supports the HTC Vive
Tracking: the API calls to get the velocity or angular velocity of the headset will work for HTC Vive
Input: the API calls to get the button states, thumbstick positions, and trigger depression of the Touch controllers – for HTC controllers the trackpad is treated like a thumbstick, and the app button (above the trackpad) is treated like the top Y/B buttons on Touch (controls mapped to the A or X button need to be changed)
Haptics: the same APIs for haptic feedback on Touch now works on HTC controllers
Guardian: the API to retrieve the user’s Guardian boundary and playspace will for HTC Vive users retrieve the Chaperone boundary and playspace
Avatars: Oculus Avatars will work on SteamVR, but non-Oculus users will have to select from a predefined list instead of creating their own (this was actually enabled a while ago separately, but ties in)
What To Expect, And Not To Expect
To make very clear to start it off, none of this has any user-facing consequences. This is simply for the developers, and the games they will and do create. Now if a developer wants a game in Unity for the Oculus Rift, and decides to port to HTC Vive, they will use the Oculus Integration assets, and APIs that were already in place. There is no need to adjust it to two different versions. SteamVR Plugin does support both headsets, but this does not apply to the Oculus store builds. Boiling this all down, it means if you’re building with the SteamVR first, then planning on submitting to the Oculus Store, will eventually is the Oculus Integration either way.
Although this seems like not a huge step, it is a step in the right direction. Anything that helps developers get their games to all platforms all around will be playing a huge part in the future of VR.