Neverball / neverball

Tilt the floor to roll a ball through an obstacle course before time runs out.
https://neverball.org
Other
342 stars 77 forks source link

Release update for Oculus VR headsets #217

Open Espionage724 opened 3 years ago

Espionage724 commented 3 years ago

I have an Oculus Quest 2 and I'm connected to a PC (Windows 10) with a Link cable (so I have native Oculus support available). Running the latest 1.6.0 release of Neverball, neither Oculus nor OpenHMD executables switch the game over to VR on my headset.

I'm thinking for Oculus, an update to support it's latest libraries is needed?

parasti commented 3 years ago

It's a far shot, but are you enabling HMD mode in the settings? I would assume that out of all the dated HMD support, that part would still work.

Espionage724 commented 3 years ago

Yeah; enabling HMD in options switches the window for neverball into a split SBS lens distorted view on the desktop, but doesn’t do anything on the HMD

TheOnlyJoey commented 3 years ago

So Neverball uses the OpenHMD implementation for VR support (http://www.openhmd.net/index.php/devices/ for supported devices), but it seems no one has updated Neverball in a long while supporting after the 0.1.0 release. This was originally reported in 2014, with my reaction on the issue in 2016 (https://github.com/Neverball/neverball/issues/94#issuecomment-269862061) Since Neverball seems to only get occasional submissions, seems no one cared enough yet to fix the OpenHMD implementation, even though it should be a easy/quick fix.

parasti commented 3 years ago

Can either of you fix it? You seem to be in a better position to do so than me. I don't have a VR device and I'm not planning on getting one.

rlk commented 3 years ago

Just to confirm, head-mounted VR support in Neverball is around 7 years out of date. It was written in the era of the Oculus Rift DK1 and used extremely early versions of Oculus's OVR library that are absolutely nothing like the modern development environment. It would require a major overhaul to make it work in the current Oculus ecosystem.

TheOnlyJoey commented 3 years ago

Just to confirm, head-mounted VR support in Neverball is around 7 years out of date. It was written in the era of the Oculus Rift DK1 and used extremely early versions of Oculus's OVR library that are absolutely nothing like the modern development environment. It would require a major overhaul to make it work in the current Oculus ecosystem.

Actually it uses OpenHMD, but build for version 0.1/0.2 which only supported the DK1 and a early version of the DK2. Just updating the existing code with using the universal shader thats added since 0.3 will solve the issue. https://github.com/OpenHMD/OpenHMD/releases/tag/0.3.0 I think Neverball usues a shared version of OpenHMD which is great, you can add many more in-progress devices this way by just using a master compiled version. Device list can be found here http://www.openhmd.net/index.php/devices/

rlk commented 3 years ago

"Actually" I know how Neverball handles VR because I implemented it. I responded to this issue with regard to the Oculus libraries because the issue states "I'm thinking for Oculus, an update to support it's latest libraries is needed?"

Make any updates you see fit. If updating to openhmd 0.3 works, then great. Feel free to build upon my openhmd 0.2 integration.

parasti commented 3 years ago

Yes, rlk wrote the VR support - and also the rest of the game.

(Random throwback to the Grand Poobah of the Neverball rabble. Some things are lost on Github.)

Seems unlikely that OpenHMD would have maintained API/ABI compatibility from 7 years ago, though. If that is the case, that's a major engineering feat.

TheOnlyJoey commented 3 years ago

@rlk Sorry my bad, forgot that Neverball also used a OVR implementation next to using OpenHMD. @parasti API/ABI is indeed compatible, its a big part of OpenHMD's ethos to make sure people can use never versions of the library or custom self-written/third party drivers with any application using the API. I could look into modernizing the implementation in Neverball, but would probably take a while before i have time to do so. Should not take long though.