User Guide
Quick Reference
Modding
Development
User Guide
Quick Reference
Modding
Development
An Episode definition specifies the properties of a playable episode composed from one or more maps.
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 hubs) 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).
Map connectivity. 1) One can think of the connections between maps as a 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 End Level line type, for example. In any case, the target map must still be included in the episode definition.
The Hexen MAPINFO definition format was originally introduced by Hexen and then later expanded by other Doom source ports. Support for the Hexen-dialect of MAPINFO, in all games, was introduced in Doomsday 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.
Episode { ID = ""; Start Map = ""; Title = ""; Menu Help Info = ""; Menu Image = ""; Menu Shortcut = ""; Hub { ID = ""; Map { ID = ""; Warp Number = 0; Exit { ID = ""; Target Map = ""; } } # Other Map definitions for the hub... } Map { ID = ""; Warp Number = 0; Exit { ID = ""; Target Map = ""; } } # More Map definitions for the episode... }
A unique identifying name (string) for the episode. Used when referencing the episode in other definitions.
URI of the map at which the episode begins. If no starting map is defined, or no map data can be located, then the episode will not be playable (it will also be omitted from the games' episode selection menu).
Title for the episode. This is used in menus, status messages and any other context in which the episode is presented to the user.
An explanation/notification about the episode that is displayed in the games' episode selection menu (when the relevant menu item has focus).
Typically episodes should not require an explanation. In the default configuration, this is only used for Heretic's sixth episode, to inform the user that it is not designed for single-player.
URI of an image to use in place of the episode title in the games' episode selection menu. Presently, this should be a known patch resource (support for other image resource types will be added later).
A keyboard shortcut used in the games' episode selection menu, to shift focus to the relevant menu item when invoked. In this context, shortcuts are described in “event-descriptor” notation (but omitting the 'key-' device name for the keyboard). For example:
Menu Shortcut = "d"; # Focus on this when 'key-d' is pressed
Group of one or more maps which should be treated as a “hub”. An episode may consist of any number of hubs containing any number of maps. The order in which hubs (and maps) are defined does not matter.
When play transitions from one map to another and the destination map is in the same hub as the current map; the game plugin may elect to perform special case and/or game specific logic.
Hexen, for example, will clear the inventories of all players unless the destination map is in the same hub. In which case the items the players have collected and the state of all maps within the hub will be remembered.
Describes the position of a map in the map-connectivity graph of the episode. An episode may consist of any number of maps within any number of hubs (if used). The order in which maps (and hubs) are defined does not matter.
ID | Description |
---|---|
next | The default/fallback exit. When no other exits are defined, this one is used. |
secret | When a secret-exit-line is crossed, this one is used. (Not Hexen) |
Target Map: URI of another map from the episode. This is the map that play will transition to, when the associated map-exit condition is met.
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"; } } }