2

Dwarfs has a native Linux port. It uses some very old libraries and is 32-bit, however.

I haven't managed to get it running again on a modern arch-64 install. What to do?

For starters, take a look at the game directory; it complains about a library that's there.

ldd -r libgdiplus.so.0 returns the fact that libexif.so does not exist.

This library does have a 64-bit version in the current main archive, but not the 32-bit version (badly maintained miscellaneous libraries are nothing new). There's an AUR version: installing that gets me slightly further (or not) with a segmentation fault instead. I'm assuming that AUR package is also badly out of date and unmaintained.

In general, installing an OS-supported libgdiplus is far more preferable than trying to get the version from the game's folder to play nice with the system, as it'll lead to hundreds more libraries that have to be recompiled, an endless dll hell.

Unfortunately, the maintainers seemingly saw fit to start to ignore 32-bit compatibility for GDI+ applications in 2021. Slowly, all the old proprietary games have started to rot and break. Including apparently this one (which just required pacman -S lib32-libgdiplus) some 3-4 years ago.

The funny thing is: libgdiplus is not unmaintained. Nobody just bothered to compile it for multarch. The github @ https://github.com/mono/libgdiplus still shows recent activity (although it currently seems to fail to compile). Now, if there's just some explanation of how to compile a system library with a thousand dependencies like that and install it into a multi-arch system without breaking everything...

There is some more info on the Steam forums, but how did they alter that file (Run.sh)? A case of https://xkcd.com/979/, as the linked page no longer has the information. Nor does the Internet Archive.

2

1 Answer 1

2

Run it via Proton/WINE

While not a way to play the native version, thus not a true answer, this method at least allows for gameplay. The game isn't very resource intensive, so I find no noticeable performance impact.

Toggle the game to proton experimental using Steam's developer mode, and launch Steam under a terminal window. Add the environment variable env PULSE_LATENCY_MSEC=30 to prevent choppy sound (or disable pulseaudio entirely).

Let Steam create the proton prefix and launch the game by hitting play. It will crash with a message of a missing DLL (SAPI.dll). Use winetricks or protontricks to install native SAPI. If you are wondering, this is the microsoft Speech voice synthesis redistributable, used for voice generation in the game. protontricks has a nice gui mode (start with --gui) which allows you to select the steam game. It'll automatically find the right prefix map. (Usually under something like steamlibdir/steamapps/compatdata/<appID>/pfx. Select to install a windows component, type in sapi, and the thing automagically finds the right redistributable.

Now the game will run under WINE/Proton, which just has better backwards compatibility support than Linux, or even Windows itself does.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.