steam-for-linux icon indicating copy to clipboard operation
steam-for-linux copied to clipboard

[beta] last update broke dota2 because the scout runtime does not include many dota2 dependencies

Open sylware opened this issue 1 year ago • 2 comments

dota2 does not start because it is not started in the sniper runtime anymore (the core of the issue being dota2 ELF binaries not being "correct", but this is another issue as it should not need any "runtime").

The beta client has always the global setting from "compatibility", "Enable steam play for supported title" disabled after starting the client (it is reset all the time).

And dota2 compatibility properties cannot be changed... which seems to be stuck in the wrong state.

Nothing change even if I do re-enable the global setting.

sylware avatar Oct 19 '24 12:10 sylware

It is because of the last steam beta client update:

dota2 is now starting into the scout runtime in /home/user/.local/share/Steam/ubuntu12_32/steam-runtime which does not have libharfbuzz (which was previously provided by the sniper steam runtime).

It is obviously beyond video game core interface shared libs, namely at the application level, dota2 should properly package it with its dependencies:

  • statically linked.

  • or shared lib properly libdl-ed (which should dodge any symbol conflicts, and any soname conflict, if I recall properly, maybe wrong and if so, it is the next point which should be used).

  • or shared lib in ELF NEEDED entries but the ELF soname must be customized and symbol names customely mangled to avoid symbol conflicts with a host libharfbuzz.

I guess this is not the sole dota2 dependency missing from the scout runtime (I will try to copy a libharfbuzz with its dependency into dota2 linux runtime directory to try to work around the issue, hopefully without ABI issues).

The last call would be to re-enable sniper for dota2 to work around the non packaged dependencies of dota2 (but this as not the clean and right way...)

sylware avatar Oct 19 '24 17:10 sylware

I did install the today standalone version of the sniper steam runtime and I did copy in the dota2 linux runtime directory:

libharfbuzz.so.0 libthai.so.0 libdatrie.so.1 libfribidi.so.0 libgraphite2.so.3

and the libthai data file "thbrk.tri" which directory has to be defined with the environment variable LIBTHAI_DICTDIR

As far I could test, I did not encountered ABI issues, yet, and dota2 seems to run fine (actually better... since current dota2 libSDL3 is working again with alsa, for the moment: in sniper, libSDL3 need to be "fixed" for alsa to work).

I recall I already did workaround the scout runtime and posted how to fix the "right way" (but at the time it was probably more incomplete than today).

sylware avatar Oct 19 '24 18:10 sylware

I could re-enable the sniper runtime, but then it did disable itself...

oooow... in the end, I don't know if it run in scout or sniper in the end, but I added the missing libs for scout, and fixed dota2 libSDL3 for sniper...

what a mess... but in the end I did fix both runtimes to run properly dota2.

sylware avatar Oct 28 '24 01:10 sylware