ioQuake3 is based upon the Quake III source code, which was made available for free on August 20, 2005, as open-source and licensed under the GPLv2. Ever since the ioQuake3 project took over the code and started improving it and fixing bugs. At the present day there aren't many users playing the original ioQuake3 game, however there are plenty of games based upon this engine, like OpenArena, UrbanTerror or World of Padman. Here is a list of games based upon the ioQuake3 engine.
Note: Even though ioQuake3 is not widely played anymore, this guide applies to mostly all the games which are based on this engine, like OpenArena or UrbanTerror 4.x (UrbanTerror HD will use a different engine).

Note: You can also play Quake Live, which is pretty much identical to the original Quake III, and runs in a web browser using Flash.
Installing ioQuake3
First, download the engine installer and the data installer from the official ioQuake3 homepage. Make these executable and run them to install the game. By default, the game installs as /usr/local/games/. You can also install it as normal user, in a location such as $HOME/apps/ioquake3, where $HOME is your home directory (e.g. /home/your_username).

You will also need the pak0.pk3 data file from the original Quake 3 CD. After the installation of the engine, copy this file inside the $HOME/.q3a/baseq directory. If you don't own Quake 3, you can always install OpenArena, or just get the free pak0.pk3 file that comes with OpenArena and copy that instead.

Once the game is installed and set up, you can run it by typing ioquake3 in a terminal. Here is another way of running it:
ioquake3 +set fs_game "baseq3"
This will start ioQuake3 loading the default baseq3 mod, however if you have mods like Excessive or OSP installed you could load them using ioquake3 +set fs_game "osp" or ioquake3 +set fs_game "excessive".
Configuring ioQuake3
I will only explain how to configure ioQuake3 using config files. As with any ioQuake3-based games, configuration can be done via text config files, and in this case the config files will be located inside the $HOME/.q3a/baseq3 directory. You can create a text file in this directory called autoexec.cfg, and add commands or settings in it. All the commands inside this file will be executed automatically when the game starts. You can also create additional .cfg files in this directory and manually run them in the game console using /exec file.cfg for example. Or you can create additional .cfg files and then put commands inside the autoexec.cfg to run them. Below is an example:

Example of autoexec.cfg file:
name "MyNickname"
exec "settings.cfg"
Example of settings.cfg file:
seta sensitivity "9"
seta r_gamma "4"
When ioQuake3 starts, it will automatically execute all the commands inside autoexec.cfg, and thus will execute the commands in settings.cfg too.

To add custom options, you will add them in the form of seta variable "value". For example, to show the current FPS, you would add the following line inside your autoexec.cfg file:
seta cg_drawFPS "1"
The Difference Between set and seta
While set will only save the variable for the current session only (that is, it will apply it and use it only for this running instance of the game, seta will apply this variable and also save it inside the persistent file config.cfg, making it a default value for all future running instances of the game.
Basic CVAR Configuration
This section includes some useful CVARs that you can tweak inside the autoexec.cfg file.

seta name "MyNickname"
Default: "UnnamedPlayer"
This is used to set your nickname.

seta sensitivity "8"
Default: ""
This changes the mouse sensitivity. The bigger, the faster your aim cursor will move on the screen.

seta com_maxfps "60"
Default: ""
This caps the maximum framerate allowed. If you are using vertical sync, this will be capped to the maximum frequency your monitor allows.

Cycling Through Different Variable Values by Pressing a Single Key
Take a look at the code below (you can copy/paste this inside the autoexec.cfg file):
seta sens0 "seta sensitivity 5; bind p vstr sens1; echo sensitivity 5"
seta sens1 "seta sensitivity 7; bind p vstr sens2; echo sensitivity 7"
seta sens2 "seta sensitivity 9; bind p vstr sens0; echo sensitivity 9"
bind p "vstr sens0"
This small script will bind P to change the mouse sensitivity. When you press P the first time, the sensitivity will be changed to 5, the second time it will change the sensitivity to 7, the third time it will change the sensitivity to 9, and if you press P again, the sensitivity will be switched back to 5. The commands are separated by the semi-colon.
Some Useful Scripts
Colored Nickname
Quake III supports colored nicknames, and you can set a color by preceding your nickname with a color code. For example, seta name "^5MyNickname" will use light blue, while seta name "^3MyNickname" will be red. Here is a list of colors:
  • ^0 - black
Example of autoexec.cfg Config File
This example config file uses ESDF keys for movement and has some bindings for cycling through sensitivity, maximum FPS and gamma settings.
seta name "^5MyNickname"

bind e "+forward"
bind s "+moveleft"
bind d "+back"
bind f "+moveright"
bind SHIFT "+movedown"
bind SPACE "+moveup"
bind MOUSE1 "+attack"
bind MOUSE2 "+zoom"
bind TAB "+scores"

bind y "messagemode"
bind u "messagemode2"
bind i "messagemode3"

bind v "weapon 1" // gauntlet
bind t "weapon 5" // rocket launcher
bind w "weapon 7" // railgun
bind g "weapon 8" // plasma gun

bind F9 "exec autoexec.cfg"

bind F7 "r_fullscreen 0"
bind F8 "r_fullscreen 1"

seta sensitivity "8"

seta com_maxfps "60"
seta com_blood "1"

// default: "0.25"
seta s_musicvolume "0"
// default: "0.8"
seta s_volume "0.1"

seta cg_drawfps "1"
seta cg_fov "100"
seta cg_autoswitch "0"
seta cg_draw3dicons "1"

seta cl_allowdownload "1"

seta bot_nochat "0"

seta r_mode "-1"
seta r_customwidth "1366"
seta r_customheight "768"
seta r_finish "1"
seta r_picmip "0"
seta r_gamma "1.2"
seta r_stencilbits "8"
seta r_drawsun "1"
seta r_detailtextures "1"
seta r_colorbits "32"
seta r_texturebits "32"
seta r_dynamiclight "1"
seta r_lodbias "0"
seta r_subdivisions "4"
seta r_mapoverbrightbits "2"
seta r_fastsky "0"
seta r_texturemode "GL_LINEAR_MIPMAP_LINEAR"

seta sens0 "seta sensitivity 5; bind p vstr sens1; echo sensitivity 5"
seta sens1 "seta sensitivity 7; bind p vstr sens2; echo sensitivity 7"
seta sens2 "seta sensitivity 9; bind p vstr sens0; echo sensitivity 9"
bind p "vstr sens0"

seta fps43 "seta com_maxfps 43; bind o vstr fps60; echo com_maxfps 43"
seta fps60 "seta com_maxfps 60; bind o vstr fps43; echo com_maxfps 60"
bind o "vstr fps43"

seta gamma0 "seta r_gamma 1.0; bind j vstr gamma1; echo *** r_gamma 1.0"
seta gamma1 "seta r_gamma 1.2; bind j vstr gamma2; echo *** r_gamma 1.2"
seta gamma2 "seta r_gamma 1.3; bind j vstr gamma3; echo *** r_gamma 1.3"
seta gamma3 "seta r_gamma 1.4; bind j vstr gamma0; echo *** r_gamma 1.4"
bind j "vstr gamma0"

echo "Loaded config file autoexec.cfg"
Starting a Dedicated ioQuake3 Server
Here is an example on how to run a dedicated ioQuake3 server:
ioq3ded.i386 +set dedicated "2" +set net_port "27960" +set fs_game "baseq3"
About Quake III
Quake III was released on December 2, 1999 and it quickly became on of the most popular shooter games ever created. Contrary to its predecessor, Quake II, Quake III Arena focused more on the multi-player side. It has 10 weapons, four game modes (FFA, TDM, CTF and Tournament), single-player skirmish and online multi-player mode.
By Craciun Dan on October 06, 2013 | Updated: October 06, 2013 | v0.1.0
TuxArena Projects
Online Readers