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.

A Quake Live duel on a classic map

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:

  1. Make the pool contain only duel lines.
  2. Add 8 to g_voteFlags, which stops callvote map from 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.

A Quake Live team match in progress

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.

$1.49USD first month

Then $2.99/mo. Just trying it? $0.75 for 3 days

Keep reading