UDMF

From DoomWiki.org

UDMF (an abbreviation for Universal Doom Map Format) is a specification for laying out maps in a textual way. It is essentially a new map format for Doom engine based games. The format is not backwards-compatible with older Doom engine games.

The idea for this format was first suggested by James Haley (Quasar) as a universal solution to add unlimited extra information to map elements, so that the wide range of new features in Doom source ports can be better supported by editors and implemented in the map information more easily. UDMF was further developed by Haley, Christoph Oelckers (Graf Zahl) and Pascal vd Heiden (CodeImp), with suggestions from a few others. The name for the map format was coined by Russell Rice.

UDMF version 1.0 was finalized on May 29th, 2008. Support for it is currently implemented in DelphiDoom, Eternity, GZDoom, EDGE, Vavoom, ZDoom, Skulltag, Zandronum, DSDA-Doom, Sonic Robo Blast 2, Helion, ZDBSP, AJBSP, Ultimate Doom Builder and SLADE 3. It is also expected to be supported in Doomsday.[1]

Namespaces[edit]

To prevent conflicts, the UDMF specifications require maps to start with a declaration of the namespace used, which then defines which map editing features are available and used. "Map editing features" is used here to describe only features that are directly used when making a map: the correspondence between editor numbers and thing types (such as 3001 for the imp), the one between linedef types and their expected effects, and the list of flags and properties that can be set on things, sides, lines, sectors, and vertices.

Cross-port namespaces[edit]

Four namespaces are reserved by the specifications, and they should not be enhanced or extended with additional map editing features.

  • Doom: all map editing features of vanilla Doom, Boom, and MBF.
  • Heretic: all map editing features of vanilla Heretic
  • Hexen: all map editing features of vanilla Hexen
  • Strife: all map editing features of vanilla Strife
Base spec namespace support across ports
Doom Heretic Hexen Strife Notes
DelphiDoom Yes Yes Yes Yes
DSDA-Doom No No No N/A Currently, DSDA-Doom does not support the base spec namespaces.
EDGE-Classic Yes Yes N/A N/A
Eternity Engine Yes Yes Yes Yes While Eternity will attempt to parse all namespaces, it currently only supports Doom and Heretic.
Helion Yes N/A N/A N/A
ZDoom, GZDoom, UZDoom and Zandronum Yes Yes Yes Yes

Port-exclusive namespaces[edit]

Source ports wanting to add new map editing features are strongly recommended to define their own, bespoke namespace. Despite the fact that these are ostensibly intended to be port-exclusive, some ports have historically "blurred the line" and added support for other namespaces besides their own.

DelphiDoom[edit]

As of version 2.0.7.735, DelphiDoom has defined its own namespaces for each game type. Despite only having partial support, it will also parse the zdoomtranslated namespace.

  • delphidoom: Uses Hexen-style action specials, by default, but also includes support for classic Doom-style line specials – starting at index 300, leading until 999 – forming a hybrid line special system.
  • delphiheretic: Similarly to delphidoom, it primarily using parameterized action specials, however, while also using Heretic specials for the latter part of the hybrid system.
  • delphihexen: Uses Hexen-style action specials, only.
  • delphistrife: Same as delphidoom and delphiheretic, however, using Strife for the latter half of the hybrid line special system.

DSDA-Doom[edit]

As of version 0.29.4, DSDA-Doom has support for its own Doom-only namespace, and partial support for zdoom.

  • dsda: This namespace was originally based on a subset of the ZDoom one, containing many of the existing mapping extensions. However, it also came with original features, many of which were later ported to other source ports as well.

EDGE-Classic[edit]

As of version 1.51, EDGE-Classic has its own namespace and, despite only partial support, parses zdoomtranslated as well.

  • edge-classic: As opposed to most other port-exclusive namespaces, this one makes use of Doom-style, non-parameterized line specials and other related features – namely, EDGE-Classic features the vanilla Doom, Boom, MBF, MBF21 roster of special actions, as well as its own exclusive set, as seen in the EDGE linedef types.

Eternity Engine[edit]

As of version 4.05.03, Eternity includes its own namespace, technically available for all game types.

  • eternity: Shared by all games supported by Eternity, and allows full use of all map editing features available. It is partly compatible with existing ZDoom UDMF mapping features, and includes many of its own.

ZDoom[edit]

ZDoom was among the earliest ports to adopt UDMF support—partly due to this (and the lack of wide adoption for the base specification early-on) there has historically been a common misconception that conflated "UDMF" as being a ZDoom-exclusive format. As of version 2.8.1, ZDoom has defined its own namespaces, available for all supported game types. Later GZDoom and UZDoom updates continued to expand these, with additional features.

  • zdoom: This namespace is shared by all games supported by ZDoom, and allows full use of all map editing features available.
  • zdoomtranslated: While otherwise identical to the main ZDoom namespace, this variant does not use the Hexen-style action specials system, and instead uses the traditional style of line specials from Doom, as seen in the ZDoom linedef types.


Bespoke namespace support across ports
delphidoom, etc dsda edge-classic eternity zdoom 1.26 zdoom 1.38 zdoomtranslated 1.26 zdoomtranslated 1.38 Notes
DelphiDoom Yes N/A N/A N/A N/A N/A Partial Partial
DSDA-Doom N/A Yes N/A N/A Partial Partial N/A N/A
EDGE-Classic N/A N/A Yes N/A N/A N/A Partial Partial
Eternity Engine N/A N/A N/A Yes N/A N/A N/A N/A
Helion N/A Partial N/A N/A Partial Partial N/A N/A
ZDoom, Zandronum N/A N/A N/A Partial Yes Partial Yes Partial Due to the lack of versioning capabilities, earlier versions of the ZDoom family of ports will still parse UDMF maps made for later versions of the zdoom namespace specification, which can result in partially working or broken levels.
GZDoom, UZDoom N/A Yes N/A Partial Yes Yes Yes Yes

Uses outside of Doom ports[edit]

  • Killing Time: Resurrected uses the UDMF format, which was required to fully translate the original game's binary maps due to addition of floor and ceiling X and Y offsets by programmer Rebecca Heineman. Namespace KillingTime is expected and is the only namespace supported. Maps for the game must provide a prebuilt BSP tree in a GL-friendly ZNODES format. An Ultimate Doom Builder configuration is provided in the game's SDK.

See also[edit]

External links[edit]

Doomworld threads[edit]

References[edit]