udmf.md

August 26, 2026 ยท View on GitHub

UDMF (Universal Doom Map Format)

This page defines the dsda udmf namespace. Most features of this namespace form a subset of the zdoom namespace - they will be understood by both dsda-doom and gzdoom. Some new additions, marked with a :duck:, fill in some gaps. See the things and specials doc for more information about which specials and thing types are supported.

In principle, udmf features supported by both dsda-doom and gzdoom should work the same in each. However, there may be maps that do not work in one port or the other due to differences in the underlying physics, similar to other map formats. Significant deviation in behaviour is likely a bug.

DSDA-Doom supports the doom, heretic, hexen, zdoom and dsda namespaces, as well as the XGLN/ZGLN, XGL2/ZGL2 and XGL3/ZGL3 extended node formats. Properties marked with a * are only supported by the opengl renderer.

Linedefs

PropertyDescription
id integerLine ID / tag (default -1 in hexen, zdoom and dsda namespaces, 0 otherwise).
v1 integerIndex of the first vertex.
v2 integerIndex of the second vertex.
blocking boolBlocks things.
blockmonsters boolBlocks monsters.
blockplayers boolBlocks players.
blockfloaters boolBlocks floaters.
blocklandmonsters boolBlock non-flying monsters.
blockprojectiles boolBlocks projectiles.
blockhitscan boolBlocks hitscan.
blockuse boolBlocks use.
blocksound boolBlocks sound.
blocksight boolBlocks sight.
blockeverything boolBlocks everything.
twosided boolLine has two sides.
dontpegtop boolLine upper texture is unpegged.
dontpegbottom boolLine lower texture is unpegged.
secret boolLine is drawn as one-sided on the map.
dontdraw boolLine never shows on the map.
mapped boolLine starts out mapped.
revealed boolLine starts revealed on the map.
jumpover boolLine is a strife-style railing.
playercross boolCan be activated by player cross.
playeruse boolCan be activated by player use.
monstercross boolCan be activated by monster cross.
monsteruse boolCan be activated by monster use.
impact boolCan be activated by projectile impact.
playerpush boolCan be activated by player push.
monsterpush boolCan be activated by monster push.
missilecross boolCan be activated by projectile cross.
anycross boolCan be activated by any non-projectile cross.
monsteractivate boolCan be activated by monsters.
playeruseback boolCan be activated by player use from the back.
firstsideonly boolCan only be activated from the front.
passuse boolUse action passes through the line.
checkswitchrange boolSwitches can only be activated when vertically reachable.
locknumber integer
  • 0: No lock.
  • 1: Red key card.
  • 2: Blue key card.
  • 3: Yellow key card.
  • 4: Red skull key.
  • 5: Blue skull key.
  • 6: Yellow skull key.
  • 100: Any key.
  • 101: All 6 keys.
  • 129: Any red key.
  • 130: Any blue key.
  • 131: Any yellow key.
  • 132: Red card or skull.
  • 133: Blue card or skull.
  • 134: Yellow card or skull.
  • 229: Any key of each color.
repeatspecial boolRepeatable activation.
special integerSpecial action.
arg0 integerSpecial argument 0.
arg1 integerSpecial argument 1.
arg2 integerSpecial argument 2.
arg3 integerSpecial argument 3.
arg4 integerSpecial argument 4.
arg0str stringSpecial argument 0 as a string (for certain actions).
sidefront integerIndex of the first sidedef.
sideback integerIndex of the second sidedef.
alpha floatTranslucency (default is 1.0).
translucent boolLine is 75% opague.
transparent boolLine is 25% opague.
clipmidtex boolMidtextures are clipped by the floor and ceiling.
* wrapmidtex boolMidtextures are wrapped.
midtex3d boolActors can walk on the midtexture.
midtex3dimpassible boolThe midtexture is impassible.
moreids stringSpace-separated list of extra IDs.
automapstyle integer
  • 0: Automatic (based on properties).
  • 1: One-sided.
  • 2: Two-sided.
  • 3: Different floor levels.
  • 4: Different ceiling levels.
  • 5: Reserved / unused (3D floor border).
  • 6: Wall with special non-door action.
  • 7: Secret.
  • 8: Unseen.
  • 9: Locked.
  • 10: Intra-level teleporter.
  • 11: Map exit.
  • 12: Unseen secret.
  • 13: Reserved / unused (portal).
health integerLine health (for use with damage / death special).
healthgroup integerGroup ID of lines sharing health.
damagespecial boolSpecial activated when receiving damage that does not reduce health to 0.
deathspecial boolSpecial activated when health is reduced to 0.

Sidedefs

PropertyDescription
offsetx integerX texture offset.
offsety integerY texture offset.
texturetop stringUpper texture.
texturebottom stringLower texture.
texturemiddle stringMiddle texture.
sector integerSector index.
* scalex_top floatX scale for upper texture (default is 1.0).
* scaley_top floatY scale for upper texture (default is 1.0).
* scalex_mid floatX scale for middle texture (default is 1.0).
* scaley_mid floatY scale for middle texture (default is 1.0).
* scalex_bottom floatX scale for bottom texture (default is 1.0).
* scaley_bottom floatY scale for bottom texture (default is 1.0).
offsetx_top floatX offset for upper texture.
offsety_top floatY offset for upper texture.
offsetx_mid floatX offset for middle texture.
offsety_mid floatY offset for middle texture.
offsetx_bottom floatX offset for lower texture.
offsety_bottom floatY offset for lower texture.
light integerLight level.
light_top integerUpper texture light level.
light_mid integerMiddle texture light level.
light_bottom integerLower texture light level.
lightabsolute boolLight is absolute rather than relative to the owning sector.
lightabsolute_top boolUpper texture light is absolute rather than relative to the sidedef light level.
lightabsolute_mid boolMiddle texture light is absolute rather than relative to the sidedef light level.
lightabsolute_bottom boolLower texture light is absolute rather than relative to the sidedef light level.
nofakecontrast boolDisables fake contrast on this sidedef.
smoothlighting boolEnables smooth fake contrast on this sidedef.
clipmidtex boolMiddle textures are clipped by the floor and ceiling.
* wrapmidtex boolMiddle textures are wrapped.
:duck: xscroll floatX units per frame to scroll line textures.
:duck: yscroll floatY units per frame to scroll line textures.
:duck: xscrolltop floatX units per frame to scroll upper texture.
:duck: yscrolltop floatY units per frame to scroll upper texture.
:duck: xscrollmid floatX units per frame to scroll middle texture.
:duck: yscrollmid floatY units per frame to scroll middle texture.
:duck: xscrollbottom floatX units per frame to scroll lower texture.
:duck: yscrollbottom floatY units per frame to scroll lower texture.

Vertices

PropertyDescription
x floatX coordinate.
y floatY coordinate.

Sectors

PropertyDescription
id integerSector ID / tag.
heightfloor integerFloor height.
heightceiling integerCeiling height.
texturefloor stringFloor texture (flat).
textureceiling stringCeiling texture (flat).
lightlevel integerLight level.
special integerSector special.
xpanningfloor floatX offset for floor texture.
ypanningfloor floatY offset for floor texture.
xpanningceiling floatX offset for ceiling texture.
ypanningceiling floatY offset for ceiling texture.
xscalefloor floatX scale for floor texture.
yscalefloor floatY scale for floor texture.
xscaleceiling floatX scale for ceiling texture.
yscaleceiling floatY scale for ceiling texture.
rotationfloor floatRotation of floor texture in degrees.
rotationceiling floatRotation of ceiling texture in degrees.
lightfloor integerFloor light level.
lightceiling integerCeiling light level.
lightfloorabsolute boolFloor light is absolute rather than relative to the sector level.
lightceilingabsolute boolCeiling light is absolute rather than relative to the sector level.
gravity floatSector gravity (default is 1.0).
silent boolActors in the sector make no sound.
noattack boolMonsters in the sector do not attack.
hidden boolSector will not be drawn on the map.
moreids stringSpace-separated list of extra IDs.
damageamount integerDamage inflicted by the sector. Negative numbers heal.
damageinterval integerInterval between damage applications (in tics, default is 32).
leakiness integerProbability of damage leaking through radiation suit (0 = never, 256 = always).
damagehazard boolUse strife-style delayed damage behavior.
:duck: xscrollfloor floatX units per frame to scroll the floor.
:duck: yscrollfloor floatY units per frame to scroll the floor.
:duck: scrollfloormode integerFloor scroll mode (see table below).
:duck: xscrollceiling floatX map units per frame to scroll the ceiling.
:duck: yscrollceiling floatY map units per frame to scroll the ceiling.
:duck: scrollceilingmode integerCeiling scroll mode (see table below).
:duck: xthrust floatX thrust magnitude (map units per frame^2).
:duck: ythrust floatY thrust magnitude (map units per frame^2).
:duck: thrustgroup integerThrust group (see table below).
:duck: thrustlocation integerThrust location (see table below).
:duck: colormap stringSector colormap.
:duck: skyfloor stringFloor sky texture.
:duck: skyceiling stringCeiling sky texture.
:duck: frictionfactor floatFriction factor. Ranges from 0 to 1 (default is 0.90625).
:duck: movefactor floatMultiplier for actor ground movement, normally derived from the friction factor (default is 0.03125).

Scroll Mode

FlagMeaning
1Affect textures
2Affect static objects
4Affect players
8Affect monsters

Thrust Group

FlagMeaning
1Affect static objects
2Affect players
4Affect monsters
8Affect projectiles
16Affect WINDTHRUST actors

Thrust Location

FlagMeaning
1Affect grounded actors
2Affect airborne actors
4Affect ceiling actors

Things

PropertyDescription
id integerThing ID / tag.
x floatX coordinate.
y floatY coordinate.
height floatZ displacement relative to the floor (or ceiling for SPAWNCEILING things).
angle integerFacing angle in degrees.
type integerDoomEdNum.
skill1 boolSpawn in skill 1.
skill2 boolSpawn in skill 2.
skill3 boolSpawn in skill 3.
skill4 boolSpawn in skill 4.
skill5 boolSpawn in skill 5.
ambush boolThing is deaf.
single boolSpawn in single-player mode.
dm boolSpawn in deathmatch mode.
coop boolSpawn in coop mode.
friend boolSpawn as a friend.
dormant boolSpawn dormant.
alpha floatTranslucency (default is 1.0).
translucent boolThing is 66% opague.
invisible boolThing is invisible.
special integerSpecial action.
arg0 integerSpecial argument 0.
arg1 integerSpecial argument 1.
arg2 integerSpecial argument 2.
arg3 integerSpecial argument 3.
arg4 integerSpecial argument 4.
arg0str stringSpecial argument 0 as a string (for certain actions).
countsecret boolPicking this thing up counts as a secret.
gravity floatThing gravity. Positive values are multiplicative and negative values are absolute (default is 1.0).
health floatThing health. Positive values are multiplicative and negative values are absolute (default is 1.0).