ValveSoftware / Source-1-Games

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

[HL2DM] [Linux] Native Half-Life 2: Deathmatch does not run #6556

Open DenAkimov opened 6 days ago

DenAkimov commented 6 days ago

Native Half-Life 2: Deathmatch fails to run, outputting: "FATAL: It appears hl2 was not launched within the Steam for Linux sniper runtime environment. FATAL: Please consult documentation to ensure correct configuration, aborting."

nixRidge commented 5 days ago

Additionally, if I modify the hl2.sh launch script for Half-Life 2: Deathmatch to stop checking for the runtime environment, it complains about missing a launch binary.

In fact, I cannot find any binaries named hl2, hl2_linux, or hl2_linux64 in the Half-Life 2: Deathmatch directories. Anywhere.

someone12421 commented 5 days ago

having the same issue, using arch linux

logs: > [2024-11-17 22:03:43] chdir "/drive2/Games/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch" > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. > [2024-11-17 22:03:43] Game Recording - would start recording game 320, but recording for this game is disabled > [2024-11-17 22:03:43] Adding process 85880 for gameID 320 > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. > [2024-11-17 22:03:43] WARNING: discarding _NET_WM_PID 6 as invalid for X11 window - use specialized XCB_X11_TO_PID function! > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. > [2024-11-17 22:03:43] gamemodeauto: > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored. > [2024-11-17 22:03:43] gamemodeauto: > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. > [2024-11-17 22:03:43] ERROR: ld.so: object '/home/user/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored. > [2024-11-17 22:03:43] Adding process 85892 for gameID 320 > [2024-11-17 22:03:43] Adding process 85893 for gameID 320 > [2024-11-17 22:03:44] i386-linux-gnu-capsule-capture-libs: warning: Dependencies of /home/user/.local/share/Steam/ubuntu12_32/libVkLayer_steam_fossilize.so not found, ignoring: Missing dependencies: Could not find "librt.so.1" in LD_LIBRARY_PATH "/usr/lib:/drive2/Games/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch", ld.so.cache, DT_RUNPATH or fallback /lib:/usr/lib > [2024-11-17 22:03:44] i386-linux-gnu-capsule-capture-libs: warning: Dependencies of /home/user/.local/share/Steam/ubuntu12_32/steamoverlayvulkanlayer.so not found, ignoring: Missing dependencies: Could not find "libdl.so.2" in LD_LIBRARY_PATH "/usr/lib:/drive2/Games/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch", ld.so.cache, DT_RUNPATH or fallback /lib:/usr/lib > [2024-11-17 22:03:44] i386-linux-gnu-capsule-capture-libs: warning: Dependencies of /usr/lib32/dri/crocus_dri.so not found, ignoring: Missing dependencies: Could not find "libgbm.so.1" in LD_LIBRARY_PATH "/usr/lib:/drive2/Games/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch", ld.so.cache, DT_RUNPATH or fallback /lib:/usr/lib > [2024-11-17 22:03:44] i386-linux-gnu-capsule-capture-libs: warning: Dependencies of /usr/lib32/dri/nouveau_drv_video.so not found, ignoring: Missing dependencies: Could not find "libglapi.so.0" in LD_LIBRARY_PATH "/usr/lib:/drive2/Games/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch", ld.so.cache, DT_RUNPATH or fallback /lib:/usr/lib > [2024-11-17 22:03:44] pressure-vessel-wrap[85892]: W: Using glibc from provider system for some but not all architectures! Arbitrarily using provider locales. > [2024-11-17 22:03:44] pressure-vessel-wrap[85892]: W: Using libdrm from provider system for some but not all architectures! Will take /usr/share/libdrm from provider. > [2024-11-17 22:03:44] pressure-vessel-wrap[85892]: W: Using libGLX_mesa.so.0 from provider system for some but not all architectures! Will take /usr/share/drirc.d from provider. > [2024-11-17 22:03:44] ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > [2024-11-17 22:03:44] ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > [2024-11-17 22:03:44] pid 85977 != 85973, skipping destruction (fork without exec?) > [2024-11-17 22:03:44] pid 85982 != 85973, skipping destruction (fork without exec?) > [2024-11-17 22:03:44] Adding process 85973 for gameID 320 > [2024-11-17 22:03:44] ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > [2024-11-17 22:03:44] ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > [2024-11-17 22:03:44] ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > [2024-11-17 22:03:44] pid 86004 != 85973, skipping destruction (fork without exec?) > [2024-11-17 22:03:44] ERROR: ld.so: object 'libgamemodeauto.so.0' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. > [2024-11-17 22:03:44] > [2024-11-17 22:03:44] FATAL: It appears hl2 was not launched within the Steam for Linux sniper runtime environment. > [2024-11-17 22:03:44] FATAL: Please consult documentation to ensure correct configuration, aborting. > [2024-11-17 22:03:44] > [2024-11-17 22:03:44] Adding process 86003 for gameID 320 > [2024-11-17 22:03:44] Adding process 86005 for gameID 320 > [2024-11-17 22:03:44] Game Recording - game stopped [gameid=320] > [2024-11-17 22:03:44] Removing process 86005 for gameID 320 > [2024-11-17 22:03:44] Removing process 86003 for gameID 320 > [2024-11-17 22:03:44] Removing process 85973 for gameID 320 > [2024-11-17 22:03:44] Removing process 85893 for gameID 320 > [2024-11-17 22:03:44] Removing process 85892 for gameID 320 > [2024-11-17 22:03:44] Removing process 85880 for gameID 320 >
NotHyper-474 commented 4 days ago

In fact, I cannot find any binaries named hl2, hl2_linux, or hl2_linux64 in the Half-Life 2: Deathmatch directories. Anywhere.

Yep, not only it expects sniper runtime when HL2DM uses soldier (at least that's the output of echo $VERSION_CODENAME), the executable file is entirely missing.

someone12421 commented 4 days ago

seems like the prerelease, previous_build, and steam_legacy beta branches work. the "stable" version and the beta branch called "beta" dont work

nixRidge commented 4 days ago

Only _prerelease, previous_build, and steamlegacy will work on Linux & MacOS right now. Public & beta are Windows only for now.

According to SteamDB, the three legacy repos are all on the same build of the game. So for now, use any of these to play the game and pray the server you like to play on hasn't updated. Public & beta removed the launcher binaries for both Linux & MacOS.

bilde

someone12421 commented 4 days ago

Only _prerelease, previous_build, and steamlegacy will work on Linux & MacOS right now. Public & beta are Windows only for now.

According to SteamDB, the three legacy repos are all on the same build of the game. So for now, use any of these to play the game and pray the server you like to play on hasn't updated. Public & beta removed the launcher binaries for both Linux & MacOS.

bilde

valve please fix (genuinely though, how tf did this happen?)

utku-helvaci commented 4 days ago

if you try to get the hl2_linux and hl2.sh it won't work due to missing libtcmalloc_minimal.so.4 but also due to new build shipping with 64 bit binaries. old executable wants 32 bit:

/mnt/7e35b636-96c0-4070-b04f-ad2f69b6a203/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch/hl2_linux: error while loading shared libraries: libtcmalloc_minimal.so.4: cannot open shared object file: No such file or directory

after copying libtcmalloc_minimal.so.4 from portal or cs source:

AppFramework : Unable to load module sourcevr.so!
Using shader api: shaderapivk
 failed to dlopen /mnt/7e35b636-96c0-4070-b04f-ad2f69b6a203/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch/bin/shaderapivk.so error=libdxvk_d3d9.so: wrong ELF class: ELFCLASS64
 failed to dlopen shaderapivk.so error=shaderapivk.so: wrong ELF class: ELFCLASS64
Failed to load DLL 'shaderapivk'
MaterialSystem cannot load: No ShaderAPIFactory!
System (VMaterialSystem081) failed during stage CONNECTION
DiegoArmando-27 commented 4 days ago

wrong ELF class: ELFCLASS64

It says that the shaderapivk library is 64-bit and 32-bit executable basically can't load it.

So yes, the updated HL2:DM version needs a new-built 64-bit executable.

dhcpme commented 4 days ago

On Fedora 41, _steamlegacy is the only version that works for me.

niobium93 commented 4 days ago

Copying the singleplayer HL2 hl2_linux binary and then launching it like this actually runs, but then immediately crashes. LD_LIBRARY_PATH="/home/andrius/.local/share/Steam/steamapps/common/Half-Life 2 Deathmatch/bin":$LD_LIBRARY_PATH ./hl2_linux -game hl2mp -steam Log

TL;DR:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid
Segmentation fault (core dumped)

To be clear the hl2mp client.so and server.so are still 32-bit, so you need a 32-bit launcher binary and 32-bit engine libraries. The ones in /bin are 32-bit, but for some reason there are also redundant 64-bit libraries in /bin/linux64. The hl2.sh shell script is made for launching the 64-bit engine (it tries to run hl2_linux64 and prepends /bin/linux64 to LD_LIBRARY_PATH instead of just /bin) so it obviously won't work unless the game code is actually rebuilt for 64-bit. Even if you put everything where it needs to be, the engine just crashes. It looks like no one even tried to run this on Linux or macOS, let alone play tested it...

nixRidge commented 4 days ago

steam_legacy is the only version that works for me.

It's the only version that will work for anyone on Mac and Linux right now, they're both missing binaries.

If I'm to make an optimistic guess, maybe they did this intentionally to prevent people from launching the game, perhaps because they need more time to work on a fix for the other two clients.

Either way, I don't think throwing more logs at this is going to help either way. The binaries are missing, so that's it.

Now I'm no Valve developer, so I have no idea what their schedule is like other than they usually deploy updates and releases on Thursdays, so remember this probably won't be fixed until at minimum later this week IF they're currently working on a fix. It'll probably take even longer if they even bother to fix it at all.

HL2DM doesn't make them any money so they could just as well ignore this and leave it Windows exclusive. Ironically.

niobium93 commented 4 days ago

@nixRidge this was updated for the big Half-Life 2 20th Anniversary update. It definitely hasn't been broken on purpose, they could've just kept linux/macOS on the old depots before the update if it wasn't done.

nixRidge commented 4 days ago

In that case then yeah they goofed hard lol

Lassebq commented 3 days ago

6528

dhcpme commented 2 days ago

The servers I normally play have upgraded to the 20th Anniversary Update so I can no longer play using _steamlegacy. I'm hopeful this gets resolved soon since it's a much different feel when I boot/play under Windows and I live/work natively under Linux. I really do appreciate everyone's efforts to support us in a tiny, tiny minority.

PQCraft commented 1 day ago

hl2dm also doesn't work for me anymore. The 'hl2.sh' script fails the [ "$VERSION_CODENAME" != "sniper" ] check. Disabling this check by commenting out the exit 1 will start the game but it will die with an error saying "Could not load library client. Try restarting. If that doesn't work, verify the cache."

tabcodes commented 20 hours ago

Also experiencing this on Mint 21.3.

Wolfyxon commented 57 minutes ago

Same here

chdir "/run/media/wolfyxon/Acer/SteamLibrary/steamapps/common/Half-Life 2 Deathmatch"
ERROR: ld.so: object '/home/wolfyxon/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/wolfyxon/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/wolfyxon/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/wolfyxon/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Game Recording - would start recording game 320, but recording for this game is disabled
Adding process 14268 for gameID 320
ERROR: ld.so: object '/home/wolfyxon/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/wolfyxon/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Adding process 14269 for gameID 320
Adding process 14270 for gameID 320
pid 14357 != 14351, skipping destruction (fork without exec?)
pid 14362 != 14351, skipping destruction (fork without exec?)
Adding process 14351 for gameID 320
pid 14384 != 14351, skipping destruction (fork without exec?)

FATAL: It appears hl2 was not launched within the Steam for Linux sniper runtime environment.
FATAL: Please consult documentation to ensure correct configuration, aborting.

Adding process 14383 for gameID 320
Adding process 14385 for gameID 320
Game Recording - game stopped [gameid=320]
Removing process 14385 for gameID 320
Removing process 14383 for gameID 320
Removing process 14351 for gameID 320
Removing process 14270 for gameID 320
Removing process 14269 for gameID 320
Removing process 14268 for gameID 320