Something isn't working right. Heeeeeeeelp!

You have four choices for help: documentation, You can try asking on th the mailing list, the IRC channel, and Bugzilla. 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, check out our Bugzilla website. Make sure that you check documentation, and read the Linux Gamers' FAQ before asking for help! Most questions people have are not unique!

New Cvars & Commands

Icculus.org/quake3 has introduced a number of new cvars and commands, mostly because of new features.

Cvar Additions
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.
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_consoleHistory RO String Stores the console history.
cl_platformSensitivity RO Float Indicates the mouse input scaling.
New Commands
Command Description
video <filename> Start video capture (use with demo command). Outputs to filename.
stopvidep 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;
#else
#include <stdint.h>
#endif
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. Read the web-forum post about this issue for more details.

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 list 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 zakk@icculus.org 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.

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

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.