EDF

EDF, or Eternity Definition File, is a content definition language in the Eternity Engine source port that is used to define or modify most global aspects of the game engine.

Capabilities
EDF can be loaded directly from disk or from lumps. All types of definitions it supports can be specified in any EDF file or lump. It can contain the following types of definitions:
 * Actors and their states and sprites. DECORATE syntax for state specification is supported.
 * Damage types
 * Boss spawner properties for Doom II
 * Cast sequence for Doom II
 * Fonts
 * Global game properties
 * Inventory and item effects (work-in-progress as of the Eternity Engine v3.40.46 release)
 * Menus
 * Player classes
 * Sound effects, static ambience, sound sequences, and reverberation data
 * Strings
 * Terrain properties

Much of the content defined in EDF can be affected by DeHackEd patches, as entities within EDF can specify a "DeHackEd number" that is then used to look them up when applying patches.

EDF can be loaded at runtime along with other WAD data by the Eternity Engine.

Syntax
EDF has a syntax similar to C or JSON, along with ability to contain other languages inside a type of string literal called a. Its syntax is based on the capabilities of the libConfuse library by Martin Hedenfalk, though the version of the library used by Eternity has been heavily modified and extended.

Example of an EDF definition for an actor: thingtype EvilEye { doomednum 41 dehackednum 89 radius 16.0 correct_height 50.0 cflags SOLID|3DDECORATION|NOTORQUE firstdecoratestate S_EVILEYE states @" Spawn:    CEYE ABCB 6 bright    loop  "@ }