User:Altazimuth/EDF animation and switches

From Eternity Wiki
< User:Altazimuth
Revision as of 17:35, 16 March 2018 by Printz (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

TODO: Initial spiel.

Eternity supports defining animations and switches through EDF. It also supports Hexen ANIMDEFS lumps with some ZDoom extensions, allowing cross-port mods to run on it. This article describes the EDF version. New Eternity features will be added in EDF in the future, while the ANIMDEFS lump support will be updated with the GZDoom-compatible features integrated into Eternity.

Back to EDF

Animations[edit]

Animations in Eternity are of two types: Doom and Hexen. The Doom animations are similar to the ones from the binary ANIMATED lump, having a start and end texture in the sequence, whereas the Hexen animations (based on Hexen's ANIMDEFS definition) require you to specify each frame but allow finer control.

Animated textures can also "swirl" by having the special liquid effect introduced in SMMU.

Below are presented the two ways these animations can be defined in EDF.

Doom animations[edit]

Syntax[edit]

animation
{
  // One of the following:
  flat <name>
  wall <name>

  lastpic <name>
  tics <number>
  flags <flags>
}

Explanation[edit]

An Doom animation must have either flat or wall defined (but not both or neither). The choice of the keyword decides whether the animation is designated for floor/ceiling textures (flat) or wall textures. Unlike vanilla Doom and Boom, Eternity normally allows you to interchange walls and flats, but this distinction is still useful if there are flats with the same name as wall textures. Most notably, the default Doom IWADs have STEP1 and STEP2 defined for both kinds of surfaces.

Lastpic is the last texture in the animation sequence. Tics (by default 8) is the duration of each frame.

Flags is optional and can only be SWIRL. When set, this causes the texture to spin like a liquid, using the effect introduced in SMMU. If you set SWIRL, then lastpic and tics become optional, but you can also combine them. This is unlike the ANIMATED lump, which doesn't allow swirling textures to be combined with frame animations.

Examples[edit]

animation { flat WATER1 lastpic WATER8 tics 4 flags SWIRL } // swirling fast-rippling water
animation { wall WATRFAL1 lastpic WATRFAL4 tics 16 }        // slow wall waterfall
animation { flat GOO flags SWIRL }                          // swirling goo, single frame

You can use EDF to modify Doom animations defined in ANIMATED, but flat and wall must match the designation and starting texture name from ANIMATED. For example:

animation { flat NUKAGE1 flags SWIRL }

successfully modifies the ANIMATED nukage animation by giving it the swirling effect. The frame animation is preserved. To remove it, and keep only NUKAGE1 showing up, be sure to add "tics 0" in the definition.

Hexen animations[edit]

Syntax[edit]

animation
{
  // One of the following:
  flat <name>
  wall <name>

  flags <flags>

  // List of "pic" entries
  pic { name <name or number> tics <number> random <min>, <max> flags <flags> }
  pic { name <name or number> tics <number> random <min>, <max> flags <flags> }
}

Explanation[edit]

For Hexen animations, flat or wall is still required, having the same role as in Doom animations. The actual animation however is defined by the several pic entries. Defining flat or wall is required because, unlike Doom animations which always define ranges, Hexen animations require the exact flat or wall texture to be applied in the map editor for the sector or sidedef to animate.

Each pic has a name, which can be the exact texture name, or a number like in vanilla Hexen's ANIMDEFS, starting from 1 and counting each neighbouring texture. The time it takes can be expressed exactly in tics (default 8) or as a random range using random.

Flags is also supported for Hexen animations and once again it can only be SWIRL if specified. It can be applied globally to the animation or locally per pic.

Examples[edit]

animation  // Water with random duration frames
{
  flat WATER1
  pic { name WATER1 random 4, 8 }
  pic { name WATER2 random 4, 8 }
  pic { name WATER3 random 4, 8 }
}

animation  // A demon eye that stays shut most of the time, then opens and then has the swirl effect.
{
  wall DEMONIC  // the wall or flat definition can be unrelated to the first pic. It won't show in-game though,
                // but in the map editor the texture will have to be DEMONIC.
  pic { name EYECLOSE tics 150 }
  pic { name EYEOPEN1 random 20, 30 }
  pic { name EYEOPEN2 random 15, 35 }
  pic { name EYEHYPNO tics 105 flags SWIRL }
  pic { name EYEOPEN1 }      // default tics is 8
}

animation  // This uses the number notation. MAGMA1 may be followed by MAGMA2 in the texture list.
{
  flat MAGMA1
  pic { name 1 }
  pic { name 2 }
}

Switches[edit]

Switches can be defined in EDF. You can also define switches with ANIMDEFS or SWITCHES, but any new Eternity features will be added in EDF as they get developed.

They have the following syntax:

switch <name>
{
  on <texture>
  sound <mnemonic>
  offsound <mnemonic>
  gameindex <number>
}

Explanation of fields[edit]

The name field is the "off" texture of the switch, and is also used to identify the entry. Usually in Doom it has a name starting with SW1, like "SW1LION" in original Doom. The on field is the activated texture, starting in Doom usually with SW2, like SW2LION.

You can also give sounds to switches. The sound field, if specified, lets you set a custom sound to a switch. In addition, you can set offsound if you want an alternate sound to go from the on texture back to the name texture.

Gameindex is a compatibility setting from SWITCHES which declares if the switch is available for Doom shareware, Doom registered or Doom commercial. Not meaningful for mods, so you can ignore it.

Example[edit]

switch SW1LEVER { on SW2LEVER  sound clank  offsound lvreset }