User Tools

Site Tools


ded:episode

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
ded:episode [2017-03-17 08:34]
skyjake [Syntax]
ded:episode [2017-03-19 21:50] (current)
skyjake [Core concepts]
Line 1: Line 1:
 +====== Episode (DED) ======
 +
 +An //Episode// definition specifies the properties of a playable episode composed from one or more maps.
 +
 +===== Core concepts =====
 +
 +**Episode.** An episode is an independently playable campaign for use by the game plugin. Each Episode definition groups together one or more maps (possibly using [[hub]]s) and describes the connections between those maps. In other words, which exit leads to which other map in the same episode.
 +
 +**Hub.** A [[hub]] is a group of maps where the player may travel several times between the various maps in the hub. Game state is automatically saved in the other maps of the hub while the player is on one of the other maps. Hubs were originally introduced in Hexen.
 +
 +**Map exclusivity.** Each map may be used once in an episode, however the same map may be reused in several different episodes. This means that one can create an additional episode, containing the maps from another episode in a different "​order",​ by copying an existing episode definition and changing the connectivity information. Both the original and the "​remixed"​ episode will appear in the games' episode selection menu (if playable, see [[#Start Map]]).
 +
 +<​note>​This assumes the maps have been authored to allow this kind of "​atomicity"​. Maps in Hexen, for example, use scripts that may not support this.</​note>​
 +
 +**Map connectivity.** ((The term "​connectivity"​ is preferred here instead of "map progression"​ because it does not suggest linearity.)) One can think of the connections between maps as a [[http://​en.wikipedia.org/​wiki/​Directed_graph|directed graph]]. Even though each map must appear only once in the definition, there may be any number of connections to it. The game plugin defines a number of map-exit conditions (such as pulling a switch), which it will associate with a unique identifier. Such "​exit"​ identifiers can be used in an episode definition to redirect play to another map when triggered. There are also other ways in which connectivity may be defined. An XG [[xg:​class:​end_level|End Level]] line type, for example. In any case, the target map must still be included in the episode definition.
 +
 +
 +===== Episode definitions vs. MAPINFO =====
 +
 +
 +The [[modding:​hexen_mapinfo|Hexen MAPINFO]] definition format was originally introduced by Hexen and then later expanded by other Doom source ports. Support for the Hexen-dialect of [[http://​doomwiki.org/​wiki/​MAPINFO|MAPINFO]],​ in all games, was introduced in Doomsday [[version:​1.15]] (by translating these definitions into DED format at runtime).
 +
 +Although MAPINFO supports some of the episode functionality offered by Doomsday (particularly in the ZDoom-dialect),​ we advise that Doomsday specific mods use Episode definitions for their added flexibility and ease of use.
 +
 +
 +===== Syntax =====
 +
 +{{page>​episode_syntax}}
 +
 +
 +===== Examples =====
 +
 +Doom's first episode, "​Knee-Deep in the Dead" as an Episode definition:
 +  ​
 +  Episode {
 +    ID = "​1";​
 +    Title = "​EPISODE1";​
 +    Start Map = "​E1M1";​
 +    Menu Image = "​M_EPI1";​
 +    Menu Shortcut = "​k";​
 +  ​
 +    Map {
 +      ID = "​E1M1";​
 +      Warp Number = 1;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M2";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M2";​
 +      Warp Number = 2;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M3";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M3";​
 +      Warp Number = 3;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M4";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M4";​
 +      Warp Number = 4;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M5";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M5";​
 +      Warp Number = 5;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M6";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M6";​
 +      Warp Number = 6;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M7";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M7";​
 +      Warp Number = 7;
 +      Exit { ID = "​next"; ​  ​Target Map = "​E1M8";​ }
 +      Exit { ID = "​secret";​ Target Map = "​E1M9";​ }
 +    }
 +    Map {
 +      ID = "​E1M8";​
 +      Warp Number = 8;
 +      # No exits - the episode ends here.
 +    }
 +    Map {
 +      ID = "​E1M9";​
 +      Warp Number = 9;
 +      Exit { ID = "​next";​ Target Map = "​E1M4";​ }
 +    }
 +  }
 +
 +
  
ded/episode.txt ยท Last modified: 2017-03-19 21:50 by skyjake