Military Forces Quake3 (Alpha Release) Manual
Map Details

Contents

Introduction - aims and intro
Concepts - mapping concepts new to MFQ3
Gensurf - the terrain generator plugin
Terrain entity - terrain texturing
Entities - MFQ3 map-related entities
Conclusion - summary and contact information


Introduction

Developing maps for MFQ3 is a unique and fascinating challenge, both similar and different to mapping for standard Quake3. This section of the manual aims to familiarize you with mapping for MFQ3. If you haven't already done so, I suggest grabbing the latest version of GTKRadiant at www.qeradiant.com.


Concepts

MFQ3 maps are vastly different to normal Quake3 maps. Since the gameplay for MFQ3 is so different to Quake3, mapping requires a different approach to be successful.

When planning a map for MFQ3, think carefully about the gameplay. It is preferable that you've played an existing MFQ3 map in a multiplayer (humans please!) environment, so that you can adjust your mapping to the new gameplay styles. Bear in mind that (for now...) most of your players will be continually moving, as they *are* flying. Nice open spaces make for bad cover and good dogfights; and closed in valleys/ridges make for low-flying covered attacks.

When designing the layout, I recommend that you aim for a 2-team layout (although not necessarily symmetric). 2 (or any multiple thereof) airfields should also work for FFA gameplay as well. Besides that, the layout is pretty much up to you and the type of gameplay you aim to create.


Gensurf

Terrain is the all-important feature which cannot be overlooked. Plan a map that has terrain which is not only as realistic as possible, but also as useful as possible. Try to design the layout so that any line-of-site isn't too long, and so that hills cover bases to prevent too bad an FPS drop. Now onto the specifics of generating the terrain:

Terrain revolves around a plugin for GTKRad/Q3Rad named 'Gensurf' by David Hyde. Before we go any further, go and grab it at the website (some of the versions of GTKRadiant come with Gensurf, check under the Plugins menu). Once it's installed, load it up by selecting Plugins > Gensurf > Ground Surface and take a look around.

Gensurf creates "terrain" for Quake3 (among other FPSs) in a variety of ways, our interest being the bitmap height map method. You give Gensurf a grayscale bitmap, and it translates the whites into the highest points, and the blacks into the lowest points, and gradients correspondingly in between. For example:

2D grayscale bitmap3D Gensurf-created terrain

The image needs to be a grayscale bitmap for Gensurf to use it correctly, and should be of the same proportions as your terrain (ie.: square, or rectangle with sides of ratio 1:2, or whatever you choose). You can direct Gensurf to the program to your bitmap by first selecting Waveform > From bitmap under the General tab, and then clicking on the Browse button under the Bitmap tab. Find and select your bitmap, then hit Open. If a preview doesn't pop up, click on the Preview box to make it, and have a look at your terrain.

Under the General tab, you can add a roughness and a random seed to your terrain if you desire, both pretty self-explanatory. I recommend rather adding a random seed in your image (in the form of blurred noise), so that you can keep some areas perfectly flat for runways.

Under the Extents tab, you can (surprise!) define the extents of your terrain, and thus your map. MFQ31 (Desert Storm)'s extents are Lower-left x=-8192 y=-8192, Upper-right x=-8192 y=8192. I suggest keeping your terrain's extents on the grid lines (ie.: a power of 2, eg.: 1024, 2048, etc.). You can alter the terrain's Divisions, which essentially alters the detail of the terrain. Bear in mind that the higher the detail, the larger the FPS drop (and the higher the compile time). Keep the divisions on the grid lines, too. Unless you want to destroy all performance on almost any machine, keep Use Bezier patches off - they may be useful for normal Quake3 maps, but for terrain the size that MFQ3 needs they are just too slow. Don't play with Snap to Grid or Decimate, except to see their effects on the preview.

Under the Bitmap tab, you can point Gensurf to your terrain bitmap, as well as changing the height of your terrain. By changing the Map color 255 to to, say, 4096, and keeping Map color 0 to to 0, white will be 4096 units above black.

The Fix Points tab alows you to manipulate individual vertices in your terrain map. Not really necessary for MFQ3 mapping... and pretty self explanatory if you must.

Under the final Texture tab, you'll find paths to textures for your terrain. You can enter the path of a texture for the Surface to make the entire terrain one texture, but I don't recommend that, as id Software has graced us with a much more powerful terrain texturing feature. Rather direct the Surface box to the common/terrain shader (if you don't have this shader, get a new version of your map editor). Make sure that the Other box has the path common/caulk in it, otherwise Quake3 will draw ALL surfaces... which is a Bad Thing (tm).

Don't bother with the Steep and Offset options, as you'll be texturing the terrain in a much more effective way.

Press OK and watch the plugin generate the terrain for you.


Terrain entity

When id Software released their Point Release 1.27, they added an interesting feature to Quake3, one which is used in Team Arena, and some custom Quake3 maps. I suggest reading id Software's terrain manual, although it refers to terrain creation for Quake3:Arena or Team Arena, which is different to MFQ3 (the manual comes with my version of GTKRadiant - 1.1TA, otherwise find it at www.qeradiant.com).

Open the included file terreg.zip (that's terrain example), which is a small map (.bsp and .map files) demonstrating both Gensurf terrain and terrain texturing.

Once you've created your terrain mesh, select it, and press n to bring up the Entities box. Enter the key terrain, and the value 1. This tells Quake3 to treat the group of brushes as terrain.

Critical to your terrain is the meta-shader, a new type of shader specifically for texturing a terrain. All standard shader rules apply, and you can find a demonstration meta-shader in the terrain example zip file terreg.zip, inside the .pk3. I suggest you open it up now and take a quick look.

You can texture your terrain with as many textures as you wish (well, up to 255 due to the alphamap below), but for each texture (root shader), you must have a blend texture (blend shader). If you have terreg_0, terreg_1 and terreg_2 as your shaders, then you'll need terreg_0to1, terreg_0to2 and terreg_1to2 as the blend shaders. Note the naming convention "_#" for a root shader, and "_#to#" for a blend shader. Bring up the entities box again, and enter the key layers and the value 3 (or however many root shaders you want to have). Next enter the key shader, and the value as the path of your meta-shader.

Corresponding to the meta-shader must be an alphamap texture. An alphamap is an indexed colour .pcx image file with the same number of colours as root shaders in your meta-shader. The alphamap .pcx defines which textures will go where on the terrain. As an example: the alphamap for MFQ31 looks as follows:

MFQ31 alphamap

The white is the rock texture, and the blues are the two other textures. Make sure your alphamap is of the same proportions as your grayscale bitmap and your terrain (ie.: square, or rectangle with sides of ratio 1:2), as this'll make your life a lot easier. You can look at an example of an alphamap in the terrain example pk3. Now bring up the entities box and enter the key alphamap, and the value as the path of the alphamap and the alphamap image's name (with .pcx at the end).

Tada! You've completed all the steps to create a (hopefully) working piece of alphamapped terrain. You'll want to play around a lot with all of the settings to create a satisfying terrain - expect to re-build your map repeatedly (use FastVis and Vlight if you want to remain sane).


Entities

In order to make MFQ3 maps work better (and in some cases: work at all), there have been a number of changes and additions in regards to map entities. I'll cover them here:

func_explosive
health: integer, damage required to destroy brush(es). Default 200.
count: integer, minimum damage required to do damage to health. Useful to stop cannon destroying buildings. Default 50. 0=invincible.
team: word, either "red" or "blue", assigns building to team for teamplay. Blank for neutral buildings (yellow on RADAR)
score: integer, points (frags) given to team and player who destroy building if they're on the opposite team, and subtracted if they're on the same team.
Allows a brush which can be destroyed after x damage to it. Use it for buildings and destroyable scenery. All func_explosive brushes will currently appear on RADAR (as squares either red, blue or yellow), so keep that in mind. You'll need to playtest your score values to get the correct balance, too.

func_runway
health: integer, damage required to destroy brush(es). Default 200.
count: integer, minimum damage required to do damage to health. Useful to stop cannon destroying buildings. Default invincible.
The only brush (along with the shader surface parameter sky) that won't destroy a 'plane in MFQ3. Make them long enough for fairly easy take-off and landing. For safety's sake, make your runways no higher than 1 unit, as tanks can't drive up a vertical climb any higher than that.

info_player_deathmatch
category: integer, category of vehicle for start point (all if empty). 1=airplane, 2=ground vehicle. 4=helicopter, 8=little quake man (4 and 8 not yet implemented). You can also add start categories, for example: category 5=1+4='planes and helicopters.
If the start is in the air, or above non-runway ground, the player starts with their plane flying in the air. Place the spawns hovering closely of func_runway brushes if you want to have take-off starts (preferable in teamplay), and don't place ground vehicle spawns in the air... Remember to pay careful attention to the direction you point the spawn point in. All of the info_player_deathmatch points above apply to team_CTF_red/bluespawn spawn points for teamplay.

trigger_recharge
Trigger that repears, refuels and rearms your vehicle. Vehicle must be near stationary, and with 0 throttle to trigger the brush. Thus, place it over runways.

trigger_radio
message: string, triggered by the command contact_tower by player. Message key's value is then printed with the string "Tower: " in front of it.
You then need a target to a func_door, trigger_push, or whatever tickles your fancy and you think a tower should be asked about. Standard trigger but only activated by player input. I recommend a wait key when using this trigger, to make it more realistic.


Conclusion

This has been a very brief overview of MFQ3 map creation. If you have any questions, please feel free to email me about this and only this (no map submissions, please!) at abbo@planetquake.com, or you can post a topic in the forums at the MFQ3 website - I'll try and answer all of your questions, provided that they aren't already answered here.

Version: Working draft 1
Date: 21 July 2001
Page: Map Details (5 of 7)
Website: http://www.planetquake.com/mfq3/