Difference between revisions of "EDF"

From DoomWiki.org

[checked revision][checked revision]
m (Naturally I forgot to actually add the template.)
(Basic article here now)
Line 1: Line 1:
{{stub}}
+
'''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.
'''EDF''', or '''Eternity Definition File''', is a content definition language in [[Eternity Engine]] that is used to create or modify actors, terrain effects, text strings and menus. The content defined in this way can be affected by [[DeHackEd]] patches.
+
 
 +
==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:
 +
* [[Actor]]s and their [[state]]s and [[sprite]]s. [[DECORATE]] syntax for state specification is supported.
 +
* Damage types
 +
* [[Final boss|Boss spawner]] properties for [[Doom II]]
 +
* [[Cast sequence]] for Doom II
 +
* Fonts
 +
* Global game properties
 +
* [[Artifact|Inventory]] and [[item]] effects (work-in-progress as of the Eternity Engine v3.40.46 release)
 +
* [[Menu]]s
 +
* [[Player class]]es
 +
* [[Sound]] effects, static ambience, [[SNDSEQ|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 {{wp|heredoc}}. Its syntax is based on the capabilities of the [http://www.nongnu.org/confuse/ 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:
 +
<pre>
 +
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
 +
  "@
 +
}
 +
</pre>
  
 
== See also ==
 
== See also ==
 
* {{eterwiki}}
 
* {{eterwiki}}
 +
* [https://github.com/team-eternity/eternity/tree/master/base Eternity base folder] in the port's git repository.
 +
 
[[Category:Eternity Engine]]
 
[[Category:Eternity Engine]]
 
[[Category:WAD lumps]]
 
[[Category:WAD lumps]]
 
[[Category:Scripting languages]]
 
[[Category:Scripting languages]]

Revision as of 09:53, 6 June 2014

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:

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 heredoc. 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
  "@
}

See also