Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  

Summary of EDF changes post-edf-branch

Recommended Posts

As the previous thread (http://www.doomworld.com/vb/eternity/49964-impending-edf-changes/) indicated, edf-branch was to bring about various fundamental changes to the way in which EDF processing works. Here's a summary of the changes that were implemented:

Obsoleted Features:

  • TERTYPES lumps (old undocumented deprecated Eternity TC feature) are no longer processed.
  • stdinclude() used on any filepath that does not aim at a file called "root.edf". Including other EDFs under base/ directly instead of via root.edf is no longer allowed because of the problems it poses to both backward and forward compatibility.
  • include_prev() is no longer required in any lump, and is a no-op function.
  • bexinclude() is still functional, but is not recommended for use. DEHACKED lumps and GFS scripts are preferred for providing BEX alongside mods which use EDF. This feature predated the ability to include EDF inside wad files, and the ability to override the value of BEX strings using EDF string definitions.
  • Namespace specifiers in action arguments (ex. thing:DoomImp) are unnecessary and are now deprecated for use in new EDFs. They are still required/allowed for use in state misc fields, however.
Parsing/Processing Changes:
  • '\f' characters are no longer allowed in EDF files/lumps (whatever they actually are).
  • EDF lumps are only allowed to include other lumps within the same wad or other physical archive, in order to obtain a well-defined order of processing (oldest-to-newest) on all root and independent EDF lumps which is most likely to result in functional behavior for additively loaded modifications. All lump inclusions function within the namespace of that individual archive only and ignore newer lumps that might have otherwise replaced the one being included.
  • Independent EDF lumps (ETERRAIN, ESNDSEQ, etc) may now actually contain any type of definitions, function calls, etc.
  • EDFROOT lumps are processed additively from oldest to newest.
  • Independent EDF lumps are processed additively from oldest to newest.
  • EDFs are now safe to include more than once. The EDF system will never process a single source of input more than once. Any lump or file already included into the EDF "hive" will be rejected on the basis of a SHA-1 checksum which is calculated when the data source is loaded.
  • "Default fallback" processing, the means by which some older broken EDFs which did not use stdinclude("root.edf") could still be supported, no longer exists.
Semantic Changes:
  • States (aka frames) are now fully additive entities and can be defined by independent EDF lumps, even ones loaded via runtime wadfile loading.
  • Sprites are now fully additive as well.
  • Sprites may be implicitly defined by states and are no longer required to have appeared in the spritenames array. The spritenames array persists only to enforce a DeHackEd-compatible ordering on the original DOOM sprite names.
  • Though achieved earlier in trunk, it is important to note that argument evaluation for state action calls is now done at runtime during the game, and arguments are evaluated within the scope of the action function. This makes namespace specifications such as thing:DoomImp unnecessary inside arguments.
  • States may now have duplicate DeHackEd numbers (though the reasons to assign these at all have dropped to nearly zero). The newest state processed using a given DeHackEd number wins.

Share this post

Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this