Notes on Weapons Factory
by PhaethonH, (e-mail)<phaethon - linux.ucla.edu>
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.
Classes
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.
Weaponry
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)
Physics
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".
MOCK
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.
Classes
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:
- Recon
- Nurse
- Engineer
- Marine
- Cyborg
- Arsonist
- Gunner
- Sniper
- Spy
- Mercenary
Classes of WFA are almost the same as Q2WF Team-10, except that the Mercenary is removed, and the Spy is renamed Assassin.
Weaponry
Weaponry in Q2WF Team-10, as of Q2WF 4.25:
- Blaster: the pea shooter of the game.
- Shotgun: small spread, low damage, low rate-of-fire (ROF), hitscan (instant hit). Every class has this.
- Super Shotgun: larger spread, higher damage, hitscan, low ROF. Some classes.
- Machinegun: lightweight, high ROF, low damage, histcan, chase weapon. Some classes.
- Chaingun: medium damage, high ROF, hitscan, chase weapon. Gunner.
- Hyperblaster: low damage, high ROF, hitscan, energy weapon. Marine.
- Rocket Launcher: high damage, low ROF, high-explosive, linear flight path, fast speed. Marine.
- Grenade Launcher: high damage, low ROF, high-explosive, gravity-influenced path, medium speed. ???
- Railgun: high damage, very low ROF, hitscan, painful. Sniper?
- Needler: high ROF, low damage(?). Nurse.
- Tesla Coil: high ROF(?), varying damage(?). Engineer.
- Cluster Grenade Rocket: low ROF, high damage, very painful, linear path, medium speed(?). Cyborg.
- Pellet Rocket Launcher: low ROF, varying damage, explodes into omnidirectional shotgun pellets, very annoying, linear path, high speed. Mercenary.
- Pulse Cannon: high ROF, hitscan, very painful, shoots railslugs like a machinegun shoots bullets. ???
- Flare Gun: low ROF, linear path, fast speed, on fire. Lights up areas. Arsonist.
- Napalm Rocket: low ROF, medium damage, linear path, medium speed, on fire. Arsonist.
- Flamethrower: low ROF, ??? damage, linear path(?), medium speed(?), on fire. Arsonist.
- Freezer: low ROF, ??? damage, linear flight, fast speed. Freezes target for a few seconds. Arsonist.
- Infected Dart: low ROF, low damage, gravity-influenced flight path, slow speed. Infects enemies with plague. Nurse.
- Armor-piercing dart: low ROF, gravity-influenced path, slow speed. Armor doesn't protect against this. Replenishes armor of teammates. Engineer.
- Sniper Rifle: varying ROF, hitscan, charged weapon, headshot = instant kill. Sniper (duh?).
- Sentry Killer: medium ROF(?), homing missile, very slow speed. Homes on sentry guns. Cyborg.
- Mega Chaingun: very high ROF, hitscan, painful. Player cannot move while firing. Gunner.
- Tranquilizer dart: low ROF, low damage, gravity flight, slow speed. Causes target to fall asleep? Become slow? Spy.
- Knife: medium ROF(?), close range, instant death if striking a player's backside. Spy, Mercenary.
- AK47: high ROF, medium damage, hitscan. (XXX: What's so special about this?) Mercenary.
- Pistol: medium ROF(?), hitscan, low damage. Recon, Spy, Mercenary.
- Stinger Missile Launcher: low ROF, linear path, homing missile, fast speed, extremely annoying. Can sit on ground. Homes on jetpacks and grapples. Mercenary.
- Hand Grenade -- Normal: varying ROF(?), explosive, gravity-path. All classes.
- Hand Grenade -- Laserball: locks lasers onto targets, gravity-path. ???
- Hand Grenade -- Goodyear: linear-path, hovers in air, explodes when enemy is near. Recon.
- Hand Grenade -- Proximity: gravity-path, sits on ground, explodes when enemy is near. Marine.
- Hand Grenade -- Flash: gravity-path, white-out effect on victim. Recon, Spy
- Hand Grenade -- Cluster: gravity-path, launches four grenades into air. Recon, Cyborg.
- Hand Grenade -- Earthquake: ???
- Hand Grenade -- Turret: gravity-path, lifts into and hovers in air, fires (weakened) rail slugs at nearby enemies. Marine.
- Hand Grenade -- Napalm: gravity-path, launches four flames into air. Arsonist. Arsonist.
- Hand Grenade -- Concussion: gravity-path, meddles with victim's aiming direction. Recon
- Hand Grenade -- Plague: gravity-path, induces plague effect in victim, damage incurred for each second infected. Nurse?
- Hand Grenade -- Magnotron: gravity-path, sits on ground, pulls enemy towards grenade. Engineer.
- Hand Grenade -- Shock: ???
- Hand Grenade -- Pipebomb: gravity-path, sits on ground, waits for user signal before detonating. Mercenary.
- Hand Grenade -- Shrapnel: gravity-path, explodes into omnidirectional shotgun pellets.
- Hand Grenade -- Flare: ??? Arsonist?
- Hand Grenade -- Slow: ???, causes victim to move slower?
- Hand Grenade -- Lasercutter: gravity-path, lifts into and hovers in air, shoots out lasers while spinning. Arsonist.
- Hand Grenade -- Tesla: ???
- Hand Grenade -- Gas: drunken air path, induces psychedelic effects on victim. Spy.
Weaponry in WFA as of WFA 3.0:
- Gauntlet: medium ROF?, medium damage, hitscan, very short range. Punching gloves of the game. All classes.
- Shotgun: low ROF, some spread, low damage, hitscan. All classes.
- Super Shotgun: low ROF, some spread, high damage, hitscan. Nurse, Engineer.
- Pistol: low ROF, low damage, hitscan. Alternate fire is a lower-damage silenced shot. Recon, Assassin.
- Uzi: high ROF, low damage, almost no spread, hitscan. Recon, Nurse, Assassin.
- Dart Gun: medium ROF, low damage, gravity flight, slow speed. Infects enemies with plague, replenishes health and armor of player, can deliver drugs to teammates. Nurse.
- Ion Fuser: low ROF, high damage, hitscan. Armor does not protect. Replenishes armor of teammates. Engineer.
- Rocket Launcher: low ROF, high damage, explosive, linear flight path, fast speed. Marine.
- Hyper Blaster: high ROF, low damage, hitscan. Marine.
- Grenade Launcher: low ROF, high damage, explosive, gravity flight, fast speed. Doubles are mortar launcher. Cyborg.
- Lightning Gun: high ROF, medium damage, hitscan but short range. Does NOT kill underwater >:( Cyborg.
- Flamethrower: high ROF, medium damage, hitscan but short range. Sets targets on fire. Arsonist.
- Napalm Rocket Launcher: low ROF, medium damage, linear flight but short range. Set targets on fire. Arsonist.
- Freeze Gun: low ROF, low damage, linear flight, embarrassingly slow. Alternate fire has no speed (freeze mine). Freezes target for a few seconds. Arsonist.
- Minigun: high ROF, low damage, some spread, hitscan. Gunner.
- Mega Chaingun: high ROF, high damage, wide spread, hitscan. Alternate fire has lower damage and less spread. Player cannot move while firing (either fire mode). Gunner.
- Railgun: low ROF, high damage, hitscan. Alternate fire has half damage and double ROF. Sniper.
- Sniper Rifle: low ROF, ridiculously high damage, hitscan. Alternate fire is scope zoom. Headshot = instant kill. Wielding (switching to) this weapon slows down the player's movement speed. Sniper.
- Knife: medium ROF?, varying damage, hitscan but very short range. Backstab = instant kill. Alternate fire empties a sentry gun of ammo. Assassin.
- Hand Grenade -- Normal: low ROF, high damage, gravity flight, explosive only. All classes.
- Hand Grenade -- Flash: very low damage, gravity flight. Victim suffers whiteout effect. Recon, Assassin.
- Hand Grenade -- Goodyear: high damage, linear flight, hovers in air. Explodes when enemy is nearby. Recon.
- Hand Grenade -- Plague: low damage, gravity flight, almost no splash. Infects victim with plague. Nurse.
- Hand Grenade -- Proximity: high damage, gravity flight, sits on ground. Explodes when enemy is nearby. Marine.
- Hand Grenade -- Turret: medium damage, gravity flight, then floats and hovers in air. Shoots weakened rail slugs at nearby enemies. Marine.
- Hand Grenade -- Shrapnel: low? damage, gravity flight, explodes into a spread of pellets. Sends enemies flying with a knockback value of somewhere between googleplex and infinity. Cyborg, Gunner.
- Hand Grenade -- Napalm: low damage, gravity flight, sits on ground. Explodes when enemy is nearby, also setting them on fire. Arsonist.
- Hand Grenade -- Pipebomb: medium damage, gravity flight, sits on ground. Explodes on user signal (command "detpipes"). Sniper. (note: there is no mercenary in WFA)
Devices and Widgets
These are the devices in Q2WF 4.25:
- Decoy: A holographic replica of the player, it sits and fidgets.
- Alarm: Attachable to any flat surface, sounds off a siren when any enemy is near, disguised or not.
- Laser Defense: Attachable to any flat surface, creates a visible laser beam that kills on contact.
- Supply Depot: Droppable on any level surface, slowly replenishes ammo and armor of anyone touching it.
- Sentry Gun: Droppable on any level surface, automatically aims and fires at any undisguised enemies in visible sight. Comes in three levels.
- Kamikaze: After 10 second, the player detonates with damage proportional to remaining armor.
- Plasmabomb: Creatable anywhere, creates a dense ball of plasma that explodes after a time. Comes in three levels.
- Plasmabomb Defuser: Defuses a plasmabomb, with a chance of detonating instead.
- Feign: Causes player to fall horizontal, faking death.
- Disguise: Lets player appear to be any other player.
- ???
These are the devices in WFA 3.0:
- Decoy: A holgraphic replica of the player, it sits still.
- Alarm: Attachable to any flat surface, sounds off a siren when any enemy is near, diguised or cloaked or neither.
- Laser Defense: Attachable to any flat surface, creates a visible laser beam that causes high damage very quickly.
- Supply Depot: Droppable on any nonmoving ground, slowly replenishes ammo and armor of any teammate touching it.
- Sentry Gun: Attachable to any flat surface, automatically aims and fires at any undisguised and/or uncloaked enemies in visible sight. Comes in three levels.
- Kamikaze: After 10 seconds, player detonates with damage proportional to remaining armor.
- Plasmabomb: Creatable anywhere, creates a dense ball of plasma that explodes after a time. Comes in three levels.
- Plasmabomb Defuse: Defuses a plasmabomb, with a chance of detonating instead.
- Cloak: Causes player to become almost transparent.
- Disguise: Lets player appear to be any enemy.
- Medical Depot: Droppable on any nonmoving ground, replenishes health, heals legshots, and cures plagues for any teammate touching it.
- ???
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:
- Recon: Visors that show the true name of any target in the crosshair, including disguised and cloaked players.
- Nurse: Auto-doc (regeneration), fast enough to prevent death by drowning. Immune, cannot be plagued. Cannot be legshotted.
- Arsonist: Cannot be set on fire. Immune to lava.
- Sniper: Name does not appear in crosshairs of enemies.
- Assassin: Rebreather, cannot drown.