GPUOpen-LibrariesAndSDKs / Radeon-ReLive-VR

157 stars 19 forks source link

Certain Games Don't recognize Oculus Rift S/CV1 Controller Emulation #59

Closed JpTiger closed 3 years ago

JpTiger commented 4 years ago

I'm using an Oculus Quest Headset with version 1.0.23 of the Relive apk, and Adrenalin and Drivers v 20.5.1 for my Radeon RX 480 card. Mostly it works fine, but for at least two games, even though I have it set to emulate an Oculus Rift S (and third party controllers disabled), the game shows Vive controllers. Both games support Oculus controllers, but they don't seem to recognize them as such when launched via Steam Home. The issue persists if I try emulating Rift CV1 instead. The games are Keep Talking and Nobody Explodes and Transpose.

Log attached here: AMDWirelessVR.log

If it's helpful, Keep Talking and Nobody Explodes also generates a log file, here's what looks like the relevant error it gives:

Checking device 1 (Controller (XBOX 360 For Windows))
Device 1 (Controller (XBOX 360 For Windows)) matched profile "Xbox360WinProfile" (Xbox 360 Controller) but is HIDDEN and will not be attached.
Checking device 2 ()
Checking device 3 ()
Change in attached Unity joysticks detected; refreshing device list.
Checking device 1 (Controller (XBOX 360 For Windows))
Device 1 (Controller (XBOX 360 For Windows)) matched profile "Xbox360WinProfile" (Xbox 360 Controller) but is HIDDEN and will not be attached.
Checking device 2 (OpenVR Controller(Oculus Rift S (Left Controller)) - Left)
[KTInputManager] Device attached: Unknown Device ("OpenVR Controller(Oculus Rift S (Left Controller)) - Left") [Supported] [Platform: WINDOWS 10 PRO 64BIT BUILD 18363]

[InControl] Joystick 2: "OpenVR Controller(Oculus Rift S (Left Controller)) - Left"
Device 2 (OpenVR Controller(Oculus Rift S (Left Controller)) - Left) does not match any supported profiles and will be considered an unknown controller.

(Filename: C:\buildslave\unity\build\artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Checking device 3 (OpenVR Controller(Oculus Rift S (Right Controller)) - Right)
[KTInputManager] Device attached: Unknown Device ("OpenVR Controller(Oculus Rift S (Right Controller)) - Right") [Supported] [Platform: WINDOWS 10 PRO 64BIT BUILD 18363]

[InControl] Joystick 3: "OpenVR Controller(Oculus Rift S (Right Controller)) - Right"
Device 3 (OpenVR Controller(Oculus Rift S (Right Controller)) - Right) does not match any supported profiles and will be considered an unknown controller.

Games that seem to recognize the Oculus controllers correctly include Steam Home and The Lab. Thumper may as well, but it's difficult to say for certain as the controllers are never shown - functionally it works fine.

GennadiyAMD commented 3 years ago

@JpTiger - this seems to be the same as described here. Some games try to go the Oculus API directly, bypassing OpenVR when they see an Oculus headset. Superhot was a good example of this, at least at some point - you could even kill SteamVR after launching it, but the game would keep running.

There isn't much we can do about this, unfortunately. If you're getting these games from the Oculus Store rather than Steam, running them under Revive might help.

JpTiger commented 3 years ago

I'm actually fairly sure this is a different issue, though it might have the same root cause. Unlike Issue #82 the games launch just fine for me in SteamVR mode to my headset. They just think that I'm using Vive controllers instead of Oculus controllers.

Can you say a little more about how Revive might be a workaround? I hadn't tried that because I assumed it would still think (even more so) that I was using Vive controllers instead of Oculus ones. It still wouldn't be ideal as I'd have to re-buy the game on the Oculus store, but I guess the technical info could be helpful?

GennadiyAMD commented 3 years ago

@JpTiger - Revive implements the native Oculus API on top of SteamVR. Games launched under Revive think they're running on Oculus natively rather than on SteamVR. The downside of Revive is that it only works with games from the Oculus Store.

The whole problem arises from the fact that game developers want to distribute the same game through both Steam and Oculus store, but don't want to maintain two versions of it or two different code paths for Oculus headsets. Obviously a game in the Oculus Store cannot rely on SteamVR being there, so they go directly to the Oculus API for controllers and display. For Vive SteamVR is the only choice they have and SteamVR has the driver for Oculus that translates OpenVR calls to the Oculus API calls. But for this to work the Oculus runtime has to be present on the PC, so games have the choice of OpenVR or Oculus native API and some choose to go Oculus native when they detect an Oculus headset.

ReLive VR pretends to be a Rift S or a CV1, but it doesn't rely on the Oculus run-time. Games see an Oculus device, attempt to use the Oculus native API, but it fails because the Oculus run-time is looking for the physical device on USB and/or HDMI and fails, hence the game gets stuck. So a nice way for the games would be to try the Oculus API first and if it fails, fall back to OpenVR, most do this, but some don't. How this manifests itself in a game depends on the game, but games starting to work when you switch to emulating a Vive is a tell-tale sign.

Does this make sense?

JpTiger commented 3 years ago

I appreciate the thoroughness of the explanation but I don't think I quite have the technical background to totally follow it. Regardless, I've tried installing ReVive, and, while I can now access Oculus apps like the DreamDeck, which is kind of neat, the issue persists in the games above- controllers are still detected as Vive controllers. I can add that this is also a problem for the game Interkosmos, but that oculus controllers are detected correctly in I Expect You To Die, both purchased on Steam.

I know you closed the ticket but I don't think this issue is resolved or a duplicate of another issue. What would the next steps be to resolve it? Contact game developers individually? And if so, what information should I give them? I've reached out to a couple and they seem stumped so far. Perhaps the AMD Adrenaline software is what needs to be patched?

GennadiyAMD commented 3 years ago

[AMD Official Use Only - Internal Distribution Only]

Hi Joel,

Yes, I agree that the issue is not resolved, the problem is that it is impossible to resolve it from our end - the issue lies with the games themselves. Contacting game developers is your best bet.

As to what you should tell them, aside from describing the issue itself - hard for me to tell because I don't know what the game is doing as i don't have its source code. The game developers would have to try to run the game using ReLive VR instead of a real Rift S and debug it. Please feel free to quote my previous explanations to them, with the caveat that they were only guesses, of course. If you get their attention, they're more then welcome to contact me directly either here on Github, or via email gennadiy dot kolesnik at amd dot com (replace 'dot' with . and 'at' with @ ) - we would be happy to assist them.

Regards, Gennadiy


From: Joel R. Putnam notifications@github.com Sent: Friday, December 25, 2020 4:05:32 PM To: GPUOpen-LibrariesAndSDKs/Radeon-ReLive-VR Radeon-ReLive-VR@noreply.github.com Cc: Kolesnik, Gennadiy Gennadiy.Kolesnik@amd.com; State change state_change@noreply.github.com Subject: Re: [GPUOpen-LibrariesAndSDKs/Radeon-ReLive-VR] Certain Games Don't recognize Oculus Rift S/CV1 Controller Emulation (#59)

[CAUTION: External Email]

I appreciate the thoroughness of the explanation but I don't think I quite have the technical background to totally follow it. Regardless, I've tried installing ReVive, and while I can now access Oculus apps like the DreamDeck, which is kind of neat, the issue persists in the games above- controllers are still detected as Vive controllers. I can add that this is also true in the game Interkosmos, but not the game I Expect You To Die, both purchased on Steam.

I'd don;t think this issue is resolved, what would the next steps be? Contact game developers individually? And if so, what information should I give them? I've reached out to a couple and they seem stumped so far.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FGPUOpen-LibrariesAndSDKs%2FRadeon-ReLive-VR%2Fissues%2F59%23issuecomment-751290794&data=04%7C01%7Cgennadiy.kolesnik%40amd.com%7C35629db75819470e910808d8a918d162%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637445271369902489%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=yI66zsSZK%2FdktFxhUqzyFEejj2o7MBA91Etm2CCWdbQ%3D&reserved=0, or unsubscribehttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAD746RXE5TUP4UV5OB7JYTTSWT5BZANCNFSM4OPKLQTQ&data=04%7C01%7Cgennadiy.kolesnik%40amd.com%7C35629db75819470e910808d8a918d162%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637445271369912476%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=EmNps%2BLI5pE2qXE%2B3OfNNLDc9ObTSHI%2B5y%2BpAxXdoqs%3D&reserved=0.

JpTiger commented 3 years ago

Thank you very much! I'll see what I can do. I wonder if it's an underlying platform issue with something like Unity...