This is the official Quake2World Online Manual.
Quake2World is a Free, standalone first person shooter video game based on id Tech2. Our goal is to bring the fun of oldschool deathmatch to a more contemporary platform, and perhaps to a new generation of gamers. Quake2World is multiplayer-only. There is no single-player or offline gameplay mode. If you have no Internet and no friends, Quake2World might not be for you.
Quake2World is much of what you would expect from a from a first-person-shooter video game. Here are some of the things that set it apart:
Quake2World follows a rolling release development model. You should ensure that your copy of Quake2World is up to date on a regular basis. Quake2World is in BETA. There are bugs, but the game is playable and should work for you as long as your system meets the System Requirements.
Download the latest Windows 32 bit installer or the latest Windows 64 bit installer. Extract it to a path owned by your user account, on Windows Vista and Windows 7, we recommend extracting the package to your Desktop. Run the included Update.exe. This may take a few minutes the first time you run it, but it will take significantly less time on subsequent runs. You should run Update.exe often. When Update.exe finishes, you can hit enter and then run quake2world.exe.
Download the latest Mac installer, open it, and drag the Quake2World folder onto the Applications shortcut. From your Applications folder, click the Quake2World folder and run Update.app. This may take a few minutes the first time you run it, but it will take significantly less time on subsequent runs. When Update.app finishes, you can close the Terminal window and then run Quake2World.app. You should run Update.app often.
First, install libsdl-image, libsdl-mixer, and curl through your package manager. Then download the latest Linux installer (64 bit only), and extract it to a location of your choosing (e.g. ~/quake2world, /opt/quake2world, etc). Run bin/q2wupdate in the Terminal to install the latest game data and binaries. When bin/q2wupdate finishes, you can close the Terminal and run bin/quake2world.
Upon starting the game, you're presented with a menu. You can use the menu system to setup your screen resolution, player name, and controls. There is also an in-game server browser which you can use to find multiplayer servers to play on.
Aside from the menus, the Quake console is the other portion of the game's user interface you'll encounter. Press the tilde (~) key to toggle the console at any point in time. There you may enter commands to view levels offline, connect to servers, change your player's name and model, customize your controls, etc. See Client Configuration for more information on console commands.
To gain your bearings, try viewing a level offline. Type map torn to spawn into CardO's level Torn Glory. By default, the w a s d keys will control your players movement, and your mouse will control your aim. The Levels section contains a full listing of maps available for offline viewing and online play.
Quake2World's default settings will work fine for most players. Experienced players may wish to tweak key bindings and advanced preferences. Of course, there are a some settings that you'll need to adjust to suit your computer. Below are some of the more commonly changed client settings and commands. Type cvar_list and cmd_list at the console for a full listing.
0 through 3 are valid. Defaults to 0 (unfiltered).6000 through 25000 are valid. Defaults to 10000.0 means disabled, 1 means enabled. Defaults to 0.0 means disabled, 1 means enabled. Defaults to 1.10 are valid. Defaults to 0 (unlimited).10 and less than 101 are valid. Defaults to 0 (unlimited).Quake2World servers require relatively few resources in terms of CPU and RAM. However, you will likely find that bandwidth is critical. While small servers can be run over cable modems and fast DSL connections, large servers should be run from data centers with strong connectivity.
1 to 256 are valid. Defaults to 1 for listen servers or 8 for dedicated servers.0.rcon. Defaults to "" (disabled).8.0 (disabled).30.0 (disabled).20.0.status.status.Quake2World has multiple gameplay modes all centered around blasting your friends to bits. You'll have to frag your "enemies" and stay alive to be successful. Learn to use the map and the items available on it to your advantage. Stock up on weapons, ammo and armor like they're going out of style, and always know where the nearest health packs are.
Classic deathmatch. There's many players but no teams in this gamemode, so just shoot at everything that moves and expect others to do the same. The rough idea in this mode is to frag as many opponents as possible without getting yourself killed too often. The player who reaches the fraglimit first (fraglimit setting) or the player who has most frags when the timelimit is hit (timelimit mode) is the winner.
Teams-based deathmatch play is a long-standing favorite of all veteran Quake players. Two teams occupy the map: Good vs Evil. Use the banner at the bottom of your screen and the scoreboard to know which team you're on, and go after the other team. Communication is key in this gameplay mode, so you may want to setup some say_team macros to help out. Friendly fire may or may not be enabled, so ask before your teammates become collateral damage.
Again two teams fight against each other in this mode. Each team has a base that holds its flag. The idea is to steal the enemy flag and take it back to your base. You can only score a capture if your own flag is still at your base, so make sure it is defended at all times. If a flag carrier is fragged he/she will drop the flag. Run over it to teleport it back to your base (if it's yours) or to pick it up (if it belongs to the other team). Captures, not frags, are the goal of this gameplay mode, so taking one for the team is sometimes wise.
In Rocket Arena mode, players spawn with full armor and most weapons and ammo (the BFG is not supplied), but that's all you get. No pickup items are available to replenish you. In addition, self-damage is disabled. This means that you can rocket jump, grenade jump and hyperblaster-climb without taking damage. Use this to your advantage to out-maneuver your opponents and reign hell upon them.
Instagib is the low-pinging-bastard (LPB) game of choice. Players spawn with only the railgun and full slugs (actually, the blaster is available too for comic relief). Like Rocket Arena, no pickup items are available, so don't bother looking for them. Each rail shot is worth 999 damage, effectively making the game 1-shot, 1-kill. Point and click your way to victory in this fast-paced, reflex-rewarding gameplay mode.
Quake2World includes a varied collection of levels with the default installation. Some are remakes of Quake series classics, while others are original creations.
The seminal Quake II deathmatch level, The Edge, has been recreated masterfully by Panjoo. 18 months in the making, this faithful yet modern rendition of the quintessential Quake II level pleases newbies and hardened Quake veterans alike.
Gehenna by Jester is a free-for-all deathmatch map for 3-5 players. Just like Jester's Quake 2 maps, this one offers great atmosphere and gameplay so try it now!
This Quake2World original by spirit is a fast-paced tourney map best suited for some serious 1vs1 action. Set in a down-and-out chemical weapons plant on Saturn's moon Titan, this map offers no room to hide and demands precise and fast movement. Lots of vertical action, a good load of deadly weapons and a dense atmosphere make this rather small map a great place to fight your worst enemies and best friends alike.
The excellent textures were made by Rorshach.
A large-scale futuristic level, Penumbral Wake by TRaK offers free-for-all, team deathmatch, and capture-the-flag gameplay to 4-16 players. Try not to get caught staring at the original textures and exquisite brush work!
Stress Fractures is one of Jester's finest Quake2 deathmatch levels, and it's been given a dose of winter for Quake2World, complements of Yogi's Arctic texture set. Although suitable for stalking one-versus-one games, this map is ideal for 4 to 8 players free-for-all.
Creating levels for Quake2World is not unlike creating levels for Quake 2 or Quake 3: Arena. We recommend that you use Ingar's build of the NetRadiant editor, as it includes a game profile and preferences for Quake2World.
If you are new to Quake 2 level editing, you should start with Game Design's Quake 2 Guide (thoughtfully archived by our friend Panjoo), and return to this page once you've made your first simple level. Otherwise, please continue to one of the subsections below.
Quake2World supports all popular image formats for world textures: TGA, PNG, JPG, and even Quake 2's WAL format. All of the textures distributed with Quake2World may be reused in other levels, provided you pass along whatever documentation comes with them. Please avoid creating levels with textures that may not be freely distributed.
Here are some sites which provide excellent quality, legally distributable textures:
Quake2World's bump mapping (per-pixel lighting) uses a combination of deluxe mapping, dot3-bump mapping, and parallax mapping. This technique requires that you provide normalmap images for your world textures. Generally speaking, you'll want to provide a normalmap image for every opaque world texture appearing in your level. Materials textures like animations and pulses do not require normalmaps.
The standard convention is to name your normalmaps with the _nm or _norm suffix. For example, if your texture is named torn/floor1.tga, the corresponding normalmap image should be named torn/floor1_nm.tga or torn/floor1_norm.tga. For parallax mapping, the format of your normalmap textures must be RGBA, with alpha channel encoded height. Creating proper normalmaps from diffuse textures can be difficult and tedious. We recommend that you elect to use textures specifically designed for this rendering technique, that should come with properly encoded normalmaps. Should you choose a texture set that does not, you might find this tutorial for creating normalmaps useful. There are several free tools available for creating and working with normalmaps:
The best way to create normalmaps is from 3D models:
Additionally, you should tune each texture's bump mapping properties via the materials system.
Several surface flags are available in Quake2World that were not previously supported by Quake 2.
The worldspawn entity is the core of the .map file structure. All world brushes appear within the context of the worldspawn entity. Quake2World adds several new properties to the worldspawn entity which impact everything from atmospheric weather to gameplay modes to lightmap resolution.
The following worldspawn keys are resolved at runtime, and may be overridden at the server operator's discretion via maps.lst.
^2S^7tress ^2F^7ractures by ^2J^7ester. Color escape sequences are supported. Avoid newline characters.unit1_, thundersky_, etc..rain fog 1.0 0.9 0.8.800.0 is off, 1 is on, and 2 tries to enforce balanced teams.0 is off, 1 is on, and 2 tries to enforce balanced teams.0 is off, 1 is on.rocket launcher, super shotgun.The following worldspawn keys are resolved at compile time, and must be set before BSP compilation.
0.07 0.06 0.06. A small ambient factor is recommended for most levels.1.0 is default, all positive floating point values are valid.1.0. Values significantly higher than 1.0 are not recommended.16 (1/16). A value of 8 will produce sharper lightmaps, but will dramatically lengthen your static lighting compile times. In fact, setting this to 32 during development is a nice trick for speeding up your level design process.1.0. Values from 0.5 to 3.0 are most useful.1024 is recommended. Lower values may reduce artifacts, while higher values may reduce r_speeds.-80 220.1.0 0.9 0.8.0 to 255 are valid, 40 to 150 typically produce best looking results.The misc_emit entity is a client-sided entity type used to enrich your levels with non-vital information such as static meshes, particle torches, flickering lights, and ambient sounds. This entity is highly customizable based on several key-value pairs.
Similar to Quake 2's spawnflags key-value pair, a set of flags exists for enabling certain misc_emit features. Whenever possible, these are automatically resolved by the game engine based on the key-value pairs you have set on the entity. Still, you will sometimes need to add these values to the flags key-value pair manually.
EMIT_LIGHT 1
EMIT_SPARKS 2
EMIT_STEAM 4
EMIT_FLAME 8
EMIT_CORONA 16
EMIT_SOUND 32
EMIT_MODEL 64
EMIT_SPARKS EMIT_MODEL.EMIT_LIGHT EMIT_CORONA.EMIT_SPARKS. Default is 12.0.0 and smaller than 5.0 are most useful. Applicable to EMIT_LIGHT EMIT_SPARKS EMIT_STEAM EMIT_FLAME EMIT_SOUND. Default is 0.01.EMIT_LIGHT EMIT_SPARKS EMIT_STEAM EMIT_FLAME EMIT_SOUND. Use the drift key to add variance. Sane defaults are used where possible.outpost/tree. The model must be a static mesh (i.e. not animated). It will be positioned according to the angles key. Applicable only to EMIT_MODEL, which is set when this key is present.EMIT_LIGHT EMIT_CORONA EMIT_FLAME. Defaults are 1.5, 12.0 and 1.0 respectively.aghast/drip. When no hz value is provided to emits which have a sound key, they are treated as looped ambient sounds. Applicable only to EMIT_SOUND, which is set when this key is present.EMIT_STEAMEMIT_SOUNDA torch flame, automatically accompanied by a crackling fire sound effect:
{
// entity 1
"classname" "misc_emit"
"origin" "-24 512 256"
"flags" "8"
}
An ambient drip:
{
// entity 2
"classname" "misc_emit"
"origin" "786 1284 16"
"sound" "aghast/drip"
}
A flickering light with sparks:
{
// entity 3
"classname" "misc_emit"
"origin" "-224 640 -64"
"angles" "0 270 0"
"flags" "3"
"color" "1.0 0.9 0.5"
"radius" "1.25"
"count" "20"
"hz" "0.25"
"drift" "0.5"
}
A steam emitter, pointing downward and slightly north-east, and automatically accompanied by a hissing sound effect:
{
// entity 4
"classname" "misc_emit"
"origin" "216 -48 512"
"flags" "4"
"velocity" "10 10 -40"
}
A static mesh tree:
{
// entity 5
"classname" "misc_emit"
"origin" "-1024 -42 168"
"model" "outpost/tree"
"angles" "4 270 0"
}
The vast majority of Quake2World entities are carryovers from Quake 2. You'll notice, however, that several items have been removed, and a few new ones are available. Also, some old items have new spawnflags to alter their behavior. They are as follows:
spawnflags to 4 on any item to enable this behavior.spawnflags to 2 for these entities will make them emit a "rising rings" effect to help them stand out.Lighting levels for Quake2World is very simple; easier than lighting them for Quake II. The BSP Compiler's lighting phase performs only direct lighting, without radiosity, but also calculates light direction values for per-pixel lighting. The following guidelines generally produce the best looking levels and the shortest BSP compile times:
Use a small ambient_light value in your worldspawn entity. Values less than 0.15 0.15 0.15 are usually appropriate. Tune the value to reflect your sky environment color.
Use sun_angles, sun_color, and sun_light for levels that have sky surfaces. Even if you have a night sky, a small amount of sun_light gives you ambiance and atmosphere for free.
Use light-emitting surfaces (SURF_LIGHT) sparingly. Point lights are much more efficient for the BSP compiler to process, and will generally produce equal or better looking results. A proper use case for SURF_LIGHT is a long, thin strip of contiguous light sources.
Place lights only where you have actual light sources. Don't drop point lights in "mid air" where there is no light source. You're better off placing point lights as close to their actual light sources as possible, and making them very strong if you need to cast light on a floor that is far away.
Keep it simple and realistic! Fewer, stronger light sources will generally look much better than numerous, weak sources. Avoid adding more than one point light for each light source. Keep the point light close to the light source brush.
Quake2World provides its own cross-platform BSP compilation tool called q2wmap. The compiler is based on the original Quake 2 tools, but in addition offers the following:
In addition to these things, the q2wmap source code is Valgrind clean. The stock tools are riddled with dangerous instructions and memory leaks.
Invoking the compiler is simple and straightforward. You should consider running it via a command prompt or shell rather than through GtkRadiant's build menu.
Standard full compile:
q2wmap -bsp -vis -light maps/my.map
Fast vis, extra light, two threads:
q2wmap -t 2 -bsp -vis -fast -light -extra maps/my.map
Materials file generation:
q2wmap -mat maps/my.map
Pakfile generation (produces map-my.pak):
q2wmap -pak maps/my.map
The materials system provides a flexible framework to enhance your levels with animations, light flares, environment maps, terrain blending, and other effects. If you are familiar with Quake 3 Arena's "shaders" system, you'll be right at home with materials.
A material is a set of directives and parameters for an individual world texture. Each texture in your level can have zero or one material definition. Materials are defined in a plain text file called materials/mymap.mat, where mymap is the name of your .bsp file. The BSP compiler can generate a default materials file for your level to get you started: q2wmap -mat maps/my.map
Materials are comprised of a material definition, and then zero or more layers called stages. Each stage can describe one or more effect, and each effect is blended with the result of the prior stages. The basic structure of a materials file is:
{
# Material definition
material path/to/texture1
parameters
{
# Stage definition
texture path/to/texture2
parameters
}
...
}
The material definition specifies the texture name and per-pixel lighting parameters.
${texture}_nm and ${texture}_norm. Typically, this directive is omitted. However, if you have several diffuse textures that differ only in color, you can save some texture memory by specifying the same normalmap map for each of them. See normalmaps and bump mapping${texture}_s and ${texture}_gloss. Typically, this directive is omitted. However, if you have several diffuse textures that differ only in color, you can save some texture memory by specifying the same glossmap for each of them. See normalmaps and bump mappingb parameter is required, and must be a positive floating point value, or 0.0. The default value is 1.0.1.0 requires high-quality normalmaps, with properly encoded height values. The p parameter is required, and must be a positive floating point value, or 0.0. The default value is 1.0.h parameter is required, and must be a positive floating point value, or 0.0. The default value is 1.0.s parameter is required, and must be a positive floating point value, or 0.0. The default value is 1.0.It is a best practice to define all material parameters for your opaque world surfaces, as they are eligible for per-pixel lighting. Quake2World provides safe defaults when you omit these parameters, but tuning them will often benefit the appearance of your level.
{
material evil6/stone_floor
bump 3.0
hardness 1.5
parallax 1.2
specular 3.0
}
Note that blended materials such as glass or foliage do not support per-pixel lighting, and so you may safely omit the material parameters for them.
{
material office/glass
{
envmap office/glass
}
}
There are four types of stages: texture envmap lightmap flare. A stage must start with a type declaration, e.g. texture lunaran/pad1_fx, envmap 0, lightmap, flare 1, etc..
Texture stages are the most versatile and complex type, and must always declare a valid texture image, e.g. texture lunaran/pad1_fx. The following listing describes the texture stage directives.
1, e.g. lunaran/computer1, with subsequent frames following in sequence. The frames parameter specifies the number of textures which comprise the animation. The hz parameter specifies the frequency of the effect. Both are required, and must be a positive integer and positive floating point number respectively.src and dest parameters are GL constants, e.g. blend GL_ONE GL_SRC_ALPHA. The default blend function is GL_ONE GL_ONE_MINUS_SRC_ALPHA.r g b are each required, and must each be floating point numbers between 0.0 and 1.0.hz parameter specifies the frequency of the effect. It is required and must be a positive floating point number.hz parameter specifies the speed of the rotation. It is required, and must be a positive floating point number.amp parameter specifies the scale of the stretch, while hz specifies the frequency. Both are required, and must be positive floating point numbers.ceil and floor parameters specify the highest and lowest Z-axis coordinates where blending will occur. At Z coordinates less than floor, the base material texture will appear; at Z coordinates greater than ceil, the stage texture will appear. Linear interpolation is used to blend the two textures at Z coordinates between ceil and floor. Both parameters are required, and must be floating point numbers.intensity parameter specifies the overall amplification of the effect. It is required, and must be between 0.0 and 1.0.Both terrain and dirtmap stages support per-pixel lighting, thus it is possible to create bumpmapped terrain. To do this, declare your terrain stage texture with a material definition prior to the base material.
{
material organics/grass
...
}
{
material organics/dirt
...
{
texture organics/grass
terrain 32.0 128.0
}
}
Environment map stages are used to simulate reflections on metal, water, glass, etc. For convenience, they may be declared with numeric values to take advantage of several built-in effect textures, e.g. envmap 0. Alternatively, a unique texture can also be provided, e.g. envmap envmaps/my_envmap.
Environment map stages do not currently support any unique directives, but do support blend color scroll.s scroll.t, described above. If a color is not provided to the stage definition, Quake2World automatically uses the surface's average static lighting color to shade the environment map.
{
material office/glass
{
envmap office/glass_envmap
blend GL_SRC_ALPHA GL_ONE
color 0.9 0.9 1.0
}
}
Lightmap stages are used to blend in statically computed lighting information. This is typically applied as the last drawn stage, and is useful for shading opaque or mostly opaque stages such as animations. Lightmap stages are declared by simply beginning the stage with the lightmap type name. Lightmap stages do not support any unique directives.
{
material lunaran/computer0
...
{
anim 4 0.3
}
{
lightmap
}
}
Flare stages are used to add flares (coronas) to surfaces such as light fixtures. For convenience, flare stages may reference numeric values to take advantage of several built-in effect textures, e.g. flare 1. Alternatively, a unique texture can also be provided, e.g. flare flares/my_flare.
Flare stages do not currently support any unique directives, but do support color scale.s scale.t described above. If a color is not provided to the stage definition, Quake2World automatically uses the surface's average static lighting color to shade the flare. Either of the scale.s or scale.t directives can be used to influence the size of the flare produced by this stage.
{
material tech/small_light
...
{
flare tech/flare1
scale.s 1.5
}
}
The best way to learn the materials system is to study some of the materials files that come with Quake2World. These are conveniently available in the Subversion repository.
Coming soon.
Developing or modding Quake2World requires an understanding of the c programming language (specifically C99). To modify the rendering system, you should have some OpenGL 2.0 knowledge. The following pages should get you started, but should you run into trouble, come find us in #quetoo on irc.freenode.net.
The Quake2World source code is available via Github. Checkout the source code to a directory you you wish to setup as your working copy:
mkdir ~/Coding
cd ~/Coding
git clone https://github.com/jdolan/quake2world.git
git clone https://github.com/jdolan/quake2world-data.git
Ensure you have the following dependencies:
gcc, autoconf, automake, glib2, libcurl, libsdl, libsdl-image, libsdl-mixer, libtool, physfs
Ubuntu 12.04:
sudo apt-get install autoconf automake libtool libcurl4-openssl-dev \
libphysfs-dev libsdl-image1.2-dev libsdl-mixer1.2-dev check
Fedora 18:
sudo yum -y groupinstall development
sudo yum -y install libcurl-devel libjpeg-devel physfs-devel \
SDL-devel SDL_image-devel SDL_mixer-devel zlib-devel glib2-devel check
Install MacPorts by downloading the latest .dmg file from the MacPorts site. Prerequisites for MacPorts include XCode and X11, and you should have both before proceeding.
Install Autotools, glib2, libsdl_image, libsdl_mixer and physfs through ports:
sudo port -d selfupdate
sudo port install autoconf automake glib2 libtool libsdl_image libsdl_mixer physfs pkgconfig check
With the dependencies installed, compiling Quake2World is very easy. If you've compiled anything that uses Autotools, this will look familiar to you:
libtoolize #on OSX its glibtoolize
autoreconf -i
./configure [--with-tests] [--without-tools] [--without-client]
make -j3
sudo make install
If you also checked out the game data from Git, you may "install" it by simply creating a symlink to it:
ln -s ~/Coding/quake2world-data/target /usr/local/share/quake2world
Otherwise, you will need to install it via rsync:
sudo make rsync-data
And finally, you may run the game:
quake2world
We recommend using Eclipse Helios SR2 for hacking on Quake2World. Newer versions of the Eclipse CDT (e.g. Indigo, Juno, ..) do not index c code very well. Project files and formatting rules for c source code are maintained in Git.
To import your working copy into Eclipse, select Import Existing Projects into Workspace from the File and Import menus, and browse to the trunk folder. Similarly, you can import the Quake2World data working copy into Eclipse as well for convenient editing of GLSL and material files.
You may also wish to install the EGit team provider for Git integration, and the glshaders plugin for GLSL syntax highlighting.
Running and debugging Quake2World through Eclipse is possible and works quite well.
For debugging Quake2World , launch the game in gdb either at the command line, or through Eclipse. Be sure that you start the game in windowed mode so that you can interact with gdb when you reach a break-point.
The Quake2World source code is licensed under the GNU General Public License Version 2.0. Artwork and media are provided under a number of licenses, including GPL, Zlib, MIT, WTFPL, all CC variations, and others that allow us to freely distribute the game.
We are aware that following the DFCW or DFSG would allow Quake2World to be included in free operating systems distribution. However, being completely free as in freedom is less important to us than providing a great game and giving our contributors the freedom to make their own licensing choices.
If you haven't found what you're looking for in our online documentation, the following resources are also available: