*Casts Animate Dead on the thread.*
Since I drafted the following quick write-up as a PM already, I may as well leave it here.
If you have an old Linux NWN client backed up somewhere - like me - and don't want to start with a brand new shiny GOG version which comes with the NWN: EE these days - like me - and have little clue about how things work there - like me - maybe I'll save you some time.
I've returned to Avlis from a long hiatus recently, first by getting a backed up version of the client to work on an old laptop where it used to reside (after a couple of system upgrades), and then by moving the client from said laptop to a new Linux Mint machine. I had to do some tinkering to get it to work.
First: since I had a backed-up version of my old game client, with my old CD keys and all the log files of each and every game session stored neatly in the log directory, I didn't want to buy and download a GOG version outright. The GOG version has a a dedicated "walkthrough" for linux machines:
https://wiki.dotslashplay.it/en/games/n ... ter-nights. The upside of the GOG version being that you get it with a NWN EE purchase. The downside being that you have to pay for the NWN EE purchase - not exactly a must for me if/until Avlis and the rest of CoPaP go all EE.
Once I've fixed the owner status of the files with CHUSER and made the relevant ones executable with CHMOD, my only problem was with the libraries required by the Linux client for the game to work. Back in the day it used to run just out of the box. Today we're all 64-bit and things are different.
Fortunately, all the required libraries are still out there in the official repositories - and you can easily check which ones are they by executing the LDD command from the linux client's main executable's directory:
Code: Select all
mm@sys:~/Neverwinter/old$ ldd nwmain
linux-gate.so.1 (0xf7f5c000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7e2e000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7e0e000)
libGL.so.1 => /usr/lib/i386-linux-gnu/libGL.so.1 (0xf7da6000)
libGLU.so.1 => /usr/lib/i386-linux-gnu/libGLU.so.1 (0xf7d26000)
libmss.so.6 => not found
libSDL-1.2.so.0 => /usr/lib/i386-linux-gnu/libSDL-1.2.so.0 (0xf7c7e000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7a9e000)
/lib/ld-linux.so.2 (0xf7f5e000)
libGLX.so.0 => /usr/lib/i386-linux-gnu/libGLX.so.0 (0xf7a76000)
libGLdispatch.so.0 => /usr/lib/i386-linux-gnu/libGLdispatch.so.0 (0xf7a16000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf788e000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf786e000)
libasound.so.2 => /usr/lib/i386-linux-gnu/libasound.so.2 (0xf7746000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf773e000)
libpulse-simple.so.0 => /usr/lib/i386-linux-gnu/libpulse-simple.so.0 (0xf7736000)
libpulse.so.0 => /usr/lib/i386-linux-gnu/libpulse.so.0 (0xf76d6000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf7586000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf756e000)
libcaca.so.0 => /usr/lib/i386-linux-gnu/libcaca.so.0 (0xf749e000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf748e000)
libpulsecommon-11.1.so => /usr/lib/i386-linux-gnu/pulseaudio/libpulsecommon-11.1.so (0xf73fe000)
libdbus-1.so.3 => /lib/i386-linux-gnu/libdbus-1.so.3 (0xf739e000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf736e000)
libslang.so.2 => /lib/i386-linux-gnu/libslang.so.2 (0xf718e000)
libncursesw.so.5 => /lib/i386-linux-gnu/libncursesw.so.5 (0xf7156000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xf712e000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf710e000)
libsystemd.so.0 => /lib/i386-linux-gnu/libsystemd.so.0 (0xf707e000)
libwrap.so.0 => /lib/i386-linux-gnu/libwrap.so.0 (0xf706e000)
libsndfile.so.1 => /usr/lib/i386-linux-gnu/libsndfile.so.1 (0xf6fde000)
libasyncns.so.0 => /usr/lib/i386-linux-gnu/libasyncns.so.0 (0xf6fd6000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf6fce000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf6fc6000)
liblzma.so.5 => /lib/i386-linux-gnu/liblzma.so.5 (0xf6f96000)
liblz4.so.1 => /usr/lib/i386-linux-gnu/liblz4.so.1 (0xf6f7e000)
libgcrypt.so.20 => /lib/i386-linux-gnu/libgcrypt.so.20 (0xf6e96000)
libnsl.so.1 => /lib/i386-linux-gnu/libnsl.so.1 (0xf6e76000)
libFLAC.so.8 => /usr/lib/i386-linux-gnu/libFLAC.so.8 (0xf6e16000)
libogg.so.0 => /usr/lib/i386-linux-gnu/libogg.so.0 (0xf6e06000)
libvorbis.so.0 => /usr/lib/i386-linux-gnu/libvorbis.so.0 (0xf6dd6000)
libvorbisenc.so.2 => /usr/lib/i386-linux-gnu/libvorbisenc.so.2 (0xf6d46000)
libresolv.so.2 => /lib/i386-linux-gnu/libresolv.so.2 (0xf6d2e000)
libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xf6d0e000)
libgpg-error.so.0 => /lib/i386-linux-gnu/libgpg-error.so.0 (0xf6cf6000)
If a library is missing, the command's output will tell you which one it is, and it's a single google search away to identify the packages you have to install. They all seem to be 32-bit versions you have to install on top of anything you may already have on your machine.
Since on a modern 64-bit system 32-bit libraries seem to reside in a different directory than the usual ones (in my instance it's /lib/i386-linux-gnu/), I had to fiddle with my NWN launch sequence a bit to find out how to get everything to work.
The way I managed to get it to work back in 2007...? 2008...?, it was with two files: "nwn.sh" and "nwn".
Yup, I sure could consolidate them into a single file, but I don't fix what's not yet broken.
Most importantly, I had to add a reference to the current directory for all the required libraries, and now the launch sequence looks like the following:
For ./nwn.sh:
Code: Select all
#!/bin/bash
LD_PRELOAD=no_nvvp.so:vidmode.so ./nwn
#EOF
For ./nwn:
Code: Select all
#!/bin/sh
# This script runs Neverwinter Nights from the current directory
export SDL_MOUSE_RELATIVE=0
export SDL_VIDEO_X11_DGAMOUSE=0
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/i386-linux-gnu/:./miles
export LD_LIBRARY_PATH
./nwmain $@
cat logs/nwclientLog1.txt >> logs/$(date +%Y-%m-%d).log
The
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/i386-linux-gnu/:./miles line followed by
export LD_LIBRARY_PATH tells the client to go look for libraries to the
/usr/lib/i386-linux-gnu/ directory as well as the
miles directory where the NWN client resides (it contains some libraries, too). There's also a
lib directory there, but it contained some outdated libraries which I have replaced by a current version from the repositories.