Doom Wiki

MAPINFO is a lump introduced in Hexen which allows to describe meta-data associated to levels (such as their name, music, sky texture, par time, etc.) instead of having them hardcoded in the engine. Several ports have adopted a MAPINFO system; however not all the syntaxes are compatible. The Doomsday and Risen3D ports do not use the MAPINFO lump however, they feature "Map Info" definition included in DED files.


There are several different MAPINFO syntaxes.


A Hexen-style MAPINFO lump contains declarations of this form:

;This is the first map
warptrans 1
next 2
cluster 1
sky1 SKY2 0
sky2 SKY3 0
cdtrack 13

The map is identified by a number, which means this syntax is only adapted to map lumps named according to the MAPxx convention. There are no clear separators between two commands other than a linebreak, making it difficult to parse if unknown keywords are encountered since the amount of parameters for each command can only be known from the keyword (for example, two parameters for sky1 but only one for cdtrack).

Eternity Engine[]

The Eternity Engine uses a different syntax, with a different lump name to avoid compatibility issues: EMAPINFO.

levelname = De kerker
edf-intername = true

Map definitions are cumulative, so any value not mentioned uses the default value for the level. (In this example, the sky, music, par time, etc. is unmodified compared to the hardcoded default values for MAP01.)

ZDoom (old)[]

The first ZDoom MAPINFO format was simply an evolution of the Hexen format, adapted to take into account the needs of other supported games. This is an example of the old ZDoom MAPINFO syntax:

map E1M4 "UAC Waste and Storage Facility"
cluster 1
next E1M5
secretnext E1M0
par 660
sucktime 1
music D_SOLOBT

The map is identified by its lump name. Contrarily to Hexen-format, clusters are not implicit and must be defined too, as well as episodes (episodes being actually merely a way to give a name to a choice of a starting map when starting a new game). Syntactically is otherwise identical with the Hexen format. Other ports, such as Vavoom, also use this syntax though with some minor differences in supported keywords (for example, Vavoom uses secret instead of secretnext). Because cluster definitions include intermission messages (such as the one displayed between the MAP06 and MAP07 slots in Doom II), parsing must allow multi-line commands, which makes unknown commands problematic.

ZDoom (new)[]

The new ZDoom MAPINFO format was designed to have a strong syntax that would allow correct parsing of MAPINFO lumps with unknown keywords. This is an example of the new ZDoom MAPINFO syntax:

map E1M1 "Hangar"
levelnum = 1
titlepatch = "WILV00"
next = "E1M2"
secretnext = "E1M9"
sky1 = "SKY1"
cluster = 1
par = 30
music = "D_E1M1"

The use of curly braces clearly delineates the extent of the map definition, and the use of the equal sign clearly identifies a token as being a keyword. This also allows for keywords with optional parameters, such as sky1 here which does not mention its second parameter. The language was also extended to allow definition of skills and more generic game information (such as the name of the info screen lumps displayed by "Read This!"/F1 key, or of the ENDOOM lump). Because of its differences with older MAPINFO lumps that are read by other ports as well, the ZMAPINFO alias can be used to avoid compatibility issues with other ports.


Doomsday does not use the MAPINFO lumps (except jHexen for obvious reasons), and instead features "Map Info" blocks in DED files, that serve the same purpose. Risen3D, derived from Doomsday, uses the same system.

Map Info {
ID = "E1M1";
Name = "HUSTR_E1M1";
Author = "id Software";
Music = "e1m1";
Par time = 30;
Gravity = 1;
Sky = "sky1";
Execute = "";

Intermission screens are defined using separate InFine definitions, while level progression is defined using the XG system.

See also[]