ValveSoftware / Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
643 stars 74 forks source link

[TF2] Double mouse sensitivity due to outdated libSDL2.so #1834

Closed forivall closed 3 months ago

forivall commented 10 years ago

In order to match sensitivity (on raw mode) between linux and windows, my linux sensitivity must be roughly half of that on windows. This seems to be a farily minor issue, but it's exacerbated by steam cloud, which syncs the setting between the two platforms. This also might only be an issue for my distro (Arch Linux).

The current workaround is to disable steam cloud for TF2, and manually set the sensitivity lower (roughly 0.5) on linux

nsgomez commented 10 years ago

Can confirm on a dual-boot between Windows 8.1 x64 and Ubuntu 14.04 x64.

System information: https://gist.github.com/nsgomez/873f539bc894ae3b94df

ElectricTriangle commented 9 years ago

You might be experiencing the results of constant acceleration being applied on your mouse by xinput. Not sure if it applies to 'raw input'. https://wiki.archlinux.org/index.php/Mouse_acceleration

forivall commented 9 years ago

@ElectricTriangle iirc, it doesn't.

forivall commented 9 years ago

Can we get any info on which API you're using to get raw input on linux? I've recently been working on a linux keyboard driver and so I have some knowledge on how the HID subsystem works. hidraw? evdev? whatever SDL exposes? xinput?

Kiwii commented 8 years ago

I'm also experiencing this with raw_input enabled using a 2000 DPI mouse in TF2 on linux. An in-game sensitivity of 0.7 results in 15cm per 360° while mouse-sensitivity.com says this should result in around 30cm/360°. It seems to be off by a factor of pretty much exactly 2 no matter how fast I move my mouse ingame. I'd be interested in what the exact factor is, though, to be able to get really consistent settings between different games.

I very much doubt constant acceleration is to blame since I've disabled all acceleration in xorg.conf (via the method documented in the archlinux wiki) and a browser-based DPI test results in the correct 2K DPI for my mouse or at least as close as it gets considering human error with measuring distance on the mouse pad; definitely not off by a factor of two, though.

Tele42 commented 8 years ago

We (the players) are currently waiting for libSDL2-2.0.4 to be published for widespread distribution of https://bugzilla.libsdl.org/show_bug.cgi?id=2963.

forivall commented 8 years ago

Thanks for that information @Tele42 -- When in doubt, it's probably X11's fault. :+1: :+1: :+1: :clap: :clap: :clap:

ElectricTriangle commented 8 years ago

@Tele42 Nice catch! Should be able to make use of that version whenever it gets into my distro (native lib mode in Steam is handy).

Kiwii commented 8 years ago

Very nice find, @Tele42! Good thing this bug isn't actually in the game and good it's really multiplied by an exact factor of two so I can just double my in-game sensitivity setting once a fixed lib is distributed. I guess somebody should close this issue then?

ElectricTriangle commented 8 years ago

Unless you're using native lib mode in Steam you're reliant on their provided versions of most libs. So until Valve ships an updated SDL with Steam this bug is still very much relevant. On Nov 12, 2015 12:58 AM, "Kiwii" notifications@github.com wrote:

Very nice find, @Tele42 https://github.com/Tele42! Good thing this bug isn't actually in the game and good it's really multiplied by an exact factor of two so I can just double my in-game sensitivity setting once a fixed lib is distributed. I guess somebody should close this issue then?

— Reply to this email directly or view it on GitHub https://github.com/ValveSoftware/Source-1-Games/issues/1834#issuecomment-156010647 .

FedeDP commented 8 years ago

I solved this issue (in tf2) by overriding steam shipped's lib32-sdl2 with my distribution's one (archlinux), as pointed out here: https://www.reddit.com/r/linux_gaming/comments/3zggjn/csgo_mouse_sensitivity_on_linux/

Kiwii commented 8 years ago

@FedeDP So valve fixed it in CS:GO buy bundling a newer version of sdl but they still ship the old one in TF2... Makes me wonder why they don't have one version included in the steam runtime instead of a different one for each game...

kisak-valve commented 7 years ago

Closing as the steam runtime currently includes libSDL2-2.0.4.

Kiwii commented 7 years ago

This seems to be not fixed for TF2 as it apparently ships the older version in the game's install folder as "steamapps/common/Team Fortress 2/bin/libSDL2-2.0.so.0". I guess this file should be removed?

kisak-valve commented 7 years ago

Thanks for catching that @Kiwii, reopening.

jason0597 commented 6 years ago

Yes, I have this issue as well with TF2, had to divide my normal sensitivity that I use on Windows by 2 Admittedly I use Arch Linux instead of the officially supported Ubuntu, but I don't think this is the reason why I have double the sensitivity

Fracey commented 6 years ago

Same problem with css. Also not sure if related but scrolling fast acts as mouse4 and mouse5.

jolty1 commented 6 years ago

This issue is still not fixed for TF2. Copying newer libSDL2-2.0.so.0 from Csgo's bin directory into tf2's bin is a temporarily fix.

catb0t commented 6 years ago

@jolty1 forgive me if i'm wrong, but this won't pass the checksum for a given TF2 version, might not allow you to join Valve pure servers, and could even get you VAC banned if the server decides you have a weird library loaded

it will also be overwritten by Steam's "Verify integrity of game files" but this is less important

Kiwii commented 6 years ago

This issue is still not fixed for TF2. Copying newer libSDL2-2.0.so.0 from Csgo's bin directory into tf2's bin is a temporarily fix.

You can also just delete it. There's no need for the file to be there at all, as SDL2 is included in the Steam runtime anyway.

@jolty1 forgive me if i'm wrong, but this won't pass the checksum for a given TF2 version, might not allow you to join Valve pure servers, and could even get you VAC banned if the server decides you have a weird library loaded

VAC doesn't work that way and sv_pure doesn't enforce the integrity of libraries. I've been playing with my system's version of SDL2 preloaded for hundreds of hours and it hasn't caused any issues.

Anyway, can somebody please ask the janitor to just delete the file from the depot? It's a 5 minutes fix, if it even takes that long to do it.

jolty1 commented 6 years ago

This issue is still not fixed for TF2. Copying newer libSDL2-2.0.so.0 from Csgo's bin directory into tf2's bin is a temporarily fix.

You can also just delete it. There's no need for the file to be there at all, as SDL2 is included in the Steam runtime anyway.

@jolty1 forgive me if i'm wrong, but this won't pass the checksum for a given TF2 version, might not allow you to join Valve pure servers, and could even get you VAC banned if the server decides you have a weird library loaded

VAC doesn't work that way and sv_pure doesn't enforce the integrity of libraries. I've been playing with my system's version of SDL2 preloaded for hundreds of hours and it hasn't caused any issues.

Anyway, can somebody please ask the janitor to just delete the file from the depot? It's a 5 minutes fix, if it even takes that long to do it.

After looking into it more, I am just preloading the working library from steam runtimes directory.

The game should be immune to updates and integrity checks then.

Trivial, as it would be doing this anyway...

Simple Launch Option. LD_PRELOAD="/home/YOUR-NAME/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libSDL2-2.0.so.0:$LD_PRELOAD" %command%

Kiwii commented 6 years ago

I'm doing that for month with my system library (on Arch) and it hasn't caused any issues.

LD_PRELOAD="/usr/\$LIB/libSDL2.so:$LD_PRELOAD" %command%
catb0t commented 6 years ago

@kiwii re: "VAC and sv_pure don't work that way" isn't their whole purpose is to determine if the client has unknown unauthorised symbols loaded, like you might find in a newer vs older version of SDL2, or like you might find in MyWallHack.so?

Kiwii commented 6 years ago

@catb0t VAC doesn't look for unknown stuff, but rather has a blacklist of known cheats. Valve prioritizes having no false positives over catching every cheat.

OvermindDL1 commented 6 years ago

VAC doesn't look for unknown stuff, but rather has a blacklist of known cheats. Valve prioritizes having no false positives over catching every cheat.

@Kiwii I'm not so sure about that, there are known issues where even if your username contains a certain string of characters that it will just outright ban you immediately, that seems to be a pretty big false positive (especially since the cheat that they did that because had long long ago changed it to a random mapping)...

jolty1 commented 4 years ago

Hi valve still broken. Still having to preload a newer libSDL2.

Note: Preloading now breaks steam overlay and Mann Co. Store. < No longer happening for me.

user21944 commented 3 years ago

Is there any chance that this will be fixed? This issue is older than one of my cousins and a 5 minute fix still hasn't been implemented.

lucascoelho07 commented 2 years ago

Any news on this issue? It also affects GoldSrc games

wantija commented 1 year ago

Using the systems native sdl2 library results in the game crashing when starting up a match, anyone else having this issue? On Arch Linux using 2.26.2-1.

Tiagoquix commented 6 months ago

@kisak-valve Fixed with the TF2 64-bit updated, because the SDL2 library was updated.

Kiwii commented 6 months ago

Can confirm, on Arch Linux, the 64-bit update fixes the issue. It appears the game is not shipping libSDL2.so anymore so a recent version from the runtime is used.

felipsmartins commented 6 months ago

Yes. The new release (TF2 64bits) fixed the issue for me (Debian Linux 12)

Tiagoquix commented 4 months ago

@kisak-valve Here's a comment from Joshua confirming the fix:

https://github.com/ValveSoftware/Source-1-Games/issues/5666#issuecomment-2065649922

[...] SDL got upgraded which fixed the fact that sensitivity was being double/half of what it should be before.

kisak-valve commented 3 months ago

Closing per the last comment.