system: report HMD tracking system, model, and manufacturer strings (Serious Sam 3, seemingly fixes #232 too) - #394
Conversation
Some games read the HMD's TrackingSystemName/ModelNumber/ManufacturerName strings to decide which motion controller scheme to enable. When these come back empty, such games conclude no supported controllers are present and ignore all controller input (menus still work via mouse) while rendering their fallback wand models. Report Oculus-style identity strings for the HMD, consistent with the tracking system name already reported for the Touch controller profiles.
OpenComposite reference. Also apparently these games read the HMD identity strings once at startup and never re-query. In my traces the game asked for TrackingSystemName ~14 seconds before the runtime bound any controller interaction profile, so at answer time there's no profile to pull from. OpenComposite probably had this too and hardcodes "oculus"/"Oculus". Games that identify controllers still get the profile-accurate strings from the controller devices, this fixed string only feeds the HMD-sniffing path. |
|
I don't think it's a good idea to hard-code the Quest 3 properties here. One idea I had is to spin up a headless session in IVRClientCore::Init and create a dummy action set with a single binding, suggest bindings for all interaction profiles, call xrSyncActions, then cache the bound interaction profiles and destroy the headless session before continuing initialisation. Then we'd have the information available early when games request such properties immediately. |
Game in question: Serious Sam 3 VR: BFE via Steam and Proton CachyOS from July
Hardware: Quest 3 on KDE Wayland via WiVRN and opensource AMD drivers
Prior status: shows some Vive looking controllers, asks to press right trigger, nothing happens with any button
Current status: fully playable, both controllers, shows Oculus models
Maybe odd: some in-gameplay interface objects have a strong glow - maybe that's just how it is
Note: game complains about display driver, but allows it to be ignored and works fine
Code by: Fable 5
Some games read the HMD's TrackingSystemName/ModelNumber/ManufacturerName strings to decide which motion controller scheme to enable. When these come back empty, such games conclude no supported controllers are present and ignore all controller input (menus still work via mouse) while rendering their fallback wand models.
Report Oculus-style identity strings for the HMD, consistent with the tracking system name already reported for the Touch controller profiles.