Friday, February 17, 2023

Fix for Tomb Raider (2013) on Arch Linux

 (from the Gaming On Modern Linux department)

Hi everyone,

Quick post here - I've been trying to run the original Feral Interactive port of Tomb Raider on Arch Linux.  It starts - then stops immediately.  

Looking at the Arch Gaming troubleshooting guide here: https://wiki.archlinux.org/title/Steam/Game-specific_troubleshooting#Tomb_Raider_(2013) they mention trying to see if there are missing libraries.  The output of that command is:

$ ldd steamapps/common/Tomb\ Raider/bin/TombRaider | grep found
       libssl.so.1.0.0 => not found
       libicui18n.so.51 => not found
       libicuuc.so.51 => not found
       libicudata.so.51 => not found
       libCoreFoundation.so.476 => not found
       libvorbis.so.0 => not found
       libSDL2_image-2.0.so.0 => not found
       libcrypto.so.1.0.0 => not found
       libcef.so => not found
       libpdf.so => not found
       libfmodex.so => not found

The weird part?  All of these libraries are already present in .steam/steam/steamapps/common/Tomb Raider/lib/i686

I thought "That's weird". I looked at the debug output in Steam - and yes - it can't find those libs.  I messed around with a few different approaches - adding LD_LIBRARY_PATH to the startup options, etc. - but nothing seemed to work.  

In desperation - and just because I like to be weird - I tried this:  

$ cd ~/.steam/steam/steamapps/common/Tomb\ Raider/lib
$ ls
i686
$ cp i686/* .
$ ls
i686       libCoreFoundation.so.476  libcurl.so.4  libicudata.so.51  libicuuc.so.51  libssl.so.1.0.0  libtcmalloc_minimal.so
libcef.so  libcrypto.so.1.0.0        libfmodex.so  libicui18n.so.51  libpdf.so       libsteam_api.so

And tried starting the game again.  It worked!

That wastes 152M of hard drive space though - so I deleted the files and decided to create a symbolic link to the files instead:

$ cd ~/.steam/steam/steamapps/common/Tomb\ Raider/lib
$ ls
i686
$ ln -s i686/* .
$ ls
i686       libCoreFoundation.so.476  libcurl.so.4  libicudata.so.51  libicuuc.so.51  libssl.so.1.0.0  libtcmalloc_minimal.so
libcef.so  libcrypto.so.1.0.0        libfmodex.so  libicui18n.so.51  libpdf.so       libsteam_api.so

Works just the same - and saves a ton of space!

So - the summary is - it should be loading the game libraries from the i686 subdirectory, but it doesn't seem to be able to find them.  Making them available one level up seems to solve the problem.

Cheers,
Paul