<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://3dfxdev.net/edgewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=UsernameAK</id>
		<title>3DGE Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://3dfxdev.net/edgewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=UsernameAK"/>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=Special:Contributions/UsernameAK"/>
		<updated>2026-06-06T10:06:03Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.0</generator>

	<entry>
		<id>https://3dfxdev.net/edgewiki/index.php?title=MD2&amp;diff=405</id>
		<title>MD2</title>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=MD2&amp;diff=405"/>
				<updated>2016-04-29T08:52:56Z</updated>
		
		<summary type="html">&lt;p&gt;UsernameAK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MD2 model file format was introduced by id Software when releasing [[Quake 2]] in November 1997. It's a file format quite simple to use and understand. MD2 models' characteristics are these:&lt;br /&gt;
&lt;br /&gt;
* Model's geometric data (triangles);&lt;br /&gt;
* Frame-by-frame animations;&lt;br /&gt;
* Structured data for drawing the model using GL_TRIANGLE_FAN and GL_TRIANGLE_STRIP primitives (called “OpenGL commands”).&lt;br /&gt;
* Model's texture is in a separate file. One MD2 model can have only one texture at the same time.&lt;br /&gt;
&lt;br /&gt;
MD2 model file's extension is “md2”. A MD2 file is a binary file divided in two part: the header dans the data. The header contains all information needed to use and manipulate the data.&lt;br /&gt;
&lt;br /&gt;
=Constants=&lt;br /&gt;
&lt;br /&gt;
Here are some constant values defining maximal dimensions, so do not exceed these amounts, or 3DGE will fail to render the model:&lt;br /&gt;
&lt;br /&gt;
* Maximum number of triangles: 4096&lt;br /&gt;
* Maximum number of vertices: 2048&lt;br /&gt;
* Maximum number of texture coordinates: 2048&lt;br /&gt;
* Maximum number of frames: 512&lt;br /&gt;
* Maximum number of skins: 32&lt;br /&gt;
* Number of precalculated normal vectors: 162&lt;br /&gt;
&lt;br /&gt;
=Use in 3DGE=&lt;br /&gt;
Both ports can utilize MD2, but there are a few key additions that become helpful, as the engine supports higher-resolution/color textures, &lt;br /&gt;
==Features==&lt;br /&gt;
EDGE, and by extension, 3DGE, can load MD2s from either a LUMP in the wadfile, or externally as a plain file. While Quake 2 imposes harsh limits on the format, 3DGE enhances it beyond what was normally capable:&lt;br /&gt;
&lt;br /&gt;
* Ability to use PNG, JPG, and TGA file formats for skins (original PCX is not supported)&lt;br /&gt;
* Able to define up to 9 skins-per-model and switch them out on-the-fly through DDF&lt;br /&gt;
* Able to use animations as either frame number or reference name, or both if desired&lt;br /&gt;
* Can control the bias, aspect, scale, and placement of the model, both for environment and HUD (weapons)&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
While those features are handy, there are currently limitations of the format:&lt;br /&gt;
&lt;br /&gt;
* No linear interpolation, so the &amp;quot;jelly-like&amp;quot; vertex animation carries over from Quake 2&lt;br /&gt;
* No internal shader system, so the models are lit uniformly, even in the presence of [[dynamic lights]]&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
===Model===&lt;br /&gt;
Any state frame can specify a model by using the special '@123' or '@framename' syntax for the frame (instead of a letter).  The number is the absolute frame number in the MD2 model, beginning at 1, or you can use the frame name.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;TABLE WIDTH=95% BORDER=1 CELLSPACING=0 CELLPADDING=3 FRAME=&amp;quot;box&amp;quot; BGCOLOR=&amp;quot;#C2D6D6&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;TR&amp;gt;&amp;lt;TD&amp;gt;&lt;br /&gt;
&amp;lt;FONT SIZE=2&amp;gt;&lt;br /&gt;
STATES(IDLE)=TROO:@5:7:NORMAL:NOTHING;  // the 5th frame&lt;br /&gt;
&lt;br /&gt;
STATES(IDLE)=TROO:@run3:7:NORMAL:NOTHING;  // frame called &amp;quot;run3&amp;quot;&lt;br /&gt;
&amp;lt;/FONT&amp;gt;&lt;br /&gt;
&amp;lt;/TD&amp;gt;&amp;lt;/TR&amp;gt;&lt;br /&gt;
&amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #f2e0ce; border: 2px solid #bfb1a3; padding: 0.6em; margin-top: 0.8em;&amp;quot;&amp;gt;The model itself must be stored in a wad, and the lump name is the sprite base (&amp;quot;TROO&amp;quot;) plus &amp;quot;MD2&amp;quot; on the end --&amp;gt; &amp;quot;TROOMD2&amp;quot;.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Skins===&lt;br /&gt;
The skin of the model is the sprite base (&amp;quot;TROO&amp;quot;) plus &amp;quot;SKN1&amp;quot; on the end --&amp;gt; &amp;quot;TROOSKN1&amp;quot;.  There should be a definition for it in IMAGES.DDF using the sprite namespace --&amp;gt; [spr:TROOSKN1].&lt;br /&gt;
&lt;br /&gt;
Normal and specular maps can be applied to skins. The normal/spec map name id the sprite base (&amp;quot;TROO&amp;quot;) plus &amp;quot;NRM&amp;quot; or &amp;quot;SPC&amp;quot; respectively on the end --&amp;gt; &amp;quot;TROONRM1&amp;quot; / &amp;quot;TROOSPC1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #f2e0ce; border: 2px solid #bfb1a3; padding: 0.6em; margin-top: 0.8em;&amp;quot;&amp;gt;Other skins can be used.  The command &amp;quot;MODEL_SKIN=3&amp;quot; in a thing or weapon definition will use the third skin --&amp;gt; &amp;quot;TROOSKN3&amp;quot;. Up to nine skins can currently be used (1 to 9).  The skin can also be changed dynamically by using the SET_SKIN(##) action in the state frames.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=USAGE=&lt;br /&gt;
Below describes the commands needed to manipulate and use the models in the game engine via DDF:&lt;br /&gt;
&lt;br /&gt;
===THINGS.DDF===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; BGCOLOR=&amp;quot;#C8F4FF&amp;quot;&lt;br /&gt;
! COMMAND&lt;br /&gt;
! EXPLANATION&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_SCALE&lt;br /&gt;
| Draw the model bigger, for example: MODEL_SCALE=1.5;&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_ASPECT&lt;br /&gt;
| make the model fatter/skinnier: MODEL_ASPECT=0.7;&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_BIAS&lt;br /&gt;
| add this to every z coordinate: MODEL_BIAS=24.0; Useful if you don't want to position from Quake 2's original 24 units in an external editor.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WEAPONS.DDF===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; BGCOLOR=&amp;quot;#C8F4FF&amp;quot;&lt;br /&gt;
! COMMAND&lt;br /&gt;
! EXPLANATION&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_ASPECT&lt;br /&gt;
| make the weapon fatter/skinnier&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_BIAS&lt;br /&gt;
| add this to every z coordinate&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_FORWARD&lt;br /&gt;
| move the weapon forward/backward: MODEL_FORWARD=2.2;&lt;br /&gt;
|-&lt;br /&gt;
| MODEL_SIDE&lt;br /&gt;
| move the weapon right/left: MODEL_SIDE=-3.5;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #f2e0ce; border: 2px solid #bfb1a3; padding: 0.6em; margin-top: 0.8em;&amp;quot;&amp;gt;Note: there is no MODEL_SCALE command for WEAPONS.DDF (scaling has no effect because the model is drawn at the camera point). Changing MODEL_FORWARD, MODEL_SIDE and/or MODEL_BIAS can have a huge impact on the apparent size of the weapon.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also see [[MD3]] and [[MD5]].&lt;/div&gt;</summary>
		<author><name>UsernameAK</name></author>	</entry>

	<entry>
		<id>https://3dfxdev.net/edgewiki/index.php?title=Next_version&amp;diff=404</id>
		<title>Next version</title>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=Next_version&amp;diff=404"/>
				<updated>2016-04-29T08:47:56Z</updated>
		
		<summary type="html">&lt;p&gt;UsernameAK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3DGE has tons of new features that are works-in-progress. Some of them have been listen elsewhere as completed or not: this is the definitive sheet.&lt;br /&gt;
&lt;br /&gt;
'''Items marked in BOLD indicate in-progress or finished'''!&lt;br /&gt;
&lt;br /&gt;
=2.0x codebase=&lt;br /&gt;
The following features will be completed before or at the end of the 2.0x lifecycle:&lt;br /&gt;
&lt;br /&gt;
*: Completed Interpolation (heights, projectiles, etc)&lt;br /&gt;
&lt;br /&gt;
*: MD5 support completed (skins, animation). '''FINISHED'''&lt;br /&gt;
&lt;br /&gt;
*: DDF addition for weapons (Z_Aspect) ('''FINISHED'''), support for partial reloading&lt;br /&gt;
&lt;br /&gt;
*: Splitscreen mode fully functional&lt;br /&gt;
&lt;br /&gt;
*: MD2, MD3, MDL, and MD5 models support normal and specular maps.&lt;br /&gt;
&lt;br /&gt;
=2.1 codebase=&lt;br /&gt;
&lt;br /&gt;
Beginning with 2.1.0, 3DGE will get a massive rewrite:&lt;br /&gt;
&lt;br /&gt;
*: OpenGL 2x rewrite (if extensions are detected, otherwise the engine will fall back to old 1.1 compliance). '''IN PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
*: Total Zone memory manager rewrite (more speed improvements). '''FINISHED'''&lt;br /&gt;
&lt;br /&gt;
*: Textures will support normal, bump, and specular maps. '''IN PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
*: Heavily revamped Dynamic Lighting and Shadowing code (true directional light and true dynamic shadows)&lt;br /&gt;
&lt;br /&gt;
*: Sky subsystem rewritten from Quake 3 for Q3 BSPs, normal sky code will remain for DOOM maps.&lt;br /&gt;
&lt;br /&gt;
*: [http://opl3.cozendey.com/ OPL integration] for music; replaces fudged SYSTEM music player under Windows. '''FINISHED'''&lt;br /&gt;
&lt;br /&gt;
*: SPLINE library replaces all camera code and new script files for them will be added.&lt;br /&gt;
&lt;br /&gt;
*: Environment maps for surfaces (like Half-Life)&lt;br /&gt;
&lt;br /&gt;
*: True Slopes using vertex height calculation&lt;br /&gt;
&lt;br /&gt;
*: Polyobject support.&lt;br /&gt;
&lt;br /&gt;
*: Inventory System&lt;br /&gt;
&lt;br /&gt;
*: Better RTS functions (some adapted from FraggleScript)&lt;br /&gt;
&lt;br /&gt;
*: FraggleScript support (limited*)&lt;br /&gt;
&lt;br /&gt;
*: ROQ library for cinematics, and render-to-texture (skins, textures) '''IN PROGRESS'''&lt;br /&gt;
&lt;br /&gt;
*: Quake 3 BSP Support (loading, rendering)&lt;/div&gt;</summary>
		<author><name>UsernameAK</name></author>	</entry>

	<entry>
		<id>https://3dfxdev.net/edgewiki/index.php?title=Next_version&amp;diff=403</id>
		<title>Next version</title>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=Next_version&amp;diff=403"/>
				<updated>2016-04-29T08:47:22Z</updated>
		
		<summary type="html">&lt;p&gt;UsernameAK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;3DGE has tons of new features that are works-in-progress. Some of them have been listen elsewhere as completed or not: this is the definitive sheet.&lt;br /&gt;
&lt;br /&gt;
'''Items marked in BOLD indicate in-progress or finished'''!&lt;br /&gt;
&lt;br /&gt;
=2.0x codebase=&lt;br /&gt;
The following features will be completed before or at the end of the 2.0x lifecycle:&lt;br /&gt;
&lt;br /&gt;
*: Completed Interpolation (heights, projectiles, etc)&lt;br /&gt;
&lt;br /&gt;
*: MD5 support completed (skins, animation). '''FINISHED'''&lt;br /&gt;
&lt;br /&gt;
*: DDF addition for weapons (Z_Aspect) ('''FINISHED'''), support for partial reloading&lt;br /&gt;
&lt;br /&gt;
*: Splitscreen mode fully functional&lt;br /&gt;
&lt;br /&gt;
*: MD2, MD3, MDL, and MD5 models support normal and specular maps.&lt;br /&gt;
&lt;br /&gt;
=2.1 codebase=&lt;br /&gt;
&lt;br /&gt;
Beginning with 2.1.0, 3DGE will get a massive rewrite:&lt;br /&gt;
&lt;br /&gt;
*: OpenGL 2x rewrite (if extensions are detected, otherwise the engine will fall back to old 1.1 compliance). '''IN PROGRESS'''&lt;br /&gt;
*: Total Zone memory manager rewrite (more speed improvements). '''FINISHED'''&lt;br /&gt;
*: Textures will support normal, bump, and specular maps. '''IN PROGRESS'''&lt;br /&gt;
*: Heavily revamped Dynamic Lighting and Shadowing code (true directional light and true dynamic shadows)&lt;br /&gt;
*: Sky subsystem rewritten from Quake 3 for Q3 BSPs, normal sky code will remain for DOOM maps.&lt;br /&gt;
*: [http://opl3.cozendey.com/ OPL integration] for music; replaces fudged SYSTEM music player under Windows. '''FINISHED'''&lt;br /&gt;
*: SPLINE library replaces all camera code and new script files for them will be added.&lt;br /&gt;
*: Environment maps for surfaces (like Half-Life)&lt;br /&gt;
*: True Slopes using vertex height calculation&lt;br /&gt;
*: Polyobject support.&lt;br /&gt;
*: Inventory System&lt;br /&gt;
*: Better RTS functions (some adapted from FraggleScript)&lt;br /&gt;
*: FraggleScript support (limited*)&lt;br /&gt;
*: ROQ library for cinematics, and render-to-texture (skins, textures) '''IN PROGRESS'''&lt;br /&gt;
*: Quake 3 BSP Support (loading, rendering)&lt;/div&gt;</summary>
		<author><name>UsernameAK</name></author>	</entry>

	<entry>
		<id>https://3dfxdev.net/edgewiki/index.php?title=Doom_Definition_File&amp;diff=401</id>
		<title>Doom Definition File</title>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=Doom_Definition_File&amp;diff=401"/>
				<updated>2016-04-20T08:06:29Z</updated>
		
		<summary type="html">&lt;p&gt;UsernameAK: Undo revision 400 by UsernameAK (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''DDF''' stands for '''Doom Definition File''', and is EDGE's answer to [[DehackEd]].&lt;br /&gt;
However, DDF is much easier to learn than DehackEd, and allows you to&lt;br /&gt;
do a number of unique things were simply not possible with DehackEd. &lt;br /&gt;
&lt;br /&gt;
Indeed, DDF has more in common with the .CON files that enabled&lt;br /&gt;
users to modify the gameplay of Duke Nukem 3D. Unlike DehackEd, which&lt;br /&gt;
could be complex and not particularly intuitive, DDF uses fairly&lt;br /&gt;
simple, easily understood commands.&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
To get started, use the SIDEBAR to the left of this Wiki (click on DDF to expand each DDF entry).&lt;br /&gt;
&lt;br /&gt;
=How DDF works=&lt;br /&gt;
&lt;br /&gt;
A DDF file is a simple text file that describes an object.&lt;br /&gt;
&lt;br /&gt;
''Comments: Anything after // are comments. They are&lt;br /&gt;
ignored by the parser. &lt;br /&gt;
&amp;lt;BR&amp;gt;eg // This is ignored.''&lt;br /&gt;
&lt;br /&gt;
'''Spaces are ignored.''' So this means that calling your monster [EVIL&lt;br /&gt;
MONSTER] is exactly the same as calling it [EVILMONSTER] since the DDF&lt;br /&gt;
parser will ignore the space.  ''The underscore '_' character is&lt;br /&gt;
converted to a space.'' So you'd use EVIL_MONSTER if you wanted the DDF&lt;br /&gt;
parser to recognise a monster called EVIL MONSTER.  &lt;br /&gt;
&lt;br /&gt;
Upper and lower case is ignored (so writing SHOTGUN is the same as&lt;br /&gt;
writing shotgun). &lt;br /&gt;
&lt;br /&gt;
Anything between quotes '&amp;quot;' is parsed as is eg &amp;quot;MAP01: Containment&lt;br /&gt;
area&amp;quot;. This means that spaces and upper and lower case characters will&lt;br /&gt;
be recognized.  This is especially important for names of lumps or&lt;br /&gt;
textures, since any '_' characters would normally be converted to&lt;br /&gt;
spaces and 3DGE would complain about a missing lump/texture.&lt;br /&gt;
&lt;br /&gt;
The main structure to define an object is&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;&amp;lt;CODE&amp;gt;&lt;br /&gt;
[name]&amp;lt;BR&amp;gt;&lt;br /&gt;
param1=data1;&amp;lt;BR&amp;gt;&lt;br /&gt;
param2=data2;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/CODE&amp;gt;&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The name of the object is the name used to refer to it. Names should&lt;br /&gt;
be unique, since when there are two entries with the same the later&lt;br /&gt;
one will override the earlier one.&lt;br /&gt;
In some DDF files the names are ignored.&lt;br /&gt;
Param1 and data1 etc are dependent on what type of object you are&lt;br /&gt;
trying to define. Put a semicolon after each&lt;br /&gt;
define.&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;&amp;lt;CODE&amp;gt;&lt;br /&gt;
param=data1,data2,data3;&lt;br /&gt;
&lt;br /&gt;
''is the same as''&lt;br /&gt;
&lt;br /&gt;
param=data1;&lt;br /&gt;
param=data2;&lt;br /&gt;
param=data3;&lt;br /&gt;
&amp;lt;/CODE&amp;gt;&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Datatypes=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Boolean''': can be 'true' or 'false'.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Integer''': any whole number.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Float''': any floating-point number, eg 123.45 or -0.017.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Time:''' a timing value in seconds. Can also be specified in tics,&lt;br /&gt;
there are 35 tics in a second.&lt;br /&gt;
To specify tics, put a 'T' after the number, eg 35T.&lt;br /&gt;
The special value 'MAXT' means an infinite delay. &amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Percentage''': an integer value following by %. Range is 0% to 100%.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Music''': an integer value that will be looked up in PLAYLIST.DDF&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Sound''': a name that will be looked up in SOUNDS.DDF.&lt;br /&gt;
The wild card character '?' is handled specially, so 'PODTH?' will&lt;br /&gt;
match the PODTH1, PODTH2, and PODTH3 entries. When it is time to play&lt;br /&gt;
an SFX with a wild card, a matching SFX will be played at random.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''String''': a string of characters eg &amp;quot;MAP01: Containment area&amp;quot;&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;LumpName: an eight letter string, referring to something stored in&lt;br /&gt;
the wad datafile.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Special''': a special format only used by that DDF file.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Flags''': a whole series of properties you can add.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''States''': a series of sprites, eg the sequence of sprites to display&lt;br /&gt;
when something dies.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Language Ref''': a string that should be looked up in the language&lt;br /&gt;
DDF file to get the translation.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:DDF]]&lt;/div&gt;</summary>
		<author><name>UsernameAK</name></author>	</entry>

	<entry>
		<id>https://3dfxdev.net/edgewiki/index.php?title=Doom_Definition_File&amp;diff=400</id>
		<title>Doom Definition File</title>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=Doom_Definition_File&amp;diff=400"/>
				<updated>2016-04-20T08:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;UsernameAK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''DDF''' stands for '''Doom Definition File''', and is EDGE's answer to [[DehackEd]].&lt;br /&gt;
However, DDF is much easier to learn than DehackEd, and allows you to&lt;br /&gt;
do a number of unique things were simply not possible with DehackEd. &lt;br /&gt;
&lt;br /&gt;
Indeed, DDF has more in common with the .CON files that enabled&lt;br /&gt;
users to modify the gameplay of Duke Nukem 3D. Unlike DehackEd, which&lt;br /&gt;
could be complex and not particularly intuitive, DDF uses fairly&lt;br /&gt;
simple, easily understood commands.&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
To get started, use the SIDEBAR to the left of this Wiki (click on DDF to expand each DDF entry).&lt;br /&gt;
&lt;br /&gt;
=How DDF works=&lt;br /&gt;
&lt;br /&gt;
A DDF file is a simple text file that describes an object.&lt;br /&gt;
&lt;br /&gt;
''Comments: Anything after // are comments. They are&lt;br /&gt;
ignored by the parser. &lt;br /&gt;
&amp;lt;BR&amp;gt;eg // This is ignored.''&lt;br /&gt;
&lt;br /&gt;
'''Spaces are ignored.''' So this means that calling your monster `[EVIL&lt;br /&gt;
MONSTER]` is exactly the same as calling it `[EVILMONSTER]` since the DDF&lt;br /&gt;
parser will ignore the space.  ''The underscore '_' character is&lt;br /&gt;
converted to a space.'' So you'd use EVIL_MONSTER if you wanted the DDF&lt;br /&gt;
parser to recognise a monster called EVIL MONSTER.  &lt;br /&gt;
&lt;br /&gt;
Upper and lower case is ignored (so writing SHOTGUN is the same as&lt;br /&gt;
writing shotgun). &lt;br /&gt;
&lt;br /&gt;
Anything between quotes '&amp;quot;' is parsed as is eg &amp;quot;MAP01: Containment&lt;br /&gt;
area&amp;quot;. This means that spaces and upper and lower case characters will&lt;br /&gt;
be recognized.  This is especially important for names of lumps or&lt;br /&gt;
textures, since any '_' characters would normally be converted to&lt;br /&gt;
spaces and 3DGE would complain about a missing lump/texture.&lt;br /&gt;
&lt;br /&gt;
The main structure to define an object is&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;&amp;lt;CODE&amp;gt;&lt;br /&gt;
[name]&amp;lt;BR&amp;gt;&lt;br /&gt;
param1=data1;&amp;lt;BR&amp;gt;&lt;br /&gt;
param2=data2;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/CODE&amp;gt;&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The name of the object is the name used to refer to it. Names should&lt;br /&gt;
be unique, since when there are two entries with the same the later&lt;br /&gt;
one will override the earlier one.&lt;br /&gt;
In some DDF files the names are ignored.&lt;br /&gt;
Param1 and data1 etc are dependent on what type of object you are&lt;br /&gt;
trying to define. Put a semicolon after each&lt;br /&gt;
define.&lt;br /&gt;
&amp;lt;BLOCKQUOTE&amp;gt;&amp;lt;CODE&amp;gt;&lt;br /&gt;
param=data1,data2,data3;&lt;br /&gt;
&lt;br /&gt;
''is the same as''&lt;br /&gt;
&lt;br /&gt;
param=data1;&lt;br /&gt;
param=data2;&lt;br /&gt;
param=data3;&lt;br /&gt;
&amp;lt;/CODE&amp;gt;&amp;lt;/BLOCKQUOTE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Datatypes=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Boolean''': can be 'true' or 'false'.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Integer''': any whole number.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Float''': any floating-point number, eg 123.45 or -0.017.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Time:''' a timing value in seconds. Can also be specified in tics,&lt;br /&gt;
there are 35 tics in a second.&lt;br /&gt;
To specify tics, put a 'T' after the number, eg 35T.&lt;br /&gt;
The special value 'MAXT' means an infinite delay. &amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Percentage''': an integer value following by %. Range is 0% to 100%.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Music''': an integer value that will be looked up in PLAYLIST.DDF&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Sound''': a name that will be looked up in SOUNDS.DDF.&lt;br /&gt;
The wild card character '?' is handled specially, so 'PODTH?' will&lt;br /&gt;
match the PODTH1, PODTH2, and PODTH3 entries. When it is time to play&lt;br /&gt;
an SFX with a wild card, a matching SFX will be played at random.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''String''': a string of characters eg &amp;quot;MAP01: Containment area&amp;quot;&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;LumpName: an eight letter string, referring to something stored in&lt;br /&gt;
the wad datafile.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Special''': a special format only used by that DDF file.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Flags''': a whole series of properties you can add.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''States''': a series of sprites, eg the sequence of sprites to display&lt;br /&gt;
when something dies.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&amp;lt;LI&amp;gt;'''Language Ref''': a string that should be looked up in the language&lt;br /&gt;
DDF file to get the translation.&amp;lt;/LI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:DDF]]&lt;/div&gt;</summary>
		<author><name>UsernameAK</name></author>	</entry>

	<entry>
		<id>https://3dfxdev.net/edgewiki/index.php?title=IWAD&amp;diff=398</id>
		<title>IWAD</title>
		<link rel="alternate" type="text/html" href="https://3dfxdev.net/edgewiki/index.php?title=IWAD&amp;diff=398"/>
				<updated>2016-04-18T09:25:01Z</updated>
		
		<summary type="html">&lt;p&gt;UsernameAK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoomWiki}}An IWAD - short for Internal WAD - is the main resource file for a Doom-engine game, containing all the game's original sounds, levels, and graphics. &lt;br /&gt;
&lt;br /&gt;
=REQUIRED=&lt;br /&gt;
'''3DGE needs an IWAD file in order to play; without one the 3DGE engine has no game data to use.'''&lt;br /&gt;
&lt;br /&gt;
3DGE needs an IWAD from either [[DOOM 1]], [[DOOM II]], [[FINAL DOOM]], [[HACX]], [[CHEX QUEST]], or [[HERETIC]] to function. 3DGE also works with [[FreeDoom]] (Freedoom1.wad and Freedoom2.wad).&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can set your own IWAD with the -IWAD switch.&lt;br /&gt;
&lt;br /&gt;
==NOT SUPPORTED==&lt;br /&gt;
3DGE does not yet support the HEXEN IWAD, though it can read some graphics and level data from the game. It also does not support STRIFE.&lt;/div&gt;</summary>
		<author><name>UsernameAK</name></author>	</entry>

	</feed>