Editing ExtraData
From Eternity Wiki
Jump to navigationJump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
ExtraData is a new data specification language for the [[Eternity Engine]] that allows arbitrary extension of mapthings, lines, and sectors with any number of new fields, with data provided in more or less any format. The use of a textual input language forever removes any future problems caused by binary format limitations. The ExtraData parser is based on the libConfuse configuration file parser library by Martin Hedenfalk, which is also used by GFS and EDF. | |||
Each section in this document deals with one of the ExtraData constructs, as well as how to embed ExtraData in a WAD and how to associate it with a given map. | |||
ExtraData will continue to be supported in future versions of Eternity, even though it will soon be superceded by support for the [[Universal Doom Map Format]]. | |||
{{Backto|Eternity Engine}} | {{Backto|Eternity Engine}} | ||
{{editref}} | {{editref}} | ||
Line 50: | Line 50: | ||
// These fields are ExtraData extensions | // These fields are ExtraData extensions | ||
tid <number> | tid <number> | ||
args { <special field>, ... } | args { <special field>, ... } | ||
height <number> | height <number> | ||
Line 64: | Line 63: | ||
This field can also accept EDF thingtype mnemonics. EDF thingtype mnemonics must be prefixed with ''thing:'' -- this allows the parser to know it is dealing with a string instead of a number. EDF thingtypes must have a unique doomednum to be specified in an ExtraData mapthing record. If the specified EDF thingtype doesn't exist or has a doomednum of -1, an Unknown object will be spawned instead. | This field can also accept EDF thingtype mnemonics. EDF thingtype mnemonics must be prefixed with ''thing:'' -- this allows the parser to know it is dealing with a string instead of a number. EDF thingtypes must have a unique doomednum to be specified in an ExtraData mapthing record. If the specified EDF thingtype doesn't exist or has a doomednum of -1, an Unknown object will be spawned instead. | ||
Example: | Example: | ||
Line 71: | Line 68: | ||
mapthing { type DoomImp } // This record specifies an Imp by its EDF mnemonic | mapthing { type DoomImp } // This record specifies an Imp by its EDF mnemonic | ||
====options==== | ====options==== | ||
Default: No flags are set by default. | Default: No flags are set by default. | ||
Line 91: | Line 88: | ||
FRIEND Thing uses MBF friendly logic | FRIEND Thing uses MBF friendly logic | ||
DORMANT Thing is dormant at map startup (script feature) | DORMANT Thing is dormant at map startup (script feature) | ||
------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||
Line 115: | Line 111: | ||
The TID, or "Thing ID", is a tag for mapthings which is used for identification in [[ACS]] scripts. TID values must be positive numbers between 1 and 65535. The TID value zero means no TID. Negative TID values are reserved and are used to indicate special things within the engine. TIDs are not required to be unique, and most ACS functions that accept TIDs will perform an action on all mapthings which bear the same TID. | The TID, or "Thing ID", is a tag for mapthings which is used for identification in [[ACS]] scripts. TID values must be positive numbers between 1 and 65535. The TID value zero means no TID. Negative TID values are reserved and are used to indicate special things within the engine. TIDs are not required to be unique, and most ACS functions that accept TIDs will perform an action on all mapthings which bear the same TID. | ||
====args==== | ====args==== | ||
Line 202: | Line 193: | ||
MONSTER Linedef can be activated by objects with SPACMONSTER flag. | MONSTER Linedef can be activated by objects with SPACMONSTER flag. | ||
MISSILE Linedef can be activated by objects with SPACMISSILE flag. | MISSILE Linedef can be activated by objects with SPACMISSILE flag. | ||
REPEAT Linedef action is repeatable. | REPEAT Linedef action is repeatable. | ||
1SONLY Linedef can only be activated from first side. | 1SONLY Linedef can only be activated from first side. | ||
Line 213: | Line 203: | ||
--------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ||
Notes: IMPACT is currently only implemented for bullet weapons. | Notes: IMPACT is currently only implemented for bullet weapons. The ability to use IMPACT with MISSILE will be added in the near future. The PUSH style of activation is not implemented at all yet, so this flag currently does nothing. | ||
LOWERPORTAL and UPPERPORTAL are used to enable portals on the front side's upper and/or lower edges of a linedef, if the sector in front of the linedef is tall enough compared to the back sector to expose them. It is the only way to enable such portals, which will copy the sector portal(s) from the backside, if any. | LOWERPORTAL and UPPERPORTAL are used to enable portals on the front side's upper and/or lower edges of a linedef, if the sector in front of the linedef is tall enough compared to the back sector to expose them. It is the only way to enable such portals, which will copy the sector portal(s) from the backside, if any. | ||
Line 301: | Line 291: | ||
overlayalpha.floor <percentage or value from 0 to 255> | overlayalpha.floor <percentage or value from 0 to 255> | ||
overlayalpha.ceiling <percentage or value from 0 to 255> | overlayalpha.ceiling <percentage or value from 0 to 255> | ||
} | } | ||
===Explanation of fields: === | ===Explanation of fields: === | ||
Line 457: | Line 445: | ||
Flag name Meaning | Flag name Meaning | ||
--------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ||
DISABLED | DISABLED Portal is completely disabled | ||
NORENDER | NORENDER Portal will not be rendered, but may still be interactive | ||
NOPASS | NOPASS Objects cannot pass through the portal even if it is a linked portal | ||
BLOCKSOUND | BLOCKSOUND Sound will not traverse through a linked portal | ||
OVERLAY | OVERLAY The portal will render the sector's flat as a blended overlay | ||
ADDITIVE | ADDITIVE If OVERLAY is also specified, the overlay will use additive blending | ||
USEGLOBALTEX | USEGLOBALTEX Reserved for future per-portal texture specification | ||
--------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ||
Line 472: | Line 458: | ||
These two fields (overlayalpha.floor and overlayalpha.ceiling) specify the opacity of the corresponding portal overlay, if any exists. You can specify either a percentage value from 0% to 100%, or a plain integer number from 0 to 255. 100%/255 are completely solid, while 0% is invisible. | These two fields (overlayalpha.floor and overlayalpha.ceiling) specify the opacity of the corresponding portal overlay, if any exists. You can specify either a percentage value from 0% to 100%, or a plain integer number from 0 to 255. 100%/255 are completely solid, while 0% is invisible. | ||