Table of Contents

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 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).

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.

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.

Episode definitions vs. MAPINFO

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.

Syntax

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...
}   
  

ID

A unique identifying name (string) for the episode. Used when referencing the episode in other definitions.

Start Map

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

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

Hub

Presently hubs are only supported in Hexen (and the Deathkings expansion).

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.

ID
A unique identifying name (string) for the hub. Used when referencing the hub in other definitions.

Map

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
URI associated with the map data. In id Tech 1 format maps, this is typically either “ExMy” or “MAPxy” depending on the game plugin and/or game mode.
Doomsday 1.15 adds support for arbitrary map identifiers, allowing any name to be assigned to the map data. (The map data is now recognized independently of the id).
Warp Number
A reference used when warping to the map. (A cheat for changing the current map according to the user-supplied warp number).
Exit
Describes an outbound connection to another map in the episode. The game plugin uses exits to determine a destination map when the associated map-exit condition is met (e.g., a player found the exit button). If no exits are defined for a map, the game plugin will interpret this to mean the game has been completed.

The Exit ID must be one of the following:
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.

2023-03-05 16:32

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"; }
  }
}
1)
The term “connectivity” is preferred here instead of “map progression” because it does not suggest linearity.