news forum discuss wiki


You have four choices for help: documentation, You can try asking on the mailing list, the IRC channel, and Bugzilla if you really think you’ve found an issue (this includes valuable enhancements.) There is some great documentation for Linux users at the Linux Gamers’ FAQ, and also at id’s original page (though you should no-longer contact them for support). Windows users and Mac users should just Google their errors to check for preexisting solutions. You can try asking on the mailing list and IRC channel.. To file a bug report with Bugzilla, please read this first, then check out our Bugzilla website (you may get a warning about a security certificate, it should be ok to ignore the warning/trust the site).

Make sure that you check documentation, google, and read the Linux Gamers’ FAQ (if you’re running Linux) before asking for help! Most questions people have are not unique!

What is this?

ioquake3 is a free software first person shooter game engine. The source code was released by id Software on August 20, 2005 under the GPLv2. Since then, we have been cleaning up, fixing bugs, and adding features. Our permanent goal is to create the open source Quake 3 distribution upon which people base their games and projects. We also seek to have the perfect version of the engine for playing Quake 3: Arena, Team Arena, and all popular mods.

This fork of the engine has been ported to many new platforms and has had a slew of new features added, along with massive bug extermination. While we don’t have PunkBuster (and never will), we do have more security for servers and clients from various bugfixes which aren’t in id’s client. Our glorious mentor is, which is also home to a number of fine projects besides ioquake3.

So you say you don’t have PunkBuster, where can I get it?

No really, ioquake3 will not work with PunkBuster. There are no workarounds, play with your friends or well-administered servers. PunkBuster is closed source software and all the hooks for it were removed from Quake 3 before the source was released to the public.

I’m getting some Sys_Error thing about a user interface, wtf?!

Are you running Linux? If so, you probably missed the patch data.

No really, “User Interface is version 3, expected 6″

Yes really, install the patch data!

I’m getting some Sys_Error thing about a pak0.pk3, wtf?!?

You haven’t installed the pak0.pk3 from the Quake 3 cd-rom, of which you still need a legitimate copy.

Where are config, save, and other personal files stored?

  • Mac OS X: /Users/YOURNAME/Library/Application Support/Quake3/
  • Windows XP: C:\documents and settings\YOURUSERNAMEHERE\application data\quake3
  • Windows VIsta: C:\Users\YOURNAME\AppData\Roaming\Quake3
  • Linux: ~/.q3a/

How do I enable VOIP?


  • run a recent build of ioquake3.
  • Make sure your network settings are set to broadband.
  • +set s_useOpenAL 1
  • \bind q “+voiprecord”
  • Hook up a microphone, connect to a VoIP-supporting server. (, for example)
  • hold down ‘q’ key and talk.

If all else fails, read the VOIP README.

How do I set a non-standard resolution? Widescreen?

You’re in luck, not only do we have instructions for setting a non-standard resolution, but in Widescreen modes we’ll display Quake 3 more properly than id’s last version. So for my macbook, I’d set:

  • r_mode -1
  • r_customheight 800
  • r_customwidth 1280

then if I’m in-game I would use vid_restart

Note that the in-game video preferences will not list your new resolution. This is normal.

Why is my audio crackling / distorted under Linux?

This is the result of using the Pulseaudio sound server. This soundserver is enabled by default in Ubuntu Hardy and Fedora Core 9. It may be enabled on other distros. Pulseaudio allows you to control the volume on a per-application basis, but it appears to have some serious bugs and is listed on the official website as under ‘heavy development’.

To see if you have Pulseaudio running, use the following command:

ps -A |grep pulseaudio

If it’s running, I recommend you search for the proper way to disable it for your distro. Some hints: Gnome needs to have it turned off in the System-> Preferences->Sound control panel, and you should remember to clear any references of it from /etc/asound.rc, ~/.asoundrc and ~/.openalrc.

Why can’t I run Team Arena or the Mission Pack?!?!?!

Did you buy Team Arena? It comes with some modern versions of Quake 3, but most people who just have Quake 3, don’t have Team Arena (which is the same as the mission pack).

To install Team Arena, copy the pak0.pk3 from the missionpack directory on your cd-rom to the missionpack directory under your ioquake3 directory.

I can’t bring down the console with the ` or the ~!

This is due to a yet to be resolved issue for which we have a funky solution. Press Shift+Escape at the same time, this will bring down the console on any system.

New Cvars & Commands

ioquake3 has introduced a number of new cvars and commands, mostly because of new features.

Cvar Type Description
cl_autoRecordDemo Boolean Record a new demo on each map change.
cl_aviFrameRate Integer The framerate to use when capturing video.
cl_aviMotionJpeg Boolean Use the mjpeg codec when capturing video.
in_disablemacosxmouseaccel Integer Disable mouse acceleration when running OS X with a mouse, defaults to 1.
s_useOpenAL Boolean Use the OpenAL sound backend if it’s available.
s_alPrecache Boolean Cache OpenAL sounds before use.
s_alGain Float The value of AL_GAIN for each source.
s_alSources Integer The total number of sources (memory) to allocate.
s_alDopplerFactor Float The value passed to alDopplerFactor().
s_alDopplerSpeed Float The value passed to alDopplerVelocity().
s_alMinDistance Float The value of AL_REFERENCE_DISTANCE for each source.
s_alRolloff Float The value of AL_ROLLOFF_FACTOR for each source.
s_alMaxSpeakerDistance Float ET_SPEAKERS beyond this distance are culled.
s_alDriver String Which OpenAL library to use.
s_sdlBits Integer SDL bit resolution.
s_sdlSpeed Integer SDL sample rate.
s_sdlChannels Integer SDL number of channels.
s_sdlDevSamps Integer SDL DMA buffer size override.
s_sdlMixSamps Integer SDL mix buffer size override.
ttycon_ansicolor Boolean Enable the addition of ANSI escape codes for colors in the tty.
r_GLlibCoolDownMsec Integer Wait for a number of milliseconds to close GL library.
com_altivec Boolean Enable the use of Altivec on PowerPC systems.
s_backend RO String Indicates the current sound backend.
cl_platformSensitivity RO Float Indicates the mouse input scaling.
Command Description
video <filename> Start video capture (use with demo command). Outputs to
stopvideo Stop the video capture.

Using shared libraries instead of QVMs

To force Q3 to use shared libraries instead of QVMs run it with the following parameters:

+set sv_pure 0 +set vm_cgame 0 +set vm_game 0 +set vm_ui 0

Using Demo Data Files

Copy demoq3/pak0.pk3 from the demo installer to your baseq3 directory. The QVM files in this
pak0.pk3 will not work, so you have to use the native shared libraries or QVMs from this project. To use the new QVMs, they must be put into a .pk3 file. A pk3 file is just a zip file, so any compression tool that can create such files will work. The shared libraries should already be in the correct place.

Please bear in mind that you will not be able to play online using the demo data, nor is it something that we like to spend much time maintaining or supporting.

64-bit Mods

If you wish to compile external mods as shared libraries on a 64bit platform, and the mod source is derived from the id Q3 SDK, you will need to modify the interface code a little. Open the files ending in _syscalls.c and change every instance of int to intptr_t in the declaration of the syscall
function pointer and the dllEntry function. Also find the vmMain function for each module (usually in cg_main.c, g_main.c, etc.) and similarly replace the return value in the prototype with intptr_t (arg0, arg1, …stay int).

Add the following code snippet to q_shared.h:

#ifdef Q3_VM
typedef int intptr_t;
#include <stdint.h>

Note: if you simply wish to run mods on a 64bit platform, you do not need to recompile anything since by default Q3 uses a virtual machine system.

Creating Mods Compatible With Quake III 1.32b

If you’re using this package to create mods for the last official release of Quake III, it is necessary to pass the command-line option -vq3 to your invocation of q3asm. This is because by default q3asm outputs an updated QVM format that is necessary to fix a bug involving the optimizing pass of the x86 vm JIT compiler.

Pay your dues, contribute!

If you’ve come up with an improvement or fixed something, we’d love to hear about it! Firstly, try to make sure that the patch breaks less than it fixes. We don’t require everyone to be decorated Geniuses, but do attempt to produce a patch that you’ve tested and at least sort-of understand what you’re doing.

The preferred way to get the ball rolling on a patch is to file a Bugzilla bug for your request with the patch attached to it and then send a notice to the mailing list about it. If you’re really so lazy that you can’t do this, we would prefer you at least mail it to rather than not do anything at all.

Please make it clear if the patch you’re submitting for inclusion isn’t yours. Point out where you found it and who authored it. This is so we know who to attribute blame credit to.

Generating Patches

If you know how to code, but never made a patch before, that’s okay. Here’s the 10¢ survival guide to generating patches.

From git

If you checked the source code out with git, the client makes it rather easy to generate patches. In fact it’s a function of the client itself. Once you’ve made a change in your checkout that is not upstream, here is how you use it:

  • Create a patch named amazing_new_feature.patch:
    git diff > amazing_new_feature.patch
  • Apply a patch amazing_new_feature.patch:
    patch -p0 -i amazing_new_feature.patch

From a tarball or other release

If you didn’t get the source code via git, or for some reason that doesn’t work for your situations, here’s how to generate them using the tried-and-trusted diff tool between two files:

  • Create a patch named amazing_new_feature.patch between oldfile and newfile: diff -u oldfile newfile > amazing_new_feature.patch
  • Create a patch named amazing_new_features.patch between directory olddir and newdir: diff -Naur olddir newdir > amazing_new_features.patch
  • Applying a patch is the same as with git, see above.

For more information on diff, patch, and git, read their respective man and info pages. For a more in-depth guide on git take a look at the git documentation.

Will you guys remove the CD-key check?

This is literally the only frequenty asked question we get, and it’s starting to wear on us. No, we will not be removing the CD-key check. The Quake III: Arena data is not free, and you must purchase a CD to play it! Don’t let this confuse you, the engine is open source, and is absolutely 100% free. If someone makes a new game based on the source code that does not use the pay-for game data, they of course don’t need to and should not require a CD key in their game.

Hey I’m running Ubuntu or some other distribution with compiz and ioquake3 is all screwed up?

Disable Compiz.

Known Issues: