Hi there!
I have a situation about a game that has problems with running via Steam but the same binaries run fine via Lutris.
ProtonDB page of the said game: https://www.protondb.com/app/214590 (Fairy Bloom Freesia)
I tried it years ago, probably around Proton 4-2 times, and I was getting the very same error I get today if I run the game from Steam.
DirectX error: StrecthRect is invalid call
I don’t know what Steam does differently but in the meantime it causes this error. Probably it’s game’s own problem at some circumstances (regarding it’s a custom Japanese engine) and what Steam does triggers this error. I’m using Glorious Eggroll’s Proton 10-15 on both Steam and Lutris, that’s why I think it’s related to Steam client itself.
Also tried WINE and if I run the game with regular WINE from my system, the performance would be really poor, but at least it runs.
So, I’m trying to understand what would be the difference. Do we know what might Steam client does behind the doors? According to the latest reviews on ProtonDB, the game should run fine. That’s why I wanted to try it again after so many years.
I tried every Proton version and I get the same error almost on every version. For some, it crashes right away. Launch options such as PROTON_USE_WINED3D=1
do not help either.
Any ideas what should I check or try?
I’m on EndeavourOS, my Steam is a native package.
Processes launched from Steam run in an altogether different runtime environment compared to Lutris. When Steam launches an application, it uses several wrapper processes that you can see in
btop
’s process tree. Pressure Vessel (pv-adverb
) and Bubblewrap (srt-bwrap
) are sandboxing solutions by Valve and Flatpak respectively, and Reaper is responsible for tracking and cleaning up Wine processes when the game is closed.This is what the process tree looks like when I launch Warframe:
That sandboxing is not making things easy for me though. They seem to be the culprit for now since they don’t exist if I launch it via Lutris. Not sure what to do at this point.
Steam also supplies its own shared libraries, many of which are 32-bit. It does a lot of fuckery with
LD_PRELOAD
to load its own stuff instead of system libraries. Thesteam-native-runtime
package in themultilib
repository replaces those with system libraries, and provides thesteam-native
command that runs Steam without said fuckery. I can’t guarantee it’ll work at all.Tried
steam-native
but sadly didn’t fix the issue. Apparently it does indeed fix some problems for some games. Maybe I can useLD_PRELOAD
to pull some system files before running the game via a launch option but no idea where to start or if it would work at all. I could also try flatpak Steam but whenever I tried that I had worse experiences.