So, You’ve Decided to Start a Dedicated Quake 3: Arena Server.
This PC setup will deliver 60 Frames Per Second on High graphics settings on 1080p monitor resolution. The RAM requirements are at least a 64 MB memory. Finally, Quake III Arena will need hardware.
This guide will help you get started.
- This guide is intended for new people in Quake 3 Arena (and Team Arena) community who wish to set the game up properly for a functional and smooth gameplay. It is a summary of a few guides and threads you can find either on steam or on the internet.
- Quake III Arena characters Category page. Edit Edit source History Talk (1) Characters found in Quake III Arena. Bitterman; Crash; Xaero; Doom (Q3.
If there isn’t a solution for the problem you ran into on this page, please try asking on our forums or in our live chat channel.
You will need a legitimate copy of Quake 3: Arena. It is currently available through Steam on Windows, or gog, or if you’d like it on-disc second-hand markets like Ebay may have copies.
Once you have the game downloaded, copy pak0.pk3
to your server’s baseq3
directory.
Quake 3 Arena Steam Charts
Most of the information on this page also applies to any Quake 3 mods or new games that work with ioquake3.
Network Ports
Forward and open UDP port 27960
on your firewall or router to the machine that will act as the dedicated ioquake3 server.
Linux Server Setup
- Create a new user for your ioquake3 server to run as. You can use the command
sudo adduser ioq3srv
for example to add a new user namedioq3srv
- Switch to the new user
su - ioq3srv
- Download
server_compile.sh
wget https://raw.githubusercontent.com/ioquake/ioq3/master/misc/linux/server_compile.sh
- Install any pre-requisites (
make
,git
,gcc
, etc) according to your distribution documentation. If you run into trouble here, please ask for help on our forums after attempting the next command and saving the output to pastebin sh server_compile.sh
- Copy
pak0.pk3
from your purchased copy of Quake 3: Arena to thebaseq3
sub-directory ofioquake3
- Download the patch zip file from this page and unzip the contents into your
baseq3
andmissionpack
sub-directories ofioquake3
. - Download
start_server.sh
wget https://raw.githubusercontent.com/ioquake/ioq3/master/misc/linux/start_server.sh
- Type
screen
and thensh start_server.sh
. You can leave the screen at any time by pressingCtrl+a
thend
, and then get access to your running server again by typingscreen -drU
- You’re ready to go, just type
map q3dm17
in your new server’s console. - Want to check on your server remotely without launching a full ioquake3 client or shelling in? Use qstat.
macOS Server Setup
- Install ioquake3 via the traditional dmg file.
- Immediately upgrade to a test build by downloading the zip file, extract the ioquake3.app from the zip file and place it inside your
/Applications/ioquake3
folder. - Copy
pak0.pk3
from yourbaseq3
folder on your Quake III: Arena CD-ROM or Steam installation to your/Applications/ioquake3/baseq3
folder. - Download the patch zip file from this page and unzip the contents into your
baseq3
andmissionpack
sub-folders of yourioquake3
folder. - Open
Terminal.app
- Type this and press enter, do the same for the next few lines:
cd /Applications/ioquake3/
curl -O https://raw.githubusercontent.com/ioquake/ioq3/main/misc/osx/start_server.sh
- Type
screen
(this may need to be installed through your package manager) and thensh start_server.sh
. You can leave the screen at any time by pressingCtrl+a
thend
, and then get access to your running server again by typingscreen -drU
- You’re ready to go, just type
map q3dm17
in your new server’s console.
Windows Server Setup
- Install ioquake3 via the old installers.
- Immediately upgrade to a test build by downloading the zip file, extract the ioquake3 files from the zip and overwrite the ones with the same names in your
ioquake3
directory where you chose to install it in step 1. - Copy
pak0.pk3
from yourbaseq3
folder on your Quake III: Arena CD-ROM or Steam installation to yourioquake3baseq3
directory. - Open a Command Prompt (
cmd.exe
). - Change to your ioquake3 directory by typing
cd C:Programs (x86)ioquake3
then press enter. - Type
ioq3ded.x86_64.exe +set dedicated 2 +set sv_allowDownload 1 +set sv_dlURL ' +set com_hunkmegs 64
. - You’re ready to go, just type
map q3dm17
in your new server’s console.
Configuration Files
You can put almost any setting or console command into a configuration file called suchandsuch.cfg
and place this in the mod folder, for regular Quake III: Arena it is baseq3
and then modify your server startup command or script to end with +exec suchandsuch.cfg
Remote Administration using rcon
Rcon allows you to remotely access and configure your server while playing through a client or through other programs. seta rconPassword 'password'
Adding this to your server configuration file (suchandsuch.cfg
) will enable remote access through the password in quotes. Do not use password
or any other simple word. Please use a password manager like 1Password to keep track of your passwords.
Useful ioquake3 server console commands and settings
These can be set on the command line using ioq3ded.x86_64 +command
or in the console interface after starting the server.
Using HTTP/FTP Download Support
You can enable redirected downloads on your server even if it’s not an ioquake3 server. You simply need to use the ‘sets’ command to put the sv_dlURL
cvar into your SERVERINFO
string and ensure sv_allowDownload
is set to 1
sv_dlURL
is the base of the URL that contains your custom .pk3 files the client will append both fs_game and the filename to the end of this value. For example, if you have sv_dlURL
set to http://example.org
, fs_game
is 'baseq3'
, and the client is missing test.pk3
, it will attempt to download from the URL http://example.org/baseq3/test.pk3
sv_allowDownload
can be set to one of these options:
Is ioquake3 network compatible with the final id point release (1.32c) of Quake III: Arena?
Yes. ioquake3 is ONLY network compatible with the final id software point release (1.32c) of Quake 3.There is also a project to support version 1.16n here from Zack Middleton.
Using Old Versions or Protocols
The majority of mods built for Quake 3 1.32c work fine with ioquake3, but sometimes we get asked to help with NoGhost or other mods that require versions of Quake 3 prior to 1.32c. When the source code to Quake 3 was released it was for version 1.32c which is why ioquake3 increased the version number from there. We did not receive the source code for versions prior to 1.32c and there is no way for us to go back to 1.16n or other old versions. However, please see the project linked on the above question.
Does Punkbuster or other anti-cheat software work with ioquake3?
No. Punkbuster is closed-source software that we cannot implement. There is no good software replacement. Good administrators on your server who can watch out for cheaters, review logs, and review recorded demo files are the only anti-cheat option at this time.
Quake 3 Arena Download
Network protocols
There are now two cvars that give you some degree of freedom over the reported protocol versions between clients and servers: com_protocol
and com_legacyprotocol
. The reason for this is that some standalone games increased the protocol number even though nothing really changed in their protocol and the ioquake3 engine is still fully compatible.
In order to harden the network protocol against UDP spoofing attacks a new network protocol was introduced that defends against such attacks. Unfortunately, this protocol will be incompatible to the original quake3 1.32c which is the latest official release from id. Luckily, ioquake3 has backwards compatibility, on the client as well as on the server. This means ioquake3 players can play on old servers just as ioquake3 servers are able to service old clients.
The cvar com_protocol
denotes the protocol version for the new hardened protocol, whereas the com_legacyprotocol
cvar denotes the protocol version for the legacy protocol. If the value for com_protocol
and com_legacyprotocol
is identical, then the legacy protocol is always used. If com_legacyprotocol
is set to 0, then support for the legacy protocol is disabled.
Mods that use a standalone engine obviously do not require dual protocol support, and it is turned off if the engine is compiled with STANDALONE per default. If you desire backwards compatibility to older versions of your game you can still enable it in q_shared.h by defining LEGACY_PROTOCOL.
cl_guid Supportcl_guid
is a cvar which is part of the client’s USERINFO string. Its value is a 32 character string made up of [a-f] and [0-9] characters. This value is pseudo-unique for every player. id’s Quake 3 Arena client also sets cl_guid
, but only if Punkbuster is enabled on the client.
If cl_guidServerUniq
is non-zero (the default), then this value is also pseudo-unique for each server a client connects to (based on IP:PORT of the server).
The purpose of cl_guid
is to add an identifier for each player on a server. This value can be reset by the client at any time so it’s not useful for blocking access. However, it can have at least two uses in a mod’s game code:
- improve logging to allow statistical tools to index players by more than just name
- granting some weak admin rights to players without requiring passwords
I Just Want to Play Quake 3
Please see the Player’s Guide.