TheBlackzone Logo

Howto install Quake 3 Arena on Xubuntu 14.04

Posted on Friday, May 29 2015

Quake 3 Arena logo Quake 3 Arena (Q3A for short) has been one of my favorite computer games and I guess I played it just as much as the original Quake game. Recently I fell into the mood to play it again and decided to install it on my Linux Desktop PC. The general process of the installation is quite straightforward, but there are some pitfalls...

The Linux version of Q3A has been around since the game came out in December 1999 and the game binaries as well as the game files of the demo version can be freely downloaded. In order to play the full game, however, you need the original retail CD of the game.

The installation of the game is pretty straightforward, except for a pesky sound issue and the fact that you need some additional libraries because you want the game to run in a 64-bit environment.

This short howto is mainly intended for my own reference in case I need to install the game again. I hope it is helpful to others, but don't blame me if it doesn't work whith your setup or things go wrong. As always, everything you do is at your own risk.

That said, let's go...

Oh, and just in case you are interested in the hardware I installed to game on: I'm using a standard PC with Intel i7 processor, a GeForce GTX 660 graphics card, Intel on-board audio and 8 GB RAM. As the title suggests the system is running Xubuntu Linux 14.04, 64-bit (x86_64).

Installation

01 - Get the Point-Release package

This package includes the game binaries as well as the demo game files. Download it from the id Software FTP server with

EDIT 2018-10-04: id Software's FTP server seems to be down so you need to search for a mirror using your favorite search engine. For your convinience, here's one.

wget ftp://ftp.idsoftware.com/idstuff/quake3/linux/linuxq3apoint-1.32b-3.x86.run
chmod +x linuxq3apoint-1.32b-3.x86.run

02 - Prepare for installation

Since we are on 64-bit Linux and the package is made for an 32-bit environment, we cannot install the package directly. If you try you'll see an error like

This installation doesn't support unknown on Linux / x86_64

So, to fix this let's unpack the Point-Release with

./linuxq3apoint-1.32b-3.x86.run --target ./q3install

The above error message will occur anyway, but the installation files remain unpacked in the q3install folder.

Now we need to edit the setup file:

cd q3install
vim setup.sh

Use your favorite editor instead of vim if you like.

Within the function DetectARCH line 33 needs to be changed from

i?86 | i86*)

to

i?86 | i86* | x86*)

03 - Install

Before we proceed we need some additional libraries, since Q3A is an 32-bit application and we are in an 64-bit environment

sudo apt-get install gcc-multilib
sudo apt-get install libx11-6:i386
sudo apt-get install libxext6:i386
sudo apt-get install freeglut3:i386

Now execute

sudo ./setup.sh

and answer the questions:

Do you agree with the license? [Y/n] => Y
Please enter the installation path [/usr/local/games/quake3] => ENTER
Please enter the path in which to create the symbolic links [/usr/local/bin] => ENTER
Option: 'Quake III: Team Arena' ? [Y/n/?] => N
Option: 'Dedicated server' ? [Y/n/?] => N
Option: 'PunkBuster client/server files' ? [Y/n] => Y
Do you agree with the license? [Y/n] => Y
Do you want to install startup menu entries? [Y/n] => Y
Continue install? [Y/n] => Y
Installation complete. Would you like to start now? [Y/n] => N

The game is now installed to the folder /usr/local/games/quake3/

04 - Copy game data from the original CD

Now let's get the game data for the full game. Insert and mount your Quake 3 Arena retail CD and copy the following files (my CD is mounted at /media/tbz/QUAKE3):

Copy the file pak0.pk3 to your baseq3 folder

sudo cp /media/tbz/QUAKE3/Quake3/baseq3/pak0.pk3 /usr/local/games/quake3/baseq3/
sudo chmod 644 /usr/local/games/quake3/baseq3/pak0.pk3

Copy the default configuration to your user settings:

mkdir ~/.q3a
mkdir ~/.q3a/baseq3
cp /media/tbz/QUAKE3/Quake3/baseq3/q3config.cfg ~/.q3a/baseq3
chmod 644 ~/.q3a/baseq3/q3config.cfg

05 - Start the game and enter your CD key

Notice: There will be no sound - see next step. But first, let's complete the installation. Run the game with

/usr/local/games/quake3/quake3

and enter your CD key when prompted. Then exit the game.

06 - The pesky "no sound" issue

A little background about the sound issue

Undoubtedly you will notice that the game lacks any sound output and maybe you have even noticed the following message when the game starts:

------- sound initialization -------
/dev/dsp: No such file or directory
Could not open /dev/dsp
------------------------------------

or, if you run some kind of sound proxy, this

------- sound initialization -------
Sorry but your soundcard can't do this
------------------------------------

The problem is, that Q3A, as well as a whole lot of other "old" software, has been built atop the "Open Sound System (OSS)" which has become obsolete in Linux since kernel version 2.6. OSS is still around and used in other Unix-like operating systems, but Linux has switched to ALSA, the "Advanced Linux Sound Architecture" which is incompatible.

If you search the web for a solution, you will find a lot of tips that suggest doing things like

echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
echo "quake3.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss

Unfortunately those tips don't work anymore since Canonical decided to remove the OSS compatibility layer from the Ubuntu kernel. Unfortunately, this also renders packages like oss-compat and osspd useless, which are intended to provide OSS compatibility.

The Solution.

I spent a whole day on trying out various compatibility layers, sound proxies, etc. with the frustrating result that none of them worked. I was even thinking of compiling a new kernel in order to get the OSS compatibility layer back again.

But fortunately, while researching the problem, I stumbled upon the "et-sdl-sound" hack by Pyry Haulos et al.

In short, this hack squeezes its own "compatibility library" between the game and the ALSA sound system and replaces the OSS sound function calls at runtime.

To use it, we need the following libraries

sudo apt-get install libsdl-sound1.2:i386
sudo apt-get install libasound2-plugins:i386

Then we need to get and install the quake3-sdl-sound hack with

EDIT 2018-10-04: The download URL for quake3-sdl-sound.gz doesn't work anymore. The sources however are available at github.com

wget http://nullkey.kapsi.fi/et-sdl-sound/quake3-sdl-sound.gz
gunzip quake3-sdl-sound.gz
chmod +x quake3-sdl-sound 

Now we Edit ./quake3-sdl-sound

vim quake3-sdl-sound

and uncomment and change the Variable LIBSDL to

LIBSDL="/usr/lib/i386-linux-gnu/libSDL-1.2.so.0"

At this point we can finally run

./quake3-sdl-sound

and enjoy Quake 3 Arena to the max :-)

Sources

Here are some related resources to the installation procedure

Tags: quake howto