Difference between revisions of "Doom Definition File"

From 3DGE Wiki
Jump to: navigation, search
(Created page with "'''DDF''' stands for '''Doom Definition File''', and is EDGE's answer to DehackEd (a utility that allowed you to alter the gameplay of doom and doom2) However, DDF is much...")
 
Line 1: Line 1:
 
'''DDF''' stands for '''Doom Definition File''', and is EDGE's answer to [[DehackEd]]
 
'''DDF''' stands for '''Doom Definition File''', and is EDGE's answer to [[DehackEd]]
(a utility that allowed you to alter the gameplay of doom and doom2)
+
However, DDF is much easier to learn than DehackEd, and allows you to
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.  
do a number of unique things were simply not possible with dehacked.  
 
  
 
Indeed, DDF has more in common with say, the .CON files that enabled
 
Indeed, DDF has more in common with say, the .CON files that enabled
users to modify the gameplay of Duke Nukem 3D. Unlike dehacked, which
+
users to modify the gameplay of Duke Nukem 3D. Unlike DehackEd, which
 
could be complex and not particularly intuitive, DDF uses fairly
 
could be complex and not particularly intuitive, DDF uses fairly
simple, easily understood commands (although it might seem
+
simple, easily understood commands.
intimidating at first).
 
  
 
=How DDF works=
 
=How DDF works=
Line 48: Line 46:
 
define.
 
define.
 
<BLOCKQUOTE><CODE>
 
<BLOCKQUOTE><CODE>
 
 
param=data1,data2,data3;
 
param=data1,data2,data3;
  
Line 56: Line 53:
 
param=data2;
 
param=data2;
 
param=data3;
 
param=data3;
</CODE>
+
</CODE></BLOCKQUOTE>
  
 
=Datatypes=
 
=Datatypes=
  
<LI>Boolean: can be 'true' or 'false'.</LI>
+
<LI>'''Boolean''': can be 'true' or 'false'.</LI>
<LI>Integer: any whole number.</LI>
+
<LI>'''Integer''': any whole number.</LI>
<LI>Float: any floating-point number, eg 123.45 or -0.017.</LI>
+
<LI>'''Float''': any floating-point number, eg 123.45 or -0.017.</LI>
<LI>Time: a timing value in seconds. Can also be specified in tics,
+
<LI>'''Time:''' a timing value in seconds. Can also be specified in tics,
 
there are 35 tics in a second.
 
there are 35 tics in a second.
 
To specify tics, put a 'T' after the number, eg 35T.
 
To specify tics, put a 'T' after the number, eg 35T.
 
The special value 'MAXT' means an infinite delay. </LI>
 
The special value 'MAXT' means an infinite delay. </LI>
<LI>Percentage: an integer value following by %. Range is 0% to 100%.</LI>
+
<LI>'''Percentage''': an integer value following by %. Range is 0% to 100%.</LI>
<LI>Music: an integer value that will be looked up in PLAYLIST.DDF</LI>
+
<LI>'''Music''': an integer value that will be looked up in PLAYLIST.DDF</LI>
<LI>Sound: a name that will be looked up in SOUNDS.DDF.
+
<LI>'''Sound''': a name that will be looked up in SOUNDS.DDF.
 
The wild card character '?' is handled specially, so 'PODTH?' will
 
The wild card character '?' is handled specially, so 'PODTH?' will
 
match the PODTH1, PODTH2, and PODTH3 entries. When it is time to play
 
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.</LI>
 
an SFX with a wild card, a matching SFX will be played at random.</LI>
<LI>String: a string of characters eg "MAP01: Containment area"</LI>
+
<LI>'''String''': a string of characters eg "MAP01: Containment area"</LI>
 
<LI>LumpName: an eight letter string, referring to something stored in
 
<LI>LumpName: an eight letter string, referring to something stored in
 
the wad datafile.</LI>
 
the wad datafile.</LI>
<LI>Special: a special format only used by that DDF file.</LI>
+
<LI>'''Special''': a special format only used by that DDF file.</LI>
<LI>Flags: a whole series of properties you can add.</LI>
+
<LI>'''Flags''': a whole series of properties you can add.</LI>
<LI>States: a series of sprites, eg the sequence of sprites to display
+
<LI>'''States''': a series of sprites, eg the sequence of sprites to display
 
when something dies.</LI>
 
when something dies.</LI>
<LI>Language Ref: a string that should be looked up in the language
+
<LI>'''Language Ref''': a string that should be looked up in the language
 
DDF file to get the translation.</LI>
 
DDF file to get the translation.</LI>
</UL>
 
  
You will probably find that this doesn't make a whole lot of sense.
+
[[Category:DDF]]
But as you begin to
 
play around with DDF files, it will become less abstract, and you
 
should soon have a handle on things. DDF is actually a very simple
 
concept. You use a plain text file to name an object (be it a weapon,
 
monster, sound, animation etc) that you can then use in the game. Then
 
according to the particular object, you change various values to
 
determine how your object will work in the game.
 

Revision as of 01:56, 10 October 2014

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 say, 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.

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

[name]
param1=data1;
param2=data2;

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.

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.
  • 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.