Quake Live
Quake live is a remake of Quake 3 with some tweaks and performance improvements that make it a really nice online game to play with a couple of friends.
Hosting a server isn’t that difficult, but some of the default guide is missing a few bits.
Hosting a server
To start with we need to fetch the binaries from steam itself, this can be done with:
./steamcmd.sh +login anonymous +force_install_dir ./steamapps/common/qlds/ +app_update 349090 +quit
This gives us the game assets, main server binary and some default configuration.
Just running run_server_x64.sh will start the server with defaults. But
we want to tweak those a little.
Config
The main game configuation lives at baseq3/server.cfg. Most of the
options you can easily read the comments and adjust (server name, max
player count, passwords etc). But we also want to adjust a few things for
perfomance and stability:
com_hunkMegsthis should be set to at least 256 for 16 players. This is the main memory pool the server uses (with it’s own allocator) for map and model data.bot_enableshould be set to1to enable bot support.bot_minplayerssets the minimum amount of players. I generally set this to 10 for team based modes. Basically it guarantees a minimum players in the game. Bots are automatically kicked when real players join.
We also want to set com_zoneMemory to 64. This is used for a bunch of
temporary objects and with bots and a lot of map changes we can easily run
out of memory here and kill the server. It cannot be modified after
startup, and setting it from the config is a little error prone. Instead
we need to edit run_server_x64.sh to do it. It should look like:
!/bin/bash
cd "$(dirname "$0")"
LD_LIBRARY_PATH="./linux64" exec ./qzeroded.x64 +set com_zoneMegs 64 "$@"
With these options our server will be stable and quick! I run this on a single shared core VPS with 1G of RAM no problem.
Useful admin commands
The default mappool is fun but here are a couple of commands that are
useful to know as the host. Remember to put /rcon in front of all of
these if executing from the game clients (after setting up access.txt as
detailed in server.cfg).
If you do not use /rcon your local game client will just change into
it’s own match without warning!
Change map and game mode
map trinity iffa
Instagib free for all on Trinity
set fraglimit 50
Set game winning total in deathmatch
set timelimit 20
Set timelimit for the match (in minutes)
put X blue
Move player to blue team. You can lookup players with status
Game modes
actf ad ca ctf dom duel oneflag ffa ft har ictf iffa ift infected quadhog race rr tdm vca
vstr nextmap
Jump to next map in the pool
map_restart
Restart the game with the same mode on the same map
meminfo
For debugging the current memory usage (you probably won’t ever need this
unless having OOM problems which shouldn’t happen with our memory settings
above.
Mappools
Map pools are just a text file with modes. You can use set sv_mappoolfile to change the mappool at runtime. My starter is:
zen|infected
campgrounds|iffa
japanesecastles|ctf
hiddenfortress|ift
castledeathstalker|ffa
overgrowth|ca
bloodlust|race
skyward|ictf
eyetoeye|dom
rebound|actf