-
Notifications
You must be signed in to change notification settings - Fork 85
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sword of the Necromancer missing libraries #729
Comments
Please report this to the game developer as a bug in the game. Steam has never guaranteed to provide |
Do you mean setting the compatibility tool to "Legacy runtime 1.0"? That compatibility tool is intended to be a way to run games that make assumptions about the host OS, if those assumptions are still true today. Before November 2024, Steam's default behaviour for native Linux games was the equivalent of what we're now calling the legacy runtime. However...
... if the game's assumptions are not true of your host system and also not true of SLR, there isn't necessarily much that we can do about that. If we tested this on lots of systems, I suspect we'd find that it worked as intended (with the legacy runtime) on older versions of Ubuntu, but no longer works on newer Ubuntu, and in particular doesn't work any more on the version of Ubuntu that your Linux Mint system is based on. The libraries that the original (v1.0) Steam Runtime "officially" provides are listed in the scout ABI: those are the only libraries that a Steam game is meant to rely on, in the absence of configuration to the contrary. This includes In an attempt to be nice to game authors who have made assumptions about newer libraries, the Steam Linux Runtime 1.0 container also provides the Steam Runtime 2 'soldier' ABI. That does include OpenSSL 1.1, but doesn't include a version of I suspect this game probably does not actually need If you fetched Game developers can opt-in to having their game run in a newer container, Steam Linux Runtime 3.0 (sniper), which provides the Steam Runtime 3 ABI instead of Steam Runtimes 1 and 2 - but that doesn't have
Yes. The intention is that the game developer should compile their game in a consistent environment - either the scout SDK and continue to target the scout ABI, or the sniper SDK and use the Steamworks partner web interface to tell Steam that they are now targeting the sniper ABI - and bundle or statically link any library dependencies that aren't available in their chosen runtime branch. If bundled copies of those libraries are present, then I suspect that this particular developer probably started by compiling for the scout SDK (or for an old Ubuntu version like 12.04), but later switched to a newer build environment and making assumptions about the host system that we can't guarantee over time.
Yes, that's right. What we're trying to do is to make sure that if a game works today, it's very likely that it'll still work a few years from now. The legacy runtime didn't achieve that, as you've seen: Sword of the Necromancer presumably worked in the past, but no longer does, because it was making assumptions that were not backed up by anyone's compatibility guarantees (either ours or the OS vendor's).
Yes, this. We've added libraries as a workaround for mis-packaged games before (like |
Yes and no. I had actually meant forcing Steam not to use any Steam runtime at all (i.e. just running the game with system libraries), because I thought there was some way to do that, but I think I was mistaken. Prior to the update which made "scout" the default, I thought the default was no Steam runtime, but it looks like the "legacy" runtime is the old default which the I didn't bother to try it because I assumed it wouldn't help for this game, since I knew (by trying to run it from the command line) that the game requires other dependencies e.g. I believe Sword of the Necromancer uses the GameMaker engine, and I'd often relied on Steam to get such games to work in the past. Many of the older ones, at least, require On that note, updating SLR to include |
Looking at the game's depot file listing, it seems to have a bundled copy of If you undo your workaround of adding It might not (we don't know what assumptions the game or engine developer has made) but it's worth a try.
For what it's worth, Valve's compatibility testing lists Proton as the recommended way to run this game on Steam Deck, so you'd be in good company there.
This is not something that Steam-on-Linux has ever offered as a supported code path: even back in 2013 it was reasonably obvious that there's no such thing as a forward-compatible Linux platform ABI, beyond the absolute bare minimum (ancient versions of glibc, libX11 and libGL, and that's about all you get). Technically there is still a way to make this happen, but it's unsupported and in practice will break most games, and a future Steam release might well remove it.
That's right. The "Legacy runtime 1.0" didn't exist as a separate compatibility tool until recently, but the old default (as restored by
Actually it does, but for this specific game I don't think it's going to help you, because
Now that we have "Legacy runtime 1.0" as an independent compatibility tool, you don't need to change a global Steam setting: you can swap between compatibility tools on a per-game basis.
Yes, that's good reasoning: I don't think we're going to include it for the benefit of a single game, but we're more likely to consider including it if it benefits a whole family of related games. |
After undoing all of my previous tinkering with a fresh install of the game, I removed the included
So apparently it doesn't like the Steam runtime's
This does seem like the kind of game I'd prefer to play on my Steam Deck anyway, so I'll probably install it there and let it default to Proton. I do enjoy running Linux versions of games whenever possible (to the point where I'm willing to go through some extra steps if a Linux port is only slightly broken), but I don't know how to fix the controller input for this one (and as far as I know, that's just a bug in the game itself, and nothing to do with SLR). Anyway, thanks for all the information. I'd close this issue if I knew that the weirdo dependencies are just for this game, and not every game built with a particular version of GameMaker. Or if you think it's probably the former, then feel free to close it. Either way, if I ever find another game with exactly the same issue, I'll just come back and drop the title here. |
Yes: the ABI of libcurl in Debian-derived distributions involved some well-intentioned but ultimately inadvisable decisions between around 2005 and 2018, and unfortunately the scout branch of the Steam Runtime happens to have used one of the affected versions as its baseline, which we can never change now, because it would break games that were previously considered to be doing everything correctly. So, probably this particular game expects and requires a
Yeah, I think the most likely resolutions for this issue report are either:
This all sounds like something to discuss with the game developer, or with their engine supplier (seems to be GameMaker, like you said). For what it's worth, I used to use Awesomenauts (another GameMaker title) as a test-case for the Steam Runtime and it worked fine, although I think that was a much older version of the GameMaker engine. |
Your system information
steamapps/common/SteamLinuxRuntime/VERSIONS.txt
?~/.steam/root/ubuntu12_32/steam-runtime/version.txt
:steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt
?steamapps/common/SteamLinuxRuntime_sniper/VERSIONS.txt
?Please describe your issue in as much detail as possible:
Apologies if this isn't considered a bug, but Sword of the Necromancer (app ID 1243890) fails to run because it can't find some libraries. The initial complaint is about
librtmp.so.1
as shown in my SLR log (slr-app1243890-t20241217T152612.log
), but when I provided that library, it then failed to findlibhogweed.so.6
, and thenlibnettle.so.8
. All three of these libraries are installed on my system, under/lib/x86_64-linux-gnu
, and simply copying them into the game'slib
folderdid get the game to run. I don't know much about Steam Linux Runtime, but I assume it prevents the game's use of system libraries (by design and thus not a bug), which in this case breaks the game because SLR does not supply these libraries (maybe a bug). The only solution without workarounds is probably for these libraries to be added to Steam Linux Runtime, but I do understand that it's probably just not going to happen if this turns out to be the only one of Steam's two-hundred-thousand-something games that requires them.
Note that forcing Steam not to run the game in SLR would not actually help in this case, because the game also requires some libraries which are not provided by Linux Mint but are provided by SLR — such as, for example,
libcrypto.so.1.1
andlibssl.so.1.1
. (This actually seems like a bug in the game itself, considering that it ships withlibcrypto.so.1.0.0
andlibssl.so.1.0.0
instead, but whatever. Even if simply disabling SLR were a viable workaround, we would still want the game to work with SLR anyway because it's the default now.)Steps for reproducing this issue:
The text was updated successfully, but these errors were encountered: