protonscr

`STEAM_COMPAT_RUNTIME_SDL2=1` does not work with native build of Silksong

steamopen
ValveSoftware/steam-for-linux#12311 · opened 2025-09-06 by urbenlegend · updated 2025-09-09 · 1 comments · github
Uurbenlegend 2025-09-06 github

Your system information

  • Steam client version (build number or date): 1751405894

  • Distribution (e.g. Ubuntu): Arch Linux

  • Opted into Steam client beta?: [Yes/No] No

  • Have you checked for system updates?: [Yes/No] Yes

  • Steam Logs: steam-logs.tar.gz

  • GPU: Nvidia

Please describe your issue in as much detail as possible:

The controller support in both Hollow Knight games are broken (tested with my 8bitdo Ultimate 2 controller, but there have been user reports of it being broken for other controllers as well). For the first game, it was possible to work around these issues by specifying STEAM_COMPAT_RUNTIME_SDL2=1 %command% in the launch parameters. This doesn't seem to work with Silksong though.

Steps for reproducing this issue:

  1. Launch Silksong and use a 8bitdo Ultimate 2 controller (other controllers may also have the issue)
  2. Notice that some of the buttom mappings are wrong. Start and Select are mapped to the wrong actions and pressing RT will cause the character to permanently look up
  3. Relaunch the game with STEAM_COMPAT_RUNTIME_SDL2=1 %command%
  4. Notice that launch parameters do not fix the controller input, unlike with the first game
Ssmcv 2025-09-09 github

The controller support in both Hollow Knight games are broken (tested with my 8bitdo Ultimate 2 controller, but there have been user reports of it being broken for other controllers as well)

This would be a game issue, so please report it to the game's developer/publisher. If the game uses a bundled or statically linked copy of SDL 2, they would probably be able to address it by updating their bundled SDL, or by using the Steam Runtime's known-good copy of SDL 2 instead.

If the game doesn't use SDL 2 at all, then overriding the version of SDL in use won't help it.

If the game does use SDL 2, but it's a bundled or statically linked copy where the SDL_DYNAMIC_API feature has been disabled, then it is normal that attempting to override the version of SDL in use won't have any effect.

For the first game, it was possible to work around these issues by specifying STEAM_COMPAT_RUNTIME_SDL2=1 %command% in the launch parameters. This doesn't seem to work with Silksong though.

If this workaround still works for the first game, then the Steam Runtime feature that it uses is still working correctly, it just isn't a useful workaround any more for the second game. It works by setting the SDL_DYNAMIC_API environment variable for the game executable, to a value that is appropriate inside the container and points to a suitable version of SDL 2. If that environment variable is indeed set (you could find out by inspecting /proc/$pid/environ where $pid is the process ID of the game), then the Steam Runtime has done all it can, and the rest is up to the game developer.

Launch options

Launch lines