Difference between revisions of "Doom Definition File"
(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]] | ||
− | + | However, DDF is much easier to learn than DehackEd, and allows you to | |
− | However, DDF is much easier to learn than | + | do a number of unique things were simply not possible with DehackEd. |
− | do a number of unique things were simply not possible with | ||
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 | + | 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 | + | simple, easily understood commands. |
− | |||
=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> | ||
− | |||
− | + | [[Category:DDF]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
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;