Should OSVR (very old VR standard) be removed from JME

What is OSVR

OSVR is an old VR standard, but also a specific headset from 2015. Even on the OSVR subreddit it is considered dead (see this pinned post not to use it). It was from the period where pretty much every VR headset vender had their own standards and JME tried to support all of them with a compatibility layer (although OSVR was theoretically open to all, as an open standard). I have found a news article from 2018 indicating its maintainer, Razer, had abandoned it and will be concentrating on openXR instead: link

What replaced it

A slightly more modern standard is OpenVR. This was a more successful cross platform standard that most headsets did actually support. OpenVR is in turn now being supplanted by OpenXR (So OSVR is doubly deprecated). As an aside OpenVR is not actually open source, despite the name (unlike OpenXR which is). Being controlled by Steam in closed source

Why has this come up

A PR has been raised to update LWJGL and has to update OSVR, but unless anyone has some ancient hardware and ancient code it can’t be tested.

State in jMonkeyEngine

OSVR is turned on with VRConstants.SETTING_VRAPI_OSVR_VALUE. It has been deprecated (in JME) since January 2022. (That’s v3.6.0)

Should it be removed

Does anyone working on VR games care about OSVR support? If not shall we remove it in v3.8.0

Other VR removal candidates

OCULUSVR - this is another headset specific standard (used by the Rift, which is no longer sold as of 2021. See wikipedia)

SETTING_VRAPI_OPENVR_VALUE - An OpenVR binding but not the one in LWJGL (why do we have two OpenVR bindings?)

What would be left

SETTING_VRAPI_OPENVR_LWJGL_VALUE - This is the OpenVR bindings provided by LWJGL. It is also a bit outdated, but not badly so

Why no OpenXR in jMonkeyEngine

When this was discussed it was suggested it would be better to put OpenXR in as a user library. I created Tamarin to add this support.

5 Likes

Some input from an ancient fossil that used to work with jme-vr some years ago, hope it helps somewhat:

Yes. I see no reason to keep it around. Even when it wasn’t 5+ years out of date, OSVR didn’t have many users, so nowadays I think it’s safe to assume there are no users of it left.

When I was last working with jme-vr back in 2020 or so, the lwjgl binding didn’t work at all, the only way to get OpenVR working was via the other jme specific binding. But I am unaware whether that issue was the reason for the creation of the custom binding in the first place or it was something else.

To my knowledge, this is still supported nowadays, though most modern oculus PC games prefer to ship with OpenXR.

2 Likes

As someone who worked on VR and OSVR support in the past: Yes.

Regarding the LWJGL_ bindings: Iirc, I added them because they original ones relied on external open vr libs, whereas these would use the ones already supplied through LWJGL. But memory is hazy.

2 Likes

I’ve created a PR at #2379 Remove OSVR from JME VR by richardTingle · Pull Request #2380 · jMonkeyEngine/jmonkeyengine · GitHub to remove just OSVR. Sounds like the rest should be allowed to survive for at least 1 more version

3 Likes