A ddf file is a simple text file
that describes an object.
Comments: Anything enclosed with
{ and } are comments. They are ignored by the parser. eg
{ This is ignored. }
Spaces are ignored.
Case is ignored.
The underscore '_' is converted to
a space.
Anything between quotes '"' is parsed
as is eg "MAP01: Containment area"
The main structure to define an object
is
[name]
param1=data1;
param2=data2;
...
The name of the object is the name
used to refer to it. Some ddf files' names are ignored. Param1
and data1 etc are dependent on what type of object you are trying to define.
Put a semicolon after each define.
param=data1,data2,data3;
is the same as
param=data1;
param=data2;
param=data3;
Datatypes:
Boolean: can be 'true' or 'false'.
Integer: any whole number.
Fixed: any number between -32768
and 32767. Precision is 0.000015.
Time:
Music: a six letter string. 'D_'
will be added to the front. ie 'INTER' to 'D_INTER'
SFX: a six letter string. 'DS' will
be added to the front. ie 'PISTOL' to 'DSPISTOL'
String: a string of characters eg
"MAP01: Containment area"
LumpName: an eight letter string,
refering to something stored in the wad datafile.
Special: a special format only used
by that ddf file.
Flags: a whole series of properties
you can add.
States:
Language Ref:
Stored in anims.ddf. Lump is
DDFANIM. Name is ignored.
Command |
Type |
Explanation |
FIRST |
LumpName |
The first texture in the animation. |
LAST |
LumpName |
The last texture in the animation. |
TICS |
Time |
The time to display each frame |
ISTEXTURE |
Integer |
If it is 0, this animation is a
floor texture. Otherwise it is a wall texture. |
Stored in attacks.ddf. Lump
is DDFATK. Name gives a name to the attack, and must be unique.
Command |
Type |
Explanation |
ATTACKTYPE |
Special |
The type of attack this is, eg close
combat, projectile etc |
ATTACK_SPECIAL |
Flags |
Flags for this attack. |
ACCURACY |
Fixed |
How accurate this attack is. 1 is
100%, 0 is 0%. |
ATTACK_HEIGHT |
Fixed |
How high above the attacking creature
the attack is. If it is 0, the attack will com from the creature's
foot, so it is generally a good idea to make it bigger. Almost all
DOOM creatures have this as 32. |
HEIGHT |
Fixed |
The height of the projectile launched. |
RADIUS |
Fixed |
The radius of the spawned object. |
SPEED |
Fixed |
How fast the spawned object moves. |
FAST |
Fixed |
Will be multiplied to speed in nightmare
and -fastparm |
SHOTCOUNT |
Integer |
Number of shots fired for shot weapons. |
X_OFFSET |
Integer |
Normally attacks are spawned from
the centre of the attacking creature. X_OFFSET moves it right, and Y_OFFSET
moves it towards relative to the target. |
Y_OFFSET |
Integer |
See X_OFFSET |
DAMAGE |
Integer |
How much damage this attack delivers. |
DAMAGE_MULTI |
Integer |
If you don't want this attack to
do the same amount of damage every time, use DAMAGE_MULTI and DAMAGE_RANGE.
The damage will be calculated by a Random number from 1 - DAMAGE_RANGE
multiplied by DAMAGE_MULTI. Minimum damage is DAMAGE_MULTI, maximum
is DAMAGE_RANGE times DAMAGE_MULTI. |
DAMAGE_RANGE |
Integer |
See DAMAGE_MULTI. |
EXPLOD_DAMAGE |
Integer |
See damage, however EXPLOD_DAMAGE
is delivered to all creatures within the explosion. |
EXPLOD_DAMAGEMULTI |
Integer |
See DAMAGE_MULTI, however all creatures
within the explosion willl be damaged. |
EXPLOD_DAMAGERANGE |
Integer |
See DAMAGE_RANGE, however all creatures
within the explosion willl be damaged. |
ATTACKRANGE |
Fixed |
The target must be inside this range,
or the attacking creature won't bother shooting, but attempt to get closer. |
TOO_CLOSE_RANGE |
Integer |
The attacking creature won't use
this attack, if the target is inside this range. Used for if this
is a ranged attack and the creature should close for a close combat attack. |
NO_TRACE_CHANCE |
Integer |
Specifies the chance that this homing
missile will not lock onto target. 0 is lock every time, 100 is fail
every time. |
KEEP_FIRING_CHANCE |
Integer |
Specifies the chance that a creature
using this attack will keep firing as opposed to finding a better spot/moving
etc. |
ASSAULT_SPEED |
Integer |
Used for SKULLFLY attacks this is
the speed at which the skull will fly. |
PROJECTILE_SPECIAL |
Flags |
Flags that should be added to the
missile. |
TRANSLUCENCY |
Fixed |
How translucent the missile is.
0 is invisible, 1 is completely visible. |
LAUNCH_SOUND |
SFX |
|
ATTEMPT_SOUND |
SFX |
|
ENGAGED_SOUND |
SFX |
|
ACTIVE_SOUND |
SFX |
|
DEATH_SOUND |
SFX |
|
STATES |
States |
|
DEATHSTATES |
States |
|
ATTACKTYPE |
DESCRIPTION |
PROJECTILE |
Launch a single missile at the target,
eg Rockets, Imp Fireballs. |
SPAWNER |
Launch a creature at the target,
eg Pain Elementals |
TRIPLE_SPAWNER |
Launch three creatures, eg Pain
Elemental death. |
FIXED_SPREADER |
Launches missiles in an ordered
way like the Mancubus |
RANDOM_SPREADER |
Launches a spread of missiles randomly |
SHOT |
Fires a bullet weapon, eg pistol,
shotgun, chaingun. |
TRACKER |
Like the arch-vile attack. |
CLOSECOMBAT |
Any close combat attack, like the
demon's bite, the baron's scratch, or the chainsaw. |
SKULLFLY |
For an object that launches itself
at the target. |
SMARTPROJECTILE |
Launch a missile at the target on
an intercept course based on the target's current speed and direction. |
SPRAY |
Instantly do damage to every monster
in sight. Like the BFG. |
ATTACK_SPECIAL |
DESCRIPTION |
SMOKING_TRACER |
Homing missile with a line of smoke
behind it. |
REMOVE_FAILED_SPAWN |
For SPAWNER attacktypes, if the
spawned object doesn't fit it will be removed. |
PRESTEP_SPAWN |
Move a SPAWNER object slightly forward
so it is not spawned on top of it's master. |
NEED_SIGHT |
The attack will only take place
if the attacker can see it's target. |
FACE_TARGET |
The attacker will be turned to face
it's target. |
Stored in default.ldf. Lump
is DDFLANG. Name is the language.
The language ddf file is different
in that there are no set commands. Each line defines a string.
eg.
MAP01Desc="Level 1: entryway";
Defines the string "Level 1: entryway"
as MAP01Desc. Then MAP01Desc can be used.
If no string exists for the wanted
language, it will be found under [Default]
Stored in mission.ddf. Lump
is DDFGAME. Name is the episode name.
This defines the intermission screens
and title screens.
Command |
Type |
Description |
BACKGROUND |
LumpName |
This is the background picture for
intermissions. |
SPLAT |
LumpName |
This is the picture placed over
levels that are finished. |
YAH1 |
LumpName |
This is the picture placed over
the level you are at. (You are Here) |
YAH2 |
LumpName |
If YAH1 doesn't fit on the page,
this pic will be used instead. |
PERCENT_SOUND |
SFX |
Sound made while counting kills,
items and secrets etc. |
DONE_SOUND |
SFX |
Sound made when the counting stops. |
NEXTMAP_SOUND |
SFX |
Sound made before loading the next
map. |
MUSIC |
Music |
The music to play during this intermission. |
ANIM |
Special |
An animation to play. |
MAP |
Special |
Specifies where to place SPLATs
for levels completed. |
FIRSTMAP |
LumpName |
Specifies the first level in this
mission. |
GRAPHIC_NAME |
LumpName |
Specifies a picture of the mission's
name to go into the start new game menu. |
TITLE_MUSIC |
Music |
Some music to play when the TITLE_PIC
is displayed. Note that the mission is assumed not to exist if this
music does not exist. |
TITLE_PIC |
LumpName |
Specifies a picture to add to the
sequence when the game starts. |
TITLE_TIME |
Time |
Specifies how long to leave that
picture displayed before changing it. |
ANIM Command:
A frame in the animation is specified
by:
picture:tics:x:y
where picture is the name of the graphic,
tics is how long to wait before the next frame, and x and y are the screen
coordinates to place the animation. The screen coordinates are for
a 320x200 screen can will be scaled automatically.
Use #END to end the animation and
loop back to the start.
ANIM=WIA00000:3:224:104,WIA00001:3:224:104,WIA00002:3:224:104,#END;
MAP Command:
Specifies the position to draw splats
on maps:
mapname:x:y
where mapname is the name of the map,
and x and y are the screen coordinates to place the splat. Also used
for the You are Here picture.
Stored in levels.ddf. Lump
is DDFLEVL. Name is the level name eg MAP01.
Command |
Type |
Description |
LUMPNAME |
LumpName |
The lump to load the level from. |
DESCRIPTION |
LanguageRef |
A description of the level for the
automap |
GRAPHIC_NAME |
LumpName |
A picture of the level's name for
the intermissions. |
SKY_TEXTURE |
LumpName |
The texture for the sky for this
level. |
MUSIC_NAME |
Music |
The level's background music. |
SURROUND_FLAT |
LumpName |
The floor texture to be drawn as
a border for the level. |
SPECIAL |
Flags |
See below |
NEXT_MAP |
String |
The level to go to when this level
is finished. |
SECRET_MAP |
String |
The level to go to if the secret
exit is found. |
AUTOTAG |
Integer |
When the level is started, find
a linedef with this tag and push it. See MAP07 |
PARTIME |
Time |
The par time for this level |
EPISODE |
String |
The intermission for this level. |
ENDTEXT |
LanguageRef |
Some text to display when the levels
is finished. |
ENDTEXTBACKGROUND |
LumpName |
A picture to display behind the
text. |
ENDTEXTFLAT |
LumpName |
A floor texture to be drawn behind
the text. Don't use ENDTEXTBACKGROUND and ENDTEXTFLAT at the same
time. |
ENDTEXTSPEED |
Numeric |
How fast the text should be written
to the screen. |
ENDTEXTWAIT |
Numeric |
How long to wait after writing all
the text. |
ENDPIC |
LumpName |
Picture to draw after all text has
been written. |
ENDPICWAIT |
Time |
Time to wait on each picture. |
ENDCAST |
Boolean |
Show the cast list. |
ENDBUNNY |
Boolean |
Show the bunny. |
ENDMUSIC |
Music |
Music to play while writing text/drawing
pics. |
PRE* |
|
For every END function there is
a corresponding PRE function. The only difference is that PRE will
be done before a level, but END is done after a level. |
SPECIAL Flags:
Name |
Description |
NO_JUMPING |
Disable jumping for this level. |
NO_FREELOOK |
Disable look up/look down for this
level. |
NO_TRANSLUCENCY |
Disable translucency for this level. |
NO_CHEATS |
Disable cheating for this level. |
ITEM_RESPAWN |
Turns item respawning on for this
level. |
NO_ITEM_RESPAWN |
Disables item respawning for this
level. |
FAST_MONSTERS |
Enable fast monsters for this level. |
RESURRECT_RESPAWN |
Sets monsters to respawn by resurrecting
themselves. |
TELEPORT_RESPAWN |
Sets monsters to respawn by teleporting
back to their start location. |
RESPAWN |
Turns respawning on |
NO_RESPAWN |
Turns respawning off |
STRETCH_SKY |
Stretches the sky for freelook. |
NORMAL_SKY |
Turns off stretching the sky for
freelook. |
DISABLE_TRUE3D |
Disables True3dGamplay for this
level. |
NO_ENEMY_STOMP |
Makes monsters unable to telefrag. |
NORMAL_BLOOD |
Turns extra blood off for this level. |
Much of the linedef/sector ddf code
is the same so they will both be described here.
Stored in lines.ddf and sectors.ddf.
Lumps are DDFLINE and DDFSECT. Names are ignored.
* |
Command |
Type |
Description |
L |
TRIGGER |
Numeric |
The number to use as the special
linedef type in your map editor. |
S |
NUMBER |
Numeric |
The number to use as the special
sector type in your map editor. |
L |
NEWTRIGGER |
Numeric |
When the line is activated, the
special type is changed to this number. This is so you can do things
like a switch you push once to turn on, push again to turn off. |
L |
TYPE |
Special |
Specifies how the line is activated.
Can be "WALK", "PUSH" or "SHOOT" |
L |
ACTIVATORS |
Special |
Specifies who can activate the line.
Can be "PLAYER", "MONSTER", or "MISSILE" |
L |
KEYS |
Special |
Specifies what key cards are needed
to activated. Can be "BLUE_CARD", "RED_CARD", "YELLOW_CARD", "BLUE_SKULL",
"RED_SKULL", "YELLOW_SKULL", "REQUIRES_ALL" If you specify BLUE_CARD
and RED_CARD a player with either can activate. Use '+' to specify
that a player MUST have that card to activate, eg "+YELLOW_CARD,+RED_CARD"
for both the red card and yellow card required. |
L |
FAILED_MESSAGE |
LanguageRef |
If the player doesn't have the right
keys and trys to activate the line, this message is displayed. |
L |
COUNT |
Numeric |
The number of times this line can
be activated. |
L |
SECSPECIAL |
Numeric |
The special type to change the tagged
sector to. |
|
CRUSH |
Boolean |
If TRUE then sector movement will
crush and kill creatures. If FALSE then sector will return instead
of crushing. |
|
FLOOR_TYPE |
Special |
Specifies how the floor moves. |
|
FLOOR_SPEED_UP |
Fixed |
Specifies how fast the floor moves
up. |
|
FLOOR_SPEED_DOWN |
Fixed |
Specifies how fast the floor moves
down. |
|
FLOOR_DEST_REF |
Special |
Specifies where the floor moves
to. eg CEILING, NEXTNEIGHBOUR etc.. |
|
FLOOR_DEST_OFFSET |
Fixed |
Specifies an offset to where the
floor moves to, eg NEXTNEIGHBOUR + 4. |
|
FLOOR_TEXTURE |
String |
Specifies what texture to change
to. In addition, if FLOOR_TEXTURE is '-' the floor texture will change
to a surrounding sector's floor texture. If it is '+' the floor texture
will change to the sector on the front side of the activating line's floor
etxture. |
|
FLOOR_PAUSE_TIME |
Time |
The time to wait at the floor's
destination befor returning. |
|
FLOOR_WAIT_TIME |
Time |
The time to wait before moving at
all. |
|
FLOOR_SFX_START |
SFX |
The sound to make when the floor
starts moving. |
|
FLOOR_SFX_UP |
SFX |
The sound to make while the floor
is moving up. Should be a looping sound. |
|
FLOOR_SFX_DOWN |
SFX |
The sound to make while the floor
is moving down. Should be a looping sound. |
|
FLOOR_SFX_STOP |
SFX |
The sound to make when the floor
stops moving. |
|
CEILING_* |
|
For every floor function there is
a ceiling function that does exactly the same, but to the ceiling instead
of the floor. |
|
DONUT |
Boolean |
Command to keep compatibility with
DOOM. Centre moves down, outside loop moves up and changes texture. |
|
DONUT_IN_SFX |
SFX |
The sound to make while the central
pillar is moving. |
|
DONUT_IN_SFX_STOP |
SFX |
The sound to make when the central
pillar stops moving. |
|
DONUT_OUT_SFX |
SFX |
The sound to make while the outside
loop is moving. |
|
DONUT_OUT_SFX_STOP |
SFX |
The sound to make when the outside
loop stops. |
|
TELEPORT |
Boolean |
Teleport the activating thing to
the tagged sector. |
|
TELEPORT_DELAY |
Time |
The time before an object can start
moving again after a teleport. |
|
TELEIN_EFFECTOBJ |
String |
The object to make where the object
teleported from. |
|
TELEOUT_EFFECTOBJ |
String |
The object to make where the object
lands. |
|
LIGHT_TYPE |
Special |
Specifies what type of light it
is. (Glowing, flashing, flickering) |
|
LIGHT_LEVEL |
Integer |
Specifies the light level to change
to |
|
LIGHT_DARK_TIME |
Time |
Specifies how long the light is
dark/gets dark for. |
|
LIGHT_BRIGHT_TIME |
Time |
Specifies how long the light is
bright/gets bright for. |
|
LIGHT_PROBABILITY |
Integer |
Specifies the probability of flickering
for flickering LIGHT_TYPEs. |
|
LIGHT_SYNC |
Time |
Used for getting lights to flash
in sync. |
|
EXIT |
Special |
Activating this line exits the level.
Can be "EXIT" for a normal exit or "SECRET" to exit to the secret level. |
L |
SCROLL |
Special |
The wall texture should scroll in
this direction. "UP"/"DOWN"/"LEFT"/"RIGHT" |
L |
SCROLLING_SPEED |
Fixed |
How fast the wall scrolls. |
|
COLOURMAPLUMP |
LumpName |
Specifies the colourmap to use. |
|
COLOURMAP |
Numeric |
Specifies which colourmap to use. |
|
GRAVITY |
Numeric |
Specifies the gravity in a sector. |
|
FRICTION |
Fixed |
Specifies the sector's friction. |
S |
VISCOSITY |
Fixed |
Specifies the sector's viscosity |
|
SOUND |
SFX |
Plays an ambient sound in a sector. |
|
MUSIC |
Music |
Changes the music. |
L |
AUTO |
Boolean |
Triggers this line automatically
at level start. |
L |
SINGLESIDED |
Boolean |
Single sided lines can only be activated
from the front. |
L |
LUMPEXISTS |
String |
This line can only be activated
if the specified lump exists. Use "!" to specify that the line can
only be activated if the specified lump does not exist. eg "!MAP01" |
S |
SECRET |
Boolean |
This sector is counted as part of
the secret percentage. |
S |
DAMAGE |
Integer |
How much this sector damages the
player. |
S |
DAMAGETIME |
Time |
Specifies that DAMAGE is dealt every
DAMAGETIME tics. |
* L means linedefs only. S
means sectors only.
|