Doom Definition File

From 3DGE Wiki
Jump to: navigation, search

DDF stands for Doom Definition File, and is EDGE's answer to DehackEd. However, DDF is much easier to learn than DehackEd, and allows you to do a number of unique things were simply not possible with DehackEd.

Indeed, DDF has more in common with the .CON files that enabled users to modify the gameplay of Duke Nukem 3D. Unlike DehackEd, which could be complex and not particularly intuitive, DDF uses fairly simple, easily understood commands.

Getting Started

To get started, use the SIDEBAR to the left of this Wiki (click on DDF to expand each DDF entry), or scroll to the bottom of this page to find the DDF Template class, which acts much the same!

DDF files are stored in the "doom_ddf" folder, and can be opened and modified right away.

How DDF works

A DDF file is a simple text file that describes an object.

Comments: Anything after // are comments. They are ignored by the parser.
eg // This is ignored.

Spaces are ignored. So this means that calling your monster [EVIL MONSTER] is exactly the same as calling it [EVILMONSTER] since the DDF parser will ignore the space. The underscore '_' character is converted to a space. So you'd use EVIL_MONSTER if you wanted the DDF parser to recognise a monster called EVIL MONSTER.

Upper and lower case is ignored (so writing SHOTGUN is the same as writing shotgun).

Anything between quotes '"' is parsed as is eg "MAP01: Containment area". This means that spaces and upper and lower case characters will be recognized. This is especially important for names of lumps or textures, since any '_' characters would normally be converted to spaces and 3DGE would complain about a missing lump/texture.

The main structure to define an object is


The name of the object is the name used to refer to it. Names should be unique, since when there are two entries with the same the later one will override the earlier one. In some DDF files the 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.


is the same as

param=data1; param=data2; param=data3;


  • Boolean: can be 'true' or 'false'.
  • Integer: any whole number.
  • Float: any floating-point number, eg 123.45 or -0.017.
  • Time: a timing value in seconds. Can also be specified in tics, there are 35 tics in a second. To specify tics, put a 'T' after the number, eg 35T. The special value 'MAXT' means an infinite delay.
  • Percentage: an integer value following by %. Range is 0% to 100%.
  • Music: an integer value that will be looked up in PLAYLIST.DDF
  • Sound: a name that will be looked up in SOUNDS.DDF. The wild card character '?' is handled specially, so 'PODTH?' will match the PODTH1, PODTH2, and PODTH3 entries. When it is time to play an SFX with a wild card, a matching SFX will be played at random.
  • String: a string of characters eg "MAP01: Containment area"
  • LumpName: an eight letter string, referring 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: a series of sprites, eg the sequence of sprites to display when something dies.
  • Language Ref: a string that should be looked up in the language DDF file to get the translation.
  • Doom Definition Files