Quake Live Server Factories and Map Pools Explained
Set the game type on a Quake Live server: factories like ca, duel and ctf, mappool.txt lines, custom .factories files, serverstartup and vote flags.
Updated Oct 7, 2026 · 5 min read
On this page
A Quake Live server picks its game type through factories: named rule sets such as duel, ca (clan arena), ctf, ft (freeze tag) or iffa (instagib FFA). You choose which maps and factories rotate in the map pool file, one map|factory per line, start the first match with serverstartup "map campgrounds ca" in server.cfg, and write your own match rules as a JSON .factories file in baseq3/scripts. Gameplay settings in server.cfg do not stick, because every factory overrides them when a map loads.
This catches almost everyone coming from Quake III Arena, where you set g_gametype and fraglimit in a config and were done. Quake Live servers were designed to switch freely between game types, so the rules travel with the factory.
What a factory is
A factory is a game type definition: a base game type plus a set of cvars to apply. Quake Live ships base rules for every game type and a few variations, and the server loads extra factories from any .factories file it finds. The base game types a factory can build on:
basegt |
Game type |
|---|---|
ffa |
Free for all |
duel |
One on one |
race |
Race (movement trials) |
tdm |
Team deathmatch |
ca |
Clan arena: full loadout, no pickups, round based |
ctf |
Capture the flag |
oneflag |
One flag CTF |
har |
Harvester |
ft |
Freeze tag |
dom |
Domination |
ad |
Attack and defend |
rr |
Red rover |
Factories you can use in map pools and votes have their own id. The built in ones match the game types above, plus variations such as iffa for instagib free for all. In game, the Start Match screen lists every factory the server loaded, with its title and description.
The map pool
sv_mapPoolFile in server.cfg names the pool file. The server ships several ready made ones: mappool.txt (mixed), mappool_ca.txt, mappool_ctf.txt, mappool_duel.txt, mappool_ffa.txt, mappool_race.txt and mappool_tdm.txt. Each line is a map and a factory separated by a pipe:
bloodrun|duel
aerowalk|duel
toxicity|duel
furiousheights|duel
sinister|duel
A mixed server simply lists different factories:
campgrounds|ca
almostlost|ca
overkill|ca
japanesecastles|ctf
spidercrossings|ctf
troubledwaters|ctf
The pool decides which maps appear in the three map vote at the end of each match, and which map startRandomMap can pick. The same map can appear several times with different factories.

Starting the first match
The server runs the command in serverstartup once it has finished starting:
// random map from the pool (the default)
set serverstartup "startRandomMap"
// or a fixed first map and factory
set serverstartup "map campgrounds ca"
You do not need a map line on the command line. The factory argument is required when you name a map, since a map alone does not say which rules to use.
Locking a server to one game type
Players can call votes for maps and factories: /callvote map bloodrun duel. To keep a duel server a duel server:
- Make the pool contain only
duellines. - Add 8 to
g_voteFlags, which stopscallvote mapfrom accepting a factory argument. Players can still vote maps, but not change the game type.
g_voteFlags is a sum of the vote types to disable:
| Value | Disables |
|---|---|
| 1 | map |
| 2 | map_restart |
| 4 | nextmap |
| 8 | game type argument on map votes |
| 16 | kick |
| 32 | timelimit |
| 64 | fraglimit |
| 128 | shuffle |
| 256 | teamsize |
| 512 | cointoss and random |
| 1024 | loadouts |
| 2048 | end game voting |
| 4096 | ammo (global) |
| 8192 | item timers |
A public duel server often uses g_voteFlags "24" (8 + 16), locking the game type and stopping kick votes in a two player game.

Writing a custom factory
Create baseq3/scripts/ if it does not exist and add a file ending in .factories, for example baseq3/scripts/fridayca.factories. It is JSON: either one object or an array of several. All fields must be present.
[
{
"id": "fridayca",
"title": "Friday Clan Arena",
"author": "YourClan",
"description": "Clan arena, 7 rounds, 2 minute round limit",
"basegt": "ca",
"cvars": {
"roundlimit": "7",
"roundtimelimit": "120",
"g_overtime": "0"
}
},
{
"id": "instaduel",
"title": "Instagib Duel",
"author": "YourClan",
"description": "Railgun only, first to 15",
"basegt": "duel",
"cvars": {
"g_instagib": "1",
"g_startingWeapons": "65",
"fraglimit": "15",
"timelimit": "10",
"g_loadout": "0"
}
}
]
| Field | Meaning |
|---|---|
id |
Name used in map pools and votes |
title, author, description |
Shown on the Start Match screen |
basegt |
Base game type from the table above |
cvars |
Cvars to set whenever this factory loads |
Then use it in the pool like any built in one:
campgrounds|fridayca
bloodrun|instaduel
Restart the server after adding or editing a factory file. If a factory is invalid, the server prints why in the console at startup and leaves it out, so watch the log on the first start. The most common mistakes are a trailing comma after the last cvar and numbers written without quotes: every cvar value is a string.
The built in instagib FFA factory is a good template to study: it sets g_instagib 1, g_startingWeapons 65 (railgun and gauntlet), dmflags 28, and turns off armor spawns, loadouts and overtime.
Custom maps in the pool
Workshop maps work in the pool like stock maps, once the server has downloaded them at startup from workshop.txt. The full process is in how to add Workshop maps to a Quake Live server.
On a GamezServers server
On a GamezServers Quake Live server, the pool files, server.cfg and the baseq3/scripts folder for your .factories are all in the file manager, and the live console takes map campgrounds ca to switch straight away without waiting for a vote. A one click backup before editing factories means a broken JSON file is a quick restore. For the base setup, see how to host a Quake Live server.
FAQ
How do I change the game mode on a Quake Live server?
Load a map with a factory: map campgrounds ca in the console, or /callvote map campgrounds ca in game. To change the default, edit the pool and serverstartup.
Why are my server.cfg settings like fraglimit ignored?
The factory sets gameplay cvars every time a map loads and overrides server.cfg. Put match rules in a custom .factories file.
What is the mappool.txt format?
One map per line as mapname|factory, for example bloodrun|duel. The shipped pool files are good examples to copy from.
How do I stop players voting a different game type?
Keep only one factory in the pool and add 8 to g_voteFlags.
Skip the setup. Your own Quake Live server.
Then $2.99/mo. Just trying it? $0.75 for 3 days