ValveSoftware / openvr

OpenVR SDK
http://steamvr.com
BSD 3-Clause "New" or "Revised" License
6.02k stars 1.27k forks source link

SteamVR passes on erroneous controller information to some games? #1689

Open Robert-W-K opened 1 year ago

Robert-W-K commented 1 year ago

Hi! I'm wondering how this particular problem might be fixed:

alvr client quest-20220428-165856

I have literally been scouring the internet for months and asking different online forums, trying to contact game developers, posting on reddit... just about everywhere I can think of.

The gist of the issue is that although SteamVR detects that I have touch controllers and a Quest 2 HMD, some games think I have Vive equipment. Some games correctly identify Quest 2 Touch controllers no problem. How can I fix this from my end? Am I missing any files? Are there any bad files in my SteamVR folders? Do I somehow have a bogus configuration? What is going on?

If there's anyone who can help, I would really appreciate it. There are other people experiencing this issue too and there are just no explanations as to why.

Rectus commented 1 year ago

This is likely due to the games being hardcoded for certain types of controllers, or having badly designed or outdated controller detection.

The old legacy input system didn't have any built-in support for setting up inputs based on controllers, so many old games have hardcoded setups based on reading the name of the headset or controller. The newer SteamVR Input system supports setting up controllers in a device agnostic way, but there is no requirement for applications to do this, so many games using it still hardcode support for specific controllers. Games may also have custom render models for controllers instead of requesting them from SteamVR, in which case they can only display controllers that the developer have added.

The recent 1.24 SteamVR patch added options for overriding what controller information SteamVR sends to the game, but it only works as long as the game actually uses that information.

Robert-W-K commented 1 year ago

Replying to https://github.com/ValveSoftware/openvr/issues/1689#issuecomment-1271480405

There's some more information that I need to share:

I'm currently using ALVR as an interface client between the Quest 2 and SteamVR. This is how I experience this problem.

I have previously had installed the Oculus Link software, and when I ran games through the Oculus Dash, I never encountered this problem. What do they do to communicate to the game about what types of controllers are present?

Also something interesting happened today. I loaded up ALVR which launches SteamVR automatically without having any of my hardware connected, and I got this bit of information from the SteamVR dock:

image

Without having any devices attached, SteamVR thought I had vive wands connected! Shortly afterwards, it turned into this:

image

I assume the second one is just the default state for controllers that are asleep.

I haven't even launched a game, and somehow SteamVR thought I had vive wands when nothing else was even attached.

Why would that be?

Rectus commented 1 year ago

In that case it is probably on the ALVR side. The active driver is responsible for how the controllers are reported to applications, and a custom one like ALVR may configure it differently than the stock Oculus driver. ALVR seems to also have some kind of controller emulation feature as well.