Notes on Weapons Factory

by PhaethonH, (e-mail)<phaethon ->

Weapons Factory (WF) is a game modification to Quake II, loosely based on Team Fortress for Quake I (TF). WF was started when its originators were clear that TF would not be ported to Quake II. Thus started WF to continue the concepts of TF into Quake II.

Weapons Factory for Quake II (Q2WF) has something of a legacy to it. Weapons Factory Arena for Quake III: Arena (WFA) is the canonical ("official") successor to Q2WF. However, even the initial release of WFA differed greatly from its predecessor. These differences are outlined below. The continuing evolution of WFA has deviated vastly from Q2WF.

WF has also been ported to Tribes 1 (WFT) and Unreal Tournament (WFUT).

This document outlines the features of Q2WF, how WFA differs, implementation notes in order to port Q2WF features to Q3A, and personal opinions. I created this document as a structured guiding document for myself in the course of bringing Q2WF to Q3, but is also useful as a preview of things to come.

Overview of Weapons Factory

(Implementation non-specific)

Capture The Flag (CTF)

Capture-the-flag (CTF) is a game mode where each team has a team flag. Each team attempts to steal the enemy's flag, and capture ("cap") it at their own team's base, while preventing their team's flag from meeting the same fate. Team scores are awarded for caps. The original CTF concept requires your team flag to be at its flagstand in order to capture the enemy flag (after stealing). In other words, you had to be touching two flags at a flagstand to capture and score. One signature difference of WF CTF is (optionally) dropping this flag-at-stand requirement: you can still capture the enemy flag even if your team flag is also stolen.


Weapons Factory is a class-based capture-the-flag game modification, as Team Fortress was (is?). Players choose one of many classes (about 9, give or take). Each class has unique a set of abilities, attributes, capabilities, and weaponry. Some classes are suited for defending the flag (preventing flag steal), or for offense (stealing enemy flag), or just general harrassment (dealing many small damages).

Life And Death

Each class often have differing amounts of health and/or armor. A player is dead if his/her health reaches 0. Armor helps reduce damage taken from enemy weapons, but not guaranteed to do so.

WF also has the concept of different kinds of armor. Each type of armor helps reduce damage in varying amounts or different ways. Traditionally, the "heavy" classes are loaded with a "heavy" armor, and move slower than other classes, while "light" classes have a "lighter" armor and move proportionally faster. Usually "heavy" armor reduces damage more than "light" armor.

Health packs are not scattered around the map as in regular Quake CTF, nor is armor. Although maps can, it is not in the "flavor" of WF to have health packs all over the map.

WF has the concept of a "Ammo Room" or "Spawn Room" for a team. This room is a safe haven for a team, a room no other team(s) may reach. Such a room is often filled with dozens of "ammo packs", which replenish ammunition, health, and armor. As the names suggest, players often respawn in this room. Some maps, however, may separate the (re)spawn room from the ammo room.

Thus, the general notion of WF is to spawn once, load up, then try to duke it out as long as possible without powerups, and coming back to the ammo room to reload.


Each class has a unique set of weaponry that does not change. Players may still run out of ammo, but they cannot pick up or drop weapons. Ammunition is replenished with ammo packs (which also replenishes health and armor). Traditionally, fragged players drop an ammo pack on death which contains a little ammo and no health nor armor.

Generally, each class carries at least two weapons, a low rate-of-fire (ROF) power weapon, and a high ROF chase weapon. Each class is also loaded with the same "weenie weapon", the "pea-shooter" or "punching gloves" of the game: The Quake 2 Blaster, the Quake 3 gauntlet, the Unreal Tournament Impact Hammer, and so on.

Each class also carries a set of hand grenades. This set usually consists of a timed explosion-only ("regular") hand grenade, and one or two special grenades that have certain special abilties or effects.

Devices and Widgets

Some classes carry special equipment with specialized activities, which extend the class's capabilities. These devices are persistent (last a long time, more than 20 seconds) and are mostly autonomous (i.e. "aimbot"-ish). They may notify its owner of events.

Well-recognized devices include the wall-clinging alarm (making a loud sound if an enemy is near), the remote surveillance camera, the automated sentry gun (essentially a stationary aimbot with machine guns and rocket launcher), and the mobility-enhancing jet pack.

Unlike grenades, devices require special commands to be activated and deactivated. Grenades can be used and fired like any other weapon, without need for a special command to launch (the one special note is the pipebomb (remote-control mine), which requires an explicit command to detonate, but not to launch).

Bringing Q2WF to Q3 -- Project FI:WFC

(Implementation notes)


The most noticeable difference between Q2 and Q3, for dedicated players, are the physics of each game: the way players move, the way objects move, how objects interact. Attempting to import all of Q2's physics into Q3 will be nontrivial. On one hand, recreating Q2 physics is an overwhelming task that should thus be slated for a much later date. On the other hand, the very "feel" of Q2WF, and thus a (im)port of it to Q3, depends on the physics being "right".


Q2WF's MOCK (Mod Construction Kit) is a double-edged sword. On one hand, Q2WF could be retweaked into different types of class-based mods without having to see or use game source code -- editing text files was sufficient. On the other hand, players were annoyed by numerous "MOCK flavor of the server", where you would get a different game depending on which particular WF-MOCK server you joined.

WFA removed MOCK, to eliminate "MOCK flavor of the server".

I would like to keep MOCK ability, which is extremely useful for beta-test runs. I must, however, strike a balance between configurabilty and consistency: when players join some WF server, they should be able to expect the same kind of gameplay. Current solution is to allow a callvote to switch among the "canonical" configurations, and the server-specific configurations. Nonetheless, if a server admin is hell-bent on keeping the mod altered a certain way, there is no stopping him/her -- one WFA server went to the extent of binary-hacking the WFA pak files for server-specific modifications.


Q2WF supports different sets of player classes, primarily "Team 6", "Team 9", and the much-popular "Team 10". These class sets are configured by external data files (external to the game code), which meant small 1-3K files could be distributed to create new classes, instead of distributing 100K-2MB compiled code. WFA, OTOH, only has one fixed set of classes. The extent of configuring the class set is banning one or more of these classes.

Implementation goal is to allow multiple class sets, but this goal must be balanced with the problems of MOCK outlined above.

Classes in Q2WF Team-10:

Classes of WFA are almost the same as Q2WF Team-10, except that the Mercenary is removed, and the Spy is renamed Assassin.


Weaponry in Q2WF Team-10, as of Q2WF 4.25:

Weaponry in WFA as of WFA 3.0:

Devices and Widgets

These are the devices in Q2WF 4.25:

These are the devices in WFA 3.0:

Attributes of Classes

Some classes in Q2WF and WFA have special inherent attributes that are always in effect, which do not require commands or actions to activate.

Attributes of classes in WFA 3.0: