MAPINFO

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 port's don't use the MAPINFO lump however, they feature external "Map Info" definitions, that serve the same purpose.

Versions
There are several different MAPINFO syntaxes.

Hexen
A Hexen-style MAPINFO lump contains declarations of this form: ;This is the first map map 1 "WINNOWING HALL" warptrans 1 next 2 cluster 1 sky1 SKY2 0 sky2 SKY3 0 lightning 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. [MAP01] 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 delineate the extent of the map definition, and the use of the equal sign clearly identify 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 and Risen3D Map Info
The Doomsday and Risen3D port's don't use the MAPINFO lump however (except in Hexen where it is nesscerry to be able to read Hexen style MAPINFO for obvious reasons), they feature external "Map Info" definitions, that serve the same purpose.

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

Unlike ZDoom and Eternity engine, intermission screens in Doomsday and Risen3D are defined using separate Infine definitions, while level progression is defined using the The Extended General Line and Sector Types (XG) system.