Return to Castle Wolfenstein on GNU/Linux

Homer's picture

Like most iD titles, RTCW was ultimately released under the GPL, and is thus available as a GNU/Linux native game. Installing it under Gentoo is as simple as "emerge games-fps/rtcw", but unfortunately the game itself no longer works in modern GNU/Linux systems. This is only to be expected with proprietary software that becomes abandoned, and would affect the operation of that software on any OS, but naturally it doesn't have to be that way with Free Software, which can be revived at any time, even years later.

Currently there are several issues with iD Software's (now old) binary release, including a "ui/menddef.h not found" error, an inability to launch without a pre-existing "default.cfg" (and an inability to create an initial copy), a problem setting the correct video mode, an inability to accept keyboard input, broken support for SDL audio (which falls back to the now typically non-existant /dev/dsp device), a stack overflow condition triggered by large OpenGL extension strings (fixed by setting the variable "__GL_ExtensionStringVersion" to a lower number, typically 17700), and finally the source is not yet 64-bit ready.

The latest development of RTCW is bzzwolfsp [ed: the project is now called rtcwcoop], a "modification of the RTCW single player source code that brings you Cooperative gameplay", however I've had no luck getting it to work (the same "ui/menddef.h not found" error, and a "black screen of death" on the menu). It also seems to be only a coop game that offers no single player mode [ed: confirmed], and simply ignores the original pak3 files. Needless to say it's still a WIP.

Edit: 18th May 2013. You can safely ignore everything below (except the config information), and just fetch the fully patched and 64-bit-ready sources from here instead. This also fixes the cinematic cut-scene problem.

But then I discovered this thread on the Arch Linux forum.

Following the simple instructions on that forum, I was able to build a fully-functional version of RTCW, and play the original single-player mode.

Get the sources here (see post #7 in the above thread for a list of build dependencies):

hg clone http://hg.ioquake.org/rtcw-sp # hg = Mercurial
cd rtcw-sp
wget http://slated.org/files/rtcw-1.41.patch
cd src
mkdir sdl && cd sdl
wget https://raw.github.com/cbxbiker61/wolfsp/master/src/sdl/sdl_snd.c
wget http://slated.org/files/sdl_snd.c.patch
patch -p0 <sdl_snd.c.patch
cd ../..
patch -p1 <rtcw-1.41.patch
cd src/unix
CFLAGS="-march=i686 -O2 -pipe -fomit-frame-pointer" # edit to taste, but must be x86_32
sed -i "s/\$BASE_CFLAGS = \$COMMON_CFLAGS . '-D.*$/\$BASE_CFLAGS = \$COMMON_CFLAGS . '-DNDEBUG $CFLAGS ';/" Construct
./cons -- release
mv release-x86-Linux-2.1/out ~/RTCW
cd ~/RTCW

You'll need to copy all your *.pak3 files over to the ./main directory (e.g. from the demo files or Wine install from CD) then run:

./wolfsp.x86

This will create and populate the ~/.wolf directory with configuration files, then start the game in the default (low, 4:3) resolution. For those with an HD display, you'll need to exit the game then do the following:

echo "seta r_mode \"-1\"" >>~/.wolf/main/wolfconfig.cfg
sed -i 's/seta r_customwidth.*$/seta r_customwidth "1920"/' ~/.wolf/main/wolfconfig.cfg
sed -i 's/seta r_customheight.*$/seta r_customheight "1080"/' ~/.wolf/main/wolfconfig.cfg

Getting cheats to work is a bit convoluted, but it works if you do the following:

echo "set sv_cheats 1" >> ~/.wolf/main/user.cfg
./wolfsp.x86 +set sv_cheats 1

Start a new game, open the in-game console with the "`" (backtick) key, and type:

/sv_cheats 1

You'll get an error about sv_cheat being read-only. Ignore that, save the game, then quit. Launch RTCW again using the same flags as before, load the saved game, open the in-game console then type:

/god
/give all

Enjoy.

Comments

Anony Mouse's picture

Awesome.

Thank you for this -- I was ready to resort to WINE.

Worked perfectly on Fedora 18 (x86_64). Needed to install several libraries during the "./cons -- release" step, but elsewise went without a hitch -- and with the side effect (thanks to the SDL patch) of SOUND working (which is awesome).

Good article.