A Doom Definition File, or DDF, is a file used by the source port EDGE as an alternative to DeHackEd and as a method of expanded editing for EDGE's features. Many believe DDF is the most powerful function of EDGE so far, due to its fine-grained ability to control many different parts of the engine. Many weapon modifications have arisen based on EDGE and DDF.
DDF was one of many things directly inherited from DOSDoom.
Current DDF Library
As of version 1.35, there are 16 different types of DDF files, each covering a specific aspect of EDGE's customizability.
- ANIMS.DDF: Allows animated flats and textures to be defined or altered. This can also be used with custom patches.
- ATTACKS.DDF: Allows attacks to be created or altered. Attack classes (corresponding to the Resistance and Immunity classes in THINGS.DDF) can be defined, along with custom radius areas, or even altered to kill or harm enemies and players in unique ways, including custom pain and death states.
- COLMAP.DDF: Allows the definition of new colormaps (which are usually used with powerups, or submerged liquid sectors).
- FONTS.DDF: Allows modification of the fonts used in the game, an unlimited number of fonts can be defined.
- GAMES.DDF: Allows episodes to be defined or altered. As a bonus, this allows both Doom and Doom II to be played in the same game if the user has both programs; both games are displayed in the menu. "Hell on Earth" will be the name for the Doom II 'episode' when it is used in EDGE.
- IMAGES.DDF: Allows extensive editing and customization of many types of images, such as flats, sprites, and wall textures. Currently, it supports alpha-channel PNG and TGA, as well as JPG files, thereby allowing full 32 bit colour images to be used in-game. You can also use these image types on MD2 and MD3 models to allow transparency or high-quality skins, and also on skyboxes.
- LANGUAGE.LDF: Allows multi-language support, editing of text strings, and (in a future release) editing of intermission texts. (Although it uses the LDF extension, this still works much like a DDF.) English, Turkish, French, Spanish, Swedish, Dutch, German and Finnish are initially supported as of version 1.29 beta 1. Additionally, this allows the mod author to change the text strings for most of the cheat codes.
- LEVELS.DDF: Allows the definition of new mapname lumps, e.g. MAP00 or E0M0. This also allows control of whether or not levels have intermission screens, story intermission screens, or secret level exits in them, as well as which levels belong to which episodes.
- LINES.DDF: Allows control over linedef types. Usually used for various new types of switches, Wolfenstein-style line-doors, light switches, teleporters, level exits, or several unique types (such as a shootable end switch or even breakable glass).
- PLAYLIST.DDF: Allows control of music lumps used by the game, or can be used to specify files on the user's hard drive. Supports MUS, MIDI, and OGG tracks (MP3 was once supported, but then dropped by the EDGE team due to legal concerns). CD-ROM tracks were once available but removed as it made newer versions of Windows after XP conflict with the soundsystem.
- SECTORS.DDF: Allows control of custom sector types. Examples can include a damage sector that inflicts damage much more often, silent teleporters, or even 'liquid' sectors (with the help of Extrafloors).
- SOUNDS.DDF: Allows control of sound effect lumps.
- STYLES.DDF: Allows control over the format of the menus, intermission screens, console, and automap. (Fonts can be changed with FONTS.DDF). Newer versions of EDGE dropped support for console and menu graphics/customization, which was restored in the fork hyper3DGE.
- SWITCH.DDF: Allows custom on/off animation sequences for wall switches, such as SW1STON6/SW2STON6, as well as control over the sounds the switches make when activated.
- THINGS.DDF: Allows customization of things, such as monsters, items, keys, ammo, and even 'helper' creatures which attack hostile monsters or opposing players. Attack immunity and resistances are also supported, as is a seamless image resizing engine that allows sprites to be toned down without pixelization in the game (thus, higher resolution sprites may be used). Other features include custom thing states and permissions, allowing the creation of unusually complex creatures or items (e.g. a monster with 20+ different weapons).
- WEAPONS.DDF: Allows extensive customizability of weapons, including support for secondary attacks, weapon silencing, weapon upgrading, spin up/spin down states, and other options (many of which have only recently been introduced). Up to 64 different weapons can be defined in the current release of EDGE.
Radius Trigger Script
- RSCRIPT.RTS: Not an actual DDF, but a somewhat primitive scripting language called "Radius Trigger Script" which uses radius markers on the X, Y, and optionally Z planes to define an area for scripted actions to occur. Unique things can be accomplished with RTS, such as swinging doors and moving platforms.
- COAL_HUD.EC: Originally starting out as DDF, this feature was dropped, and replaced with COAL, a Lua-based language that gives the user more powerful customization and control of the HUD. With COAL you can define multiple HUD types at one given time.