ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
23.98k stars 1.05k forks source link

Proton games played through Steam Link unplayable due to mouse input corruption #6501

Open s-daveb opened 1 year ago

s-daveb commented 1 year ago

This only happens when playing Windows games in Proton, and attempting to stream the game to another computer with Steam Link.
(edit: This also happens over VNC clients. The problem seems to lie in Proton?)

Ssystem information

Please describe your issue in as much detail as possible:

Hello,

I've been having this problem ever since I started playing with Proton and Steam Link last year. I first noticed while playing Dragon Age: Origins, but I've since seen it in many, including Kerbal Space Program, and other third-party Unity3D games I've added to Steam.

The common denominator is that the game has right-click + drag camera controls, that you run the game in proton, and try to control it via Steam Link.

When you run a game in proton that that implements camera controls with right-click, and you try to change the camera angle, for some reason, the screen begins to spin like crazy, as if a WINE feature called 'mouse warping' is enabled.

I've been lucky enough to be able to some games 'natively' (ie. in Mono) on Linux, and the issue doesn't happen, but other games leave me with no choice but to play on the physical hardware.

Basically any game that implements right-click mouselook seems to be broken if you play them through Steam Link.

Steps for reproducing this issue:

Steps to recreate:

  1. Run Kerbal Space Program, or Dragon Age: Origin in Proton on a Linux computer w/ Remote Play enabled
  2. Connect to your gaming PC with your Steam Link client. I've seen this problem on iPad and macOS Steam Link, but it probably affects others.
  3. Load up the game, and get to a scene where you can change the camera angle.
  4. Right-click, and move the cursor. Enjoy the spins.
Disk1of5 commented 1 year ago

This also impacts Steam remote play with a linux host to ANY device, Steam Deck, Steam Link, Android App, Linux Desktop this has been an issue for about a month now. i have tested Stable to Stable (not working) Beta to Beta.. no combo is working at the moment.

edit One more thing. if you shift+Tab on the host to Steam overlay, the host computer will get the remote input presses but just not the game... and if you exit the overlay and go back to the game you will still have no remote inputs.

s-daveb commented 1 year ago

This also impacts Steam remote play with a linux host to ANY device, Steam Deck, Steam Link, Android App, Linux Desktop

Thanks for looking into the other platforms! I suspected as much.

this has been an issue for about a month now. i have tested Stable to Stable (not working) Beta to Beta.. no combo is working at the moment.

That is one thing I forgot to mention. I first used Steam Link in January of 2022 and I had this problem, but I thought it was on proton’s end, and understood the Steam Deck wasn’t out.

It’s still not fixed after the Steam Deck release.

Would it help to also open an issue on the Proton GitHub?

Disk1of5 commented 1 year ago

Would it help to also open an issue on the Proton GitHub?

Im not sure, because i tried different version of proton, and would rolling back to an early 7.x or 6.x version of proton to restore functionality and that also doesn't work... but here is the odd thing..

I can remote start a game, go to the host, alt-tab startup start up jstest-gtk and i see all the buttons work.... its just like there is some API call that's missing back to the game to say here is your joystick input..

kisak-valve commented 1 year ago

Hello @s-daveb, while I don't have any particular insight into this issue, I do think this should be looked at from the Steam Remote Play side first, and I also think that discussion of this issue shouldn't be fragmented across multiple issue reports. If you find a decent hint that the root cause of this issue is in Proton, then add a note here explaining it and give me a ping requesting that this issue be transferred to the Proton issue tracker instead of creating a duplicate issue report.

Disk1of5 commented 1 year ago

@kisak-valve i think i figured out a part of the issue, i think there is an problem with the focus being handed back to the game when it starts.

For example.. right now on games like God of War or Deep Rock Galatic, Without streaming in Linux with Proton if you plugin in a controller after it loads then it still won't recognize the new input.. I have a theory that maybe with remote play its not passing the input back to the game as its loading quick enough hence, it never loads with controller support... and that is why Steam's UI can detect the button presses, why jstest-gtk can see the button presses.. but the game doesn't..

i think whats happening is /dev/input/joystick0 isn't being generated quick enough before proton starts the game. thus we never get input...

Disk1of5 commented 1 year ago

but ... i dunno.. im not familiar with how steam is doing things under the hood.. so maybe im part way there... 🤷

kisak-valve commented 1 year ago

You've described ValveSoftware/steam-for-linux#9150.

Disk1of5 commented 1 year ago

@kisak-valve yes i think that these bugs are related and Streaming is broken as a side effect of how inputs are handled while the game is running. Maybe this issue be merged as one bug wiht the streaming + 3rdparty game + Controller labels.

and with a high priority flag 😅 lol

Thanks!

s-daveb commented 1 year ago

Hello @s-daveb, while I don't have any particular insight into this issue, I do think this should be looked at from the Steam Remote Play side first, and I also think that discussion of this issue shouldn't be fragmented across multiple issue reports. If you find a decent hint that the root cause of this issue is in Proton, then add a note here explaining it and give me a ping requesting that this issue be transferred to the Proton issue tracker instead of creating a duplicate issue report.

@kisak-valve Funny that you mention that, I just tried to control a Proton-wrapped game through a VNC client, and I got the exact same spinning behavior. So my inclination is that the problem is in Proton as you mentioned....

I do think this issue should be transferred. I'm not sure how to do that, but please close this issue and send me the issue # in the proton bugtracker so I can help, if needed (and because I can't wait to play these games 😅)

Thank you both for being so responsive!

Disk1of5 commented 1 year ago

as per #9150 i have tested and the latest Linux Runtime is working for me now.

s-daveb commented 1 year ago

Some additional data: I found that if I stream the proton game using Sunshine instead of Steam Link, the random rotating mouse corruption does not happen by default.

However, if I check off "Optimize mouse for remote desktop instead of games," the Moonlight client behaves identically to Steam Link, causing a nauseating rotation.

@kisak-valve Maybe part of this problem can be fixed within Steam Link? I can't really be sure now.

dgudim commented 2 months ago

I stumbled upon the exact same issue today, bumping for visibility