Introduction
This guide is simply a run down of what you'll need to get your map up and
running with DeGeneration's new features and gameplay. It assumes that you have
knowledge of GTK Radiant and have mapped previously for RTCW or some other Q3
game. If you haven't used GTK Radiant or if you don't have any previous mapping
experience you might want to visit the forums and tutorials over at TRAM Design
http://www.tramdesign.net
We hope you'll find DeGeneration easy to adapt
to. We've tried to include as many prefabs and scripts with the LDR as possible.
It should allow you to copy and paste most of it into your map with little
effort. Our thinking was that this would allow you to take things further,
faster. The potential for creativity is very high as there are so many new
features for you to choose from.
As you read this guide also consider that DeGeneration still contains the base
code for RTCW so you are able to run your RTCW maps with the DG mod. If your map
is up and running with RTCW you don't have to change a thing for it to run under
DG, however if you want to use some of the new mapping features and entities in
DeGeneration you will need to add them to your map and/or script.
You'll need to download the
Level Designer's Kit for the
files included in this tutorial.
Overview of Changes
Degeneration modifies, fixes and adds new entities, extends the ability of
existing scripting commands, adds new scripting commands, console commands and
more. These will no doubt give you options that you've never had before and
allow you to create some very interesting maps that will give you much more
control and flexibility. For a complete list of changes see the
Script
Definitions and Entity Definitions.
Setting up GTK Radiant
The very first thing you need to do is setup GTK Radiant.
Setting up a project
Even GTKRadiant advises against doing this, but if you want to then power to
you! I'm going to assume if you are going to setup a project you know what
you're doing. For any others read the next section.
Mapping from main
All we need to do is put the files where they need to be. It's a simple copy and
paste routine. The default installation for the
Level Designer's Kit is in
your DeGeneration folder.
Getting Started
This part assumes that you already have a map or a test map to use, that you
have RTCW, DG and the Level
Designer's Kit installed. We'll be
going over what you'll need to add to your map and/or script to make it DG
compatible.
Game Manager
Let's start by adding in the game_manager part of your script since its
quick. We've even included a copy of the game_manager from the standard maps for
you to use. (included maps\dg_game_manager.script,
dga_game_manager.script is for an assault style map with only one generator
and dgdm_game_manager.script is for
Deathmatch and Team Deathmatch)
- Open your map and add a script_multiplayer entity if you don't already have one.
- Select the script_multiplayer entity and hit "N" so we can make add some settings.
- Add the key "scriptname" and a value of "game_manager".
- Open the scripts\game_manager.script file included and copy the entire contents of the file into your map's script file.
- Save your script with the same name as your map file and close.NOTE: Your map and script need to have the same name or they won't work. For example mapname.map & mapname.script. The included dg_game_manager.script was written to support two generators and two checkpoints. For a single generator map take a look at dga_game_manager.script.
Dropzone Area
Included there are several dropzone prefab maps with their scripts.
- dg_dropzone_cargoonly_ns - This is the single cargo plane north/south
- dg_dropzone_ew - This is the full dropzone east/west
- dg_dropzone_ew_180 - This is the full dropzone east/west turned 180 degrees
- dg_dropzne_ns - This is the full dropzone north/south
These are for East/West and North/South orientation so that you don't have to
mess with adjusting angles for your map. These maps are standard setup for the
dropzone which is where the part box falls scattering parts everywhere for the
players to pick up. Generally the dropzone is at the center of the map.

Open it up. In it you will see 4 entities:
- dg_dropzone (sets the dropzone area)
- dg_partbox (sets item type, amount of,
radius, etc)
- dg_compassicon (shows dropzone in compass)
- target speaker (plays plane sound which
includes two types of plane sounds and a
muffled sound to play globally)
Let's add the Dropzone to your map.
- Open up the dropzone prefab that best fits your map.
- Select view and then filter to make sure there are no filters being applied.
We want to make sure we get all the entities involved.
- Draw a box around all of the entities in the map, except for the
info_player_start, then go to selection, select and select inside so that
everything is selected.
- Select edit, copy
- Open the destination map, select edit, paste and move the dropzone associated
entities where you want them in your map.
NOTE: Make sure you position the dg_dropzone entity no closer than 64 units to the top of your map. If you do, the parachute might get stuck in the sky and hang there so position your sky so that the script_movers (planes) are centered in the width of the sky brush and make it so that the sky brush is 256 units thick like the picture below.

If you're unsure consult the included prefab. If you don't do this right, players will be able to see the planes hang in mid air while they wait to fly a sortie.
Adjusting the Dropzone Area
You can adjust the size of your dropzone area by adjusting the trigger (not the
origin) of your dg_dropzone entity. The dropbox will drop randomly starting from
anywhere on the trigger's surface. Here are the settings for the dg_dropzone
entity:
"drift" How far to drift while falling, default 0
"angle" Angle of the drift, default 0 (north)
"targetname" Targetname used by dg_dropbox entities
"wait" Time (seconds) a dropbox will wait after alerting
dropzone
Adjusting the Partbox
When the partbox entity is fired you can trigger other things just like the
target_speaker entities you see setup in the prefab map. To take it further, in
the map called Shipment you'll notice that the two bay doors open to allow the
box to fall through. Those doors are triggered by the partbox entity. You can
drop parts, ammo and health packs with this entity by setting the item1, 2
and/or 3 keys. Here are the settings for the dg_dropbox entity:
STARTINVIS - Set to start invisible, use alert/show/hideentity script commands
change its state
NOPARACHUTE - Never attach a parachute, by default the box has a parachute
attached when dropping greater than 256 units
NOWEAPONDAMAGE - Set to never take damage from weapon fire
NOFALLDAMAGE - Set to turn off damage from falling
NOSERVERCONTROL - Set to disable server control of dropbox settings
By default the box takes 1 health damage per unit fallen to a maximum 256
"wait" Time in seconds between respawn, 0 = once only,
default 90 (1.5 mins)
"radius" Maximum radius from origin in x and y which the items
will be launched, default 100
"health" Amount of health the box has, default 100
"target" Can optionally target one or more dg_dropzones to
define area(s) in which to randomly spawn
"targetname" For targeting from other entities or scripting alert/show/hideentity
commands
"item1" Item name 1,2 and 3 to launch out, see notes for
valid item names
"item2"
"item3"
"item1count" Number of item 1, 2 and 3 to launch out, see notes for
valid values
"item2count"
"item3count"
Valid names for items:
"health" Health pack
"ammo" Ammo pack
"gear" DeGeneration Gear item
"battery" DeGeneration Battery item
"fuse" DeGeneration Fuse item
Valid counts for items:
Any number between -50 and 50
If the number is negative, eg -5, between 1 and 5 items will be launched at
random
Dropzone Default Settings
classname dg_dropbox
spawnflags 4 //check the noweapondamage checkbox
item1 gear //sets what item 1 is
item2 battery //sets what item 2 is
item3 fuse //sets what item 3 is
item1count 3 //sets the number of item1’s to drop
item2count 5 //sets the number of item2’s to drop
item3count 7 //sets the number of item3’s to drop
target t1 //targets the dg_dropzone entity
targetname mainpartbox //used by scripting to control partbox
radius 256 //sets the maximum radius the items will bounce
classname dg_dropzone
targetname t1
drift 25 //the drift of the box on the way down
target flyby //targets the target_speaker
classname target_speaker
spawnflags 32 //check the no_pvs checkbox
noise sound/degeneration/plane_flyover1.wav //the default flyover wave file
targetname flyby
classname dg_compassicon
spawnflags 3 //check the axis and allies checkbox
The Generators
Included are generator prefab maps and scripts for Axis/Allies at angles 0, 90,
180 & 270 called dg_generator_allies_0.map, dg_generator_allies_0.script, etc.
where 0 is the angle at which the prefab is set to.
Since the generators are very complex it's highly recommended that you do not
modify any part of the prefab as it includes numerous entities, clip brushes and
triggers among other things.

The generators are built using dg_buildable entities. These entities allow for
you to make buildable items with brushes and/or models and can be used for
numerous applications. For example you could create a buildable barrier that
would block access to a certain area. This barrier could be destroyed with
dynamite or grenades by the other team. You could make a bridge that's only
destructable by an air strike. Maybe you could have a section of stairs in your
map that are in need of repair. For now we will only concentrate on getting
functional generators into your map. Exploring the other possibilities can be
found in the Buildable Tutorial.
Choose your angle
Consider the picture below. This would be considered the front.

The angle setting is based on the left side of the generator so you should pick
your angle based on the chart below:
If you want the front to face 90 degrees choose 180
If you want the front to face 180 degrees choose 270
If you want the front to face 270 degrees choose 0/360
If you want the front to face 0/360 degrees choose 90
Let's do it
To prepare your generator's area, you should have an open space that is at least
900(L) x 900(W) x 448(H) units. This is the minimum area required to place a
generator.
- Open up the dg_generator_team_angle.map that you'd like to use depending on
the team and angle you need to use.
- Make sure you have all filters turned off. Select view and then filter and
make sure there are no checkmarks next to anything; otherwise those things won't
be selected for our next step.
- Draw a box around the entire generator and its setup, then go to selection,
select and select inside so that everything is selected.
- Select edit, copy
- Open the destination map, select edit, paste and move the generator and its
parts where you want them.
- Do this again for the other team's generator (if you're putting two generators
in your map)
NOTE: Keep everything selected until you get it right where you want it. There are too many parts to reselect them again. If by accident you do deselect everything or if you need to move it, we recommend that you delete it and add it again. Otherwise you might cause a problem that will be hard to track down.
The Generator Script
You will notice that each generator prefab map has its own script file. We've
made it easy for you in that all you have to do is copy and paste the script for
the generators right into your script.
Let's open up the script file for the generator prefab you're using. There is a
generator_team_angle.script file to accompany each generator_team_angle.map
file.
Look for the part of the script that starts with "generator_team" (team being
allies or axis depending on the one you're using). Copy that entire section into
your map's script just below the game_manager area that you added earlier.
Now open up the corresponding script file for your other team's generator and do the same thing. Just copy the second generator script to the end of your map's script.
NOTE: If you compile your map you should have working generators (make sure you've included an info_player_start entity so you can spawn!)
Testing your generators
You can test your generators manually by collecting parts or you can run your
map in devmap and use other quicker methods. Here are a couple quick things to
know about testing your generators.
The "give all" console command was altered to give you 3 gears (and an mg42 btw)
to test building your generator. If you just want parts, use the command "give
parts" to give yourself 3 gears or "give mg42" for just an mg42.
BuildableDebugInc, BuildableDebugTarget, BuildableDebug & BuildableDebugHealth
were created to make testing the buildable entity much easier and faster. Keep
in mind that this doesn't only pertain to the generators.
Script example:
The four scripts below will allow you to build the generator effortlessly
without having to get parts. If you add these to your configuration this is what
they'll do:
*F1 - toggles between the buildable going up in 100 health increments or down in
100 health increments. This is the best speed we've found when dealing with
generator, any higher builds too fast.
*F2 - toggles between the axis generator and the Allies generator. For buildable
entities other than generators simply replace targetname.
*F3/F4 - changes generator health value to something specific ranging from
0-10000. F4 changes health upwards and F3 downwards.
*F5 - starts the debugging of the buildable.
//changes from +100/-100 increments
set gdbug+ "BuildableDebugInc 100; echo ^2+100 enabled; set gdbug vstr gdbug-"
set gdbug- "BuildableDebugInc -100; echo ^2-100 enabled; set gdbug vstr gdbug+"
set gdbug "vstr gdbug+"
bind F1 "vstr gdbug"
//toggles axis-allies buildable
set gdbug_axis "BuildableDebugTarget generator_axis; echo ^2Axis generator selected; set gdbug_team vstr gdbug_allies;"
set gdbug_allies "BuildableDebugTarget generator_allies; echo ^2Allies generator selected; set gdbug_team vstr gdbug_axis;"
set gdbug_team "vstr gdbug_axis"
bind F2 "vstr gdbug_team"
//start-stop debugging
set gd_start "BuildableDebug; set gd_state vstr gd_stop"
set gd_stop "BuildableDebug; set gd_state vstr gd_start"
set gd_state "vstr gd_start"
bind F5 "vstr gd_state"
//raise-lower generator health
bind f3 "vstr health30"
bind f4 "vstr health70"
set health00 "BuildableDebugHealth 0;echo ^2Gen @ 0%;bind f4 vstr health10"
set health10 "BuildableDebugHealth 1000;echo ^2Gen @ 10%;bind f3 vstr health00;bind f4 vstr health20"
set health20 "BuildableDebugHealth 2000;echo ^2Gen @ 20%;bind f3 vstr health10;bind f4 vstr health30"
set health30 "BuildableDebugHealth 3000;echo ^2Gen @ 30%;bind f3 vstr health20;bind f4 vstr health40"
set health40 "BuildableDebugHealth 4000;echo ^2Gen @ 40%;bind f3 vstr health30;bind f4 vstr health50"
set health50 "BuildableDebugHealth 5000;echo ^2Gen @ 50%;bind f3 vstr health40;bind f4 vstr health60"
set health60 "BuildableDebugHealth 6000;echo ^2Gen @ 60%;bind f3 vstr health50;bind f4 vstr health70"
set health70 "BuildableDebugHealth 7000;echo ^2Gen @ 70%;bind f3 vstr health60;bind f4 vstr health80"
set health80 "BuildableDebugHealth 8000;echo ^2Gen @ 80%;bind f3 vstr health70;bind f4 vstr health90"
set health90 "BuildableDebugHealth 9000;echo ^2Gen @ 90%;bind f3 vstr health80;bind f4 vstr health100"
set health100 "BuildableDebugHealth 10000;echo ^2Gen @ 100%;bind f3 vstr health90"
Once you've tested your generator's functionality then you're ready to move on
to the next step.
Cameras
You can use cameras for anything you'd like, but in DG we've added this
functionality mostly for the generator destruction sequences. Since these are a
tutorial in their own right we've written a
camera tutorial.
Spawnpoints
The spawnpoints are the same as they are with vanilla wolf with a couple
exceptions. Since there are technically 3 areas for each team to spawn (base,
checkpoint and dropzone) we had to give both mappers and players alike more
control. There are times when playing where you might want to spawn in a
specific area and your choice of area will change as the game's situations
change.
So what we've done was extended the team_wolf_objective entity to make it easier
to switch between spawnpoints. The entity now allows for a targetname key and
that targetname will allow players to choose their spawnpoints via script,
mappers to set their default spawnpoint and more.
Let's do it
Setup your base spawns, where your team will start, like you normally would
using the team_CTF_redspawn and team_CTF_redplayer for Axis while using
team_CTF_bluespawn and team_CTF_blueplayer for the Allies just as you always
have.
Once you've setup the spawns in your base create a team_wolf_objective above
each group of spawns. If you have several small groups within the group just
center the team_wolf_objective between those smaller groups.
Give the team_wolf_objective a key of "targetname" and a value of "spawn_team_generator"
where "team" is either allies or axis. This targetname is what players can use
to trigger spawning in this area via a script or bind. You can find out more
information about doing that in the section called "Testing your spawns".
Then give your team_wolf_objective a key of "description" with a value of "Team
Generator". That's the wording that will show up in the limbo menu for players
to select manually.
Now repeat this process for the other areas such as your checkpoints, dropzone,
etc. Keep in mind that just as it is normally, for the other areas you won't
need to have team_CTF_redplayer and team_CTF_blueplayer. Those are only required
for the initial spawns.
NOTE: team_wolf_objectives work on distance. If you have two groups of spawnpoints make sure that the team_wolf_objective is closer to the group you want to use it.
See below for a list of the proper targetnames to use with your locations and keep in mind if you do not use them exactly as they are written, players will have problems using their scripts and you might have problems starting your map without script errors. It's best to use the same ones so that players who already have scripts setup for use with current DG maps can use yours the same way.
spawn_allies_checkpoint
spawn_drop_zone
spawn_axis_checkpoint
spawn_axis_generator
spawn_allies_generator
Your map's default spawn
If you look in your map's script inside the game_manager section you'll notice
the following two lines.
wm_setspawndefault 1
spawn_allies_generator
wm_setspawndefault 0
spawn_axis_generator
Those lines will set the default spawnpoints for your map. We recommend using
the generator or base spawns as the default for better gameplay, but you're free
to change them as you wish. If you leave the lines out completely the default
spawn will most likely default to the dropzone or the closest spawn available to
the other team's generator/objective. Depending on your map's layout that might not be the
case and spawning might not be predictable.
Vanilla wolf's rule is that the default spawn for your team is the closest
available one to its objective while being furthest away from the initial
spawns. Initial spawns are determined by spawnpoints with a key of "spawnflags"
set to a value of "3". This doesn't give players much control.
Checkpoints
Included is the dg_checkpoint setup. Open up the
dg_checkpoint.map and you'll see a checkpoint, a spawn point and a
team_wolf_objective for each team. Simply copy them into your map where you want
them. Then open up the dg_checkpoint.script file and copy and paste its contents
to the end of your script.
NOTE: You'll have to of course create more spawnpoints so that you can have more spots for players to spawn into your map when the checkpoint is captured.
Take note of the playsoundteam command in the script. They allow you to play
specific voiceovers per team when the checkpoints are captured. You can find
more information about that command in the dg_ldr_script_definitions.html file
included with this LDR.
Paraspawns
They're extremely simple to use. Simply place any spawnpoint above the ground at
least 256 units and the player will automatically spawn with a parachute. That's
it! It's all in the code to trace downwards and determine the player's height.
I would advise setting them up as high as you can. You should factor them into
your map design ahead of time since it can be fairly difficult to compensate for
them later on. We recommend you use Terragen or sky_portals to make your
horizons nice and pretty for the players on the way down.
NOTE: If a players parachute hits something on the way down they can sometimes fall to their death so it's best not to make it overly difficult for them to land on solid ground. Also consider that when a player's feet touch any brush the parachute will disengage. Don't place the paraspawns directly over trees or objects that the parachute would catch on or they might get annoyed playing your map.
Also make sure that you set your paraspawns at least 128 units away from the sky
and/or clip brushes as well as 128 units from each other. Reason for distance
from the sky/clip brushes is that the parachute can spawn inside the sky/clip
brush and the player will be stuck. The reason for distance between the spawns
is that it will just look better.
Testing your spawns
The script below is probably the easiest way to make sure your spawn points are
working properly. Hitting F6 will toggle between all 5 possible spawn areas.
//toggles spawn default
set spawn_alliesg "setspawnpt spawn_allies_generator; echo ^2Spawning: Allies Generator; set spawnpoint vstr spawn_alliesc;"
set spawn_alliesc "setspawnpt spawn_allies_checkpoint; echo ^2Spawning: Allies Checkpoint; set spawnpoint vstr spawn_dropzone;"
set spawn_dropzone "setspawnpt spawn_drop_zone; echo ^2Spawning: Dropzone; set spawnpoint vstr spawn_axisc;"
set spawn_axisc "setspawnpt spawn_axis_checkpoint; echo ^2Spawning: Axis Checkpoint; set spawnpoint vstr spawn_axisg;"
set spawn_axisg "setspawnpt spawn_axis_generator; echo ^2Spawning: Axis Generator; set spawnpoint vstr spawn_alliesg;"
set spawnpoint "vstr spawn_dropzone"
bind f6 "vstr spawnpoint"
Team Doors
Included is a prefab of team doors to
give you an idea of how they work. They will allow you to control which teams can access which areas based on
which team they're on. Typically these are used throughout DG to prevent spawn
camping in a team's base.

NOTE: Remember to use team doors wisely. Only that team can open it so consider its power in terms of gameplay for your map.
There are 3 different entities that utilize the team doors functionality: dg_door_rotating, dg_door, dg_invisible_user. These are exactly the same as func_door_rotating, func_door, and func_invisible_user with two exceptions.
The dg_ versions of each incorporate team door functionality.
The dg_door_rotating now has fixed opening and closing sounds.
NOTE: If you already have a door in your map you don't have to recreate it. Simple open it's door properties and change the classname value to the corresponding entity. Then just add the team setting.
Moveable MG42s
Degeneration has added the ability to assemble, disassemble and move MG42s.
However it's only possible to do this with MG42s that use tripods. Engineers are
the only class that can assemble and disassemble them while it's the only class
that is unable to move them.
NOTE: When placing your MG42s in a map you might want to place it in an area where players pass frequently. This will increase its chances of being used. You may however want to place it in an area where it can be put to good use if left there just in case players don't want to move it.
Deathmatch & Team Deathmatch
There's not much to know about these
two modes, but let's go over what you need to make them work.
Game Manager
A sample of the game_manager section of
the standard Deathmatch scripts is included. You can find it here - dgdm_game_manager.script.
Arena File
You're going to need to specify a new gametype in your arena file so that
it's categorized under the proper listing. In your arena file you'll have to
specify "freedm" for Deathmatch and "teamdm" for Team Deathmatch.
Sample Arena file:
{
map "dgdm_flow"
longname "Flow Deathmatch"
type "freedm teamdm"
timelimit 10
axisRespawnTime 1
alliedRespawnTime 1
}
Spawnpoints
You'll need to have at least one info_player_start spawnpoint just like any
other mode, but all of the other spawnpoints need to be info_player_deathmatch.
Item Placement
There's nothing tricky about item placement, but be aware if you specify a wait
time for your items/health/weapons/ammo/armor then the server settings will not
be able to override them. If you use the wait setting make sure you do it with
good reason.
G_gametype
The g_gametype setting for Deathmatch is 0 and for Team Deathmatch it's 3.
WolfMP is 5 and Stopwatch is 6.
Conclusion
Hopefully this guide has made it easy for you to get started making maps for
DeGeneration. If you have questions or issues please drop by TRAM Design (
www.tramdesign.net ) and/or the forums at
http://www.tramdesign.net/cgi-bin/ultimatebb.cgi
Copyright © Tram design - All Rights Reserved Legal Notices