dcsimg

Getting Quake III: Arena to Run on Linux

Quake III: Arena is one of the most highly anticipated games of the year on any personal-computing platform, not just Linux. But getting Quake III running on your Linux box may be as fierce a challenge as any battle you'll fight in the game. This isn't just popping a CD into your drive and clicking on the "Install" button like it is in the world of Windows. No, instead of fighting warriors hell-bent on blasting you to smithereens, your nemesis here is Linux itself.








Desktop Screenshot 1
Figure One: The Quake setup program.

Quake III: Arena is one of the most highly anticipated games of the year on any personal-computing platform, not just Linux. But getting Quake III running on your Linux box may be as fierce a challenge as any battle you’ll fight in the game. This isn’t just popping a CD into your drive and clicking on the “Install” button like it is in the world of Windows. No, instead of fighting warriors hell-bent on blasting you to smithereens, your nemesis here is Linux itself.

Quake III uses Linux technology that is on the proverbial bleeding edge: 3D OpenGL video acceleration. Unfortunately, depending on the distribution that you have and the 3D card that is in your computer, getting the right pieces together to get 3D support running can be a real pain in the butt, as not every distribution has the right components installed, and every distribution deals with package files in a completely different fashion. That being said, you’re going to find a lot of the video companies supporting the RPM packaging standard because it’s common to several of the major distributions. If you are running Slackware or Debian, you’ll want to make sure RPM (or in Debian’s case, alien for handling foreign packages) is installed on your system.

For the purpose of simplifying things, I will go with a typical Quake III configuration, that being Red Hat Linux 6.1 with a Voodoo3 card, since Red Hat is the most popular Linux distribution and the Voodoo graphics series of accelerators is by far the best-supported currently in Linux. That being said, it took me two days to figure out how to get Quake III to run with this specific setup. Bernd Kreimeier of Loki Software has written a nice FAQ/ Installation guide for Matrox G400 cards and dealing with the nuances of other distributions like Debian and SuSE. You can read it at http://www.lokigames.com/support/gldrivers/.

Let’s Get Busy!

For starters, let’s prepare our laundry list. In addition to your Quake III CD, you’ll want to go to the linux.3dfx.com Web site and download a whole bunch of RPM files to a temporary directory. I created an empty directory called /jason underneath the /usr/local tree by opening up a terminal window and typing the following (you’ll want to make sure you are logged in as root or have root privileges for this and all commands referred to in the rest of this article):


cd /usr/local
mkdir Jason

Then, I visited the linux.3dfx.com Web site and downloaded all of these files to /usr/local/jason:

* Device3Dfx-2.3-4.src.rpm (The 3dfx device driver source code)

* Glide_V3-2.60-10.i386.rpm (The Glide 2.6 3D library files. You do not want Glide 3, as it isn’t supported by Quake III yet.)

* XFree86-SVGA-3.3.5-0.6.1.i386.rpm (the 3dfx Voodoo3 SVGA X server)

* XFree86_3DFX-rushlib-3.3.3-5.i386. rpm (The 3dfx Voodoo Rush/ Voodoo3 library)

* Glide2x_SDK-2.1-10.i386.rpm (The 3dfx Glide 2.x Software Development Kit. You do not want the DRI version, which isn’t supported yet.)

You’ll also need to download this file, which is required to build the OpenGL subsystem from CVS source, from the Loki Software Web site: Libtool-1.3.3-1.noarch.rpm.

And finally, you’ll need to download the source code to the Mesa OpenGL subsystem, but we’ll get to that later. Now is a good time to take a break and make yourself a nice big mug of coffee, because you’re going to need to pay attention very carefully to the next section.

RPMs Can Be Fun!

Okay. So you’ve downloaded all these files, but now what do you do with them? First you’ll want to install the 3dfx X server. I know, you’ve already got a perfectly good SVGA 2D X server — but, unfortunately, the Voodoo3 Glide and accelerated Mesa driver works only with 3dfx’s.

Open up a terminal window and cd to the directory you’ve downloaded all of your files to, and type the following:


rpm -Uvh -force XFree86 -SVGA-3.3.5-0.6.1.i386.rpm

The reason that we’re using the -force parameter is that Red Hat uses a different versioning scheme for its SVGA X server from the one 3dfx uses, and if you attempted to install it by -Uvh alone (which is the preferred method of installing .rpm files), you’d get a message that what you were trying to install was older than the SVGA server that that was already on your system. I originally heeded this advice from RPM and couldn’t figure out for two days why Quake III wouldn’t run. Ouch! Now I know.

Next, install the Glide 2.6x libraries by typing the following command:


rpm -Uvh Glide_V3-2.60 -10.i386.rpm

Next, recompile the 3dfx device driver for your system:


rpm -rebuild Device3Dfx-2.3-4.src.rpm

Now, install the device driver you just recompiled:


rpm -Uvh /usr/src/redhat/RPMS/i386/Device3Dfx-2.3-4.i386.rpm

Next, install the Voodoo3/Voodoo Rush XFree86 libraries:


rpm -Uvh XFree86_3DFX-rushlib-3.3.3-5.i386.rpm

Are we having fun yet? Great. Pat yourself on the back and take a deep breath.

Next, install the Glide Software Development Kit:


rpm -Uvh Glide2x_SDK-2.1-10.i386.rpm

Whew, that was a lot of files, right? Next, you’ll need to run Red Hat’s Xconfigurator program, follow the prompts for “probe card,” and make sure you select all of the 16-bit graphics modes in addition to any 32-bit or 8-bit modes, since Quake III supports only 16-bit color palettes on the Voodoo 3 card.

Once you’re finished with Xconfigurator, you’ll want to shut down your X server by keying in the following combination in sequence:


<Ctrl>-<Alt>-<Backspace>

If you’ve got the graphical login enabled, the X server should restart automatically. If not, just type startx to restart X windows. After the X server restarts, you’ll find yourself running in a 640×480 low-resolution video mode — simply type <ctrl>-<alt>-<+> to increase the display to the desired resolution.

Testing Your 3dfx Setup

Providing you’ve followed our instructions to the letter, your 3dfx card should be properly configured to work with the Glide rasterization library. To test it, run the following program from a terminal window:


/usr/local/glide/bin/test3Dfx

If you see the 3dfx logo followed by a blue screen, congratulations, you’re about halfway toward getting Quake III to run on your system.

Installing Quake III

We’re making real progress now! Insert the Quake III: Arena CD in your CD-ROM drive and pull up a terminal window.

Change directories by typing cd /mnt/cdrom.

Run the installation script by issuing the following command:


./setup.sh

You should now be presented with the License Agreement screen. Agree to the license agreement by clicking on the “Agree” button. You should then be presented with the Quake III: Arena setup program, as depicted in Figure One.

You should accept all of the default choices for install paths and make sure that “Base Install,” “Voodoo Mesa GL Library,” and “Data Files” are checked as install options. Once you’re ready, click on “Begin Install” to start copying files to your PC.

Downloading Mesa

Here’s where the real fun starts. Because Red Hat 6.1 doesn’t have a default OpenGL system installed, you’re going to want to install it by recompiling the latest Mesa 3.2 OpenGL source code and running it on your system. Yes, we know this sounds awfully intimidating, but it’s really no big deal.

Make sure you are connected to the Internet, and, from a terminal window, issue the following commands from your temporary directory:


cvs -d :pserver:   anonymous@cvs.mesa3d.org:/cvs/mesa3d login

at the password prompt, just hit the <Enter> key.

Next, type in the following command in your terminal window:


cvs -d :pserver:anonymous@cvs.mesa3d.org:/cvs/mesa3d co -r mesa_3_2_dev Mesa

The CVS program will download the entire beta source tree for Mesa, including all of the files not related directly to Linux — Mesa is designed to run on many platforms, including Windows, Mac, and OS/2. Depending on the speed of your connection, this could take a while, so now would be a good time to break for lunch or dinner. Don’t worry about Mesa being in beta — everything 3D for Linux is considered to be beta!

However, one thing to consider here is that the source tree you are downloading from the Net may not be stable at the point in time at which you are downloading it, since changes and new functionality are added to it every day — so if you get bad results, you might want to try downloading the Mesa 3.2 source tarball (which is basically just a zipped-up copy of an older “snapshot” of the Mesa CVS directory) from Loki’s Quake III support Web page, which has been tested internally by their support engineers.

Compiling Mesa

You’ll notice that there is now a /Mesa directory in your temp directory. Don’t go there until you install libtool:


rpm -Uvh Libtool-1.3.3-1.noarch.rpm

Okay — change to the /Mesa directory by typing cd Mesa, and issue the next command:


./bootstrap

Your hard drive should whir for a bit while the script copies files, after which you should return to a prompt again. Next, issue the following command at the prompt:


./configure -with-glide

This creates a configuration script for the compiler to create 3dfx-optimized versions of Mesa.

Next, type make. This will begin the compilation process, and depending on how fast your CPU is, this could take several minutes. Need to take a bathroom break? Now would be a good time.

Providing that the make process completes with no errors, type the following command:


make check

Again, you’ll see a lot of compiler stuff fly past, and when it’s done, you’ll be given a command prompt. Next, type make install.

If the process completes without any errors, the 3dfx-optimized Mesa libraries should be installed in the /usr/ local/lib directory.

If you think you’ve done any of this stuff out of order, you can clear out the configuration scripts and start from the beginning by issuing make cleandist from the prompt.

Configuring Your Sound Card

Fortunately, sound-card configuration in Red Hat Linux is fairly straightforward, since Red Hat 6.1 is preinstalled with a modular kernel with precompiled sound drivers. Unfortunately, Quake III supports only 16-bit SoundBlaster cards and cards that have prebuilt OSS-compatible sound boards, so if you want sound support, you should stick with a Creative Labs Soundblaster 16, SB 32, AWE32, or AWE64 sound card, or a card that is 100 percent Soundblaster-compatible.

Provided you have one of the cards on the list, all you need to do is run sndconfig from a terminal window, which will launch Red Hat’s special sound-configuration program, which will auto-detect your sound card and load the appropriate sound module. If your sound card is attached to speakers or headphones, you should be able to hear sndconfig play music as well as digitized sound.

Copying the Voodoo GL Library
to the Quake III Directory

Don’t worry, we’re almost done. Pull up a terminal window and issue the following command:


cd /usr/local/lib

Next, do an ls -l. Your directory should look something like Listing One.




Listing One: Checking for the Voodoo3 Library


-rwxr-xr-x 1 root  root   701 Jan 5 17:22 libGL.la
lrwxrwxrwx 1 root root 14 Jan 5 17:22 libGL.so ->
libGL.so.1.2.0
lrwxrwxrwx 1 root root 14 Jan 5 17:22 libGL.so.1 ->
libGL.so.1.2.0
-rwxr-xr-x 1 root root 4809526 Jan 5 17:22 libGL.so.1.2.0
-rwxr-xr-x 1 root root 628 Jan 5 17:22 libGLU.la
lrwxrwxrwx 1 root root 15 Jan 5 17:22 libGLU.so ->
libGLU.so.1.2.0
lrwxrwxrwx 1 root root 15 Jan 5 17:22 libGLU.so.1 ->
libGLU.so.1.2.0
-rwxr-xr-x 1 root root 327449 Jan 5 17:22 libGLU.so.1.2.0
-rwxr-xr-x 1 root root 686 Jan 5 17:22 libglut.la
lrwxrwxrwx 1 root root 16 Jan 5 17:22 libglut.so ->
libglut.so.3.7.0
lrwxrwxrwx 1 root root 16 Jan 5 17:22 libglut.so.3 ->
libglut.so.3.7.0
-rwxr-xr-x 1 root root 674172 Jan 5 17:22 libglut.so.3.7.0

Do you see the file named libGL.so. 1.2.0? That’s the Voodoo3 library that you just compiled. You can be sure that it’s the right file, because the main Mesa library, libGL.so, is also symbolically linked to it.

Issue the following command:


cp libGL.so.1.2.0 /usr/local/games/quake3/LibMesaVoodooGL.so.3.2

This will overwrite the Mesa library that Loki preinstalls by default in the Quake III directory. Don’t worry, the Mesa CVS source you’ve just compiled will give you even better results and performance.

Lets Quake!

Are you ready? If so, then issue the following command from a terminal window:


/usr/local/games/quake3

If you’ve followed all the steps in this article, you should now be watching the introductory movie with the Major Slaughter character fighting the baddies. Hit <Esc> to proceed to the main menu.

From the main menu, you can go into the “setup” submenu and choose “system.” This is where you can fiddle with the GL driver settings to your heart’s content and switch to the desired video mode. I found that 800x 600 mode gives me the best level of performance on my dual Celeron 466 machine equipped with a Voodoo3 3000 AGP, but your results may vary.

Pat yourself on the back; you’ve done a hell of a job. But does it really have to be this tough? Clearly, the installation process that I’ve guided you through can be a bit intimidating for the average user, and that’s because Linux 3D support is in its infancy. Coupled with the fact that even the most popular Linux distributions are lagging behind on support for video drivers and things like Mesa, getting 3D games to run in Linux can be a real battle.

Hopefully, with the introduction of XFree86 4.0 with DRI (Direct Rendering Infrastructure Subsystem) support in the beginning of this year, this situation will improve with the advent of prepackaged 3D drivers for all of the distributions.

But until then soldier, Quake on!





Jason Perlow is a freelance writer, systems integrator, and Linux enthusiast from the NY metropolitan area. He can be reached at perlow@hotmail.com.

Fatal error: Call to undefined function aa_author_bios() in /opt/apache/dms/b2b/linux-mag.com/site/www/htdocs/wp-content/themes/linuxmag/single.php on line 62