Doom Wiki

ZDoom is a Doom source port, originally based on ATB Doom and NTDOOM, that was first released in 1998. It has since added full support for all commonly-used Boom additions, Heretic, Hexen: Beyond Heretic, Strife: Quest for the Sigil, and Chex Quest. Many features have been added to ZDoom over time, including slopes, uncapped framerate, and z-clipping. The ZDoom source code is maintained by Marisa “Randi” Heit and Graf Zahl. The most recent official version is 2.8.1, released in 2016. The large number of features supported by ZDoom has made it the source port of choice for several independent game projects, notably Action Doom 2: Urban Brawl, Chex Quest 3, Foreverhood, and Harmony.

UPDATE: As of 1/7/17, development of ZDoom has been halted, and there are no plans on future releases. ZDoom forum user randi, the creator and developer of the source port, posted on the ZDoom forums that she is "hereby eschewing further ZDoom development," and "There will be no future releases. Consider QZDoom or GZDoom as replacements." However, randi also stated the following: "As for the site, eruanna has kindly accepted to take care of it so that the forum and wiki can continue to live on."


  • Support for all of Hexen's editing features (including ACS, hubs, and new map formats).
  • Support for most of Boom's editing features.
  • Support for several of MBF's editing features, including friendly monsters and loading DeHackEd patches directly.
  • Support for UDMF.
  • Support for all Doom engine games: the various versions of Doom, Heretic, Hexen, Strife, Chex Quest, Hacx, and even Freedoom is identified as its own IWAD rather than being taken for Doom II: Hell on Earth. Several IWADs have even been made specifically for ZDoom; Harmony is an example.
  • Removal of most vanilla Doom limits (including visplane overflow), though vanilla-style gameplay can be triggered.
  • High screen resolutions (with optimizations for modern processors).
  • Translucency (regular and additive).
  • A console.
  • Additional control options including crosshairs, free look, jumping, and crouching configurable via Quake-style key bindings.
  • OPL emulation and GENMIDI support.
  • More music and sound formats: MOD, XM, IT, S3M, MIDI, OGG Vorbis, SPC, FLAC, and MP3, as well as MUS.
  • Support for PNG, JPG, TGA, and DDS format images.
  • Greatly enhanced texture definition lump allowing scaled textures (for high-resolution), as well as compositing multipatch texture using independent rotation, mirroring, alpha transparency level, and either translations or color blending for each patch.
  • DECORATE script: a simple yet powerful actor definition language.
  • Limited UDP Internet or LAN networking inherited from Linux Doom.
  • Walking over/under monsters and other things.
  • Runs under Windows 9x, NT, XP, 7, 8.1, Linux, and Mac OS X.
  • Support for Doom Connector and Player Connector network games.
  • 3D middle textures, slopes, and colored lighting.
  • 3D floors (although sloped 3D floors are impossible).
  • Decals on walls for scorch marks and blood splatter.
  • Support for custom player skins.
  • Several camera effects, including Duke Nukem-style security cameras or Unreal-style skyboxes. Cameras can even replace the player view, allowing for scripted cutscenes or alternative gameplay mimicking a sidescroller.
  • Support for using features of every supported game in all of them - for example, a Doom map can feature Strife conversations, Hexen scripting, and actors that use Heretic codepointers.
  • Support for loading resources directly from ZIP or 7z files, making the use of the traditional WAD file format optional except for map lumps.
  • ENDOOM and animated start up screen support.
  • The ability to "summon" monsters.

Source ports based on recent versions of ZDoom

These source ports support most or all of the features listed above:

Source ports based on older versions of ZDoom

These source ports are not necessarily compatible with recent ZDoom mods:

Version history


1.11 (March 6)
Initial release.
1.13 (May 26)
1.14 (July 22)
Player setup menu for choosing name and color translation.
8-player support.
Improved console commands and configuration system.
Heretic maps can now be loaded without crashing (but they are not properly supported at the time).
1.14a (July 27)
Bugfix release.
1.16 (December 22)
First version with ACS scripting support.
Boom-compatibility is mostly implemented.
Support for Doom Legacy skins.
Sector-based effects: colored lighting, adjustable gravity, and custom amount of damage.
Various console and input system improvements.


1.17 (February 17)
Added support for several Hexen effects, notably polyobjects, sound sequences, and parallax skies.
Sparks and particle fountains.
Railgun attack.
Many bugs fixed, including the invulnerability colormap bug.
1.17a (February 21)
Bugfix release allowing to play Herian 2. Also introducing the /skins directory and the printing of formated text with ACS.
1.17b (March 17)
Preliminary work for Heretic and Hexen support.
1.17b1 (March 19)
Bugfix release.
1.17c (May 5)
Improved Boom deep water effect, added MAPINFO options to control jumping and freelook.
1.18 (September 6)
Added support for changing the scale and offsets of flats through linedefs specials.
Added Cajun bots.
Added swimmable water.
Added Quake-like texture warping.
Implemented flying.
1.18a (September 12)
Bugfix release.
1.18b (September 15)
Bugfix release.
1.19 (November 24)
Added -host and -join command-line parameters.
First official Linux build.
1.20 (November 25)
Bugfix release.
1.21 (November 26)
Bugfix release.
1.22 (November 12)
Made two linedef-only specials usable in ACS.


1.23 Beta (May 10)
Partial Heretic and Hexen support.
Windows build uses FMOD instead of MIDAS.


1.23 Beta 19 (March 9)
Added new camera types.
Added string localization.
Added decals.
Added slopes.
Added skyboxes.
1.23 Beta 20 (March 11)
1.23 Beta 23 (April 9)
1.23 Beta 24 (April 12)
1.23 Beta 25 (August 15)
Linux build now uses SDL.


1.23 Beta 33 (February 5)
Many fixes and rendering optimization.
Increased Heretic/Hexen support.
Improved decals.
Added support for the Bloodbath announcer.
Added underwater reverb effect.
Added Line_Horizon effect.
Added scripted marines and several ACS enhancements.
Added support for DeePsea's tall patches.
Added slope things.
Changed license for original ZDoom source code to a "BSD-ish one".
2.0 Beta 13 (August 27)
Further increased Heretic and Hexen support.
Added PNG support for screenshots. Savegames are actually PNG files now.
Added internal nodebuilder, made it polyobject-aware.
Added SNES SPC music support.
Added a loader for Build maps.
Added support for double- and quadruple-resolution flats (128x128 and 256x256).
Added ACS libraries.
Added support for up to 8 mouse buttons.
Added the first version of DECORATE.
Removed MBF's torque simulation because of the problems it caused.


2.0.47 (May 14)


Added Strife support.


2.0.97 (September 28)
Bugfix release.
2.0.98 (November 3)
Bugfix release.


2.1.0 (June 21)
Added several things from ZDoom Community Build (unofficial 2.0.96x) and GZDoom, including custom DECORATE weapons.
2.1.1 (June 25)
Bugfix release.
2.1.2 (July 17)
Added custom player classes.
Added "replaces" keyword for DECORATE.
IWAD selection box now remembers the last choice.
2.1.3 (July 18)
Bugfix release with a few enhancements to ACS, SNDINFO, S_SKIN, and custom classes.
2.1.4 (July 29)
Added partial emulation of Boom's TRANMAP by analyzing such lumps and extrapolating translucency level from them. This does not work for non-translucency effects that can be achieved with TRANMAPs.
2.1.5 (September 2)
Added new ACS and DECORATE functions.
Added support for many image formats for use as textures: PNG, JPEG, PCX, TGA, and DDS.
2.1.6 (October 2)
Miscellaneous improvements and bugfixes.
2.1.7 (October 31)
Added map marker object. Miscellaneous other improvements and bugfixes.


No release this year.


2.2.0 (February 14)
Added custom damage types, with monsters being able to have different custom pain chances, custom damage factors, and custom death sequence for each damage type. Also, damage-specific player death sound.
Custom state labels. New states can be defined in DECORATE.
The SBARINFO lump for creating status bar and other HUDs.
Skill definition in MAPINFO, with many properties.
Support for ENDOOM screens and the graphical or semi-graphical startup screens from Heretic, Hexen, and Strife.
Several things backported from Skulltag.
New Direct3D code for better Vista support.
Autoload sections in the ini.
GZDoom's alternate HUD.
Many new or enhanced ACS and DECORATE functions.


2.3.0 (March 1)
UDMF support.
New garbage collector to improve performances on resource-intensive maps.
Sound uses FMOD Ex instead of FMOD. Among the benefits, reverbs can now work on any sound card, not just those that support EAX.
SPC is now a first-class music format that no longer requires an external DLL to play.
Text-based texture definition format.
MD5-based recognition of maps that require certain compatibility options to work (e.g., STRAIN map07 which relied on the spechits overflow bug) to apply these settings transparently.
Added IWAD recognition for Freedoom, Chex Quest, and Chex Quest 3.
New MAPINFO format (the old one is still supported, of course) with a more robust syntax.
Custom map translators for Doom-format maps, which can be specified in MAPINFO.
Strife dialogues now work in multiplayer.
Setting up slots for custom weapons no longer requires a KEYCONF lump.
Added the "random spawner" actor.
Many new ACS, DECORATE, and SBARINFO features and enhancements.
2.3.1 (March 15)
Mostly a bugfix release.
Adds support for LZMA and BZip2 compression.


2.4.0 (January 1)
Reimplemented and improved support for gamepads and joysticks.
Added compiling support for Macintosh systems.
Added IWAD recognition for Ultimate Freedoom, Action Doom 2, Blasphemer, and Harmony.
A whole lot more.
2.4.1 (January 24)
Mostly a bugfix release, but also added GAMEINFO lump so that a mod can specify which IWAD and external resource files it uses.
2.5.0 (August 11)
Enhanced polyobject system, allowing them to move anywhere in the map (like Eternity's "dynasegs") and to give them any arbitrary shape. This is accompanied by new ACS polyobject movement functions.
Support for uncompressed extended nodes, also supported by the Eternity Engine and PrBoom+, to create a new cross-port standard for node storage.
Support for using Byte Map Fonts.
Ability to use metadata tags in audio formats to define custom loop points.
Added support for the MUSINFO lump (from Risen3D and PrBoom+).
Improved compatibility settings to allow optionally a greater faithfulness to the vanilla Doom and vanilla Heretic.
ZMAPINFO as an alias for MAPINFO to avoid compatibility problems with other ports parsing this lump.
Full rewrite of the SBARINFO system allowing many additional features and options.
Added support for multi-monitor display.
Buddha mode, default reverbs environment setting in MAPINFO, several generalized codepointers to emulate some very specific Heretic and Hexen action functions, new functions to refine actor behavior through, enhanced poison damage system, generalized railgun codepointers, new automap options, HOM detection system, new console commands, and the usual bug fixes and minor enhancements.


No release this year.


2.6.0 (July 2, 2012)
There have been hundreds of bugs fixed since then as well as numerous enhancements:
Added Hacx IWAD support.
Added text-format Strife conversation system with USDF and ZSDF.
A textured automap is now available; automap graphics are now externalized.
Rewritten menu system, which can now be defined with the MENUDEF lump.
Externalized intermissions to MAPINFO.
Externalized IWAD detection and gave each IWAD its own independent config section.
Added FluidSynth and GUS emulator softsynths; fixed issues with TiMidity++.
Added VOC support and enhanced MIDI playback with support for alternative formats such as XMI and HMI.
Action specials: Added Ceiling_LowerAndCrushDist and Thing_SetConversation. Added console command to execute specials.
Increased maximum script number from 999 to 32767.
Named scripts allow to avoid script number conflicts altogether.
Added StrCopy, CheckSight, SetActivator, and SetPointer functions.
Added APROP_ScaleX/Y and APROP_Mass actor properties.
Added temporary dynamic strings variables with StrParam.
Scripts can now have up to four parameters.
Added A_CheckFlag, A_FaceMaster, A_FaceTracer, A_RadiusGive, A_SetMass, A_SetScale, A_Warp, and A_WolfAttack...
Enhanced A_AlertMonsters, A_BFGSpray, A_Blast, A_CustomBulletAttack, A_FireBullets, A_GunFlash, A_PainAttack, and A_RadiusThrust...
Added an actor pointer manipulation system with several new codepointers...
Increased damage type flexibility in several ways with DeathType and PainType.
Added customizable fléchettes.
Made accuracy and stamina accessible through DECORATE expressions.
Added ProjectileKickback, Inventory.RestrictedTo, and Inventory.ForbiddenTo class-based properties.
Backported VisibleToTeam, VisibleToPlayerClass, and weapon DropItem feature from Skulltag, and enhanced them.
Added "Fast" keyword for states and deprecated the unreliable FASTER and FASTMELEE flags.
Added a secret hint system.
3D floors support.
FraggleScript support.
Voxel support.
SBARINFO: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.
SNDINFO: Added musicalias and attenuation.
Compatibility: fixed issues with Eternal Doom, Happy Time Circus, Phobos, vanilla compat, Boom compat, light levels higher than 255, Heretic, Strife, MUSINFO, misnamed UDMF field.
Fixed loading of BMF palettes.
Restart console command.
Added PALVERS lump for specifying alternate graphics to use with a paletted render, in case the graphics you really want to use look bad without true color.
Custom IWADs no longer need to include a COLORMAP, as ZDoom will generate one automatically if it is missing.
Fixed vertical tiling of non-power-of-two textures.


2.7.0 (June 8)
Added Floor_RaiseAndCrushDoom.
Made dynamic strings persistent. ACS can now safely generate up to one million new strings.
Added CheckFont, GetCVarString, GetUserCVar, GetUserCVarString, IsTIDUsed, LineAttack, SetCVar, SetCVarString, SetUserCVar, SetUserCVarString, SpawnDecal, and UniqueTID.
Added HUD layers, visibility flags, additive blending, and alpha parameter to HudMessage and HudMessageBold.
Also added HUD message wrapping and clipping with SetHudClipRect and SetHudWrapWidth.
Added PLAYERINFO_FOV and _DESIREDFOV to GetPlayerInfo.
Added support for desaturated translations.
Added Sqrt, FixedSqrt, and VectorLength functions.
Support for advanced structures from non-ACC compilers.
Added the ability to retrieve the ReactionTime, Height, and Radius properties through GetActorProperty.
FLOATBOB things are no longer moved physically when bobbing.
Added Player.FallingScreamSpeed, Player.GruntSpeed, Weapon.MinSelectionAmmo1, and Weapon.MinSelectionAmmo2.
Added random state duration and A_SetTics.
A_Explode's affectsource parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to A_RadiusThrust.
A_RadiusThrust can use negative force values.
Added A_JumpIfTargetInsideMeleeRange, A_JumpIfTargetOutsideMeleeRange, ::A_SetDamageType, and A_CheckLOF.
Added JLOSF_NOAUTOAIM flag to A_JumpIfTargetInLOS.
Added WRF_DISABLESWITCH to A_WeaponReady.
A_Light can use negative values to darken the scene.
Added NORANDOMPUFFZ flag to A_CustomPunch, A_FireBullets, and A_CustomBulletAttack.
Added the ability to adjust the vertical offset of a rail attack to A_RailAttack and A_CustomRailgun.
Player-fired seeker missiles' range at which the missiles initially lock-on a tracer can be set via MaxTargetRange actor property.
ReactionTime added to DECORATE expressions.
Added NoDelay state flag.
Added Bounce actor states.
Fixed few cases of DECORATE definitions inaccuracies for Doom, Heretic, Hexen, and Strife actors.
FONTDEFS: Backported SPACEWIDTH from ECWolf.
LANGUAGE: Brazilian Portuguese support.
MAPINFO: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for map definitions and NoRandomPlayerclass for GameInfo definitions.
MIDI: FluidSynth now recognize libfluidsynth.dll as a valid alias for fluidsynth.dll, various FluidSynth tweaks and fixes. The OPL emulator now can use either OPL2 or OPL3 emulation, supports full stereo panning and can use up to eight virtual chips.
Updated foo_DUMB.
Implemented additive rendering for 3D floors.
Added Quake-like no-clipping with noclip2.
Exported the scoreboard text to LANGUAGE.
The sound system should now precache nearly all sounds used by actor properties and ambient sounds, and the MAPINFO command "PrecacheSounds" can be used to precache other sounds.
Arbitrary FPS cap with vid_maxfps.
Increased maximum resolution to 5760×3600.
Added lightfog property for sidedefs.
Added support for Doom 3: BFG Edition's modified IWADs, including No Rest for the Living.
Improved WAD archive code with support for big-endian format and LZSS compression used in several console ports.
Added ability in UDMF to specify things to spawn by thing specials and Hexen breakable items by names with arg1str, as well as the ability to set initial values to a thing's user variable.
Added new node format for complex UDMF maps which need fractional precision on node splitters.
The alternate HUD now features a Berserk indicator and a customizable time display.
Tweaked scripted marines.
Added acsprofile console command.
Weapon slots can be configured from the Customize controls menu.
Solved compatibility issues with Daedalus: Alien Defense, Community Chest 3, Nuke Mine, Khorus, Void, the Master Levels, and Claustrophobia 1024.
RandomSpawners now respect nomonsters.
Added the ability to define mod-specific console variables through the addition of the CVARINFO lump.
Fixed miscellaneous bugs.
2.7.121 (July 2)

Note: This is the first version based on the Git repository; 2.7.0 was the last version based on the SVN repository.

Added new additive GameInfo keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.
Added a new DONTDRAIN flag to mark actors as ineligible for vampirism attacks.
Compatibility fixes for Ultimate Simplicity map07, Cheogsh map01, and Super Sonic Doom map31.
Polyobject mirror numbers can no longer be changed with SetLineSpecial. This was never a supported feature and caused problems for legitimate uses of SetLineSpecial on polyobject lines.
The powered-up Gold Wand was not puffing on actors.
Disabled Heretic's punishment cheats when in allcheats mode.
Objects that explode on death no longer deal the damage they were dealt instead of their own.
Vampirism attacks now respect damage reduction.
Demo recording now writes correct user info to demos.
ACS's PlaySound for looping sounds now works properly when using channel flags.


No release this year.


No release this year.


2.8.0 (February 5)

2.8.1 (February 22)

region/#endregion is now supported for text lumps.
Better localizability of the menus.
Terrain definitions can now be optional.
Walking into an area with a reverb effect no longer mutes all sound.
Heretic's time bomb artifacts now spawn in the proper locations.
Heretic's powered firemace balls once again seek their targets.
The whirlwind attack used by Heretic's Ironlich sometimes fizzled out immediately.
Instant sector movement actions are again instant.
Various other minor fixes.

External links