Get SmallWorld 2 running on Ubuntu 16.04


I'm a big fan of the Small World board game and was pleased to see they have a version available on Steam. Unfortunately it did not run correctly on my primary system (Ubuntu 16.04). In fact, it did not start at all. When I ran it at the CLI I found error messages that aided me in my quest to get the game running. Read on for the details.

References

These were the errors I found upon trying to start the game via CLI. In actuality I received one error at a time until I installed the correct system dependency. I've consolidated them all here for convenience:

$ ./Small\ World\ 2 
./Small World 2: error while loading shared libraries: libGLEW.so.1.10: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libSDL2_mixer-2.0.so.0: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libgstreamer-0.10.so.0: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libXmu.so.6: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libpangox-1.0.so.0: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libgstapp-0.10.so.0: cannot open shared object file: No such file or directory
./Small World 2: error while loading shared libraries: libdbus-glib-1.so.2: cannot open shared object file: No such file or directory

./Small World 2: /home/rn/.local/share/Steam/steamapps/common/SmallWorld2/lib/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/i386-linux-gnu/libicuuc.so.55)
./Small World 2: /home/rn/.local/share/Steam/steamapps/common/SmallWorld2/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/lib/i386-linux-gnu/libjack.so.0)

To fix most of these issues you can run this command to install the appropriate i386 packages from the Ubuntu repository:

sudo apt install libsdl2-2.0-0:i386 libsdl2-mixer-2.0-0:i386 libcairo2:i386 libgtk2.0-0:i386 libgstreamer0.10-0:i386 libxmu6:i386 libpangox-1.0-0:i386 libgstreamer-plugins-base0.10-0:i386 libdbus-glib-1-2:i386 libstdc++6:i386

The only other things that need to be done are:

$ sudo ln -sf /usr/lib/i386-linux-gnu/libGLEW.so.1.13 /usr/lib/i386-linux-gnu/libGLEW.so.1.10
$ cp ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so.6.0.21 ~/.local/share/Steam/steamapps/common/SmallWorld2/lib/
$ cd ~/.local/share/Steam/steamapps/common/SmallWorld2/lib/
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s libstdc++.so.6.6.0.21 libstdc++.so.6

The above commands do some symlinking magic to get the game to load.