<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://zdoom.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blzut3</id>
	<title>ZDoom Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://zdoom.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blzut3"/>
	<link rel="alternate" type="text/html" href="https://zdoom.org/wiki/Special:Contributions/Blzut3"/>
	<updated>2026-08-30T03:25:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDuke&amp;diff=47049</id>
		<title>ZDuke</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDuke&amp;diff=47049"/>
		<updated>2019-11-30T18:26:39Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Starting in 1999, [[User:Randy Heit|Randy]] started looking for ways of using [[Build]]-like features to enhance [[ZDoom]] and outgrow some of the limitations enforced by the use of a BSP algorithm. These forays didn&#039;t pan out entirely, as ZDoom still uses a BSP tree, but some elements (such as [[slopes]], [[cameras]], [[skybox]]es and [[stacked sectors]]) were implemented as a result. Other traces of Build support can be seen in the {{Class|CustomSprite}} actor and a limited ability to load Build maps.&lt;br /&gt;
&lt;br /&gt;
But it also resulted in a ZDoom-based &#039;&#039;Duke Nukem 3D&#039;&#039; [[source port]], entitled &#039;&#039;&#039;ZDuke&#039;&#039;&#039;. ZDuke had {{plainlink|[https://zdoom.org/files/old/duke3d.cab one released build]}} October 11th 2003, based on ZDoom 2.0.43, and was afterwards more or less abandoned. This build was largely a straight port of the Duke Nukem 3D source code running over the Win32 (DirectDraw) front end from ZDoom. It also contains the console from ZDoom, which at this point was the only way to configure the game as settings were yet to be persistent. It requires fmod.dll from the {{plainlink|[https://zdoom.org/files/old/43.cab ZDoom 2.0.43 cab]}}, and was developed for Windows XP.&lt;br /&gt;
&lt;br /&gt;
In November 2009, after some people expressed interest in this erstwhile project, Randy uploaded the ZDuke source code, allegedly then based on 2.0.48, to the ZDoom SVN ({{plainlink|[http://zdoom.org/Changelog/1963/files r1963]}}). The thread with this discussion and the announcement of the release was in the &amp;quot;off topic&amp;quot; forum and therefore unfortunately pruned out. However, it mentioned that the ZDuke code is outdated and unsupported.&lt;br /&gt;
&lt;br /&gt;
Following the migration to a [[Git repository]], the old [[Subversion repository]] on mancubus.net was erased, and the source code of ZDuke was taken along with it.&lt;br /&gt;
&lt;br /&gt;
Merging ZDoom and ZDuke (even an updated version) is considered more trouble than it would be worth. The internal game logics are too different to be conciliated in a single engine in a streamlined and stable fashion.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*{{forum|p=8100|Forum post where binary was posted}}&lt;br /&gt;
*{{forum|t=66480|Forum thread on preserving ZDuke}}&lt;br /&gt;
*{{forum|t=22268|Forum thread on exploring Build maps in ZDoom}}&lt;br /&gt;
*{{forum|t=22075|Old forum thread asking for adding Duke 3D support}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Nostalgia]][[Category:Software]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47037</id>
		<title>ZDoom version history</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47037"/>
		<updated>2019-11-27T00:44:54Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: TOC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the evolution of [[ZDoom]] by listing the main features of each version.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!By year&lt;br /&gt;
|[[#1998|1998]] &amp;amp;middot; [[#1999|1999]] &amp;amp;middot; [[#2000|2000]] &amp;amp;middot; [[#2001|2001]] &amp;amp;middot; [[#2002|2002]] &amp;amp;middot; [[#2003|2003]] &amp;amp;middot; [[#2004|2004]] &amp;amp;middot; [[#2005|2005]] &amp;amp;middot; [[#2006|2006]] &amp;amp;middot; [[#2007|2007]] &amp;amp;middot; [[#2008|2008]] &amp;amp;middot; [[#2009|2009]] &amp;amp;middot; [[#2010|2010]] &amp;amp;middot; [[#2011|2011]] &amp;amp;middot; [[#2012|2012]] &amp;amp;middot; [[#2013|2013]] &amp;amp;middot; [[#2014|2014]] &amp;amp;middot; [[#2015|2015]] &amp;amp;middot; [[#2016|2016]]&lt;br /&gt;
|-&lt;br /&gt;
!1.x Branch&lt;br /&gt;
|[[#1.11|1.11]] &amp;amp;middot; [[#1.12|1.12]] &amp;amp;middot; [[#1.13|1.13]] &amp;amp;middot; [[#1.14|1.14]] &amp;amp;middot; [[#1.14a|1.14a]] &amp;amp;middot; [[#1.16|1.16]] &amp;amp;middot; [[#1.17|1.17]] &amp;amp;middot; [[#1.17a|1.17a]] &amp;amp;middot; [[#1.17b|1.17b]] &amp;amp;middot; [[#1.17b1|1.17b1]] &amp;amp;middot; [[#1.17c|1.17c]] &amp;amp;middot; [[#1.18|1.18]] &amp;amp;middot; [[#1.18a|1.18a]] &amp;amp;middot; [[#1.18b|1.18b]] &amp;amp;middot; [[#1.19|1.19]] &amp;amp;middot; [[#1.20|1.20]] &amp;amp;middot; [[#1.21|1.21]] &amp;amp;middot; [[#1.22|1.22]] &amp;amp;middot; [[#1.23 Beta|1.23 Beta]] &amp;amp;middot; [[#1.23 Beta 19|1.23 Beta 19]] &amp;amp;middot; [[#1.23 Beta 20|1.23 Beta 20]] &amp;amp;middot; [[#1.23 Beta 23|1.23 Beta 23]] &amp;amp;middot; [[#1.23 Beta 24|1.23 Beta 24]] &amp;amp;middot; [[#1.23 Beta 25|1.23 Beta 25]] &amp;amp;middot; [[#1.23 Beta 33|1.23 Beta 33]]&lt;br /&gt;
|-&lt;br /&gt;
!2.0 Branch&lt;br /&gt;
|[[#2.0 Beta 13|2.0 Beta 13]] &amp;amp;middot; [[#2.0.21|2.0.21]] &amp;amp;middot; [[#2.0.22|2.0.22]] &amp;amp;middot; [[#2.0.23|2.0.23]] &amp;amp;middot; [[#2.0.24|2.0.24]] &amp;amp;middot; [[#2.0.25|2.0.25]] &amp;amp;middot; [[#2.0.26|2.0.26]] &amp;amp;middot; [[#2.0.27|2.0.27]] &amp;amp;middot; [[#2.0.28|2.0.28]] &amp;amp;middot; [[#2.0.29|2.0.29]] &amp;amp;middot; [[#2.0.30|2.0.30]] &amp;amp;middot; [[#2.0.32|2.0.32]] &amp;amp;middot; [[#2.0.33|2.0.33]] &amp;amp;middot; [[#2.0.34|2.0.34]] &amp;amp;middot; [[#2.0.35|2.0.35]] &amp;amp;middot; [[#2.0.36|2.0.36]] &amp;amp;middot; [[#2.0.37|2.0.37]] &amp;amp;middot; [[#2.0.38|2.0.38]] &amp;amp;middot; [[#2.0.39|2.0.39]] &amp;amp;middot; [[#2.0.40|2.0.40]] &amp;amp;middot; [[#2.0.41|2.0.41]] &amp;amp;middot; [[#2.0.42|2.0.42]] &amp;amp;middot; [[#2.0.43|2.0.43]] &amp;amp;middot; [[#2.0.44|2.0.44]] &amp;amp;middot; [[#2.0.45|2.0.45]] &amp;amp;middot; [[#2.0.46|2.0.46]] &amp;amp;middot; [[#2.0.47|2.0.47]] &amp;amp;middot; [[#2.0.47i|2.0.47i]] &amp;amp;middot; [[#2.0.47j|2.0.47j]] &amp;amp;middot; [[#2.0.47l|2.0.47l]] &amp;amp;middot; [[#2.0.47o|2.0.47o]] &amp;amp;middot; [[#2.0.47p|2.0.47p]] &amp;amp;middot; [[#2.0.48|2.0.48]] &amp;amp;middot; [[#2.0.49|2.0.49]] &amp;amp;middot; [[#2.0.50|2.0.50]] &amp;amp;middot; [[#2.0.51|2.0.51]] &amp;amp;middot; [[#2.0.52|2.0.52]] &amp;amp;middot; [[#2.0.53|2.0.53]] &amp;amp;middot; [[#2.0.54|2.0.54]] &amp;amp;middot; [[#2.0.55|2.0.55]] &amp;amp;middot; [[#2.0.56|2.0.56]] &amp;amp;middot; [[#2.0.57|2.0.57]] &amp;amp;middot; [[#2.0.58|2.0.58]] &amp;amp;middot; [[#2.0.59|2.0.59]] &amp;amp;middot; [[#2.0.60|2.0.60]] &amp;amp;middot; [[#2.0.61|2.0.61]] &amp;amp;middot; [[#2.0.62|2.0.62]] &amp;amp;middot; [[#2.0.63|2.0.63]] &amp;amp;middot; [[#2.0.64|2.0.64]] &amp;amp;middot; [[#2.0.90|2.0.90]] &amp;amp;middot; [[#2.0.91|2.0.91]] &amp;amp;middot; [[#2.0.92|2.0.92]] &amp;amp;middot; [[#2.0.93|2.0.93]] &amp;amp;middot; [[#2.0.94|2.0.94]] &amp;amp;middot; [[#2.0.95|2.0.95]] &amp;amp;middot; [[#2.0.96|2.0.96]] &amp;amp;middot; [[#2.0.97|2.0.97]] &amp;amp;middot; [[#2.0.98|2.0.98]]&lt;br /&gt;
|-&lt;br /&gt;
!2.1 Branch&lt;br /&gt;
|[[#2.1.0|2.1.0]] &amp;amp;middot; [[#2.1.1|2.1.1]] &amp;amp;middot; [[#2.1.2|2.1.2]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.4|2.1.4]] &amp;amp;middot; [[#2.1.5|2.1.5]] &amp;amp;middot; [[#2.1.6|2.1.6]] &amp;amp;middot; [[#2.1.7|2.1.7]]&lt;br /&gt;
|-&lt;br /&gt;
!Modern&lt;br /&gt;
|[[#2.2.0|2.2.0]] &amp;amp;middot; [[#2.3.0|2.3.0]] &amp;amp;middot; [[#2.3.1|2.3.1]] &amp;amp;middot; [[#2.4.0|2.4.0]] &amp;amp;middot; [[#2.4.1|2.4.1]] &amp;amp;middot; [[#2.5.0|2.5.0]] &amp;amp;middot; [[#2.6.0|2.6.0]] &amp;amp;middot; [[#2.6.1|2.6.1]] &amp;amp;middot; [[#2.7.0|2.7.0]] &amp;amp;middot; [[#2.7.1|2.7.1]] &amp;amp;middot; [[#2.8.0|2.8.0]] &amp;amp;middot; [[#2.8.1|2.8.1]] &amp;amp;middot; [[#Post 2.8.1|Post 2.8.1]]&lt;br /&gt;
|}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==1998==&lt;br /&gt;
;{{LE|1.11}} (March 6): {{Plainlink|[http://www.zdoom.org/files/old/zdoom111.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom111s.zip Source]}}&lt;br /&gt;
:Initial release, based on the [[NTDoom]] and [[ATB Doom]]. The version numbering follows from the Doom source code version numbering of 1.10.&lt;br /&gt;
:* Works under both Windows 95 and NT 4.0, although it works best under Win95.&lt;br /&gt;
:* Limited support for the Pause key. It works with some keyboards on some machines.&lt;br /&gt;
:* Supports any resolution compatible with your DirectDraw drivers.&lt;br /&gt;
:* Look up/down à la &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
:* Translucency for selected objects.&lt;br /&gt;
:* Has a [[console]] with most of the functionality of &#039;&#039;Quake&#039;&#039;&#039;s. The only significant missing feature is Tab-completion.&lt;br /&gt;
:* Notarget [[cheat]].&lt;br /&gt;
:* Command to {{CCMD|D|kill}} all [[monster]]s in a level or yourself.&lt;br /&gt;
:* Can play [[MUS]], [[MIDI]], and MOD music.&lt;br /&gt;
:* Selected sounds are played in surround sound.&lt;br /&gt;
:* Doors that need keys to open are highlighted on the [[automap]].&lt;br /&gt;
:* Automap now shows various statistics in addition to the level name.&lt;br /&gt;
:* True keybindings. Bind any key to any command or sequence of commands.&lt;br /&gt;
:* [[Intermission]] screen can now display your stats using absolute values rather than percentages.&lt;br /&gt;
:* A new more general [[demo]] format.&lt;br /&gt;
;{{LE|1.12}} (April 7): {{Plainlink|[http://www.zdoom.org/files/old/zdoom112.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom112s.zip Source]}}&lt;br /&gt;
:* Some visual enhancements were made such as centering the menus and drawing borders around the status bar in higher resolutions.&lt;br /&gt;
:* [[Console command]]s can now be specified on the [[command line parameters|command line]].&lt;br /&gt;
:* Removed some of [[Doom]]&#039;s limits such as VisPlanes, VisSprites, and 2S [[HOM]].&lt;br /&gt;
:* Rewrote some of the inner loops in assembly. (There was some assembly in 1.11, but it never got used.)&lt;br /&gt;
:* New [[CVAR]]s relating to mouse movement. ({{CVAR|C|invertmouse}}, {{CVAR|C|m_pitch}}, {{CVAR|C|m_yaw}}, etc.)&lt;br /&gt;
:* Mouse movement doesn&#039;t get sluggish in high resolutions.&lt;br /&gt;
:* [[Automap]] colors are customizable.&lt;br /&gt;
:* Automap overlay and rotation are available.&lt;br /&gt;
:* Eight [[crosshair]]s.&lt;br /&gt;
:* Shoot up/down.&lt;br /&gt;
:* Alt-Tab and Pause work properly on all machines now.&lt;br /&gt;
:* The {{CCMD|P|+jump}} command now works.&lt;br /&gt;
:* 25% and 75% translucency levels in addition to 50%. The translucency tables now get saved to disk, too, so they only need to be calculated once instead of every time the game is run.&lt;br /&gt;
:* The [[console]] [[font]] is now editable.&lt;br /&gt;
:* Near complete support for [[DeHackEd]] patches. (Only monster infighting and changing a few minor text strings are not supported.)&lt;br /&gt;
:* Sky height and position is now fixed for high resolutions. (It still wraps if you look up, but at least now if you look straight ahead, it never will.)&lt;br /&gt;
:* Weapon sprite is always drawn at the correct location. (It was being drawn too low in some resolutions like 400x300.)&lt;br /&gt;
:* New [[options menu]], which includes a key configuration screen.&lt;br /&gt;
:* [[Stealth monster]]s.&lt;br /&gt;
:* New full-screen [[HUD]].&lt;br /&gt;
:* And a few other things not worth mentioning separately.&lt;br /&gt;
;{{LE|1.13}} (May 26):{{forum|t=4|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom113.zip Build]}}&lt;br /&gt;
:* Fixed some major bugs (that crashed the game) and other lesser bugs that were just annoying.&lt;br /&gt;
:* 3-D collisions for walking under and standing on other things.&lt;br /&gt;
:* The status bar can be scaled to the full width of the screen.&lt;br /&gt;
:* The screen mode can be selected from a menu inside the game.&lt;br /&gt;
:* ZDoom can run in a window on the desktop.&lt;br /&gt;
:* Better [[DeHackEd]] support. Only a few text replacements are not supported. Everything else works (including monster infighting which I haven&#039;t seen in any other port).&lt;br /&gt;
:* New features for level designers (see editing.txt for details):&lt;br /&gt;
::*Specification of next and secret maps on a per-map basis.&lt;br /&gt;
::*Specify sky texture on a per-map basis.&lt;br /&gt;
::*Use any lump in a wad as music for a map.&lt;br /&gt;
::*Give maps a custom name without using a DeHackEd patch.&lt;br /&gt;
::*Maps can be named anything (not just E?M? or MAP??).&lt;br /&gt;
::*Place any messages of any length between any two maps.&lt;br /&gt;
::*&#039;&#039;[[Hexen]]&#039;&#039;-style fog (of any color).&lt;br /&gt;
::*[[Ambient sound]]s &amp;amp;mdash; either point like &#039;&#039;Quake&#039;&#039; or global like &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;Hexen&#039;&#039;.&lt;br /&gt;
::*Automatic use of [[DeHackEd]] patches in PWADs.&lt;br /&gt;
::*No more {{dw|tutti-frutti}} for short textures of certain heights.&lt;br /&gt;
::*zdoom.wcf file for use with [[WadAuthor]].&lt;br /&gt;
:* Rocket jumping. (One very important note about this: You need to be *in the air* when your rocket explodes for rocket jumping to work. This is different from &#039;&#039;Quake&#039;&#039;, and I will probably rewrite it for the next release.)&lt;br /&gt;
:* Dynamic [[palette flash]]es.&lt;br /&gt;
:* Supports stretching skies for [[freelook]].&lt;br /&gt;
:* Larger freelook range.&lt;br /&gt;
:* Added tab-completion to the [[console]].&lt;br /&gt;
:* zdoom.cfg is now the name of the default [[configuration file]] since [[Doom Legacy]] decided to start using config.cfg.&lt;br /&gt;
:* French language support. (Set {{CVAR|C|language}} CVAR to &amp;quot;french&amp;quot;.)&lt;br /&gt;
:* Player obituaries.&lt;br /&gt;
:* Unlimited ammo cheat (use g_unlimitedammo cvar).&lt;br /&gt;
;{{LE|1.14}} (July 22): {{forum|t=5|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom114-src.zip Source]}}&lt;br /&gt;
:Bugs fixed:&lt;br /&gt;
:* The bunny scroller at the end of E3M8 no longer crashes the game.&lt;br /&gt;
:* The IDKFA [[cheat]] gives the proper amount of armor again.&lt;br /&gt;
:* Demo recording works again.&lt;br /&gt;
:* Telefragging works again.&lt;br /&gt;
:* Picking up the {{Class|InvulnerabilitySphere|invulnerability sphere}} displays the correct colors now.&lt;br /&gt;
:* [[DeHackEd]] patches containing text replacements no longer crash the game.&lt;br /&gt;
:* Printing a string containing &amp;quot;%s&amp;quot; to the console and then changing the video mode will no longer crash the game.&lt;br /&gt;
:* Chat mode finally works again.&lt;br /&gt;
:* If MIDAS can&#039;t initialize, you can still play the game but without sound.&lt;br /&gt;
:* {{Class|Pistol}} and {{Class|chaingun}} sounds no longer cut out when there are lots of {{Class|ZombieMan|zombie men}} shooting their pistols at you.&lt;br /&gt;
:* Mouse input should no longer be so jerky under Windows NT.&lt;br /&gt;
:* The [[crosshair]] is finally accurate for aiming.&lt;br /&gt;
:* [[Autoaim]] is properly remembered each time you start ZDoom.&lt;br /&gt;
:* Switches in &#039;&#039;[[the Ultimate Doom]]&#039;&#039; that aren&#039;t also in the shareware Doom properly change their appearance when switched.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Players can choose their own colors and names. ([[Player setup]] menu is included).&lt;br /&gt;
:* 8-player support (untested but should work).&lt;br /&gt;
:* Miscellaneous internal code changes have been borrowed from the [[Boom]] source. (This does *not* mean that ZDoom supports Boom levels yet.)&lt;br /&gt;
:* [[Cheat]]s, chat messages, and gamestate changes are now recorded in demos.&lt;br /&gt;
:* Single-player demos recorded with ZDoom are generally smaller than before.&lt;br /&gt;
:* &#039;&#039;Quake 2&#039;&#039;-style deathmatch flags.&lt;br /&gt;
:* Cheats (optionally) work in multiplayer games.&lt;br /&gt;
:* Mode X is now supported under Win95, so all the machines that couldn&#039;t run ZDoom in 320x200 before should be able to now.&lt;br /&gt;
:* Fewer conditions result in error messages that quit the game. (If you have &#039;&#039;[[Heretic]]&#039;&#039;, try this: Start ZDoom with -file heretic and go to the console and type &amp;quot;{{CCMD|D|map}} E1M1&amp;quot;.)&lt;br /&gt;
:* Keys can repeat in the [[console]].&lt;br /&gt;
:* The console and chat mode now use the localized keymap set with the Keyboard control panel.&lt;br /&gt;
:* Messages at the top of the screen now break along between words instead of in the middle of them.&lt;br /&gt;
:* Added {{c|-config}} [[command line parameter]].&lt;br /&gt;
:* Added {{c|-fastdemo}} command line parameter.&lt;br /&gt;
:* Added new {{CCMD|D|screenshot}} command. (bound to &amp;quot;Print Screen&amp;quot; key by default)&lt;br /&gt;
:* Added &#039;&#039;Quake&#039;&#039;-like {{CCMD|P|+showscores}} command. (bound to &amp;quot;\&amp;quot; key by default)&lt;br /&gt;
:* [[Alias]]es are now saved in the config file.&lt;br /&gt;
:* Added support for multiple pitched sounds like in very old version of Doom. (Use the snd_pitched cvar to turn it on and off.)&lt;br /&gt;
;{{LE|1.14a}} (July 27): {{forum|t=6|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114a.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoomsrc114-114a.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:Bugs fixed are:&lt;br /&gt;
:* No more crashing about freeing a pointer without ZONEID when changing levels.&lt;br /&gt;
:* Skies wider than 256 pixels are drawn correctly.&lt;br /&gt;
:* [[Monster]]s&#039; heights are once again the same as they were in id&#039;s original &#039;&#039;[[Doom]]&#039;&#039;, so certain areas work properly again.&lt;br /&gt;
:* Monsters shouldn&#039;t teleport into each other anymore.&lt;br /&gt;
:* Improved support for international keyboards.&lt;br /&gt;
:* The skill level chosen for a new game is no longer ignored if the new game is started while a demo is playing.&lt;br /&gt;
:Cosmetic changes:&lt;br /&gt;
:* No more &amp;quot;sv_gravity changed to...&amp;quot;, &amp;quot;skill changed to...&amp;quot;, etc. messages in single player games.&lt;br /&gt;
:* Activating the [[player setup]] [[menu]] automatically stops any playing [[demo]]s, since it doesn&#039;t work properly while they play.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} don&#039;t go flying away when exploding anymore.&lt;br /&gt;
:* Added def_patch cvar to automatically load a DeHackEd patch each time the game is started.&lt;br /&gt;
:* ZDoom [[savegame]]s now use the name zdoomsv?.dsg instead of doomsav?.dsg.&lt;br /&gt;
:This version also includes some preliminary [[Boom]] support as I started integrating some of the Boom source code with ZDoom:&lt;br /&gt;
:* Medusa fix.&lt;br /&gt;
:* Openings limit removed.&lt;br /&gt;
:* Removed limit on switches and animations.&lt;br /&gt;
:* Added support for Boom-like [[ANIMATED]] and [[SWITCHES]] lumps in PWADs.&lt;br /&gt;
:* Added support for Boom-style scrollers (including conveyors).&lt;br /&gt;
:* Added partial [[deep water]] support.&lt;br /&gt;
;{{LE|1.16}} (December 22): {{forum|t=13|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom116.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom116-src.zip Source]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* No more limit on size of [[savegame]]s or [[demo]]s.&lt;br /&gt;
:* Screen resolutions above 320x200 are now the proper brightness (they were too bright before.)&lt;br /&gt;
:* Improved the brightness of the [[console]] [[font]].&lt;br /&gt;
:* {{Class|BulletPuff|Bullet puffs}} can show up on the floor and ceiling and not just walls.&lt;br /&gt;
:* Missile weapons can trigger gun activation lines.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} now bounce around as much as they did in original &#039;&#039;[[Doom]]&#039;&#039;. (They were too &amp;quot;inert&amp;quot; in 1.14.)&lt;br /&gt;
:* If a demo is being recorded, quitting the game normally will save the demo to disk. (Previously, you had to use the stop command to do this.)&lt;br /&gt;
:New features for players:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* Mouse wheel support and {{CCMD|P|weapnext}}/{{CCMD|P|weapprev}} commands.&lt;br /&gt;
:* Doublebindings.&lt;br /&gt;
:* Better analog joystick support.&lt;br /&gt;
:* 180 degree turn command for keyboarders.&lt;br /&gt;
:* Damage done by a rocket to its shooter is {{CVAR|C|splashfator|configurable}} and defaults to the original Doom behavior.&lt;br /&gt;
:* User-configurable gender. (Even though I don&#039;t have any new player sounds, at least the [[obituaries]] are gender-aware. :-)&lt;br /&gt;
:* [[Teamplay]] mode.&lt;br /&gt;
:* {{CVAR|C|sv_nobfgaim|New CVAR}} to disable manual aiming of the BFG to prevent someone from shooting it at the floor and quickly triggering tracer damage before.&lt;br /&gt;
:* Maps no longer need to have as many deathmatch starts as there are players in a deathmatch game.&lt;br /&gt;
:* Support for [[Doom Legacy]] [[skin]]s.&lt;br /&gt;
:* Rewrote the [[MIDI]]/[[MUS]] code so that it has a working volume control.&lt;br /&gt;
:* Many more [[console command]]s and [[CVARs]].&lt;br /&gt;
:New features for editors:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* [[Obituaries]] are configurable with a .bex patch.&lt;br /&gt;
:* [[Monster path]]s&lt;br /&gt;
:* [[Colored lighting]]&lt;br /&gt;
:* [[Fog]] can be applied to only part of a level instead of all of it.&lt;br /&gt;
:* Per-sector [[gravity]] settings.&lt;br /&gt;
:* Support for up to 256 [[ambient sound]]s (as opposed to the limit of 64 in earlier versions).&lt;br /&gt;
:* [[Sector damage]] adjustable from between 0-255 points of damage.&lt;br /&gt;
:* Changeable [[camera]] views.&lt;br /&gt;
:* The following editing features that were introduced in &#039;&#039;[[Hexen]]&#039;&#039; are also available in ZDoom:&lt;br /&gt;
::*Most line specials take arguments that modify their behavior.&lt;br /&gt;
::*[[ACS]] scripting.&lt;br /&gt;
::*[[Hub]]s.&lt;br /&gt;
::*[[Earthquake]]s.&lt;br /&gt;
::*[[Dormant]] monsters.&lt;br /&gt;
::*Trigger events to happen on monster deaths.&lt;br /&gt;
::*[[Floor_Waggle|&amp;quot;Waggling&amp;quot; floors]].&lt;br /&gt;
::*[[Pillar_Build|Pillar builders]].&lt;br /&gt;
::*Push activation lines (walking into a wall can trigger an event).&lt;br /&gt;
::*[[Thing_Spawn|Thing spawning]] (e.g. for traps/gifts).&lt;br /&gt;
&lt;br /&gt;
==1999==&lt;br /&gt;
January 6 of this year saw the first release of the [[Raven Software]] source code.&lt;br /&gt;
;{{LE|1.17}} (February 17): {{forum|t=15|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/zdos117c.zip DOS build]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* [[Multiplayer]] games with [[monster]]s do not crash.&lt;br /&gt;
:* Player corpses do not levitate and then fall down when a player respawns in multiplayer games.&lt;br /&gt;
:* Using {{CCMD|P|togglemap}} outside of a game will not crash.&lt;br /&gt;
:* Monsters stop attacking their target once it is dead.&lt;br /&gt;
:* EV_StopPlat() does not get stuck in an infinite loop if there are [[moving platform]]s.&lt;br /&gt;
:* Partially invisible players are drawn the proper colors (instead of green) if {{CVAR|R|r_drawfuzz}} is 0.&lt;br /&gt;
:* If you are invisible, so are your muzzle flashes.&lt;br /&gt;
:* Trying to execute a non-existent [[ACS|script]] will not crash.&lt;br /&gt;
:* Using a [[ChangeCamera]] special from an open script will not crash.&lt;br /&gt;
:* The [[FloorAndCeiling_RaiseByValue]] and [[FloorAndCeiling_LowerByValue]] now behave like &#039;&#039;[[Hexen]]&#039;&#039;&#039;s.&lt;br /&gt;
:* Using {{c|{{param|-loadgame}}}} from the [[command line]] works.&lt;br /&gt;
:* Fixed a memory leak during generation of the translucency tables.&lt;br /&gt;
:* In high resolutions, weapon sprites meet the bottom of the screen.&lt;br /&gt;
:* Sounds will not cut out mysteriously when there is no reason for them to do so.&lt;br /&gt;
:* Sounds will also not be stopped immediately when a thing is removed, so explosion sounds will play to their full length.&lt;br /&gt;
:* Things can make more than one sound at once.&lt;br /&gt;
:* The [[deathmatch]] [[scoreboard]] is aligned properly at high resolutions.&lt;br /&gt;
:* {{CCMD|P|Spynext}} and {{CCMD|P|spyprev}} work properly instead of leaving the [[status bar]] &amp;quot;lagging behind&amp;quot; the player being viewed.&lt;br /&gt;
:* The {{Class|Infrared|light-amp}} does not disable colored lighting.&lt;br /&gt;
:* The [[sky]] gets {{dw|invulnerability colormap bug|inverted}} when using the invulnerability powerup.&lt;br /&gt;
:* Implemented better z-checking code (from &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039;).&lt;br /&gt;
:* {{Class|PainElemental|Pain elementals}} will spawn one {{Class|LostSoul|lost soul}} at a time instead of two inside of each other.&lt;br /&gt;
:* Bex patches that use thing mnemonics really do work now, and unknown bit messages aren&#039;t generated for regular [[DeHackEd]]  patches.&lt;br /&gt;
:* Linedef type 134 for regular &#039;&#039;[[Doom]]&#039;&#039;/[[Boom]] maps requires a red key for activation (it was being improperly translated to require a blue one).&lt;br /&gt;
:* Monsters can activate secret lines when they cross them. (See &#039;&#039;[[Doom II]]&#039;&#039; MAP08).&lt;br /&gt;
:* The player extreme death sound is used.&lt;br /&gt;
:* When a player leaves a network game, their body is removed instead of being left empty.&lt;br /&gt;
:* 0-length sounds are treated as empty sounds instead of sounds 4 gigs long.&lt;br /&gt;
:* [[Skin]]s that replaced player sounds with sounds in the [[IWAD]] work.&lt;br /&gt;
:* Muzzle flashes do not light up foggy areas, and fullbright sprites stay shrouded in fog.&lt;br /&gt;
:* Alphanumeric keys no longer automatically repeat on the console.&lt;br /&gt;
:* Wads such as gothicdm2 that used new flats in addition to the ones in the IWAD with the regular doom.exe work.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Significant speed improvements on modern processors.&lt;br /&gt;
:* [[Armor]] and [[key]]s are shown on the fullscreen HUD.&lt;br /&gt;
:* Colored text.&lt;br /&gt;
:* A {{CCMD|P|playdemo}} console command.&lt;br /&gt;
:* A [[chasecam]].&lt;br /&gt;
:* A [[particle]] system.&lt;br /&gt;
:* An optional [[railgun]] to show off the particle system. (Start the game with {{c|{{param|-deh}} [[railgun.bex]]}} if you want to use it.)&lt;br /&gt;
:New features interesting for wad authors:&lt;br /&gt;
:* [[Polyobject]]s.&lt;br /&gt;
:* [[Sound sequence]]s.&lt;br /&gt;
:* WAVE files can be used as sound lumps without converting them to DMX&#039;s format first.&lt;br /&gt;
:* A sky can be specified to not be stretched even if it is shorter than 200 pixels.&lt;br /&gt;
:* {{Class|Spark}}s.&lt;br /&gt;
:* {{Class|ParticleFountain|Particle fountain}}s.&lt;br /&gt;
:* Parallax skies.&lt;br /&gt;
:* Some new [[DeHackEd]] thing flags from &#039;&#039;[[Hexen]]&#039;&#039; (bobbing, reflective, etc.).&lt;br /&gt;
;{{LE|1.17a}} (February 21): {{forum|t=16|Release thread}}&lt;br /&gt;
:Mostly minor bug fixes, released because [[Herian 2]] needed some of those fixes. There are a few new features, however:&lt;br /&gt;
:* If you have a skins/ directory in the same directory as zdoom.exe, every wad file in it will be automatically loaded when the game starts. This way, you don&#039;t have to load your [[skin]]s by hand to use them.&lt;br /&gt;
:* New formatting options for text [[print]]ed using [[ACS]].&lt;br /&gt;
:* A [[A_MonsterRail|code pointer]] to make monsters fire a railgun.&lt;br /&gt;
;{{LE|1.17b}} (March 17): {{forum|t=21|Release thread}}&lt;br /&gt;
:Some minor bug fixes over 1.17 and 1.17a. It also loads faster because the sprite dimensions are not cached until they are actually needed. There are also some other internal changes in preparation for supporting &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, but those don&#039;t affect the user yet.&lt;br /&gt;
;{{LE|1.17b1}} (March 19): {{forum|t=22|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|1.17c}} (May 5): {{forum|t=28|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom117c.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom117c-src.zip Source]}}&lt;br /&gt;
:* Fixed game saving crashes on maps with [[wind]]/[[current]] effects.&lt;br /&gt;
:* In [[Boom]] [[deep water]] sectors, the underwater light and fog colors can now be set independently of the area above water.&lt;br /&gt;
:* Added nojump, allowjump, nofreelook, and allowfreelook keywords for use in [[MAPINFO]] lumps to control [[jumping]] and [[free look]].&lt;br /&gt;
:* The random number seed now changes each time you run the program.&lt;br /&gt;
;{{LE|1.18 test 1}} (June 30): {{forum|t=33|Release thread}}&lt;br /&gt;
:* Tweaked the optimized renderer for fifth-generation processors.&lt;br /&gt;
:* Added the following specials:&lt;br /&gt;
::*[[Line_AlignFloor]]&lt;br /&gt;
::*[[Line_AlignCeiling]]&lt;br /&gt;
::*[[Sector_SetRotation]]&lt;br /&gt;
::*[[Sector_SetCeilingPanning]]&lt;br /&gt;
::*[[Sector_SetFloorPanning]]&lt;br /&gt;
::*[[Sector_SetCeilingScale]]&lt;br /&gt;
::*[[Sector_SetFloorScale]]&lt;br /&gt;
:* Added an additional parameter to the [[Transfer_Heights]] special.&lt;br /&gt;
:* Switched to the [http://sourceforge.net/projects/openptc/ OpenPTC] library for display.&lt;br /&gt;
:* Converted lots of code to an object-oriented C++ architecture.&lt;br /&gt;
;{{LE|1.18 test 2}} (July 1): {{forum|t=36|Release thread}}&lt;br /&gt;
:* Fixed vertical aim clipping ({{Class|BFG9000|BFG}} works again).&lt;br /&gt;
:* Fixed [[monster]] wandering.&lt;br /&gt;
:* Maps with mapthings of type 0 no longer generate warning messages.&lt;br /&gt;
:* [[Crusher]]s that do no damage no longer act as if they inflict pain to actors.&lt;br /&gt;
:* The [[alias]] command lists aliases again.&lt;br /&gt;
:* Aliases are saved to the [[config file]] again.&lt;br /&gt;
;{{LE|1.18 test 3}} (July 2): {{forum|t=37|Release thread}}&lt;br /&gt;
:* Removed unnecessary display mode switches.&lt;br /&gt;
:* Created a DCanvas class to encapsulate most 2D rendering.&lt;br /&gt;
;{{LE|1.18 test 4}} (July 3): {{forum|t=39|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;Bad DCanvas::CopyRect&amp;quot; problem introduced in test3.&lt;br /&gt;
:* Fixed [[sound sequence]]s that should not be cut off when stopped (such as the standard doors).&lt;br /&gt;
;{{LE|1.18 test 5}} (July 6): {{forum|t=40|Release thread}}&lt;br /&gt;
:* Fixed a potential infinite loop that was introduced in [[#1.18 test 1|118test1]].&lt;br /&gt;
:* Delayed the initial execution of [[CVAR]] callbacks.&lt;br /&gt;
:* Added &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{wp|Xiaolin Wu&#039;s line algorithm|anti-aliased Wu line drawer}} to the [[automap]].&lt;br /&gt;
;{{LE|1.18 test 6}} (July 10): {{forum|t=41|Release thread}}&lt;br /&gt;
:* Rewrote the {{wp|Xiaolin Wu&#039;s line algorithm|Wu line drawer}} to look better (especially in overlay mode).&lt;br /&gt;
:* [[Sky stretching|Stretched skies]] now get stretched horizontally as well as vertically.&lt;br /&gt;
:* Did an initial integration of the [[Cajun Bot]] 0.71 code.&lt;br /&gt;
;{{LE|1.18 test 7}} (July 12):&lt;br /&gt;
:* Fixed handling of maps with scrolling walls.&lt;br /&gt;
:* Single player works again. In test 6, all games were considered either [[coop]] or [[deathmatch]].&lt;br /&gt;
:* Disabled the [[bot]] thinking code in single player games, so you don&#039;t suffer a performance hit when not using bots.&lt;br /&gt;
:* Added some performance counters accessible through the {{CCMD|D|stat}} command.&lt;br /&gt;
;{{LE|1.18 test 8}} (July 20): {{forum|t=43|Release thread}}&lt;br /&gt;
:* Fixed a crash problem with the &amp;quot;burn&amp;quot; [[screen wipe]].&lt;br /&gt;
:* Fixed a crash problem with playing non-assigned [[sound sequence]]s.&lt;br /&gt;
:* Fixed a crash problem related to trying to shutdown the music subsystem twice.&lt;br /&gt;
:* If you try to add more coop [[bot]]s than there are coop starts, the extra bot leaves quietly instead of ending the game.&lt;br /&gt;
:* {{CVAR|C|sv_weapondrop|Weapondrop}} is now a &amp;quot;server&amp;quot; CVAR, which it should have been in the first place.&lt;br /&gt;
:* Changed the nodetable file format to be more compact.&lt;br /&gt;
:* Bots can now be recorded in demos.&lt;br /&gt;
:* Bots work in [[multiplayer]] games. Still buggy. Spawning bots can cause consistency failures, and they can start spinning wildly.&lt;br /&gt;
;{{LE|1.18 test 9}} (August 9): {{forum|t=44|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;wild&amp;quot; [[bot]] spinning problem.&lt;br /&gt;
:* Commands like {{CCMD|D|changemap}} that could make network games go out of sync should work properly now. The reason they would do that is closely related to the reason that the bots would start spinning.&lt;br /&gt;
:* Finished the serializer. Now savegames work. [[Hub]]s don&#039;t, because I haven&#039;t written the player travelling code yet.&lt;br /&gt;
:* Various other code cleanup.&lt;br /&gt;
;{{LE|1.18 test 10}} (August 14):&lt;br /&gt;
:* Reimplemented [[hub]] travel.&lt;br /&gt;
:* Optimized R_MapPlane slightly.&lt;br /&gt;
:* Added {{CCMD|D|fov}} command.&lt;br /&gt;
:* Added vertical sub-pixel accuracy to the renderer.&lt;br /&gt;
:* Added searches for an [[IWAD]] in the current directory, $DOOMWADDIR, and $HOME.&lt;br /&gt;
;{{LE|1.18}} (September 5): {{forum|t=46|Release thread}}&lt;br /&gt;
:* Replaced the older [[Bots|Cajun]] 0.71 with Cajun 0.97.&lt;br /&gt;
:* Fixed handling of [[status bar]] [[mugshot|faces]] with [[skin]]s that provide them.&lt;br /&gt;
:* Added [[swimmable water]].&lt;br /&gt;
:* Messages printed to the middle of the screen also print to the [[console]].&lt;br /&gt;
:* Skill and other server [[CVARs]] get saved in [[savegame]]s again.&lt;br /&gt;
:* Added liquid [[texture warping]].&lt;br /&gt;
:* Bad [[MAPINFO]] lumps generate error messages instead of hanging.&lt;br /&gt;
:* Realized that it&#039;s impossible to guarantee that all object pointers will be valid without some effort, so FArchive saves DObject objects as NULL objects now instead of aborting with an error.&lt;br /&gt;
:* Added the [[built-in ACS functions]] [[LocalAmbientSound]], [[ActivatorSound]], and [[SetLineMonsterBlocking]].&lt;br /&gt;
:* Added a {{Class|SecretTrigger|thing}} that does nothing but count toward the number of [[secret]]s.&lt;br /&gt;
:* Added a {{CCMD|D|fly}} mode.&lt;br /&gt;
:* Finally implemented the {{CCMD|P|+moveup}} and {{CCMD|P|+movedown}} commands.&lt;br /&gt;
;{{LE|1.18a}} (September 12): {{forum|t=47|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed [[liquid warping]] temporarily stopping when changing levels.&lt;br /&gt;
:* {{CCMD|P|+mlook|+/-mlook}} commands do not generate unknown command messages.&lt;br /&gt;
:* Fixed support for maps with &amp;gt;10 deathmatch starts. Thanks to Roman Hatsiev.&lt;br /&gt;
:* Fixed support for the special &amp;quot;maps&amp;quot; EndGame? in MAPINFO lumps.&lt;br /&gt;
:* {{Class|TeleportDest2|Teleport destination (no gravity)}} now works as intended.&lt;br /&gt;
:* Hopefully fixed [[savegame]] problems.&lt;br /&gt;
:* [[Bots]] are restored from savegames.&lt;br /&gt;
:* Fixed keyboard turning speed when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* Network commands get executed only once when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* In sectors with [[damaging floor]]s and swimmable [[deep water]], the damage will also be applied while the player is swimming and not just when the player is on the ground.&lt;br /&gt;
;{{LE|1.18b}} (September 15): {{forum|t=48|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom118b.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom118b-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed crash when saving games with more than 1024 objects.&lt;br /&gt;
:* Fixed crash when loading a game without starting a new one first.&lt;br /&gt;
:* Reduced the size and frequency of pregame network packets, under the assumption that problems people were having using 1.18 on the Internet are a result of limited modem bandwidth.&lt;br /&gt;
;{{LE|1.19}} (November 24): {{forum|t=53|Release thread}} | {{forum|t=54|Source/Linux build release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom-1.19.tar.gz Source]}}&lt;br /&gt;
:First official Linux build.&lt;br /&gt;
:* [[DeHackEd]] patches that set an actor&#039;s {{Property|DeathSound|death sound}} to 0 without removing the [[A_Scream]] call no longer crash.&lt;br /&gt;
:* Fixed sync problems when playing with {{Class|BulletPuff|bullet puffs}} as [[particle]]s vs as sprites.&lt;br /&gt;
:* Fixed friction when walking on the bottom of swimmable water.&lt;br /&gt;
:* Added Jeffrey Cuenco&#039;s fixes to get {{c|{{param|-host}}}} and {{c|{{param|-join}}}} [[command line parameters]] to work properly.&lt;br /&gt;
:* Fixed [[Boom]] [[Generic_Door|generalized locked doors]] so that the open/close type will actually close.&lt;br /&gt;
:* Added pointer tracking and cleanup. This should fix the occasional crashes when saving games and various other anomalies.&lt;br /&gt;
;{{LE|1.20}} (November 25): {{forum|t=56|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed saving, reloading, and then resaving [[savegame|games]] when travelling between levels in a [[hub]].&lt;br /&gt;
:* Fixed saving of [[ACS]] scripts scheduled to occur on a future level.&lt;br /&gt;
;{{LE|1.21}} (November 26): {{forum|t=57|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom121.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom121-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed problems with thinkers removing themselves and causing other thinkers to not get a chance to think.&lt;br /&gt;
:* Added {{CVAR|R|hud_scale}} CVAR&lt;br /&gt;
;{{LE|1.22}} (November 12): {{forum|t=60|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom122.zip Windows build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22-i386.tar.gz Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom122-src.zip Windows source] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22.tar.gz Linux source]}}&lt;br /&gt;
:* [[Scroll_Texture_Both]] and [[TranslucentLine]] specials can now be used from [[ACS]].&lt;br /&gt;
:* Fixed compiler-dependent [[CVAR]] ordering during [[netgame]] arbitration.&lt;br /&gt;
:* Fixed certain [[polyobject]] movement combinations that would not stop even though they were supposed to.&lt;br /&gt;
:* Did some cleanup for Alpha processors.&lt;br /&gt;
&lt;br /&gt;
==2000==&lt;br /&gt;
June 20 of this year saw the public release of the [[Build]] source code.&lt;br /&gt;
;{{LE|1.23 Beta}} (May 10): {{forum|t=64|Release thread}}&lt;br /&gt;
:*Partial &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; support.&lt;br /&gt;
:*Windows build uses [[FMOD Ex|FMOD]] instead of [http://www.s2.org/midas/ MIDAS].&lt;br /&gt;
&lt;br /&gt;
==2001==&lt;br /&gt;
;{{LE|1.23 Beta 19}} (March 9): {{forum|t=74|Release thread}}&lt;br /&gt;
:Added new [[camera]] types.&lt;br /&gt;
:Added [[LANGUAGE|string localization]].&lt;br /&gt;
:Added [[decal]]s.&lt;br /&gt;
:Added [[slope]]s.&lt;br /&gt;
:Added [[skybox]]es.&lt;br /&gt;
;{{LE|1.23 Beta 20}} (March 11): {{forum|t=75|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 23}} (April 9): {{forum|t=76|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 24}} (April 12): {{forum|t=77|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 25}} (August 15): {{forum|t=81|Release thread}}&lt;br /&gt;
:Linux build now uses SDL&lt;br /&gt;
;{{LE|1.23 Beta 28}} (September 17): {{forum|t=83|Release thread}}&lt;br /&gt;
:Added a few [[decal]]-related [[CVARs]].&lt;br /&gt;
;{{LE|1.23 Beta 28a}} (December 13): {{forum|t=88|Release thread}}&lt;br /&gt;
&lt;br /&gt;
==2002==&lt;br /&gt;
;{{LE|1.23 Beta 33}} (February 5): {{Forum|t=90|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-linux.bz2 Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-src.tar.bz2 Source]}}&lt;br /&gt;
:Many fixes and rendering optimization.&lt;br /&gt;
:*Increased &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039; support&lt;br /&gt;
:*Improved [[decal]]s.&lt;br /&gt;
:*Added support for the [[Bloodbath announcer]]&lt;br /&gt;
:*Added [[underwater]] [[REVERBS|reverb]] effect.&lt;br /&gt;
:*Added [[Line_Horizon]] effect.&lt;br /&gt;
:*Added {{Class|ScriptedMarine|scripted marines}} and several [[ACS]] enhancements.&lt;br /&gt;
:*Added support for [[DeePsea]]&#039;s [[patch|tall patches]].&lt;br /&gt;
:*Added [[slope]] things.&lt;br /&gt;
:*Changed [[license]] for original ZDoom source code to a &amp;quot;BSD-ish one&amp;quot;.&lt;br /&gt;
;{{LE|2.0 Beta 13}} (August 27):&lt;br /&gt;
:*Further increased &#039;&#039;Heretic&#039;&#039;/&#039;&#039;Hexen&#039;&#039; support.&lt;br /&gt;
:*Added [[PNG]] support for screenshots. [[Savegame]]s are actually PNG files now.&lt;br /&gt;
:*Added [[ZDBSP|internal nodebuilder]], made it [[polyobject]]-aware.&lt;br /&gt;
:*Added SNES SPC music support.&lt;br /&gt;
:*Added a loader for [[Build]] maps.&lt;br /&gt;
:*Added support for double- and quadruple-resolution flats (128x128 and 256x256).&lt;br /&gt;
:*Added ACS [[libraries]].&lt;br /&gt;
:*Added support for up to 8 mouse buttons.&lt;br /&gt;
:*Added the very first version of [[DECORATE]].&lt;br /&gt;
:*Removed [[MBF]]&#039;s torque simulation because of the problems it caused.&lt;br /&gt;
;{{LE|2.0.21}} (December 10)&lt;br /&gt;
;{{LE|2.0.22}} (December 11)&lt;br /&gt;
;{{LE|2.0.23}}, {{LE|2.0.24}} (December 12)&lt;br /&gt;
;{{LE|2.0.25}} (December 13)&lt;br /&gt;
;{{LE|2.0.26}}, {{LE|2.0.27}} (December 19)&lt;br /&gt;
;{{LE|2.0.28}} (December 24)&lt;br /&gt;
;{{LE|2.0.29}} (December 28)&lt;br /&gt;
&lt;br /&gt;
==2003==&lt;br /&gt;
;{{LE|2.0.30}} (January 1)&lt;br /&gt;
;{{LE|2.0.32}}, {{LE|2.0.33}} (January 2)&lt;br /&gt;
;{{LE|2.0.34}} (January 3)&lt;br /&gt;
;{{LE|2.0.35}} (January 8)&lt;br /&gt;
;{{LE|2.0.36}} (January 10)&lt;br /&gt;
;{{LE|2.0.37}} (January 23)&lt;br /&gt;
;{{LE|2.0.38}} (January 24)&lt;br /&gt;
;{{LE|2.0.39}} (February 2)&lt;br /&gt;
;{{LE|2.0.40}} (February 8)&lt;br /&gt;
;{{LE|2.0.41}} (February 10)&lt;br /&gt;
;{{LE|2.0.42}} (February 12)&lt;br /&gt;
;{{LE|2.0.43}} (April 8)&lt;br /&gt;
;{{LE|2.0.44}} (April 9)&lt;br /&gt;
;{{LE|2.0.45}} (April 9)&lt;br /&gt;
;{{LE|2.0.46}} (April 14)&lt;br /&gt;
;{{LE|2.0.47}} (April 26): {{Forum|t=101|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/47.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47i}} (June 9): {{plainlink|[http://www.zdoom.org/files/lars/47i.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47j}} (July 7):&lt;br /&gt;
;{{LE|2.0.47l}} (July 21):&lt;br /&gt;
;{{LE|2.0.47o}} (August 5):&lt;br /&gt;
;{{LE|2.0.47p}} (August 6):&lt;br /&gt;
;{{LE|2.0.48}} (October 23):&lt;br /&gt;
:*Interchangeability between [[flat]]s and [[texture]]s.&lt;br /&gt;
;{{LE|2.0.49}}, {{LE|2.0.50}} (October 26)&lt;br /&gt;
;{{LE|2.0.51}} (October 30)&lt;br /&gt;
;{{LE|2.0.52}} (October 31)&lt;br /&gt;
;{{LE|2.0.53}} (November 16)&lt;br /&gt;
;{{LE|2.0.54}}, {{LE|2.0.55}} (November 23)&lt;br /&gt;
;{{LE|2.0.56}} (November 25)&lt;br /&gt;
;{{LE|2.0.57}} (November 26)&lt;br /&gt;
;{{LE|2.0.58}}, {{LE|2.0.59}} (December 7)&lt;br /&gt;
;{{LE|2.0.60}} (December 8)&lt;br /&gt;
&lt;br /&gt;
==2004==&lt;br /&gt;
;{{LE|2.0.61}} (January 22) &lt;br /&gt;
;{{LE|2.0.62}} (February 7):&lt;br /&gt;
:*Added modern [[DECORATE]] support.&lt;br /&gt;
;{{LE|2.0.63}} (February 10): {{plainlink|[http://www.zdoom.org/files/lars/63.cab Build] {{!}} [http://www.zdoom.org/files/lars/63src.cab Source]}}&lt;br /&gt;
:*Added custom monsters to DECORATE.&lt;br /&gt;
;{{LE|2.0.64}} (June 8)&lt;br /&gt;
;{{LE|2.0.90}} (October 21):&lt;br /&gt;
:*Added &#039;&#039;[[Strife]]&#039;&#039; support and new inventory system&lt;br /&gt;
;{{LE|2.0.91}} (October 22)&lt;br /&gt;
;{{LE|2.0.92}} (October 31)&lt;br /&gt;
;{{LE|2.0.93}} (November 3)&lt;br /&gt;
;{{LE|2.0.94}} (November 19)&lt;br /&gt;
;{{LE|2.0.95}} (December 24): {{plainlink|[http://www.zdoom.org/files/lars/95changes.html Changelog]}}&lt;br /&gt;
:*Added [[camera]] textures to [[ANIMDEFS]] and [[SetCameraToTexture]]&lt;br /&gt;
:*Improved [[console]] tab completion, added Ctrl-X shortcut to clear the console&#039;s command line&lt;br /&gt;
:*Several &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039; fixes&lt;br /&gt;
:*Merged in Jim&#039;s [[ACS]] character array [[print]]ing support. &lt;br /&gt;
:*Added the [[polymost]] clipper.&lt;br /&gt;
:*Added support for 16:10 and 5:4 aspect ratios and letterboxing.&lt;br /&gt;
:*Added [[scope|static local variables]], [[Log]], [[SetAmmoCapacity]] and [[GetAmmoCapacity]] to [[ACS]].&lt;br /&gt;
;{{LE|2.0.96}} (December 25): {{plainlink|[http://www.zdoom.org/files/lars/96.cab Build] {{!}} [http://www.zdoom.org/files/lars/96src.cab Source] {{!}} [http://www.zdoom.org/files/lars/96changes.html Changelog]}}&lt;br /&gt;
:*Added [[TITLEMAP]]&lt;br /&gt;
&lt;br /&gt;
==2005==&lt;br /&gt;
;{{LE|2.0.97}} (September 28): {{forum|t=8060|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/97.cab Build] {{!}} [http://www.zdoom.org/files/lars/97src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*The [[LANGUAGE]] lump is now text-based.&lt;br /&gt;
:*Added IMF [[music format]] support.&lt;br /&gt;
:*Ported [[SetActorAngle]] and [[SetLineBlocking|BLOCK_RAILING]] from the [[ZDoom Community Build]].&lt;br /&gt;
:*Added [[Polymost]] visualization code from [[Build]].&lt;br /&gt;
:*Gave {{Flag|DONTMORPH}} flag to {{Class|Cyberdemon}}, {{Class|SpiderMastermind}}, {{Class|AlienSpectre1}}, {{Class|Crusader}}, {{Class|Programmer}}, and {{Class|Inquisitor}}.&lt;br /&gt;
:*Made {{Class|Puffy}} and projectiles spawned by [[A_LastZap]] deal no damage.&lt;br /&gt;
:*[[Teleport_NewMap]] can now be used within a [[TITLEMAP]] in order to make it possible to use different maps as the title map.&lt;br /&gt;
:*Merged in Graf Zahl&#039;s [[Caverns of Darkness]] patch.&lt;br /&gt;
:*Added [[Polymost]] wireframe mode.&lt;br /&gt;
:*Added {{CCMD|O|writeopl}} console command.&lt;br /&gt;
:*[[UsePuzzleItem]] can now be a [[thing]]&#039;s [[special]].&lt;br /&gt;
:*Missiles with negative damage now give you health.&lt;br /&gt;
;{{LE|2.0.98}} (November 3): {{forum|t=8460|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/98.cab Build] {{!}} [http://www.zdoom.org/files/lars/98src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
&lt;br /&gt;
==2006==&lt;br /&gt;
February 16 of this year saw the first commit to the [[SVN]] repository.&lt;br /&gt;
;{{LE|2.1.0}}{{rev|204}} (June 21): {{forum|t=10550|Release thread}} | {{plainlink|[http://zdoom.org/files/old/zdoom-2.1.0.zip Build] {{!}} [http://zdoom.org/files/old/zdoom-2.1.0-src.7z Source]}}&lt;br /&gt;
:*Added several things from [[ZDoom Community Build]] (unofficial 2.0.96x) and [[GZDoom]], including custom [[DECORATE]] [[weapon]]s.&lt;br /&gt;
;{{LE|2.1.1}}{{rev|226}} (June 25): {{forum|t=10630|Release thread}} | {{versionlinks|2|1|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|2.1.2}}{{rev|257}} (July 17): {{forum|t=10895|Release thread}} | {{versionlinks|2|1|2}}&lt;br /&gt;
:*Added custom [[player class]]es.&lt;br /&gt;
:*Added &amp;quot;replaces&amp;quot; keyword for [[DECORATE]].&lt;br /&gt;
:*[[IWAD selection box]] now remembers the last choice.&lt;br /&gt;
:*Added [[A_RadiusThrust]] to DECORATE.&lt;br /&gt;
:*Added [[ThingCountName]] and  [[SpawnSpotFacing]] to [[ACS]].&lt;br /&gt;
:*Changed additive scroller options into a [[compatibility options|compatibility flag]].&lt;br /&gt;
;{{LE|2.1.3}}{{rev|265}} (July 18): {{forum|t=10930|Release thread}} | {{versionlinks|2|1|3}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Sounds can be specified by full path now in [[SNDINFO]] and [[S_SKIN]].&lt;br /&gt;
:* [[DECORATE]] replacement is more universal.&lt;br /&gt;
:* Added NecroMage&#039;s submission for bitwise/shift assignment operators for [[ACS]]. (Requires [[ACC]] 1.42+.)&lt;br /&gt;
:* Changed PlayAttacking2 to always use the melee state instead of different implementations per player and hard coding it to MissileState+1. Also changed PlayAttacking for the {{Class|HereticPlayer}} to use the same animation as PlayAttacking2. Now the special handling for &#039;&#039;[[Heretic]]&#039;&#039; in the FireWeapon functions can be removed.&lt;br /&gt;
;{{LE|2.1.4}}{{rev|273}} (July 29): {{forum|t=11063|Release thread}} | {{versionlinks|2|1|4}}&lt;br /&gt;
:*Added partial emulation of [[Boom]]&#039;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.&lt;br /&gt;
:*Added a {{CVAR|C|queryiwad_key}} cvar to control which key can force the [[IWAD selection box]] to appear. It can be either &amp;quot;shift&amp;quot; or &amp;quot;control&amp;quot;. Any other value will disable its functionality.&lt;br /&gt;
;{{LE|2.1.5}}{{rev|321}} (September 2): {{forum|t=11466|Release thread}} | {{versionlinks|2|1|5}}&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInfo]], [[ChangeLevel]], [[SectorDamage]], [[ReplaceTextures]]&lt;br /&gt;
:*New [[DECORATE]] functions: [[A_PlaySoundEx]], [[A_StopSoundEx]]&lt;br /&gt;
:*The {{CVAR|C|vid_nowidescreen}} cvar can be used to disable widescreen aspect ratio correction.&lt;br /&gt;
:*[[A_SpawnDebris]] and [[A_SpawnItem]] can optionally transfer the caller&#039;s color translation to the newly spawned item.&lt;br /&gt;
:*New morphing artifacts can be created by subclassing the {{Class|MorphProjectile}} and {{Class|MorphedMonster}} classes.&lt;br /&gt;
:*[[A_FireCustomMissile]] has a new parameter: Previously it always aimed straight ahead and altered the projectile&#039;s angle according to the resulting direction. If the 6th parameter is 1 now it will aim at the specified angle directly.&lt;br /&gt;
:*Users can now define their own [[TEXTCOLO|text colors]], and there are several new standard ones.&lt;br /&gt;
:*The fourth parameter of [[Polyobj_StartLine]] and the fifth parameter of [[Polyobj_ExplicitLine]] now set the line&#039;s ID.&lt;br /&gt;
:*DECORATE explosion parameters are no longer considered deprecated.&lt;br /&gt;
:*Calling [[Radius_Quake]], [[Thing_Activate]], or [[Thing_Remove]] with a [[TID]] of 0 now operates the activator.&lt;br /&gt;
:*Strife&#039;s {{Class|PhosphorousFire}} now does completely thrustless damage.&lt;br /&gt;
:*An actor&#039;s damage in DECORATE can now be specified as an expression that is evaluated each time it needs to do damage. To do this, enclose it within parentheses, and the normal Doom damage calculation will be bypassed.&lt;br /&gt;
:*Passing a negative script number to the {{CCMD|D|puke}} [[console command]] now runs the script with [[ACS_ExecuteAlways]] instead of [[ACS_Execute]].&lt;br /&gt;
:*[[Polyobject]]s defined with [[Polyobj_ExplicitLine]] are no longer limited to 64 segs.&lt;br /&gt;
:*Starting a new game or reloading an old one no longer resets the [[chasecam]].&lt;br /&gt;
:*The [[automap]] background is now a regular texture.&lt;br /&gt;
:*Added support for many [[image format]]s for use as textures: [[PNG]], JPEG, PCX, TGA, DDS.&lt;br /&gt;
:*Numerous bugfixes.&lt;br /&gt;
;{{LE|2.1.6}}{{rev|346}} (October 2): {{forum|t=11758|Release thread}} | {{versionlinks|2|1|6}}&lt;br /&gt;
:*Scaled 2D images are supported.&lt;br /&gt;
:*Dehacked max health usage defaults to consistency with other ([[Boom]]) ports.&lt;br /&gt;
:*A &#039;&#039;font&#039;&#039; parameter was added to [[A_Print]].&lt;br /&gt;
:*Quoted strings in [[DECORATE]] can no longer span multiple lines without using the escape character (\) at the end of each line. This makes it easier to spot places where you unintentionally left off a closing quote and got an error several lines later.&lt;br /&gt;
:*A new {{CCMD|O|writeini}} console command can be used to save [[the ini]] at any time, with any file name.&lt;br /&gt;
:*If the ini is write-protected when you quit, an error dialog now opens to let you know your settings could not be saved and gives you the opportunity to unprotect it.&lt;br /&gt;
:*Multiple stat displays can be enabled at once.&lt;br /&gt;
:*Several bugfixes.&lt;br /&gt;
;{{LE|2.1.7}}{{rev|524}} (October 31): {{forum|t=12015|Release thread}} | {{versionlinks|2|1|7}}&lt;br /&gt;
:*Alias commands can now do parameter substitution. If you have %x, where x is some number, in an alias command, it will be replaced by the appropriately numbered parameter passed when the alias is used, with %0 being replaced by the name of the alias itself.&lt;br /&gt;
:*A new {{Class|MapMarker}} actor has been added that you can use to mark points of interest on the [[automap]]. If its first argument is zero, the map marker itself appears on the automap, otherwise it is drawn on top of any actor with a [[TID]] matching that argument. If the second argument is one, then the map marker will only be appear if the player has previously seen the sector it is in. You can use [[Thing_Activate]] and [[Thing_Deactivate]] on markers to turn them on and off. To make custom markers, all you need to do is subclass MapMarker with [[DECORATE]].&lt;br /&gt;
:*Added the [[SetActorPitch]] [[ACS]] command to set an actor&#039;s pitch.&lt;br /&gt;
:*You can pass multiple jump targets to the [[A_Jump]] [[DECORATE]] function, and it will choose one of them at random if it jumps.&lt;br /&gt;
:*Using a [[TID]] of 0 with [[Thing_Deactivate]], [[SetActorAngle]], [[Thing_Spawn]]*, [[Thing_Projectile]]*, and [[Thing_Move]] will now operate on the activator.&lt;br /&gt;
:*The fifth argument for [[Line_SetIdentification]] can be used to set the high byte of the line ID.&lt;br /&gt;
:*Added a {{Property|CameraHeight}} [[DECORATE]] property for actors.&lt;br /&gt;
:*Added special death states for [[projectile]]s hitting actors. If missiles hit a non-bleeding actor, they try the Crash state first. If that doesn&#039;t exist or the actor is bleeding, they try the XDeath state next. If they hit anything else or neither of the two states are defined, they use the normal death state.&lt;br /&gt;
:*Added a {{Flag|PIERCEARMOR}} [[DECORATE]] flag for projectiles.&lt;br /&gt;
:*The {{CCMD|D|morphme}} [[console command]] can be given an optional argument to specify which class to morph into.&lt;br /&gt;
:*Miscellaneous bugfixes.&lt;br /&gt;
&lt;br /&gt;
==2007==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
==2008==&lt;br /&gt;
;{{LE|2.2.0}}{{rev|748}} (February 15): {{forum|t=16272|Release thread}} | {{versionlinks|2|2|0}}&lt;br /&gt;
:*This is the final version of ZDoom to fully support Windows 95 since later versions switched to [[FMOD Ex]].&lt;br /&gt;
:*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 pain and death sounds.&lt;br /&gt;
:*Custom damage color for [[palette flash]]es per [[player class]].&lt;br /&gt;
:*Custom state labels. New states can be defined in [[DECORATE]].&lt;br /&gt;
:*The [[SBARINFO]] lump for creating status bar and other [[HUD]]s.&lt;br /&gt;
:*[[Skill definition]] in [[MAPINFO]], with many properties.&lt;br /&gt;
:*Most thing functions treat a [[TID]] of 0 as the activator now.&lt;br /&gt;
:*Support for [[ENDOOM]] screens and the graphical or semi-graphical [[startup lumps|screens]] from &#039;&#039;[[Heretic]]&#039;&#039;, &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;.&lt;br /&gt;
:*Several things backported from [[Skulltag]], including powerups and flags for increased port compatibility:&lt;br /&gt;
::*{{Class|PowerDrain|Drain}}, {{Class|PowerHighJump|HighJump}} and {{Class|PowerRegeneration|Regeneration}} runes as powerups and used specific player sounds for their sound effects.&lt;br /&gt;
::*PowerQuadDamage and PowerQuarterDamage as more customizable {{Class|PowerDamage}} and {{Class|PowerProtection}}. These new powerups allow free customization of the damage modification per damage type by inheriting from these classes and setting specific values. Such derived damage/protection powerups will be considered as separate powers so that for example a QuadDamage and a DoubleDamage item can be stacked which would result in 8x damage.&lt;br /&gt;
::*{{Property|Armor.MaxBonus}} and {{Property|Armor.MaxBonusMax}} properties to create armor bonuses that increases the max amount that can be given by other armor items.&lt;br /&gt;
::*Custom F1 help screen [[MAPINFO]] option&lt;br /&gt;
::*Added REDMAP and GREENMAP [[palette blend]]s.&lt;br /&gt;
::*Imported SAME_SPAWN_SPOT [[DM flag]]&lt;br /&gt;
::*Pickup sprite for the {{Class|pistol}}.&lt;br /&gt;
::*Imported {{CVAR|R|r_maxparticles}} CVAR.&lt;br /&gt;
:*New [[Direct3D]] code for better Vista support.&lt;br /&gt;
:*Autoload sections in [[the ini]].&lt;br /&gt;
:*[[GZDoom]]&#039;s [[alternate HUD]].&lt;br /&gt;
:*Custom blood on an actor-by-actor basis into [[DECORATE]].&lt;br /&gt;
:*Smart [[autoaim]] code to prevent the targeting of friendly monsters.&lt;br /&gt;
:*New {{Flag|NOBLOODDECALS}} flag that prevents bleeding actors from spawning blood [[decal]]s.&lt;br /&gt;
:*Customizable border textures. They are defined with the [[MAPINFO]] keyword &#039;bordertexture&#039; and are settable per map.&lt;br /&gt;
:*Custom label support for [[A_Chase]] and [[A_VileChase]]&lt;br /&gt;
:*{{Property|Player.RunHealth}} property to expose the {{Class|StrifePlayer}}&#039;s behavior of not being able to run when its [[health]] is below 10.&lt;br /&gt;
:*Customizable gravity per actor&lt;br /&gt;
:*New {{CCMD|D|summonfoe}} console command, which is analogous to {{CCMD|D|summonfriend}} but forces the summoned creature to be hostile instead.&lt;br /&gt;
:*Added two new [[MAPINFO]] flags to control what actor activates impact lines: {{c|MissileShootersActivateImpactLines}} (the current behavior) and {{c|MissilesActivateImpactLines}} (the original &#039;&#039;[[Hexen]]&#039;&#039; behavior).&lt;br /&gt;
:*More player water sounds: {{c|*dive}} (head goes below water), {{c|*surface}} (your head goes back above water), {{c|*gasp}} (getting air back after starting to drown)&lt;br /&gt;
:*Using &amp;quot;*&amp;quot; with [[ACS]]&#039;s music commands will play the level&#039;s default music set in [[MAPINFO]]&lt;br /&gt;
:*Two new CVARs ({{CVAR|C|win_x}} and {{CVAR|C|win_y}}) that keep track of the window position when not playing in fullscreen mode&lt;br /&gt;
:*Key bindings can now be [[print]]ed with [[ACS]]&lt;br /&gt;
:*{{Flag|INVENTORY.KEEPDEPLETED}} flag for inventory items to keep them in the player&#039;s inventory even when they have been used up. If the item also has an inventory bar icon, it will be drawn darkened while it is depleted.&lt;br /&gt;
:*{{Flag|INVENTORY.IGNORESKILL}} flag for ammo that prevents the given quantity from being modified by the skill level&lt;br /&gt;
:*{{Property|Player.AttackZOffset}} for {{Class|PlayerPawn}}. This is the offset from the center of the player at which their attacks are fired and scales according to their crouched height.&lt;br /&gt;
:*Added a new [[SetActorState]] [[ACS]] function.&lt;br /&gt;
:*{{Flag|CANUSEWALLS}} flag which allows a [[monster]] to activate &#039;use&#039; specials like doors. This flag is on by default for any monster, which was the previous behavior.&lt;br /&gt;
:*[[Thing_Stop]] action special.&lt;br /&gt;
:*New {{Flag|FORCERADIUSDMG}} flag that allows exploding items to hurt boss monsters.&lt;br /&gt;
:*New {{Flag|USESPECIAL}} flag that allows using things to execute their [[special]]s.&lt;br /&gt;
:*[[Compatibility option]] to restore the original behavior of the {{Class|PowerInvisibility|Invisibility}} powerup&lt;br /&gt;
:*Telefrag option added to [[A_SpawnItemEx]].&lt;br /&gt;
:*Added option to [[A_Chase]] that prevents the monster from moving.&lt;br /&gt;
:*New {{c|allowrespawn}} MAPINFO option.&lt;br /&gt;
:*New [[scoreboard]]s.&lt;br /&gt;
:*New [[A_LookEx]] function.&lt;br /&gt;
:*Customizable [[team]]s through the [[TEAMINFO]] lump.&lt;br /&gt;
:*New {{CCMD|D|take}} console command to do the opposite of {{CCMD|D|give}}.&lt;br /&gt;
:*[[UseInventory]]/[[UseActorInventory]] [[ACS]] functions.&lt;br /&gt;
:*New [[A_CustomBulletAttack]] &#039;&#039;aimfacing&#039;&#039; parameter&lt;br /&gt;
:*New [[A_PlaySoundEx]] attenuation parameter.&lt;br /&gt;
:*[[Automap]] markers are stored in [[savegame]]s now.&lt;br /&gt;
:*&#039;No respawn&#039; [[DM flag]] which prevents a [[player]] from respawning after they have died.&lt;br /&gt;
:*&#039;Keep frags gained&#039; [[DM flag]] which allows you to choose whether you want to reset the [[frag]]s of each player next level or not.&lt;br /&gt;
:*Sector_Outside [[sector type]] which forces outside [[fog]] regardless of ceiling texture.&lt;br /&gt;
:*User-defined [[crosshair]]s in the [[Display options]] menu. See xhairs.txt in zdoom.pk3.&lt;br /&gt;
:*Generic log display that can show &#039;&#039;[[Strife]]&#039;&#039;&#039;s log messages in all games regardless of the current game, active [[status bar]] and [[HUD]] mode.&lt;br /&gt;
:*Support for stenciling actors with {{Property|RenderStyle}} property.&lt;br /&gt;
:*.TXT files can now be loaded by simply dragging-and-dropping them on top of zdoom.exe.&lt;br /&gt;
:*&#039;Ice&#039; [[translation]] is accessible from [[DECORATE]].&lt;br /&gt;
:*[[Teamplay]] MAPINFO option.&lt;br /&gt;
:*[[ACS]] script type [[RETURN]]. These are executed by players who return to a map they&#039;ve previously been to.&lt;br /&gt;
&lt;br /&gt;
==2009==&lt;br /&gt;
;{{LE|2.3.0}}{{rev|1455}} (March 1): {{Forum|t=21116|Release thread}} | {{versionlinks|2|3|0}}&lt;br /&gt;
:*[[Universal Doom Map Format]] (UDMF) support.&lt;br /&gt;
:*New garbage collector to improve performances on resource-intensive maps.&lt;br /&gt;
:*Sound uses [[FMOD Ex]] instead of FMOD. Among the benefits, [[REVERBS|reverbs]] can now work on any sound card, not just those that support EAX.&lt;br /&gt;
:*SPC is now a first-class [[music format]] that no longer requires an external DLL to play.&lt;br /&gt;
:*Support for [[Vavoom]]&#039;s [[slope|vertex height things]] and [[Eternity Engine]]&#039;s [[3D middle texture]]s.&lt;br /&gt;
:*[[Linked sectors]], to ensure that multiple [[sector]]s can move consistently in sync.&lt;br /&gt;
:*[[TEXTURES]] lump for text-based texture definitions.&lt;br /&gt;
:*[[Automatic compatibility|MD5-based recognition of maps]] that require certain [[compatibility options]] to work (e.g., {{dw|Strain}} map 7 which relied on the {{dw|Spechits overflow}} bug) to apply these settings transparently.&lt;br /&gt;
:*[[Freedoom]], [[Chex Quest]], and [[Chex Quest 3]] are recognized as [[IWAD]]s and can be selected in the [[IWAD selection box]]. New aliases are available for IWADs, too.&lt;br /&gt;
:*New [[MAPINFO]] format (the old is still supported of course) with a more robust syntax.&lt;br /&gt;
:*Custom [[map translator]]s for Doom-format maps, which can be specified in MAPINFO.&lt;br /&gt;
:*[[Strife]] dialogues now work in multiplayer.&lt;br /&gt;
:*Setting up slots for custom weapons no longer requires a [[KEYCONF]] lump, the limit of 8 weapons per slot is removed.&lt;br /&gt;
:*Added the &amp;quot;{{Class|RandomSpawner|random spawner}}&amp;quot; actor, customizable {{Class|BossEye}}s, {{Class|CustomBridge}}, {{Class|FastProjectile}}.&lt;br /&gt;
:*Many new [[compatibility options]], including one to have [[projectile]]s pass through solid decorations.&lt;br /&gt;
:*More flexible use of [[lightning]] in a map.&lt;br /&gt;
:*The two different [[crushing mode]]s (Doom and Hexen) are now selectable per action.&lt;br /&gt;
:*Customizable pickup flash with {{Property|Inventory.PickupFlash}} property.&lt;br /&gt;
:*[[DeHackEd]] music name replacement has been restored.&lt;br /&gt;
:*Rewritten DECORATE parser, more robust and featuring better error reporting. All actors are defined in DECORATE now.&lt;br /&gt;
:*Functions to handle [[weapon]] reloading through DECORATE.&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInput]], [[GetActorProperty|Get]]/[[SetActorProperty]].&lt;br /&gt;
:*Many actions are now more flexible through optional parameters, for example [[A_Die]] can specify damage type to send to a custom Death state, [[A_KeenDie]] can affect tags other than 666, [[A_Fire]] can specify a vertical offset, and so on.&lt;br /&gt;
:*Many, many new [[DMFlags]] for [[cooperative]] plays, such as having to kill all [[monster]]s before leaving the map or seeing the other [[player]]s on the [[automap]].&lt;br /&gt;
:*Enhanced &#039;&#039;[[Strife]]&#039;&#039; support.&lt;br /&gt;
:*Various and sundry bug fixes.&lt;br /&gt;
;{{LE|2.3.1}}{{rev|1480}} (March 15): {{Forum|t=21296|Release thread}} | {{versionlinks|2|3|1}}&lt;br /&gt;
:Mostly a bugfix release.&lt;br /&gt;
:*Fixes the bug that prevented you from switching weapons after respawning in multiplayer.&lt;br /&gt;
:*Fixes a performance regression introduced in 2.3.0.&lt;br /&gt;
:*Adds support for zip/pk3 files with LZMA and BZip2 compression. (7-Zip is one program that can create such files.)&lt;br /&gt;
:*Addresses a few other niggles.&lt;br /&gt;
&lt;br /&gt;
==2010==&lt;br /&gt;
;{{LE|2.4.0}}{{rev|2075}} (January 1): {{Forum|t=24602|Release thread}} | {{versionlinks|2|4|0}}&lt;br /&gt;
:*Rewritten [[archive format|archive]] management code.&lt;br /&gt;
::*Added support for new [[archive format]]s: 7z, &#039;&#039;Quake&#039;&#039; PAK, &amp;quot;Shrink&amp;quot; and &amp;quot;Implode&amp;quot;.&lt;br /&gt;
::*Removed loading limit of 65 535 lumps. The archive manager can now handle up to 4 294 967 295 lumps.&lt;br /&gt;
:*Rewritten mouse and keyboard handling input under Windows.&lt;br /&gt;
:*Reimplemented and improved support for gamepads and joysticks.&lt;br /&gt;
:*Added truecolor display of the [[HUD]], [[menu]]s and other 2D elements outside the game world when using [[Direct3D]] on Windows.&lt;br /&gt;
:*Replaced SNES_SPC with Game Music Emu, greatly increasing the number of supported emulated [[music format]]s.&lt;br /&gt;
:*Added compiling support for {{wp|Macintosh}} systems.&lt;br /&gt;
:*Added [[IWAD]] recognition for Ultimate [[Freedoom]], [[Action Doom 2: Urban Brawl|Action Doom 2]], [[Blasphemer]] and [[Harmony]].&lt;br /&gt;
:*Added {{param|-noautoload}}, {{param|-norun}}, {{param|-stdout}}, and {{param|-warpwipe}} command line parameters.&lt;br /&gt;
:*Added {{CVAR|C|save_dir}} and {{CVAR|R|d3d_antilag}} console variables.&lt;br /&gt;
:*Added optional parameters to {{CCMD|D|summon}} commands, added {{CCMD|D|summonmbf}} command.&lt;br /&gt;
:*Added {{CCMD|D|info}} command to obtain very verbose debugging information on actors.&lt;br /&gt;
:*Buddha mode&lt;br /&gt;
:*Added [[score]] and {{Class|ScoreItem}}s.&lt;br /&gt;
:*Added [[GameInfo definition]]s to [[MAPINFO]].&lt;br /&gt;
:*Changed random seed initialization so that it uses the system&#039;s cryptographically secure random number generator, if available, instead of the current time. Also changed the random number generator from Lee Killough&#039;s algorithm to the SFMT607 variant of the {{wp|Mersenne twister}}.&lt;br /&gt;
:*Disabled custom [[DEHSUPP]] lumps.&lt;br /&gt;
:*Added &#039;damage&#039; to the actor variables exported to [[DECORATE expressions|DECORATE&#039;s expression evaluator]].&lt;br /&gt;
:*Added &#039;frandom&#039; DECORATE function to the expression evaluator, which is like &#039;random&#039; but for floating point values instead of integers.&lt;br /&gt;
:*Added Raven color set and dagger-like vector sprite to the [[automap]].&lt;br /&gt;
:*Added desatured [[translation]]s.&lt;br /&gt;
:*[[SBARINFO]]: Added the ability to center things with fullscreenoffsets enabled, added [[underwater]] stats.&lt;br /&gt;
:*[[MAPINFO]]: Added [no_]grinding_polyobj, resetinventory properties, added EndTitle option for {{c|nextmap}}.&lt;br /&gt;
:*Added actor replacement to [[skill definition]]s.&lt;br /&gt;
:*Exported many hardcoded values to [[GameInfo definition]]s.&lt;br /&gt;
:*Added [[Line_SetBlocking]] and [[Sector_SetPortal]] specials.&lt;br /&gt;
:*Added {{c|defaultterrain}} section to [[TERRAIN]].&lt;br /&gt;
:*Added new [[earthquake]] functions.&lt;br /&gt;
:*Added [[user variable]]s.&lt;br /&gt;
:*[[DECORATE]]: Added {{Property|Species}}, {{Property|Activation}}, {{Property|PainThreshold}}, {{Property|PushFactor}}, {{Property|WeaveIndexXY}}, {{Property|WeaveIndexZ}}, {{Property|Powerup.Strength}}, {{Property|Player.MugShotMaxHealth}}, {{Property|Inventory.InterHubAmount}} properties.&lt;br /&gt;
:*Turned old bounce flags into {{Property|BounceType}} property.&lt;br /&gt;
:*Added {{Property|DamageFactor}} handling to Armors.&lt;br /&gt;
:*Added &amp;quot;BLUEMAP&amp;quot; [[palette blend]] for {{Property|Powerup.Color}}, and added {{Property|Powerup.Colormap}} for custom colormaps.&lt;br /&gt;
:*Added {{Flag|MOVEWITHSECTOR}}, {{Flag|NOBOSSRIP}}, {{Flag|THRUACTORS}}, {{Flag|THRUSPECIES}}, {{Flag|DONTSEEKINVISIBLE}}, {{Flag|FORCEPAIN}}, {{Flag|NOFEAR}}, {{Flag|BUMPSPECIAL}}, {{Flag|STEPMISSILE}}, {{Flag|NOTELEPORT}}, {{Flag|NOTRIGGER}},  {{Flag|AVOIDMELEE}}, {{Flag|JUMPDOWN}}, {{Flag|SCREENSEEKER}}, {{Flag|INVENTORY.PERSISTENTPOWER}}, {{Flag|WEAPON.AMMO_CHECKBOTH}}, {{Flag|WEAPON.NOAUTOAIM}} flags.&lt;br /&gt;
:*Added [[A_CheckCeiling]], [[A_MonsterRefire]], [[A_Weave]], [[A_JumpIfTargetInSight]], [[A_ZoomFactor]], [[A_SetAngle]], [[A_SetPitch]], [[A_ScaleVelocity]], [[A_ChangeVelocity]], [[A_SetCrosshair]], [[A_RemoveSiblings]], [[A_RaiseMaster]]/[[A_RaiseChildren|Children]]/[[A_RaiseSiblings|Siblings]], [[A_Log]], [[A_PrintBold]], [[A_SetArg]], [[A_SetSpecial]], [[A_Blast]] codepointers.&lt;br /&gt;
:*Added parameters to [[A_PodPain]], [[A_MakePod]], [[A_MLightningAttack]], [[A_M_Saw]], [[A_FireCustomMissile]], [[A_FadeOut]], [[A_Explode]], [[A_WeaponReady]], [[A_VileAttack]], [[A_Mushroom]], [[A_SeekerMissile]], [[A_KillChildren]]/[[A_KillMaster|Master]]/[[A_KillSiblings|Siblings]], [[A_CustomRailgun]] and [[A_RailAttack]], added SXF_TRANSFERPOINTERS flag to [[A_SpawnItemEx]] and several flags to [[A_Respawn]].&lt;br /&gt;
:*Imported {{Class|PowerDoubleFiringSpeed}} from [[Skulltag]], added {{Class|PowerInfiniteAmmo}}.&lt;br /&gt;
:*{{Class|PowerProtection}} and {{Class|PowerInvisibility}} can now be used to give certain flags to the player. Other enhancements to PowerInvisibility, such as changing the player&#039;s {{Property|RenderStyle}}.&lt;br /&gt;
:*Customizable mage lightning, sapphire wand, and {{Class|SpawnShot}} spawn lists.&lt;br /&gt;
:*[[ACS]]: compatibility fix for vanilla Hexen map where script execution order is critical.&lt;br /&gt;
:*Added [[GetActorVelX]]/[[GetActorVelY|Y]]/[[GetActorVelZ|Z]], [[SetActorVelocity]], [[GetActorViewHeight]], [[SetActivator]], [[SetActivatorToTarget]], [[GetChar]], [[SetSkyScrollSpeed]], [[GetAirSupply|Get]]/[[SetAirSupply]], [[GetArmorType]], [[CheckActorProperty]], [[CheckActorClass]], [[SoundSequenceOnActor]]/[[SoundSequenceOnSector|Sector]]/[[SoundSequenceOnPolyobj|Polyobj]], [[SpawnSpotForced]] and [[SpawnSpotFacingForced]].&lt;br /&gt;
:*Added ML_BLOCKUSE line flag, accessible through [[UDMF]] and [[Line_SetBlocking]].&lt;br /&gt;
:*Improved [[automatic compatibility]] with {{dw|Hacx}}, {{dw|Suspended in Dusk}}, {{dw|Community Chest}}, {{dw|Doomsday of UAC}}, {{dw|Strain}}, and the {{dw|Astrostein}} series.&lt;br /&gt;
:*[[Compatibility options]]: added Minotaur footclipped floor fire setting, sprite sorting order, [[MBF]]-style [[A_Mushroom]], monster movements affected by terrain, and friendly monsters able to cross blocking lines.&lt;br /&gt;
:*Added arch-vile &amp;quot;ghost&amp;quot; bug emulation for selected maps only.&lt;br /&gt;
:*Added several other MBF features, including {{Class|BetaSkull}}, [[A_FireOldBFG]], and [[DeHackEd]] support of MBF codepointers and actors.&lt;br /&gt;
:*Repaired accuracy of player behavior in &#039;&#039;[[Hexen]]&#039;&#039; with regards to [[jumping]] and pushing enemies away with attacks.&lt;br /&gt;
:*Fixed compatibility issues arising with [[Action Doom]].&lt;br /&gt;
:*Puffs now set their angle to face the originator of the attack.&lt;br /&gt;
:*Added SoulPriestess&#039; patch to force aspect ratio with {{CVAR|R|vid_aspect}}.&lt;br /&gt;
:*Added Spleen&#039;s patch to customize [[railgun]] performances with {{CVAR|R|r_rail_smartspiral}}, {{CVAR|R|r_rail_spiralsparsity}}, and {{CVAR|R|r_rail_trailsparsity}}.&lt;br /&gt;
:*[[UDMF]]: Added per-tier texture scaling with new [[sidedef]] properties and sidedef versions of [[linedef]] flags {{c|wrapmidtex}} and {{c|clipmidtex}}.&lt;br /&gt;
:*Improved [[sky]] projection and [[sky stretching]].&lt;br /&gt;
:*Updated Italian [[LANGUAGE|language]] file.&lt;br /&gt;
:*A whole lot more.&lt;br /&gt;
;{{LE|2.4.1}}{{rev|2126}} (January 24): {{Forum|t=24895|Release thread}} | {{versionlinks|2|4|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*[[Floor_Waggle]] effects are smoother now.&lt;br /&gt;
:*Negative numbers in the [[alternate HUD]] have their minus sign at the right place now.&lt;br /&gt;
:*Menu option scales better in widescreen resolution.&lt;br /&gt;
:*[[Player setup]] menu looks better in non-Doom games.&lt;br /&gt;
:*Moving [[camera]]s work correctly again.&lt;br /&gt;
:*[[Polyobject]]s glitch a bit less now.&lt;br /&gt;
:*The internal nodebuilder works correctly now with certain troublesome maps.&lt;br /&gt;
:*&#039;&#039;[[Strife]]&#039;&#039; conversations fixed and improved.&lt;br /&gt;
:*Many nitpicky fixes in &#039;&#039;Strife&#039;&#039; (switch sounds, messages, etc.).&lt;br /&gt;
:*&#039;&#039;[[Action Doom 2]]&#039;&#039; and &#039;&#039;[[Harmony]]&#039;&#039; can now use idclev, and they have their Autoload section in [[the ini]].&lt;br /&gt;
:*[[MAPINFO]] {{c|ResetInventory}} keyword now works as expected.&lt;br /&gt;
:*The {{CVAR|C|norawinput}} console variable can be set to true to fix input problems while playing a Windows build through {{wp|Wine_(software)|Wine}}.&lt;br /&gt;
:*A [[character input grid]] is available to play ZDoom with a controller without having to use the keyboard.&lt;br /&gt;
:*Added [[GAMEINFO]] lump so that a mod can specify which [[IWAD]] and external resource files it uses.&lt;br /&gt;
;{{LE|2.5.0}}{{rev|2508}} (August 11): {{Forum|t=26755|Release thread}} | {{versionlinks|2|5|0}}&lt;br /&gt;
:*Enhanced [[polyobject]] system, allowing them to move anywhere in the map (like [[Eternity Engine|Eternity]]&#039;s &amp;quot;dynasegs&amp;quot;) and to give them any arbitrary shape. This is accompanied by new [[ACS]] polyobject movement functions.&lt;br /&gt;
:*Support for [[node|uncompressed extended nodes]], also supported by [[Eternity Engine]] and [[PrBoom+]], to create a new cross-port standard for node storage.&lt;br /&gt;
:*Support for using [[Byte Map Font]]s.&lt;br /&gt;
:*Ability to use metadata tags in audio formats to define custom loop points.&lt;br /&gt;
:*Added support for the [[MUSINFO]] lump (from [[Risen3D]] and [[PrBoom+]]).&lt;br /&gt;
:*Improved compatibility settings to allow optionally a greater faithfulness to the [[vanilla Doom]] and vanilla Heretic behaviors.&lt;br /&gt;
:*ZMAPINFO as an alias for [[MAPINFO]] to avoid compatibility problems with other ports parsing this lump.&lt;br /&gt;
:*Full rewrite of the [[SBARINFO]] system allowing many additional features and options.&lt;br /&gt;
:*Added support for multi-monitor display.&lt;br /&gt;
:*default reverbs environment setting in MAPINFO&lt;br /&gt;
:*Several generalized [[action functions|codepointers]] to emulate some very specific &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; action functions&lt;br /&gt;
:*New functions to refine actor behavior through&lt;br /&gt;
:*Enhanced [[poison]] damage system&lt;br /&gt;
:*Generalized [[railgun]] codepointers&lt;br /&gt;
:*New [[automap options]]&lt;br /&gt;
:*[[Hall of mirrors|HOM]] detection system&lt;br /&gt;
:*New [[console commands]]&lt;br /&gt;
:*The usual bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
==2011==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2012==&lt;br /&gt;
;{{LE|2.6.0}}{{rev|3730}} (July 2): {{Forum|t=33295|Release thread}} | {{versionlinks|2|6|0}}&lt;br /&gt;
:*Added [[Hacx]] IWAD support.&lt;br /&gt;
:*Added text-format Strife conversation system with [[USDF]] and [[ZSDF]].&lt;br /&gt;
:*A textured [[automap]] is now available; automap graphics are now [[map arrow|externalized]].&lt;br /&gt;
:*Rewritten [[menu]] system, which can now be defined with the [[MENUDEF]] lump.&lt;br /&gt;
:*Externalized intermissions to [[MAPINFO]].&lt;br /&gt;
:*Externalized [[IWAD]] detection and gave each IWAD its own independent config section.&lt;br /&gt;
:*Added [[FluidSynth]] and [[GUS|GUS emulator]] softsynths; fixed issues with [[TiMidity++]].&lt;br /&gt;
:*Added [[VOC]] support and enhanced [[MIDI]] playback with support for alternative formats such as [[XMI]] and [[HMI]].&lt;br /&gt;
:*[[Action specials]]: Added [[Ceiling_LowerAndCrushDist]] and [[Thing_SetConversation]]. Added [[console command]] to execute specials.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Increased maximum script number from 999 to 32767.&lt;br /&gt;
::*[[Named script]]s allow to avoid script number conflicts.&lt;br /&gt;
::*Added [[StrCpy]], [[CheckSight]], [[SetActivator]], [[SetPointer]] functions.&lt;br /&gt;
::*Added [[ACS actor properties|APROP_ScaleX/Y]] and APROP_Mass actor properties.&lt;br /&gt;
::*Added temporary dynamic strings variables with [[StrParam]].&lt;br /&gt;
::*Scripts can now have up to four parameters.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added [[A_CheckFlag]], [[A_FaceMaster]], [[A_FaceTracer]], [[A_RadiusGive]], [[A_SetMass]], [[A_SetScale]], [[A_Warp]] and [[A_WolfAttack]]...&lt;br /&gt;
::*Enhanced [[A_AlertMonsters]], [[A_BFGSpray]], [[A_Blast]], [[A_CustomBulletAttack]], [[A_FireBullets]], [[A_GunFlash]], [[A_PainAttack]], [[A_RadiusThrust]]...&lt;br /&gt;
::*Added an [[actor pointer]] manipulation system with several new codepointers...&lt;br /&gt;
::*Added {{Flag|DOHARMSPECIES}}, {{Flag|DONTCORPSE}}, {{Flag|SEEINVISIBLE}} and {{Flag|INVENTORY.UNTOSSABLE}}&lt;br /&gt;
::*Increased [[damage type]] flexibility in several ways with {{Property|DeathType}} and {{Property|PainType}}.&lt;br /&gt;
::*Added customizable {{Class|ArtiPoisonBag|fléchettes}}.&lt;br /&gt;
::*Made [[accuracy]] and [[stamina]] accessible through [[DECORATE expressions]].&lt;br /&gt;
::*Added {{Property|ProjectileKickback}}, {{Property|Inventory.RestrictedTo}} and {{Property|Inventory.ForbiddenTo}} class-based properties.&lt;br /&gt;
::*Backported {{Property|VisibleToTeam}}, {{Property|VisibleToPlayerClass}} and weapon {{Property|DropItem}} feature from [[Skulltag]], and enhanced them.&lt;br /&gt;
::*Added &amp;quot;Fast&amp;quot; keyword for states and deprecated the unreliable {{Flag|FASTER}} and {{Flag|FASTMELEE}} flags.&lt;br /&gt;
:*Added a [[SECRETS|secret hint system]].&lt;br /&gt;
:*[[3D floor]]s support.&lt;br /&gt;
:*[[FraggleScript]] support.&lt;br /&gt;
:*[[Voxel]] support.&lt;br /&gt;
:*[[SBARINFO]]: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.&lt;br /&gt;
:*[[SNDINFO]]: Added {{sndinfo|musicalias}} and {{sndinfo|attenuation}}.&lt;br /&gt;
:*Compatibility: fixed issues with {{dw|Eternal Doom}}, [[Happy Time Circus]], {{dw|Phobos_(WAD)|Phobos}}, vanilla compat, [[Boom]] compat, light levels higher than 255, [[Heretic]], [[Strife]], [[MUSINFO]], misnamed UDMF field.&lt;br /&gt;
:*Fixed loading of [[BMF]] palettes.&lt;br /&gt;
:*{{CCMD|O|restart}} console command.&lt;br /&gt;
:*Added [[PALVERS]] lump.&lt;br /&gt;
:*Custom [[IWAD]]s no longer need to include a [[COLORMAP]], as ZDoom will generate one automatically if it is missing.&lt;br /&gt;
:*Fixed vertical tiling of non-power-of-two textures.&lt;br /&gt;
:*Fixed blockmap overflows in huge maps with help from [[Mocha Doom|Maes]] and [[PrBoom+|Entryway]].&lt;br /&gt;
:*Joystick support for non-Windows platforms.&lt;br /&gt;
:*As always, a plethora of bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.6.1}}{{rev|3794}} (July 28): {{Forum|t=33547|Release thread}} | {{versionlinks|2|6|1}}&lt;br /&gt;
:*Added [[Hacx]] 2.0 IWAD support.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added [[ACS_NamedExecuteWait]] and [[NamedScriptWait]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{Flag|INVENTORY.RESTRICTABSOLUTELY}} and {{Flag|PLAYERPAWN.CANSUPERMORPH}}.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Added RandomPlayerStarts and UsePlayerStartZ flags for [[map definition]]s.&lt;br /&gt;
:*Solved compatibility issue with [[Massmouth 2]].&lt;br /&gt;
:*[[Voxel]]s are now rotated by 90° to match their orientation in Slab6 and [[Build]] games.&lt;br /&gt;
&lt;br /&gt;
==2013==&lt;br /&gt;
;{{LE|2.7.0}}{{rev|4342}} (June 8): {{Forum|t=36456|Release thread}} | {{versionlinks|2|7|0}}&lt;br /&gt;
:*Added [[Floor_RaiseAndCrushDoom]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Made dynamic strings persistent. ACS can now safely generate up to one million new strings.&lt;br /&gt;
::*Added [[CheckFont]], [[GetCVarString]], [[GetUserCVar]], [[GetUserCVarString]], [[IsTIDUsed]], [[LineAttack_(ACS)|LineAttack]], [[SetCVar]], [[SetCVarString]], [[SetUserCVar]], [[SetUserCVarString]], [[SpawnDecal]], and [[UniqueTID]].&lt;br /&gt;
::*Added HUD layers, visibility flags, additive blending, and alpha parameter to [[HudMessage]] and [[HudMessageBold]].&lt;br /&gt;
::*Also added HUD message wrapping and clipping with [[SetHudClipRect]] and [[SetHudWrapWidth]].&lt;br /&gt;
::*Added PLAYERINFO_FOV and _DESIREDFOV to [[GetPlayerInfo]].&lt;br /&gt;
::*Added support for desaturated [[translation]]s.&lt;br /&gt;
::*Added [[Sqrt]], [[FixedSqrt]], and [[VectorLength]] functions.&lt;br /&gt;
::*Support for advanced structures from non-ACC compilers.&lt;br /&gt;
::*Added the ability to retrieve the {{Property|ReactionTime}}, {{Property|Height}} and {{Property|Radius}} properties through [[GetActorProperty]].&lt;br /&gt;
::*Added CHANGELEVEL_PRERAISEWEAPON to [[ChangeLevel]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*{{Flag|FLOATBOB}} things are no longer moved physically when bobbing.&lt;br /&gt;
::*Added {{Property|Player.FallingScreamSpeed}}, {{Property|Player.GruntSpeed}}, {{Property|Weapon.MinSelectionAmmo1}}, and {{Property|Weapon.MinSelectionAmmo2}}.&lt;br /&gt;
::*Added random state duration and [[A_SetTics]].&lt;br /&gt;
::*[[A_Explode]]&#039;s &#039;&#039;affectsource&#039;&#039; parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to [[A_RadiusThrust]].&lt;br /&gt;
::*[[A_RadiusThrust]] can use negative &#039;&#039;force&#039;&#039; values.&lt;br /&gt;
::*Added [[A_JumpIfTargetInsideMeleeRange]], [[A_JumpIfTargetOutsideMeleeRange]], [[A_SetDamageType]], and [[A_CheckLOF]].&lt;br /&gt;
::*Added {{Flag|INVENTORY.NEVERRESPAWN}}, {{Flag|INVENTORY.NOSCREENFLASH}}, {{Flag|POWERSPEED.NOTRAIL}}, and {{Flag|PLAYERPAWN.CROUCHABLEMORPH}}.&lt;br /&gt;
::*Added JLOSF_NOAUTOAIM flag to [[A_JumpIfTargetInLOS]].&lt;br /&gt;
::*Added WRF_DISABLESWITCH to [[A_WeaponReady]].&lt;br /&gt;
::*[[A_Light]] can use negative values to darken the scene.&lt;br /&gt;
::*Added NORANDOMPUFFZ flag to [[A_CustomPunch]], [[A_FireBullets]], and [[A_CustomBulletAttack]].&lt;br /&gt;
::*Added SXF_USEBLOODCOLOR, SXF_CLEARCALLERTID, SXF_MULTIPLYSPEED, SXF_TRANSFERSCALE, SXF_TRANSFERSPECIAL, and SXF_CLEARCALLERSPECIAL flags to [[A_SpawnItemEx]].&lt;br /&gt;
::*Added the ability to adjust the vertical offset of a rail attack to [[A_RailAttack]] and [[A_CustomRailgun]].&lt;br /&gt;
::*Player-fired seeker [[Projectile|missiles]]&#039; range at which the missiles initially lock-on a [[Actor pointer|tracer]] can be set via {{Property|MaxTargetRange}} actor property.&lt;br /&gt;
::*{{Property|ReactionTime}} added to [[DECORATE expressions]].&lt;br /&gt;
::*Added [[Actor states#NoDelay|NoDelay]] state flag.&lt;br /&gt;
::*Added [[Actor_states#States|Bounce]] actor states.&lt;br /&gt;
::*Fixed few cases of DECORATE definitions inaccuracies for [[Doom]], [[Heretic]], [[Hexen]] and [[Strife]] actors.&lt;br /&gt;
:*[[FONTDEFS]]: Backported SPACEWIDTH from [[ECWolf]].&lt;br /&gt;
:*[[LANGUAGE]]: Brazilian Portuguese support.&lt;br /&gt;
:*[[MAPINFO]]: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for [[map definition]]s and NoRandomPlayerclass for [[GameInfo definition]]s.&lt;br /&gt;
:*[[MIDI]]: [[FluidSynth]] now recognize {{c|libfluidsynth.dll}} as a valid alias for {{c|fluidsynth.dll}}, various FluidSynth [http://forums.scummvm.org/viewtopic.php?p=72972#72972 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.&lt;br /&gt;
:*Updated [[foo_DUMB]].&lt;br /&gt;
:*Implemented additive rendering for [[3D floor]]s.&lt;br /&gt;
:*Added &#039;&#039;{{wp|Quake (video game)|Quake}}&#039;&#039;-like no-clipping with {{CCMD|D|noclip2}}.&lt;br /&gt;
:*Exported the [[scoreboard]] text to [[LANGUAGE]].&lt;br /&gt;
:*The sound system should now precache nearly all sounds used by actor properties and [[ambient sound]]s, and the [[MAPINFO/Map definition|MAPINFO]] command &amp;quot;PrecacheSounds&amp;quot; can be used to precache other sounds.&lt;br /&gt;
:*Arbitrary FPS cap with {{CVAR|R|vid_maxfps}}.&lt;br /&gt;
:*Increased maximum resolution to 5760&amp;amp;times;3600.&lt;br /&gt;
:*Added {{c|lightfog}} property for [[sidedef]]s.&lt;br /&gt;
:*Added support for {{dw|Doom 3: BFG Edition}}&#039;s modified [[IWAD]]s, including {{dw|No Rest for the Living}}.&lt;br /&gt;
:*Improved [[WAD]] archive code with support for big-endian format and LZSS compression used in several console ports.&lt;br /&gt;
:*Added ability in [[UDMF]] to specify things to spawn by [[:Category:Thing specials|thing specials]] and [[Hexen breakable items]] by names with {{c|arg1str}}, as well as the ability to set initial values to a thing&#039;s [[user variable]].&lt;br /&gt;
:*Added new [[node]] format for complex UDMF maps which need fractional precision on node splitters.&lt;br /&gt;
:*The [[alternate HUD]] now features a {{Class|Berserk}} indicator and a customizable time display.&lt;br /&gt;
:*Tweaked {{Class|ScriptedMarine|scripted marines}}.&lt;br /&gt;
:*Added {{c|{{CCMD|D|acsprofile}}}} [[CCMDs|console command]].&lt;br /&gt;
:*[[Weapon slots]] can be configured from the [[Customize controls]] menu.&lt;br /&gt;
:*Solved compatibility issues with [[Daedalus: Alien Defense]], {{dw|Community Chest 3}}, Nuke Mine, Khorus, [[Void]], the {{dw|Master Levels}}, and {{dw|Claustrophobia 1024}}.&lt;br /&gt;
:*{{Class|RandomSpawner}}s now respect {{param|nomonsters}}.&lt;br /&gt;
:*Added the ability to define mod-specific [[CVARs|console variables]] through the addition of the [[CVARINFO]] lump.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.7.1}}{{cs|21efe3b}} (July 3): {{Forum|t=36679|Release thread}} | {{versionlinks|2|7|1}}&lt;br /&gt;
&#039;&#039;Note: this is the first version based on the [[Git repository]]; 2.7.0 was the last version based on the SVN repository.&#039;&#039;&lt;br /&gt;
* Added new additive [[MAPINFO/GameInfo definition|GameInfo]] keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.&lt;br /&gt;
* Added a new {{Flag|DONTDRAIN}} flag to mark actors as ineligible for vampirism attacks.&lt;br /&gt;
* [[Automatic compatibility|Compatibility]] fixes for [[Ultimate Simplicity]] map07, [[Cheogsh]] map01, [[Super Sonic Doom]] map31&lt;br /&gt;
* [[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.&lt;br /&gt;
* The powered-up {{Class|GoldWand|Gold Wand}} was not puffing on actors.&lt;br /&gt;
* Disabled [[Heretic]]&#039;s punishment [[cheat]]s when in {{CVAR|C|allcheats}} mode.&lt;br /&gt;
* Objects that explode on death no longer deal the damage they were dealt instead of their own.&lt;br /&gt;
* Vampirism attacks now respect damage reduction.&lt;br /&gt;
* [[Demo]] recording now writes correct user info to demos.&lt;br /&gt;
* ACS&#039;s [[PlaySound]] for looping sounds now works properly when using channel flags.&lt;br /&gt;
&lt;br /&gt;
==2014==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2015==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2016==&lt;br /&gt;
;{{LE|2.8.0}}{{cs|56359b6}} (February 3): {{Forum|t=50712|Release thread}} | {{versionlinks|2|8|0}}&lt;br /&gt;
:*Frontend&lt;br /&gt;
:**GoG-installed IWADs are now detected automatically.  Steam-installed IWADs are detected on OS X and Linux.&lt;br /&gt;
:**Improved netcode and added [[network options]] menu to configure new features.&lt;br /&gt;
:**Two new cheats, god2 and buddha2. The player cannot die from telefrag damage with these.&lt;br /&gt;
:**Added WAD compatibility fixes for over a dozen maps, including &#039;&#039;[[Cheogsh 2]]&#039;&#039;, &#039;&#039;XtheaterIII&#039;&#039;, and the infamous missing yellow keycard on TNT MAP31.&lt;br /&gt;
:**+warp now works from the command line.&lt;br /&gt;
:**Added support for standard file paths on Windows.&lt;br /&gt;
:**Added a user-settable factor for [[earthquake]] intensity.&lt;br /&gt;
:*Automap&lt;br /&gt;
:**Non-countable monster actors can have their own separate automap color.&lt;br /&gt;
:**Extended {{c|{{CVAR|A|am_cheat}}}} with three modes to prevent lines flagged as &#039;&#039;hidden&#039;&#039; from being shown on the automap.&lt;br /&gt;
:**Added separate colors for the various types of 2-sided walls for the overlay automap, as well as colors missing from that mode.&lt;br /&gt;
:**Actors sprites can be shown on the automap instead of simple triangles when the second, third, fifth or sixth modes of {{c|am_cheat}} console variable are enabled.&lt;br /&gt;
:*Console&lt;br /&gt;
:**Added a {{c|{{CCMD|O|closemenu}}}} [[CCMDs|console command]], so that menu options that close the [[menu]] can be added.&lt;br /&gt;
:**The behavior of auto-loading external [[DEHACKED]] lumps can be controlled by setting the {{c|dehload}} [[CVARs|console variable]].&lt;br /&gt;
:**Results for console tab-completion are now color-coded; console commands appear blue, console variables green, and aliases red.&lt;br /&gt;
:**Fixed: the {{c|{{CVAR|R|wi_noautostartmap}}}} console variable was not sync-safe.&lt;br /&gt;
:**Added {{c|{{CVAR|C|sv_freelook}}}}, {{c|{{CVAR|C|sv_allowfreelook}}}} and {{c|{{CVAR|C|sv_nofreelook}}}}.&lt;br /&gt;
:*Building&lt;br /&gt;
:**Native Cocoa back end for OS X resulting in significant increases in performance over SDL in addition to better overall user experience.&lt;br /&gt;
:**Added optional support for the OpenAL sound library, allowing for compiling without FMOD.&lt;br /&gt;
:**Added a new [[software synthesizer]], [[WildMIDI]], and a new [[OPL]] core.&lt;br /&gt;
:**Added support for building with clang.&lt;br /&gt;
:**Nearly-complete support for ARM devices such as the Raspberry Pi.  (Some known bugs remain — in particular, you must set vid_forcesurface to true in zdoom.ini, or ZDoom will instantly segfault.)&lt;br /&gt;
:*Modding&lt;br /&gt;
:**Added [[Ceiling_CrushAndRaiseSilentDist]].&lt;br /&gt;
:**New type of [[earthquake]], can only be accessed with [[A_QuakeEx]] or its [[QuakeEx|ACS equivalent]], which can replicate the shaking effect seen in many recent games instead of random camera offsets using the QF_WAVE flag. Quakes can now be scaled in, out, or mixed up. Both wave and regular quakes work together.&lt;br /&gt;
:**Menu&#039;s back button and the pause sign can be animated.&lt;br /&gt;
:**The particle engine is now exposed to modders via the [[A_SpawnParticle]] action function and [[SpawnParticle]] ACS function.&lt;br /&gt;
:**Directory-structured archives now support [[lump filtering]], which loads different resources depending on the base game.&lt;br /&gt;
:**Friction and [[TERRAIN]]-based sector damage are now transferred to [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Fixed scaling of textures on [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Overhauled [[sector type]]s and properties. Sectors have several new UDMF properties.&lt;br /&gt;
:**Lines and sectors may now have multiple ids/tags via the moreids UDMF property.&lt;br /&gt;
:**&amp;lt;code&amp;gt;checkswitchrange&amp;lt;/code&amp;gt; now correctly prevents players from pressing switches embedded in the floor or ceiling, and works correctly with switches that are part of 3D floors.&lt;br /&gt;
:**Added {{c|blockhitscan}} and {{c|transparent}} [[linedef|line]] properties, {{c|waterzone}} [[sector]] property, and {{c|alpha}}, {{c|fillcolor}}, {{c|gravity}}, {{c|health}}, {{c|pitch}}, {{c|renderstyle}}, {{c|roll}}, {{c|scale}}, {{c|scalex}}, {{c|scaley}} and {{c|score}} [[thing]] properties for [[Universal Doom Map Format|UDMF]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
:**Added {{c|[[DropItem]]}}, {{c|[[DropInventory]]}}, {{c|[[CheckFlag]]}}, {{c|[[GetLineActivation]]}}, {{c|[[GetMaxInventory]]}}, {{c|[[SetLineActivation]]}}, {{c|[[GetArmorInfo]]}}, {{c|[[GetActorPowerupTics]]}}, {{c|[[IsPointerEqual]]}}, {{c|[[ChangeActorAngle]]}}, {{c|[[ChangeActorPitch]]}}, {{c|[[PickActor]]}}, {{c|[[SetSectorDamage]]}}, {{c|[[QuakeEx]]}}, {{c|[[Warp]]}} and {{c|[[CanRaiseActor]]}}  functions.&lt;br /&gt;
:**Added FHF_NORANDOMPUFFZ flag for {{c|[[LineAttack_(ACS)|LineAttack]]}}.&lt;br /&gt;
:**Added BLOCKF_HITSCAN flag for {{c|[[Line_SetBlocking]]}}.&lt;br /&gt;
:**Added {{c|APROP_ViewHeight}}, {{c|APROP_AttackZOffset}} and {{c|APROP_StencilColor}} [[ACS actor properties]].&lt;br /&gt;
:**Fixed potential desync with {{c|[[CheckPlayerCamera]]}}.&lt;br /&gt;
:**Fixed: {{c|[[Thing_SetGoal]]}} could put an actor&#039;s target and goal out of sync.&lt;br /&gt;
:**{{c|[[GetSectorFloorZ]]}} and {{c|[[GetSectorCeilingZ]]}} now interpret 0-tag as &#039;any sector&#039; and return the z-height of whatever sector is at those coordinates.&lt;br /&gt;
:**[[Arrays]] are now supported at the script scope.&lt;br /&gt;
:*[[ANIMDEFS]]:&lt;br /&gt;
:**Added an optional {{c|worldpanning}} flag for camera textures definitions in order to make camera textures pan in world units instead of texture units.&lt;br /&gt;
:**Added {{c|allowdecals}} option to animated doors.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
:**Four new keybinds for DECORATE use with weapons (see {{c|[[A_WeaponReady]]}}&#039;s User states.)&lt;br /&gt;
:**Sprites now support mirroring via negative scales.&lt;br /&gt;
:**Added {{c|{{Property|Player.UseRange}}}} and {{c|{{Property|Player.AirCapacity}}}} [[player properties]].&lt;br /&gt;
:**Actors can now have extreme death/crash states that are damage type specific.&lt;br /&gt;
:**New &amp;lt;code&amp;gt;randompick&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;frandompick&amp;lt;/code&amp;gt; [[DECORATE expressions|non-action functions]].&lt;br /&gt;
:**[[A_Print]], [[A_PrintBold]], and [[A_Log]] can now use &amp;lt;code&amp;gt;$FOO&amp;lt;/code&amp;gt; [[LANGUAGE|translation strings]].&lt;br /&gt;
:**The following functions have been given additional functionalities: {{c|[[A_AlertMonsters]]}}, {{c|[[A_BFGSpray]]}}, {{c|[[A_ChangeVelocity|A_Change]]/[[A_ScaleVelocity|ScaleVelocity]]}}, {{c|[[A_CustomPunch]]}}, {{c|[[A_SetAngle]]}} and {{c|[[A_SetPitch]]}}, {{c|[[A_DamageMaster]]/[[A_DamageChildren|Children]]/[[A_DamageSiblings|Siblings]]}}, {{c|[[A_KillMaster]]/[[A_KillChildren|Children]]/[[A_KillSiblings|Siblings]]}}, {{c|[[A_Log]]}}, {{c|[[A_Print]]}}, {{c|[[A_PrintBold]]}}, {{c|[[A_RadiusGive]]}}, {{c|[[A_Saw]]}}, {{c|[[A_SetScale]]}}, {{c|[[A_SetTics]]}}, {{c|[[A_SpawnItemEx]]}}, {{c|[[A_Teleport]]}}, {{c|[[A_VileAttack]]}}, {{c|[[A_Warp]]}}, {{c|[[A_WeaponReady]]}}.&lt;br /&gt;
:**Added {{Flag|NOFORWARDFALL}}, {{Flag|NOTONAUTOMAP}}, {{Flag|RELATIVETOFLOOR}}, {{Flag|NEVERTARGET}}, {{Flag|NOTELESTOMP}}, {{Flag|ALWAYSTELEFRAG}}, {{Flag|ALLOWPAIN}}, {{Flag|CAUSEPAIN}}, {{Flag|DONTTHRUST}}, {{Flag|BUDDHA}}, {{Flag|FOILBUDDHA}}, {{Flag|MIRRORREFLECT}}, {{Flag|AIMREFLECT}}, {{Flag|THRUREFLECT}}, {{Flag|HARMFRIENDS}}, {{Flag|NOFORWARDFALL}}, {{Flag|HITTARGET}}, {{Flag|HITMASTER}}, {{Flag|HITTRACER}}, {{Flag|WEAPONSPAWN}}, {{Flag|INVENTORY.TOSSED}}, {{Flag|INVENTORY.ALWAYSRESPAWN}}, {{Flag|INVENTORY.TRANSFER}}, and {{Flag|INVENTORY.NOTELEPORTFREEZE}} [[actor flags]].&lt;br /&gt;
:**{{Flag|MTHRUSPECIES}} now works with [[A_BFGSpray]] and rail attacks.&lt;br /&gt;
:**Added {{c|[[A_DamageSelf]]/[[A_DamageTarget|Target]]/[[A_DamageTracer|Tracer]]}}, {{c|[[A_Remove]]/[[A_RemoveSiblings|Siblings]]/[[A_RemoveTarget|Target]]/[[A_RemoveTracer|Tracer]]}}, {{c|[[A_KillTarget]]/[[A_KillTracer|Tracer]]}}, {{c|[[A_DropItem]]}}, {{c|[[A_SetSpeed]]}}, {{c|[[A_SetHealth]]}}, {{c|[[A_ResetHealth]]}}, {{c|[[A_SetFloatBobPhase]]}}, {{c|[[A_SetRoll]]}}, {{c|[[A_SetTeleFog]]}}, {{c|[[A_GiveToChildren|A_GiveTo]]/[[A_TakeFromChildren|TakeFromChildren]]}}, {{c|[[A_GiveToSiblings|A_GiveTo]]/[[A_TakeFromSiblings|TakeFromSiblings]]}}, {{c|[[A_JumpIfHigherOrLower]]}},  {{c|[[A_SetFloatSpeed]]}}, {{c|[[A_SetSpecies]]}}, {{c|[[A_CheckBlock]]}}, {{c|[[A_CheckProximity]]}}, and {{c|[[A_QuakeEx]]}} [[action functions]].&lt;br /&gt;
:**Players with the NODAMAGE flag cannot be telefragged anymore, nor can they take any damage via voodoo dolls.&lt;br /&gt;
:**The amount of health regeneration gained from a {{c|{{Class|PowerRegeneration}}}} powerup can be controlled with the {{c|{{Property|Powerup.Strength}}}} property.&lt;br /&gt;
:**Improved the {{c|[[Actor states#NoDelay|NoDelay]]}} state flag reliability.&lt;br /&gt;
:**Added {{c|Subtract}} render style.&lt;br /&gt;
:**Different types of {{Class|HereticImp|gargoyles}} and {{Class|Mummy|golems}} could infight amongst themselves (original &#039;&#039;[[Heretic]]&#039;&#039; behavior).&lt;br /&gt;
:**Added {{c|[[Actor states#CanRaise|CanRaise]]}} and {{c|[[Actor states#Slow|Slow]]}} actor [[actor states#State keywords|state flags]].&lt;br /&gt;
:*[[LANGUAGE]]:&lt;br /&gt;
:**Externalized &amp;quot;New save game&amp;quot; line for save screen, and [[automap]] statistics display.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
:**Custom colors for both modes of the automap can be set on per-mod basis.&lt;br /&gt;
:**Added {{c|SlowMonsters}}, {{c|HealthFactor}}, {{c|NoInfighting}} and {{c|TotalInfighting}} [[skill definition]]s property.&lt;br /&gt;
:*[[SBARINFO]]:&lt;br /&gt;
:**Extended {{c|[[DrawImage]]}} command.&lt;br /&gt;
:*[[SNDINFO]]:&lt;br /&gt;
:**Fixed incorrect {{Class|Minotaur|Maulotaur}} melee attack sound.&lt;br /&gt;
:*Internals&lt;br /&gt;
:**Removed [[Polymost]] code.&lt;br /&gt;
:**Vast improvements to movement interpolation.&lt;br /&gt;
:**Fixed a lot of leaks and garbage collection issues.&lt;br /&gt;
:**Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.8.1}}{{cs|1a9bc53}} (February 23): {{Forum|t=50968|Release thread}} | {{versionlinks|2|8|1}}&lt;br /&gt;
* {{c|#region}}/{{c|#endregion}} is now supported for text lumps. ZDoom does not do anything with them but ignore them, but this allows editors to treat them however they like.&lt;br /&gt;
* Better [[LANGUAGE|localizability]] of the [[menus]].&lt;br /&gt;
* [[TERRAIN|Terrain]] definitions can now be optional.&lt;br /&gt;
* Walking into an area with a [[REVERBS|reverb effect]] no longer mutes all sound.&lt;br /&gt;
* &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{Class|ArtiTimeBomb|time bomb artifacts}} now spawn in the proper locations.&lt;br /&gt;
* &#039;&#039;Heretic&#039;&#039;&#039;s powered {{Class|Mace|firemace}} balls once again seek their targets.&lt;br /&gt;
* The {{Class|Whirlwind|whirlwind attack}} used by &#039;&#039;Heretic&#039;&#039;&#039;s {{Class|Ironlich}} sometimes fizzled out immediately.&lt;br /&gt;
* Instant [[sector]] movement actions are again instant.&lt;br /&gt;
* Various other minor fixes.&lt;br /&gt;
&lt;br /&gt;
==Post 2.8.1==&lt;br /&gt;
The following additions are available in [[Git]] builds, but never were released officially before ZDoom ceased development.&lt;br /&gt;
&lt;br /&gt;
:* The scripting branch was merged, laying the VM groundwork for [[ZScript]].&lt;br /&gt;
:* [[DECORATE]]: &lt;br /&gt;
:** [[Actor_states|States]]: &lt;br /&gt;
:*** Can contain multiple action functions enclosed in braces&lt;br /&gt;
:*** &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blocks&lt;br /&gt;
:*** return; statement&lt;br /&gt;
:** Functions:&lt;br /&gt;
:*** Added the following non-action functions: [[CountInv]], [[GetDistance]]&lt;br /&gt;
:*** Added the following action functions: [[A_SetChaseThreshold]]&lt;br /&gt;
:* Portals via [[Line_SetPortal]] (visual only; {{Forum|t=46916|original forum thread}})&lt;br /&gt;
&lt;br /&gt;
The final commit to ZDoom was made December 29, 2016.  These features would become part of [[GZDoom version history|GZDoom releases]].&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://sourceforge.net/projects/zdoom/files/ Sourceforge archive] Unofficial mirror for ZDoom versions&lt;br /&gt;
* [https://github.com/doomtech/zdoom-old GitHub archive] Unofficial repository of pre-SVN source code&lt;br /&gt;
[[Category:Nostalgia]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47036</id>
		<title>ZDoom version history</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47036"/>
		<updated>2019-11-27T00:39:02Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Next version */ Probably should rename this section and switch to past tense&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the evolution of [[ZDoom]] by listing the main features of each version.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!By year&lt;br /&gt;
|[[#1998|1998]] &amp;amp;middot; [[#1999|1999]] &amp;amp;middot; [[#2000|2000]] &amp;amp;middot; [[#2001|2001]] &amp;amp;middot; [[#2002|2002]] &amp;amp;middot; [[#2003|2003]] &amp;amp;middot; [[#2004|2004]] &amp;amp;middot; [[#2005|2005]] &amp;amp;middot; [[#2006|2006]] &amp;amp;middot; [[#2007|2007]] &amp;amp;middot; [[#2008|2008]] &amp;amp;middot; [[#2009|2009]] &amp;amp;middot; [[#2010|2010]] &amp;amp;middot; [[#2011|2011]] &amp;amp;middot; [[#2012|2012]] &amp;amp;middot; [[#2013|2013]] &amp;amp;middot; [[#2014|2014]] &amp;amp;middot; [[#2015|2015]] &amp;amp;middot; [[#2016|2016]]&lt;br /&gt;
|-&lt;br /&gt;
!1.x Branch&lt;br /&gt;
|[[#1.11|1.11]] &amp;amp;middot; [[#1.12|1.12]] &amp;amp;middot; [[#1.13|1.13]] &amp;amp;middot; [[#1.14|1.14]] &amp;amp;middot; [[#1.14a|1.14a]] &amp;amp;middot; [[#1.16|1.16]] &amp;amp;middot; [[#1.17|1.17]] &amp;amp;middot; [[#1.17a|1.17a]] &amp;amp;middot; [[#1.17b|1.17b]] &amp;amp;middot; [[#1.17b1|1.17b1]] &amp;amp;middot; [[#1.17c|1.17c]] &amp;amp;middot; [[#1.18|1.18]] &amp;amp;middot; [[#1.18a|1.18a]] &amp;amp;middot; [[#1.18b|1.18b]] &amp;amp;middot; [[#1.19|1.19]] &amp;amp;middot; [[#1.20|1.20]] &amp;amp;middot; [[#1.21|1.21]] &amp;amp;middot; [[#1.22|1.22]] &amp;amp;middot; [[#1.23 Beta|1.23 Beta]] &amp;amp;middot; [[#1.23 Beta 19|1.23 Beta 19]] &amp;amp;middot; [[#1.23 Beta 20|1.23 Beta 20]] &amp;amp;middot; [[#1.23 Beta 23|1.23 Beta 23]] &amp;amp;middot; [[#1.23 Beta 24|1.23 Beta 24]] &amp;amp;middot; [[#1.23 Beta 25|1.23 Beta 25]] &amp;amp;middot; [[#1.23 Beta 33|1.23 Beta 33]]&lt;br /&gt;
|-&lt;br /&gt;
!2.0 Branch&lt;br /&gt;
|[[#2.0 Beta 13|2.0 Beta 13]] &amp;amp;middot; [[#2.0.47|2.0.47]] &amp;amp;middot; [[#2.0.47i|2.0.47i]] &amp;amp;middot; [[#2.0.48|2.0.48]] &amp;amp;middot; [[#2.0.49|2.0.49]] &amp;amp;middot; [[#2.0.50|2.0.50]] &amp;amp;middot; [[#2.0.51|2.0.51]] &amp;amp;middot; [[#2.0.52|2.0.52]] &amp;amp;middot; [[#2.0.53|2.0.53]] &amp;amp;middot; [[#2.0.54|2.0.54]] &amp;amp;middot; [[#2.0.55|2.0.55]] &amp;amp;middot; [[#2.0.56|2.0.56]] &amp;amp;middot; [[#2.0.57|2.0.57]] &amp;amp;middot; [[#2.0.58|2.0.58]] &amp;amp;middot; [[#2.0.59|2.0.59]] &amp;amp;middot; [[#2.0.60|2.0.60]] &amp;amp;middot; [[#2.0.61|2.0.61]] &amp;amp;middot; [[#2.0.62|2.0.62]] &amp;amp;middot; [[#2.0.63|2.0.63]] &amp;amp;middot; [[#2.0.64|2.0.64]] &amp;amp;middot; [[#2.0.90|2.0.90]] &amp;amp;middot; [[#2.0.91|2.0.91]] &amp;amp;middot; [[#2.0.92|2.0.92]] &amp;amp;middot; [[#2.0.93|2.0.93]] &amp;amp;middot; [[#2.0.94|2.0.94]] &amp;amp;middot; [[#2.0.95|2.0.95]] &amp;amp;middot; [[#2.0.96|2.0.96]] &amp;amp;middot; [[#2.0.97|2.0.97]] &amp;amp;middot; [[#2.0.98|2.0.98]]&lt;br /&gt;
|-&lt;br /&gt;
!2.1 Branch&lt;br /&gt;
|[[#2.1.0|2.1.0]] &amp;amp;middot; [[#2.1.1|2.1.1]] &amp;amp;middot; [[#2.1.2|2.1.2]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.4|2.1.4]] &amp;amp;middot; [[#2.1.5|2.1.5]] &amp;amp;middot; [[#2.1.6|2.1.6]] &amp;amp;middot; [[#2.1.7|2.1.7]]&lt;br /&gt;
|-&lt;br /&gt;
!Modern&lt;br /&gt;
|[[#2.2.0|2.2.0]] &amp;amp;middot; [[#2.3.0|2.3.0]] &amp;amp;middot; [[#2.3.1|2.3.1]] &amp;amp;middot; [[#2.4.0|2.4.0]] &amp;amp;middot; [[#2.4.1|2.4.1]] &amp;amp;middot; [[#2.5.0|2.5.0]] &amp;amp;middot; [[#2.6.0|2.6.0]] &amp;amp;middot; [[#2.6.1|2.6.1]] &amp;amp;middot; [[#2.7.0|2.7.0]] &amp;amp;middot; [[#2.7.1|2.7.1]] &amp;amp;middot; [[#2.8.0|2.8.0]] &amp;amp;middot; [[#2.8.1|2.8.1]] &amp;amp;middot; [[#Next version|Next version]]&lt;br /&gt;
|}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==1998==&lt;br /&gt;
;{{LE|1.11}} (March 6): {{Plainlink|[http://www.zdoom.org/files/old/zdoom111.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom111s.zip Source]}}&lt;br /&gt;
:Initial release, based on the [[NTDoom]] and [[ATB Doom]]. The version numbering follows from the Doom source code version numbering of 1.10.&lt;br /&gt;
:* Works under both Windows 95 and NT 4.0, although it works best under Win95.&lt;br /&gt;
:* Limited support for the Pause key. It works with some keyboards on some machines.&lt;br /&gt;
:* Supports any resolution compatible with your DirectDraw drivers.&lt;br /&gt;
:* Look up/down à la &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
:* Translucency for selected objects.&lt;br /&gt;
:* Has a [[console]] with most of the functionality of &#039;&#039;Quake&#039;&#039;&#039;s. The only significant missing feature is Tab-completion.&lt;br /&gt;
:* Notarget [[cheat]].&lt;br /&gt;
:* Command to {{CCMD|D|kill}} all [[monster]]s in a level or yourself.&lt;br /&gt;
:* Can play [[MUS]], [[MIDI]], and MOD music.&lt;br /&gt;
:* Selected sounds are played in surround sound.&lt;br /&gt;
:* Doors that need keys to open are highlighted on the [[automap]].&lt;br /&gt;
:* Automap now shows various statistics in addition to the level name.&lt;br /&gt;
:* True keybindings. Bind any key to any command or sequence of commands.&lt;br /&gt;
:* [[Intermission]] screen can now display your stats using absolute values rather than percentages.&lt;br /&gt;
:* A new more general [[demo]] format.&lt;br /&gt;
;{{LE|1.12}} (April 7): {{Plainlink|[http://www.zdoom.org/files/old/zdoom112.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom112s.zip Source]}}&lt;br /&gt;
:* Some visual enhancements were made such as centering the menus and drawing borders around the status bar in higher resolutions.&lt;br /&gt;
:* [[Console command]]s can now be specified on the [[command line parameters|command line]].&lt;br /&gt;
:* Removed some of [[Doom]]&#039;s limits such as VisPlanes, VisSprites, and 2S [[HOM]].&lt;br /&gt;
:* Rewrote some of the inner loops in assembly. (There was some assembly in 1.11, but it never got used.)&lt;br /&gt;
:* New [[CVAR]]s relating to mouse movement. ({{CVAR|C|invertmouse}}, {{CVAR|C|m_pitch}}, {{CVAR|C|m_yaw}}, etc.)&lt;br /&gt;
:* Mouse movement doesn&#039;t get sluggish in high resolutions.&lt;br /&gt;
:* [[Automap]] colors are customizable.&lt;br /&gt;
:* Automap overlay and rotation are available.&lt;br /&gt;
:* Eight [[crosshair]]s.&lt;br /&gt;
:* Shoot up/down.&lt;br /&gt;
:* Alt-Tab and Pause work properly on all machines now.&lt;br /&gt;
:* The {{CCMD|P|+jump}} command now works.&lt;br /&gt;
:* 25% and 75% translucency levels in addition to 50%. The translucency tables now get saved to disk, too, so they only need to be calculated once instead of every time the game is run.&lt;br /&gt;
:* The [[console]] [[font]] is now editable.&lt;br /&gt;
:* Near complete support for [[DeHackEd]] patches. (Only monster infighting and changing a few minor text strings are not supported.)&lt;br /&gt;
:* Sky height and position is now fixed for high resolutions. (It still wraps if you look up, but at least now if you look straight ahead, it never will.)&lt;br /&gt;
:* Weapon sprite is always drawn at the correct location. (It was being drawn too low in some resolutions like 400x300.)&lt;br /&gt;
:* New [[options menu]], which includes a key configuration screen.&lt;br /&gt;
:* [[Stealth monster]]s.&lt;br /&gt;
:* New full-screen [[HUD]].&lt;br /&gt;
:* And a few other things not worth mentioning separately.&lt;br /&gt;
;{{LE|1.13}} (May 26):{{forum|t=4|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom113.zip Build]}}&lt;br /&gt;
:* Fixed some major bugs (that crashed the game) and other lesser bugs that were just annoying.&lt;br /&gt;
:* 3-D collisions for walking under and standing on other things.&lt;br /&gt;
:* The status bar can be scaled to the full width of the screen.&lt;br /&gt;
:* The screen mode can be selected from a menu inside the game.&lt;br /&gt;
:* ZDoom can run in a window on the desktop.&lt;br /&gt;
:* Better [[DeHackEd]] support. Only a few text replacements are not supported. Everything else works (including monster infighting which I haven&#039;t seen in any other port).&lt;br /&gt;
:* New features for level designers (see editing.txt for details):&lt;br /&gt;
::*Specification of next and secret maps on a per-map basis.&lt;br /&gt;
::*Specify sky texture on a per-map basis.&lt;br /&gt;
::*Use any lump in a wad as music for a map.&lt;br /&gt;
::*Give maps a custom name without using a DeHackEd patch.&lt;br /&gt;
::*Maps can be named anything (not just E?M? or MAP??).&lt;br /&gt;
::*Place any messages of any length between any two maps.&lt;br /&gt;
::*&#039;&#039;[[Hexen]]&#039;&#039;-style fog (of any color).&lt;br /&gt;
::*[[Ambient sound]]s &amp;amp;mdash; either point like &#039;&#039;Quake&#039;&#039; or global like &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;Hexen&#039;&#039;.&lt;br /&gt;
::*Automatic use of [[DeHackEd]] patches in PWADs.&lt;br /&gt;
::*No more {{dw|tutti-frutti}} for short textures of certain heights.&lt;br /&gt;
::*zdoom.wcf file for use with [[WadAuthor]].&lt;br /&gt;
:* Rocket jumping. (One very important note about this: You need to be *in the air* when your rocket explodes for rocket jumping to work. This is different from &#039;&#039;Quake&#039;&#039;, and I will probably rewrite it for the next release.)&lt;br /&gt;
:* Dynamic [[palette flash]]es.&lt;br /&gt;
:* Supports stretching skies for [[freelook]].&lt;br /&gt;
:* Larger freelook range.&lt;br /&gt;
:* Added tab-completion to the [[console]].&lt;br /&gt;
:* zdoom.cfg is now the name of the default [[configuration file]] since [[Doom Legacy]] decided to start using config.cfg.&lt;br /&gt;
:* French language support. (Set {{CVAR|C|language}} CVAR to &amp;quot;french&amp;quot;.)&lt;br /&gt;
:* Player obituaries.&lt;br /&gt;
:* Unlimited ammo cheat (use g_unlimitedammo cvar).&lt;br /&gt;
;{{LE|1.14}} (July 22): {{forum|t=5|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom114-src.zip Source]}}&lt;br /&gt;
:Bugs fixed:&lt;br /&gt;
:* The bunny scroller at the end of E3M8 no longer crashes the game.&lt;br /&gt;
:* The IDKFA [[cheat]] gives the proper amount of armor again.&lt;br /&gt;
:* Demo recording works again.&lt;br /&gt;
:* Telefragging works again.&lt;br /&gt;
:* Picking up the {{Class|InvulnerabilitySphere|invulnerability sphere}} displays the correct colors now.&lt;br /&gt;
:* [[DeHackEd]] patches containing text replacements no longer crash the game.&lt;br /&gt;
:* Printing a string containing &amp;quot;%s&amp;quot; to the console and then changing the video mode will no longer crash the game.&lt;br /&gt;
:* Chat mode finally works again.&lt;br /&gt;
:* If MIDAS can&#039;t initialize, you can still play the game but without sound.&lt;br /&gt;
:* {{Class|Pistol}} and {{Class|chaingun}} sounds no longer cut out when there are lots of {{Class|ZombieMan|zombie men}} shooting their pistols at you.&lt;br /&gt;
:* Mouse input should no longer be so jerky under Windows NT.&lt;br /&gt;
:* The [[crosshair]] is finally accurate for aiming.&lt;br /&gt;
:* [[Autoaim]] is properly remembered each time you start ZDoom.&lt;br /&gt;
:* Switches in &#039;&#039;[[the Ultimate Doom]]&#039;&#039; that aren&#039;t also in the shareware Doom properly change their appearance when switched.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Players can choose their own colors and names. ([[Player setup]] menu is included).&lt;br /&gt;
:* 8-player support (untested but should work).&lt;br /&gt;
:* Miscellaneous internal code changes have been borrowed from the [[Boom]] source. (This does *not* mean that ZDoom supports Boom levels yet.)&lt;br /&gt;
:* [[Cheat]]s, chat messages, and gamestate changes are now recorded in demos.&lt;br /&gt;
:* Single-player demos recorded with ZDoom are generally smaller than before.&lt;br /&gt;
:* &#039;&#039;Quake 2&#039;&#039;-style deathmatch flags.&lt;br /&gt;
:* Cheats (optionally) work in multiplayer games.&lt;br /&gt;
:* Mode X is now supported under Win95, so all the machines that couldn&#039;t run ZDoom in 320x200 before should be able to now.&lt;br /&gt;
:* Fewer conditions result in error messages that quit the game. (If you have &#039;&#039;[[Heretic]]&#039;&#039;, try this: Start ZDoom with -file heretic and go to the console and type &amp;quot;{{CCMD|D|map}} E1M1&amp;quot;.)&lt;br /&gt;
:* Keys can repeat in the [[console]].&lt;br /&gt;
:* The console and chat mode now use the localized keymap set with the Keyboard control panel.&lt;br /&gt;
:* Messages at the top of the screen now break along between words instead of in the middle of them.&lt;br /&gt;
:* Added {{c|-config}} [[command line parameter]].&lt;br /&gt;
:* Added {{c|-fastdemo}} command line parameter.&lt;br /&gt;
:* Added new {{CCMD|D|screenshot}} command. (bound to &amp;quot;Print Screen&amp;quot; key by default)&lt;br /&gt;
:* Added &#039;&#039;Quake&#039;&#039;-like {{CCMD|P|+showscores}} command. (bound to &amp;quot;\&amp;quot; key by default)&lt;br /&gt;
:* [[Alias]]es are now saved in the config file.&lt;br /&gt;
:* Added support for multiple pitched sounds like in very old version of Doom. (Use the snd_pitched cvar to turn it on and off.)&lt;br /&gt;
;{{LE|1.14a}} (July 27): {{forum|t=6|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114a.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoomsrc114-114a.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:Bugs fixed are:&lt;br /&gt;
:* No more crashing about freeing a pointer without ZONEID when changing levels.&lt;br /&gt;
:* Skies wider than 256 pixels are drawn correctly.&lt;br /&gt;
:* [[Monster]]s&#039; heights are once again the same as they were in id&#039;s original &#039;&#039;[[Doom]]&#039;&#039;, so certain areas work properly again.&lt;br /&gt;
:* Monsters shouldn&#039;t teleport into each other anymore.&lt;br /&gt;
:* Improved support for international keyboards.&lt;br /&gt;
:* The skill level chosen for a new game is no longer ignored if the new game is started while a demo is playing.&lt;br /&gt;
:Cosmetic changes:&lt;br /&gt;
:* No more &amp;quot;sv_gravity changed to...&amp;quot;, &amp;quot;skill changed to...&amp;quot;, etc. messages in single player games.&lt;br /&gt;
:* Activating the [[player setup]] [[menu]] automatically stops any playing [[demo]]s, since it doesn&#039;t work properly while they play.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} don&#039;t go flying away when exploding anymore.&lt;br /&gt;
:* Added def_patch cvar to automatically load a DeHackEd patch each time the game is started.&lt;br /&gt;
:* ZDoom [[savegame]]s now use the name zdoomsv?.dsg instead of doomsav?.dsg.&lt;br /&gt;
:This version also includes some preliminary [[Boom]] support as I started integrating some of the Boom source code with ZDoom:&lt;br /&gt;
:* Medusa fix.&lt;br /&gt;
:* Openings limit removed.&lt;br /&gt;
:* Removed limit on switches and animations.&lt;br /&gt;
:* Added support for Boom-like [[ANIMATED]] and [[SWITCHES]] lumps in PWADs.&lt;br /&gt;
:* Added support for Boom-style scrollers (including conveyors).&lt;br /&gt;
:* Added partial [[deep water]] support.&lt;br /&gt;
;{{LE|1.16}} (December 22): {{forum|t=13|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom116.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom116-src.zip Source]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* No more limit on size of [[savegame]]s or [[demo]]s.&lt;br /&gt;
:* Screen resolutions above 320x200 are now the proper brightness (they were too bright before.)&lt;br /&gt;
:* Improved the brightness of the [[console]] [[font]].&lt;br /&gt;
:* {{Class|BulletPuff|Bullet puffs}} can show up on the floor and ceiling and not just walls.&lt;br /&gt;
:* Missile weapons can trigger gun activation lines.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} now bounce around as much as they did in original &#039;&#039;[[Doom]]&#039;&#039;. (They were too &amp;quot;inert&amp;quot; in 1.14.)&lt;br /&gt;
:* If a demo is being recorded, quitting the game normally will save the demo to disk. (Previously, you had to use the stop command to do this.)&lt;br /&gt;
:New features for players:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* Mouse wheel support and {{CCMD|P|weapnext}}/{{CCMD|P|weapprev}} commands.&lt;br /&gt;
:* Doublebindings.&lt;br /&gt;
:* Better analog joystick support.&lt;br /&gt;
:* 180 degree turn command for keyboarders.&lt;br /&gt;
:* Damage done by a rocket to its shooter is {{CVAR|C|splashfator|configurable}} and defaults to the original Doom behavior.&lt;br /&gt;
:* User-configurable gender. (Even though I don&#039;t have any new player sounds, at least the [[obituaries]] are gender-aware. :-)&lt;br /&gt;
:* [[Teamplay]] mode.&lt;br /&gt;
:* {{CVAR|C|sv_nobfgaim|New CVAR}} to disable manual aiming of the BFG to prevent someone from shooting it at the floor and quickly triggering tracer damage before.&lt;br /&gt;
:* Maps no longer need to have as many deathmatch starts as there are players in a deathmatch game.&lt;br /&gt;
:* Support for [[Doom Legacy]] [[skin]]s.&lt;br /&gt;
:* Rewrote the [[MIDI]]/[[MUS]] code so that it has a working volume control.&lt;br /&gt;
:* Many more [[console command]]s and [[CVARs]].&lt;br /&gt;
:New features for editors:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* [[Obituaries]] are configurable with a .bex patch.&lt;br /&gt;
:* [[Monster path]]s&lt;br /&gt;
:* [[Colored lighting]]&lt;br /&gt;
:* [[Fog]] can be applied to only part of a level instead of all of it.&lt;br /&gt;
:* Per-sector [[gravity]] settings.&lt;br /&gt;
:* Support for up to 256 [[ambient sound]]s (as opposed to the limit of 64 in earlier versions).&lt;br /&gt;
:* [[Sector damage]] adjustable from between 0-255 points of damage.&lt;br /&gt;
:* Changeable [[camera]] views.&lt;br /&gt;
:* The following editing features that were introduced in &#039;&#039;[[Hexen]]&#039;&#039; are also available in ZDoom:&lt;br /&gt;
::*Most line specials take arguments that modify their behavior.&lt;br /&gt;
::*[[ACS]] scripting.&lt;br /&gt;
::*[[Hub]]s.&lt;br /&gt;
::*[[Earthquake]]s.&lt;br /&gt;
::*[[Dormant]] monsters.&lt;br /&gt;
::*Trigger events to happen on monster deaths.&lt;br /&gt;
::*[[Floor_Waggle|&amp;quot;Waggling&amp;quot; floors]].&lt;br /&gt;
::*[[Pillar_Build|Pillar builders]].&lt;br /&gt;
::*Push activation lines (walking into a wall can trigger an event).&lt;br /&gt;
::*[[Thing_Spawn|Thing spawning]] (e.g. for traps/gifts).&lt;br /&gt;
&lt;br /&gt;
==1999==&lt;br /&gt;
January 6 of this year saw the first release of the [[Raven Software]] source code.&lt;br /&gt;
;{{LE|1.17}} (February 17): {{forum|t=15|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/zdos117c.zip DOS build]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* [[Multiplayer]] games with [[monster]]s do not crash.&lt;br /&gt;
:* Player corpses do not levitate and then fall down when a player respawns in multiplayer games.&lt;br /&gt;
:* Using {{CCMD|P|togglemap}} outside of a game will not crash.&lt;br /&gt;
:* Monsters stop attacking their target once it is dead.&lt;br /&gt;
:* EV_StopPlat() does not get stuck in an infinite loop if there are [[moving platform]]s.&lt;br /&gt;
:* Partially invisible players are drawn the proper colors (instead of green) if {{CVAR|R|r_drawfuzz}} is 0.&lt;br /&gt;
:* If you are invisible, so are your muzzle flashes.&lt;br /&gt;
:* Trying to execute a non-existent [[ACS|script]] will not crash.&lt;br /&gt;
:* Using a [[ChangeCamera]] special from an open script will not crash.&lt;br /&gt;
:* The [[FloorAndCeiling_RaiseByValue]] and [[FloorAndCeiling_LowerByValue]] now behave like &#039;&#039;[[Hexen]]&#039;&#039;&#039;s.&lt;br /&gt;
:* Using {{c|{{param|-loadgame}}}} from the [[command line]] works.&lt;br /&gt;
:* Fixed a memory leak during generation of the translucency tables.&lt;br /&gt;
:* In high resolutions, weapon sprites meet the bottom of the screen.&lt;br /&gt;
:* Sounds will not cut out mysteriously when there is no reason for them to do so.&lt;br /&gt;
:* Sounds will also not be stopped immediately when a thing is removed, so explosion sounds will play to their full length.&lt;br /&gt;
:* Things can make more than one sound at once.&lt;br /&gt;
:* The [[deathmatch]] [[scoreboard]] is aligned properly at high resolutions.&lt;br /&gt;
:* {{CCMD|P|Spynext}} and {{CCMD|P|spyprev}} work properly instead of leaving the [[status bar]] &amp;quot;lagging behind&amp;quot; the player being viewed.&lt;br /&gt;
:* The {{Class|Infrared|light-amp}} does not disable colored lighting.&lt;br /&gt;
:* The [[sky]] gets {{dw|invulnerability colormap bug|inverted}} when using the invulnerability powerup.&lt;br /&gt;
:* Implemented better z-checking code (from &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039;).&lt;br /&gt;
:* {{Class|PainElemental|Pain elementals}} will spawn one {{Class|LostSoul|lost soul}} at a time instead of two inside of each other.&lt;br /&gt;
:* Bex patches that use thing mnemonics really do work now, and unknown bit messages aren&#039;t generated for regular [[DeHackEd]]  patches.&lt;br /&gt;
:* Linedef type 134 for regular &#039;&#039;[[Doom]]&#039;&#039;/[[Boom]] maps requires a red key for activation (it was being improperly translated to require a blue one).&lt;br /&gt;
:* Monsters can activate secret lines when they cross them. (See &#039;&#039;[[Doom II]]&#039;&#039; MAP08).&lt;br /&gt;
:* The player extreme death sound is used.&lt;br /&gt;
:* When a player leaves a network game, their body is removed instead of being left empty.&lt;br /&gt;
:* 0-length sounds are treated as empty sounds instead of sounds 4 gigs long.&lt;br /&gt;
:* [[Skin]]s that replaced player sounds with sounds in the [[IWAD]] work.&lt;br /&gt;
:* Muzzle flashes do not light up foggy areas, and fullbright sprites stay shrouded in fog.&lt;br /&gt;
:* Alphanumeric keys no longer automatically repeat on the console.&lt;br /&gt;
:* Wads such as gothicdm2 that used new flats in addition to the ones in the IWAD with the regular doom.exe work.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Significant speed improvements on modern processors.&lt;br /&gt;
:* [[Armor]] and [[key]]s are shown on the fullscreen HUD.&lt;br /&gt;
:* Colored text.&lt;br /&gt;
:* A {{CCMD|P|playdemo}} console command.&lt;br /&gt;
:* A [[chasecam]].&lt;br /&gt;
:* A [[particle]] system.&lt;br /&gt;
:* An optional [[railgun]] to show off the particle system. (Start the game with {{c|{{param|-deh}} [[railgun.bex]]}} if you want to use it.)&lt;br /&gt;
:New features interesting for wad authors:&lt;br /&gt;
:* [[Polyobject]]s.&lt;br /&gt;
:* [[Sound sequence]]s.&lt;br /&gt;
:* WAVE files can be used as sound lumps without converting them to DMX&#039;s format first.&lt;br /&gt;
:* A sky can be specified to not be stretched even if it is shorter than 200 pixels.&lt;br /&gt;
:* {{Class|Spark}}s.&lt;br /&gt;
:* {{Class|ParticleFountain|Particle fountain}}s.&lt;br /&gt;
:* Parallax skies.&lt;br /&gt;
:* Some new [[DeHackEd]] thing flags from &#039;&#039;[[Hexen]]&#039;&#039; (bobbing, reflective, etc.).&lt;br /&gt;
;{{LE|1.17a}} (February 21): {{forum|t=16|Release thread}}&lt;br /&gt;
:Mostly minor bug fixes, released because [[Herian 2]] needed some of those fixes. There are a few new features, however:&lt;br /&gt;
:* If you have a skins/ directory in the same directory as zdoom.exe, every wad file in it will be automatically loaded when the game starts. This way, you don&#039;t have to load your [[skin]]s by hand to use them.&lt;br /&gt;
:* New formatting options for text [[print]]ed using [[ACS]].&lt;br /&gt;
:* A [[A_MonsterRail|code pointer]] to make monsters fire a railgun.&lt;br /&gt;
;{{LE|1.17b}} (March 17): {{forum|t=21|Release thread}}&lt;br /&gt;
:Some minor bug fixes over 1.17 and 1.17a. It also loads faster because the sprite dimensions are not cached until they are actually needed. There are also some other internal changes in preparation for supporting &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, but those don&#039;t affect the user yet.&lt;br /&gt;
;{{LE|1.17b1}} (March 19): {{forum|t=22|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|1.17c}} (May 5): {{forum|t=28|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom117c.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom117c-src.zip Source]}}&lt;br /&gt;
:* Fixed game saving crashes on maps with [[wind]]/[[current]] effects.&lt;br /&gt;
:* In [[Boom]] [[deep water]] sectors, the underwater light and fog colors can now be set independently of the area above water.&lt;br /&gt;
:* Added nojump, allowjump, nofreelook, and allowfreelook keywords for use in [[MAPINFO]] lumps to control [[jumping]] and [[free look]].&lt;br /&gt;
:* The random number seed now changes each time you run the program.&lt;br /&gt;
;{{LE|1.18 test 1}} (June 30): {{forum|t=33|Release thread}}&lt;br /&gt;
:* Tweaked the optimized renderer for fifth-generation processors.&lt;br /&gt;
:* Added the following specials:&lt;br /&gt;
::*[[Line_AlignFloor]]&lt;br /&gt;
::*[[Line_AlignCeiling]]&lt;br /&gt;
::*[[Sector_SetRotation]]&lt;br /&gt;
::*[[Sector_SetCeilingPanning]]&lt;br /&gt;
::*[[Sector_SetFloorPanning]]&lt;br /&gt;
::*[[Sector_SetCeilingScale]]&lt;br /&gt;
::*[[Sector_SetFloorScale]]&lt;br /&gt;
:* Added an additional parameter to the [[Transfer_Heights]] special.&lt;br /&gt;
:* Switched to the [http://sourceforge.net/projects/openptc/ OpenPTC] library for display.&lt;br /&gt;
:* Converted lots of code to an object-oriented C++ architecture.&lt;br /&gt;
;{{LE|1.18 test 2}} (July 1): {{forum|t=36|Release thread}}&lt;br /&gt;
:* Fixed vertical aim clipping ({{Class|BFG9000|BFG}} works again).&lt;br /&gt;
:* Fixed [[monster]] wandering.&lt;br /&gt;
:* Maps with mapthings of type 0 no longer generate warning messages.&lt;br /&gt;
:* [[Crusher]]s that do no damage no longer act as if they inflict pain to actors.&lt;br /&gt;
:* The [[alias]] command lists aliases again.&lt;br /&gt;
:* Aliases are saved to the [[config file]] again.&lt;br /&gt;
;{{LE|1.18 test 3}} (July 2): {{forum|t=37|Release thread}}&lt;br /&gt;
:* Removed unnecessary display mode switches.&lt;br /&gt;
:* Created a DCanvas class to encapsulate most 2D rendering.&lt;br /&gt;
;{{LE|1.18 test 4}} (July 3): {{forum|t=39|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;Bad DCanvas::CopyRect&amp;quot; problem introduced in test3.&lt;br /&gt;
:* Fixed [[sound sequence]]s that should not be cut off when stopped (such as the standard doors).&lt;br /&gt;
;{{LE|1.18 test 5}} (July 6): {{forum|t=40|Release thread}}&lt;br /&gt;
:* Fixed a potential infinite loop that was introduced in [[#1.18 test 1|118test1]].&lt;br /&gt;
:* Delayed the initial execution of [[CVAR]] callbacks.&lt;br /&gt;
:* Added &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{wp|Xiaolin Wu&#039;s line algorithm|anti-aliased Wu line drawer}} to the [[automap]].&lt;br /&gt;
;{{LE|1.18 test 6}} (July 10): {{forum|t=41|Release thread}}&lt;br /&gt;
:* Rewrote the {{wp|Xiaolin Wu&#039;s line algorithm|Wu line drawer}} to look better (especially in overlay mode).&lt;br /&gt;
:* [[Sky stretching|Stretched skies]] now get stretched horizontally as well as vertically.&lt;br /&gt;
:* Did an initial integration of the [[Cajun Bot]] 0.71 code.&lt;br /&gt;
;{{LE|1.18 test 7}} (July 12):&lt;br /&gt;
:* Fixed handling of maps with scrolling walls.&lt;br /&gt;
:* Single player works again. In test 6, all games were considered either [[coop]] or [[deathmatch]].&lt;br /&gt;
:* Disabled the [[bot]] thinking code in single player games, so you don&#039;t suffer a performance hit when not using bots.&lt;br /&gt;
:* Added some performance counters accessible through the {{CCMD|D|stat}} command.&lt;br /&gt;
;{{LE|1.18 test 8}} (July 20): {{forum|t=43|Release thread}}&lt;br /&gt;
:* Fixed a crash problem with the &amp;quot;burn&amp;quot; [[screen wipe]].&lt;br /&gt;
:* Fixed a crash problem with playing non-assigned [[sound sequence]]s.&lt;br /&gt;
:* Fixed a crash problem related to trying to shutdown the music subsystem twice.&lt;br /&gt;
:* If you try to add more coop [[bot]]s than there are coop starts, the extra bot leaves quietly instead of ending the game.&lt;br /&gt;
:* {{CVAR|C|sv_weapondrop|Weapondrop}} is now a &amp;quot;server&amp;quot; CVAR, which it should have been in the first place.&lt;br /&gt;
:* Changed the nodetable file format to be more compact.&lt;br /&gt;
:* Bots can now be recorded in demos.&lt;br /&gt;
:* Bots work in [[multiplayer]] games. Still buggy. Spawning bots can cause consistency failures, and they can start spinning wildly.&lt;br /&gt;
;{{LE|1.18 test 9}} (August 9): {{forum|t=44|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;wild&amp;quot; [[bot]] spinning problem.&lt;br /&gt;
:* Commands like {{CCMD|D|changemap}} that could make network games go out of sync should work properly now. The reason they would do that is closely related to the reason that the bots would start spinning.&lt;br /&gt;
:* Finished the serializer. Now savegames work. [[Hub]]s don&#039;t, because I haven&#039;t written the player travelling code yet.&lt;br /&gt;
:* Various other code cleanup.&lt;br /&gt;
;{{LE|1.18 test 10}} (August 14):&lt;br /&gt;
:* Reimplemented [[hub]] travel.&lt;br /&gt;
:* Optimized R_MapPlane slightly.&lt;br /&gt;
:* Added {{CCMD|D|fov}} command.&lt;br /&gt;
:* Added vertical sub-pixel accuracy to the renderer.&lt;br /&gt;
:* Added searches for an [[IWAD]] in the current directory, $DOOMWADDIR, and $HOME.&lt;br /&gt;
;{{LE|1.18}} (September 5): {{forum|t=46|Release thread}}&lt;br /&gt;
:* Replaced the older [[Bots|Cajun]] 0.71 with Cajun 0.97.&lt;br /&gt;
:* Fixed handling of [[status bar]] [[mugshot|faces]] with [[skin]]s that provide them.&lt;br /&gt;
:* Added [[swimmable water]].&lt;br /&gt;
:* Messages printed to the middle of the screen also print to the [[console]].&lt;br /&gt;
:* Skill and other server [[CVARs]] get saved in [[savegame]]s again.&lt;br /&gt;
:* Added liquid [[texture warping]].&lt;br /&gt;
:* Bad [[MAPINFO]] lumps generate error messages instead of hanging.&lt;br /&gt;
:* Realized that it&#039;s impossible to guarantee that all object pointers will be valid without some effort, so FArchive saves DObject objects as NULL objects now instead of aborting with an error.&lt;br /&gt;
:* Added the [[built-in ACS functions]] [[LocalAmbientSound]], [[ActivatorSound]], and [[SetLineMonsterBlocking]].&lt;br /&gt;
:* Added a {{Class|SecretTrigger|thing}} that does nothing but count toward the number of [[secret]]s.&lt;br /&gt;
:* Added a {{CCMD|D|fly}} mode.&lt;br /&gt;
:* Finally implemented the {{CCMD|P|+moveup}} and {{CCMD|P|+movedown}} commands.&lt;br /&gt;
;{{LE|1.18a}} (September 12): {{forum|t=47|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed [[liquid warping]] temporarily stopping when changing levels.&lt;br /&gt;
:* {{CCMD|P|+mlook|+/-mlook}} commands do not generate unknown command messages.&lt;br /&gt;
:* Fixed support for maps with &amp;gt;10 deathmatch starts. Thanks to Roman Hatsiev.&lt;br /&gt;
:* Fixed support for the special &amp;quot;maps&amp;quot; EndGame? in MAPINFO lumps.&lt;br /&gt;
:* {{Class|TeleportDest2|Teleport destination (no gravity)}} now works as intended.&lt;br /&gt;
:* Hopefully fixed [[savegame]] problems.&lt;br /&gt;
:* [[Bots]] are restored from savegames.&lt;br /&gt;
:* Fixed keyboard turning speed when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* Network commands get executed only once when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* In sectors with [[damaging floor]]s and swimmable [[deep water]], the damage will also be applied while the player is swimming and not just when the player is on the ground.&lt;br /&gt;
;{{LE|1.18b}} (September 15): {{forum|t=48|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom118b.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom118b-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed crash when saving games with more than 1024 objects.&lt;br /&gt;
:* Fixed crash when loading a game without starting a new one first.&lt;br /&gt;
:* Reduced the size and frequency of pregame network packets, under the assumption that problems people were having using 1.18 on the Internet are a result of limited modem bandwidth.&lt;br /&gt;
;{{LE|1.19}} (November 24): {{forum|t=53|Release thread}} | {{forum|t=54|Source/Linux build release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom-1.19.tar.gz Source]}}&lt;br /&gt;
:First official Linux build.&lt;br /&gt;
:* [[DeHackEd]] patches that set an actor&#039;s {{Property|DeathSound|death sound}} to 0 without removing the [[A_Scream]] call no longer crash.&lt;br /&gt;
:* Fixed sync problems when playing with {{Class|BulletPuff|bullet puffs}} as [[particle]]s vs as sprites.&lt;br /&gt;
:* Fixed friction when walking on the bottom of swimmable water.&lt;br /&gt;
:* Added Jeffrey Cuenco&#039;s fixes to get {{c|{{param|-host}}}} and {{c|{{param|-join}}}} [[command line parameters]] to work properly.&lt;br /&gt;
:* Fixed [[Boom]] [[Generic_Door|generalized locked doors]] so that the open/close type will actually close.&lt;br /&gt;
:* Added pointer tracking and cleanup. This should fix the occasional crashes when saving games and various other anomalies.&lt;br /&gt;
;{{LE|1.20}} (November 25): {{forum|t=56|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed saving, reloading, and then resaving [[savegame|games]] when travelling between levels in a [[hub]].&lt;br /&gt;
:* Fixed saving of [[ACS]] scripts scheduled to occur on a future level.&lt;br /&gt;
;{{LE|1.21}} (November 26): {{forum|t=57|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom121.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom121-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed problems with thinkers removing themselves and causing other thinkers to not get a chance to think.&lt;br /&gt;
:* Added {{CVAR|R|hud_scale}} CVAR&lt;br /&gt;
;{{LE|1.22}} (November 12): {{forum|t=60|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom122.zip Windows build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22-i386.tar.gz Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom122-src.zip Windows source] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22.tar.gz Linux source]}}&lt;br /&gt;
:* [[Scroll_Texture_Both]] and [[TranslucentLine]] specials can now be used from [[ACS]].&lt;br /&gt;
:* Fixed compiler-dependent [[CVAR]] ordering during [[netgame]] arbitration.&lt;br /&gt;
:* Fixed certain [[polyobject]] movement combinations that would not stop even though they were supposed to.&lt;br /&gt;
:* Did some cleanup for Alpha processors.&lt;br /&gt;
&lt;br /&gt;
==2000==&lt;br /&gt;
June 20 of this year saw the public release of the [[Build]] source code.&lt;br /&gt;
;{{LE|1.23 Beta}} (May 10): {{forum|t=64|Release thread}}&lt;br /&gt;
:*Partial &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; support.&lt;br /&gt;
:*Windows build uses [[FMOD Ex|FMOD]] instead of [http://www.s2.org/midas/ MIDAS].&lt;br /&gt;
&lt;br /&gt;
==2001==&lt;br /&gt;
;{{LE|1.23 Beta 19}} (March 9): {{forum|t=74|Release thread}}&lt;br /&gt;
:Added new [[camera]] types.&lt;br /&gt;
:Added [[LANGUAGE|string localization]].&lt;br /&gt;
:Added [[decal]]s.&lt;br /&gt;
:Added [[slope]]s.&lt;br /&gt;
:Added [[skybox]]es.&lt;br /&gt;
;{{LE|1.23 Beta 20}} (March 11): {{forum|t=75|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 23}} (April 9): {{forum|t=76|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 24}} (April 12): {{forum|t=77|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 25}} (August 15): {{forum|t=81|Release thread}}&lt;br /&gt;
:Linux build now uses SDL&lt;br /&gt;
;{{LE|1.23 Beta 28}} (September 17): {{forum|t=83|Release thread}}&lt;br /&gt;
:Added a few [[decal]]-related [[CVARs]].&lt;br /&gt;
;{{LE|1.23 Beta 28a}} (December 13): {{forum|t=88|Release thread}}&lt;br /&gt;
&lt;br /&gt;
==2002==&lt;br /&gt;
;{{LE|1.23 Beta 33}} (February 5): {{Forum|t=90|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-linux.bz2 Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-src.tar.bz2 Source]}}&lt;br /&gt;
:Many fixes and rendering optimization.&lt;br /&gt;
:*Increased &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039; support&lt;br /&gt;
:*Improved [[decal]]s.&lt;br /&gt;
:*Added support for the [[Bloodbath announcer]]&lt;br /&gt;
:*Added [[underwater]] [[REVERBS|reverb]] effect.&lt;br /&gt;
:*Added [[Line_Horizon]] effect.&lt;br /&gt;
:*Added {{Class|ScriptedMarine|scripted marines}} and several [[ACS]] enhancements.&lt;br /&gt;
:*Added support for [[DeePsea]]&#039;s [[patch|tall patches]].&lt;br /&gt;
:*Added [[slope]] things.&lt;br /&gt;
:*Changed [[license]] for original ZDoom source code to a &amp;quot;BSD-ish one&amp;quot;.&lt;br /&gt;
;{{LE|2.0 Beta 13}} (August 27):&lt;br /&gt;
:*Further increased &#039;&#039;Heretic&#039;&#039;/&#039;&#039;Hexen&#039;&#039; support.&lt;br /&gt;
:*Added [[PNG]] support for screenshots. [[Savegame]]s are actually PNG files now.&lt;br /&gt;
:*Added [[ZDBSP|internal nodebuilder]], made it [[polyobject]]-aware.&lt;br /&gt;
:*Added SNES SPC music support.&lt;br /&gt;
:*Added a loader for [[Build]] maps.&lt;br /&gt;
:*Added support for double- and quadruple-resolution flats (128x128 and 256x256).&lt;br /&gt;
:*Added ACS [[libraries]].&lt;br /&gt;
:*Added support for up to 8 mouse buttons.&lt;br /&gt;
:*Added the very first version of [[DECORATE]].&lt;br /&gt;
:*Removed [[MBF]]&#039;s torque simulation because of the problems it caused.&lt;br /&gt;
;{{LE|2.0.21}} (December 10)&lt;br /&gt;
;{{LE|2.0.22}} (December 11)&lt;br /&gt;
;{{LE|2.0.23}}, {{LE|2.0.24}} (December 12)&lt;br /&gt;
;{{LE|2.0.25}} (December 13)&lt;br /&gt;
;{{LE|2.0.26}}, {{LE|2.0.27}} (December 19)&lt;br /&gt;
;{{LE|2.0.28}} (December 24)&lt;br /&gt;
;{{LE|2.0.29}} (December 28)&lt;br /&gt;
&lt;br /&gt;
==2003==&lt;br /&gt;
;{{LE|2.0.30}} (January 1)&lt;br /&gt;
;{{LE|2.0.32}}, {{LE|2.0.33}} (January 2)&lt;br /&gt;
;{{LE|2.0.34}} (January 3)&lt;br /&gt;
;{{LE|2.0.35}} (January 8)&lt;br /&gt;
;{{LE|2.0.36}} (January 10)&lt;br /&gt;
;{{LE|2.0.37}} (January 23)&lt;br /&gt;
;{{LE|2.0.38}} (January 24)&lt;br /&gt;
;{{LE|2.0.39}} (February 2)&lt;br /&gt;
;{{LE|2.0.40}} (February 8)&lt;br /&gt;
;{{LE|2.0.41}} (February 10)&lt;br /&gt;
;{{LE|2.0.42}} (February 12)&lt;br /&gt;
;{{LE|2.0.43}} (April 8)&lt;br /&gt;
;{{LE|2.0.44}} (April 9)&lt;br /&gt;
;{{LE|2.0.45}} (April 9)&lt;br /&gt;
;{{LE|2.0.46}} (April 14)&lt;br /&gt;
;{{LE|2.0.47}} (April 26): {{Forum|t=101|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/47.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47i}} (June 9): {{plainlink|[http://www.zdoom.org/files/lars/47i.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47j}} (July 7):&lt;br /&gt;
;{{LE|2.0.47l}} (July 21):&lt;br /&gt;
;{{LE|2.0.47o}} (August 5):&lt;br /&gt;
;{{LE|2.0.47p}} (August 6):&lt;br /&gt;
;{{LE|2.0.48}} (October 23):&lt;br /&gt;
:*Interchangeability between [[flat]]s and [[texture]]s.&lt;br /&gt;
;{{LE|2.0.49}}, {{LE|2.0.50}} (October 26)&lt;br /&gt;
;{{LE|2.0.51}} (October 30)&lt;br /&gt;
;{{LE|2.0.52}} (October 31)&lt;br /&gt;
;{{LE|2.0.53}} (November 16)&lt;br /&gt;
;{{LE|2.0.54}}, {{LE|2.0.55}} (November 23)&lt;br /&gt;
;{{LE|2.0.56}} (November 25)&lt;br /&gt;
;{{LE|2.0.57}} (November 26)&lt;br /&gt;
;{{LE|2.0.58}}, {{LE|2.0.59}} (December 7)&lt;br /&gt;
;{{LE|2.0.60}} (December 8)&lt;br /&gt;
&lt;br /&gt;
==2004==&lt;br /&gt;
;{{LE|2.0.61}} (January 22) &lt;br /&gt;
;{{LE|2.0.62}} (February 7):&lt;br /&gt;
:*Added modern [[DECORATE]] support.&lt;br /&gt;
;{{LE|2.0.63}} (February 10): {{plainlink|[http://www.zdoom.org/files/lars/63.cab Build] {{!}} [http://www.zdoom.org/files/lars/63src.cab Source]}}&lt;br /&gt;
:*Added custom monsters to DECORATE.&lt;br /&gt;
;{{LE|2.0.64}} (June 8)&lt;br /&gt;
;{{LE|2.0.90}} (October 21):&lt;br /&gt;
:*Added &#039;&#039;[[Strife]]&#039;&#039; support and new inventory system&lt;br /&gt;
;{{LE|2.0.91}} (October 22)&lt;br /&gt;
;{{LE|2.0.92}} (October 31)&lt;br /&gt;
;{{LE|2.0.93}} (November 3)&lt;br /&gt;
;{{LE|2.0.94}} (November 19)&lt;br /&gt;
;{{LE|2.0.95}} (December 24): {{plainlink|[http://www.zdoom.org/files/lars/95changes.html Changelog]}}&lt;br /&gt;
:*Added [[camera]] textures to [[ANIMDEFS]] and [[SetCameraToTexture]]&lt;br /&gt;
:*Improved [[console]] tab completion, added Ctrl-X shortcut to clear the console&#039;s command line&lt;br /&gt;
:*Several &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039; fixes&lt;br /&gt;
:*Merged in Jim&#039;s [[ACS]] character array [[print]]ing support. &lt;br /&gt;
:*Added the [[polymost]] clipper.&lt;br /&gt;
:*Added support for 16:10 and 5:4 aspect ratios and letterboxing.&lt;br /&gt;
:*Added [[scope|static local variables]], [[Log]], [[SetAmmoCapacity]] and [[GetAmmoCapacity]] to [[ACS]].&lt;br /&gt;
;{{LE|2.0.96}} (December 25): {{plainlink|[http://www.zdoom.org/files/lars/96.cab Build] {{!}} [http://www.zdoom.org/files/lars/96src.cab Source] {{!}} [http://www.zdoom.org/files/lars/96changes.html Changelog]}}&lt;br /&gt;
:*Added [[TITLEMAP]]&lt;br /&gt;
&lt;br /&gt;
==2005==&lt;br /&gt;
;{{LE|2.0.97}} (September 28): {{forum|t=8060|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/97.cab Build] {{!}} [http://www.zdoom.org/files/lars/97src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*The [[LANGUAGE]] lump is now text-based.&lt;br /&gt;
:*Added IMF [[music format]] support.&lt;br /&gt;
:*Ported [[SetActorAngle]] and [[SetLineBlocking|BLOCK_RAILING]] from the [[ZDoom Community Build]].&lt;br /&gt;
:*Added [[Polymost]] visualization code from [[Build]].&lt;br /&gt;
:*Gave {{Flag|DONTMORPH}} flag to {{Class|Cyberdemon}}, {{Class|SpiderMastermind}}, {{Class|AlienSpectre1}}, {{Class|Crusader}}, {{Class|Programmer}}, and {{Class|Inquisitor}}.&lt;br /&gt;
:*Made {{Class|Puffy}} and projectiles spawned by [[A_LastZap]] deal no damage.&lt;br /&gt;
:*[[Teleport_NewMap]] can now be used within a [[TITLEMAP]] in order to make it possible to use different maps as the title map.&lt;br /&gt;
:*Merged in Graf Zahl&#039;s [[Caverns of Darkness]] patch.&lt;br /&gt;
:*Added [[Polymost]] wireframe mode.&lt;br /&gt;
:*Added {{CCMD|O|writeopl}} console command.&lt;br /&gt;
:*[[UsePuzzleItem]] can now be a [[thing]]&#039;s [[special]].&lt;br /&gt;
:*Missiles with negative damage now give you health.&lt;br /&gt;
;{{LE|2.0.98}} (November 3): {{forum|t=8460|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/98.cab Build] {{!}} [http://www.zdoom.org/files/lars/98src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
&lt;br /&gt;
==2006==&lt;br /&gt;
February 16 of this year saw the first commit to the [[SVN]] repository.&lt;br /&gt;
;{{LE|2.1.0}}{{rev|204}} (June 21): {{forum|t=10550|Release thread}} | {{plainlink|[http://zdoom.org/files/old/zdoom-2.1.0.zip Build] {{!}} [http://zdoom.org/files/old/zdoom-2.1.0-src.7z Source]}}&lt;br /&gt;
:*Added several things from [[ZDoom Community Build]] (unofficial 2.0.96x) and [[GZDoom]], including custom [[DECORATE]] [[weapon]]s.&lt;br /&gt;
;{{LE|2.1.1}}{{rev|226}} (June 25): {{forum|t=10630|Release thread}} | {{versionlinks|2|1|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|2.1.2}}{{rev|257}} (July 17): {{forum|t=10895|Release thread}} | {{versionlinks|2|1|2}}&lt;br /&gt;
:*Added custom [[player class]]es.&lt;br /&gt;
:*Added &amp;quot;replaces&amp;quot; keyword for [[DECORATE]].&lt;br /&gt;
:*[[IWAD selection box]] now remembers the last choice.&lt;br /&gt;
:*Added [[A_RadiusThrust]] to DECORATE.&lt;br /&gt;
:*Added [[ThingCountName]] and  [[SpawnSpotFacing]] to [[ACS]].&lt;br /&gt;
:*Changed additive scroller options into a [[compatibility options|compatibility flag]].&lt;br /&gt;
;{{LE|2.1.3}}{{rev|265}} (July 18): {{forum|t=10930|Release thread}} | {{versionlinks|2|1|3}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Sounds can be specified by full path now in [[SNDINFO]] and [[S_SKIN]].&lt;br /&gt;
:* [[DECORATE]] replacement is more universal.&lt;br /&gt;
:* Added NecroMage&#039;s submission for bitwise/shift assignment operators for [[ACS]]. (Requires [[ACC]] 1.42+.)&lt;br /&gt;
:* Changed PlayAttacking2 to always use the melee state instead of different implementations per player and hard coding it to MissileState+1. Also changed PlayAttacking for the {{Class|HereticPlayer}} to use the same animation as PlayAttacking2. Now the special handling for &#039;&#039;[[Heretic]]&#039;&#039; in the FireWeapon functions can be removed.&lt;br /&gt;
;{{LE|2.1.4}}{{rev|273}} (July 29): {{forum|t=11063|Release thread}} | {{versionlinks|2|1|4}}&lt;br /&gt;
:*Added partial emulation of [[Boom]]&#039;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.&lt;br /&gt;
:*Added a {{CVAR|C|queryiwad_key}} cvar to control which key can force the [[IWAD selection box]] to appear. It can be either &amp;quot;shift&amp;quot; or &amp;quot;control&amp;quot;. Any other value will disable its functionality.&lt;br /&gt;
;{{LE|2.1.5}}{{rev|321}} (September 2): {{forum|t=11466|Release thread}} | {{versionlinks|2|1|5}}&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInfo]], [[ChangeLevel]], [[SectorDamage]], [[ReplaceTextures]]&lt;br /&gt;
:*New [[DECORATE]] functions: [[A_PlaySoundEx]], [[A_StopSoundEx]]&lt;br /&gt;
:*The {{CVAR|C|vid_nowidescreen}} cvar can be used to disable widescreen aspect ratio correction.&lt;br /&gt;
:*[[A_SpawnDebris]] and [[A_SpawnItem]] can optionally transfer the caller&#039;s color translation to the newly spawned item.&lt;br /&gt;
:*New morphing artifacts can be created by subclassing the {{Class|MorphProjectile}} and {{Class|MorphedMonster}} classes.&lt;br /&gt;
:*[[A_FireCustomMissile]] has a new parameter: Previously it always aimed straight ahead and altered the projectile&#039;s angle according to the resulting direction. If the 6th parameter is 1 now it will aim at the specified angle directly.&lt;br /&gt;
:*Users can now define their own [[TEXTCOLO|text colors]], and there are several new standard ones.&lt;br /&gt;
:*The fourth parameter of [[Polyobj_StartLine]] and the fifth parameter of [[Polyobj_ExplicitLine]] now set the line&#039;s ID.&lt;br /&gt;
:*DECORATE explosion parameters are no longer considered deprecated.&lt;br /&gt;
:*Calling [[Radius_Quake]], [[Thing_Activate]], or [[Thing_Remove]] with a [[TID]] of 0 now operates the activator.&lt;br /&gt;
:*Strife&#039;s {{Class|PhosphorousFire}} now does completely thrustless damage.&lt;br /&gt;
:*An actor&#039;s damage in DECORATE can now be specified as an expression that is evaluated each time it needs to do damage. To do this, enclose it within parentheses, and the normal Doom damage calculation will be bypassed.&lt;br /&gt;
:*Passing a negative script number to the {{CCMD|D|puke}} [[console command]] now runs the script with [[ACS_ExecuteAlways]] instead of [[ACS_Execute]].&lt;br /&gt;
:*[[Polyobject]]s defined with [[Polyobj_ExplicitLine]] are no longer limited to 64 segs.&lt;br /&gt;
:*Starting a new game or reloading an old one no longer resets the [[chasecam]].&lt;br /&gt;
:*The [[automap]] background is now a regular texture.&lt;br /&gt;
:*Added support for many [[image format]]s for use as textures: [[PNG]], JPEG, PCX, TGA, DDS.&lt;br /&gt;
:*Numerous bugfixes.&lt;br /&gt;
;{{LE|2.1.6}}{{rev|346}} (October 2): {{forum|t=11758|Release thread}} | {{versionlinks|2|1|6}}&lt;br /&gt;
:*Scaled 2D images are supported.&lt;br /&gt;
:*Dehacked max health usage defaults to consistency with other ([[Boom]]) ports.&lt;br /&gt;
:*A &#039;&#039;font&#039;&#039; parameter was added to [[A_Print]].&lt;br /&gt;
:*Quoted strings in [[DECORATE]] can no longer span multiple lines without using the escape character (\) at the end of each line. This makes it easier to spot places where you unintentionally left off a closing quote and got an error several lines later.&lt;br /&gt;
:*A new {{CCMD|O|writeini}} console command can be used to save [[the ini]] at any time, with any file name.&lt;br /&gt;
:*If the ini is write-protected when you quit, an error dialog now opens to let you know your settings could not be saved and gives you the opportunity to unprotect it.&lt;br /&gt;
:*Multiple stat displays can be enabled at once.&lt;br /&gt;
:*Several bugfixes.&lt;br /&gt;
;{{LE|2.1.7}}{{rev|524}} (October 31): {{forum|t=12015|Release thread}} | {{versionlinks|2|1|7}}&lt;br /&gt;
:*Alias commands can now do parameter substitution. If you have %x, where x is some number, in an alias command, it will be replaced by the appropriately numbered parameter passed when the alias is used, with %0 being replaced by the name of the alias itself.&lt;br /&gt;
:*A new {{Class|MapMarker}} actor has been added that you can use to mark points of interest on the [[automap]]. If its first argument is zero, the map marker itself appears on the automap, otherwise it is drawn on top of any actor with a [[TID]] matching that argument. If the second argument is one, then the map marker will only be appear if the player has previously seen the sector it is in. You can use [[Thing_Activate]] and [[Thing_Deactivate]] on markers to turn them on and off. To make custom markers, all you need to do is subclass MapMarker with [[DECORATE]].&lt;br /&gt;
:*Added the [[SetActorPitch]] [[ACS]] command to set an actor&#039;s pitch.&lt;br /&gt;
:*You can pass multiple jump targets to the [[A_Jump]] [[DECORATE]] function, and it will choose one of them at random if it jumps.&lt;br /&gt;
:*Using a [[TID]] of 0 with [[Thing_Deactivate]], [[SetActorAngle]], [[Thing_Spawn]]*, [[Thing_Projectile]]*, and [[Thing_Move]] will now operate on the activator.&lt;br /&gt;
:*The fifth argument for [[Line_SetIdentification]] can be used to set the high byte of the line ID.&lt;br /&gt;
:*Added a {{Property|CameraHeight}} [[DECORATE]] property for actors.&lt;br /&gt;
:*Added special death states for [[projectile]]s hitting actors. If missiles hit a non-bleeding actor, they try the Crash state first. If that doesn&#039;t exist or the actor is bleeding, they try the XDeath state next. If they hit anything else or neither of the two states are defined, they use the normal death state.&lt;br /&gt;
:*Added a {{Flag|PIERCEARMOR}} [[DECORATE]] flag for projectiles.&lt;br /&gt;
:*The {{CCMD|D|morphme}} [[console command]] can be given an optional argument to specify which class to morph into.&lt;br /&gt;
:*Miscellaneous bugfixes.&lt;br /&gt;
&lt;br /&gt;
==2007==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
==2008==&lt;br /&gt;
;{{LE|2.2.0}}{{rev|748}} (February 15): {{forum|t=16272|Release thread}} | {{versionlinks|2|2|0}}&lt;br /&gt;
:*This is the final version of ZDoom to fully support Windows 95 since later versions switched to [[FMOD Ex]].&lt;br /&gt;
:*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 pain and death sounds.&lt;br /&gt;
:*Custom damage color for [[palette flash]]es per [[player class]].&lt;br /&gt;
:*Custom state labels. New states can be defined in [[DECORATE]].&lt;br /&gt;
:*The [[SBARINFO]] lump for creating status bar and other [[HUD]]s.&lt;br /&gt;
:*[[Skill definition]] in [[MAPINFO]], with many properties.&lt;br /&gt;
:*Most thing functions treat a [[TID]] of 0 as the activator now.&lt;br /&gt;
:*Support for [[ENDOOM]] screens and the graphical or semi-graphical [[startup lumps|screens]] from &#039;&#039;[[Heretic]]&#039;&#039;, &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;.&lt;br /&gt;
:*Several things backported from [[Skulltag]], including powerups and flags for increased port compatibility:&lt;br /&gt;
::*{{Class|PowerDrain|Drain}}, {{Class|PowerHighJump|HighJump}} and {{Class|PowerRegeneration|Regeneration}} runes as powerups and used specific player sounds for their sound effects.&lt;br /&gt;
::*PowerQuadDamage and PowerQuarterDamage as more customizable {{Class|PowerDamage}} and {{Class|PowerProtection}}. These new powerups allow free customization of the damage modification per damage type by inheriting from these classes and setting specific values. Such derived damage/protection powerups will be considered as separate powers so that for example a QuadDamage and a DoubleDamage item can be stacked which would result in 8x damage.&lt;br /&gt;
::*{{Property|Armor.MaxBonus}} and {{Property|Armor.MaxBonusMax}} properties to create armor bonuses that increases the max amount that can be given by other armor items.&lt;br /&gt;
::*Custom F1 help screen [[MAPINFO]] option&lt;br /&gt;
::*Added REDMAP and GREENMAP [[palette blend]]s.&lt;br /&gt;
::*Imported SAME_SPAWN_SPOT [[DM flag]]&lt;br /&gt;
::*Pickup sprite for the {{Class|pistol}}.&lt;br /&gt;
::*Imported {{CVAR|R|r_maxparticles}} CVAR.&lt;br /&gt;
:*New [[Direct3D]] code for better Vista support.&lt;br /&gt;
:*Autoload sections in [[the ini]].&lt;br /&gt;
:*[[GZDoom]]&#039;s [[alternate HUD]].&lt;br /&gt;
:*Custom blood on an actor-by-actor basis into [[DECORATE]].&lt;br /&gt;
:*Smart [[autoaim]] code to prevent the targeting of friendly monsters.&lt;br /&gt;
:*New {{Flag|NOBLOODDECALS}} flag that prevents bleeding actors from spawning blood [[decal]]s.&lt;br /&gt;
:*Customizable border textures. They are defined with the [[MAPINFO]] keyword &#039;bordertexture&#039; and are settable per map.&lt;br /&gt;
:*Custom label support for [[A_Chase]] and [[A_VileChase]]&lt;br /&gt;
:*{{Property|Player.RunHealth}} property to expose the {{Class|StrifePlayer}}&#039;s behavior of not being able to run when its [[health]] is below 10.&lt;br /&gt;
:*Customizable gravity per actor&lt;br /&gt;
:*New {{CCMD|D|summonfoe}} console command, which is analogous to {{CCMD|D|summonfriend}} but forces the summoned creature to be hostile instead.&lt;br /&gt;
:*Added two new [[MAPINFO]] flags to control what actor activates impact lines: {{c|MissileShootersActivateImpactLines}} (the current behavior) and {{c|MissilesActivateImpactLines}} (the original &#039;&#039;[[Hexen]]&#039;&#039; behavior).&lt;br /&gt;
:*More player water sounds: {{c|*dive}} (head goes below water), {{c|*surface}} (your head goes back above water), {{c|*gasp}} (getting air back after starting to drown)&lt;br /&gt;
:*Using &amp;quot;*&amp;quot; with [[ACS]]&#039;s music commands will play the level&#039;s default music set in [[MAPINFO]]&lt;br /&gt;
:*Two new CVARs ({{CVAR|C|win_x}} and {{CVAR|C|win_y}}) that keep track of the window position when not playing in fullscreen mode&lt;br /&gt;
:*Key bindings can now be [[print]]ed with [[ACS]]&lt;br /&gt;
:*{{Flag|INVENTORY.KEEPDEPLETED}} flag for inventory items to keep them in the player&#039;s inventory even when they have been used up. If the item also has an inventory bar icon, it will be drawn darkened while it is depleted.&lt;br /&gt;
:*{{Flag|INVENTORY.IGNORESKILL}} flag for ammo that prevents the given quantity from being modified by the skill level&lt;br /&gt;
:*{{Property|Player.AttackZOffset}} for {{Class|PlayerPawn}}. This is the offset from the center of the player at which their attacks are fired and scales according to their crouched height.&lt;br /&gt;
:*Added a new [[SetActorState]] [[ACS]] function.&lt;br /&gt;
:*{{Flag|CANUSEWALLS}} flag which allows a [[monster]] to activate &#039;use&#039; specials like doors. This flag is on by default for any monster, which was the previous behavior.&lt;br /&gt;
:*[[Thing_Stop]] action special.&lt;br /&gt;
:*New {{Flag|FORCERADIUSDMG}} flag that allows exploding items to hurt boss monsters.&lt;br /&gt;
:*New {{Flag|USESPECIAL}} flag that allows using things to execute their [[special]]s.&lt;br /&gt;
:*[[Compatibility option]] to restore the original behavior of the {{Class|PowerInvisibility|Invisibility}} powerup&lt;br /&gt;
:*Telefrag option added to [[A_SpawnItemEx]].&lt;br /&gt;
:*Added option to [[A_Chase]] that prevents the monster from moving.&lt;br /&gt;
:*New {{c|allowrespawn}} MAPINFO option.&lt;br /&gt;
:*New [[scoreboard]]s.&lt;br /&gt;
:*New [[A_LookEx]] function.&lt;br /&gt;
:*Customizable [[team]]s through the [[TEAMINFO]] lump.&lt;br /&gt;
:*New {{CCMD|D|take}} console command to do the opposite of {{CCMD|D|give}}.&lt;br /&gt;
:*[[UseInventory]]/[[UseActorInventory]] [[ACS]] functions.&lt;br /&gt;
:*New [[A_CustomBulletAttack]] &#039;&#039;aimfacing&#039;&#039; parameter&lt;br /&gt;
:*New [[A_PlaySoundEx]] attenuation parameter.&lt;br /&gt;
:*[[Automap]] markers are stored in [[savegame]]s now.&lt;br /&gt;
:*&#039;No respawn&#039; [[DM flag]] which prevents a [[player]] from respawning after they have died.&lt;br /&gt;
:*&#039;Keep frags gained&#039; [[DM flag]] which allows you to choose whether you want to reset the [[frag]]s of each player next level or not.&lt;br /&gt;
:*Sector_Outside [[sector type]] which forces outside [[fog]] regardless of ceiling texture.&lt;br /&gt;
:*User-defined [[crosshair]]s in the [[Display options]] menu. See xhairs.txt in zdoom.pk3.&lt;br /&gt;
:*Generic log display that can show &#039;&#039;[[Strife]]&#039;&#039;&#039;s log messages in all games regardless of the current game, active [[status bar]] and [[HUD]] mode.&lt;br /&gt;
:*Support for stenciling actors with {{Property|RenderStyle}} property.&lt;br /&gt;
:*.TXT files can now be loaded by simply dragging-and-dropping them on top of zdoom.exe.&lt;br /&gt;
:*&#039;Ice&#039; [[translation]] is accessible from [[DECORATE]].&lt;br /&gt;
:*[[Teamplay]] MAPINFO option.&lt;br /&gt;
:*[[ACS]] script type [[RETURN]]. These are executed by players who return to a map they&#039;ve previously been to.&lt;br /&gt;
&lt;br /&gt;
==2009==&lt;br /&gt;
;{{LE|2.3.0}}{{rev|1455}} (March 1): {{Forum|t=21116|Release thread}} | {{versionlinks|2|3|0}}&lt;br /&gt;
:*[[Universal Doom Map Format]] (UDMF) support.&lt;br /&gt;
:*New garbage collector to improve performances on resource-intensive maps.&lt;br /&gt;
:*Sound uses [[FMOD Ex]] instead of FMOD. Among the benefits, [[REVERBS|reverbs]] can now work on any sound card, not just those that support EAX.&lt;br /&gt;
:*SPC is now a first-class [[music format]] that no longer requires an external DLL to play.&lt;br /&gt;
:*Support for [[Vavoom]]&#039;s [[slope|vertex height things]] and [[Eternity Engine]]&#039;s [[3D middle texture]]s.&lt;br /&gt;
:*[[Linked sectors]], to ensure that multiple [[sector]]s can move consistently in sync.&lt;br /&gt;
:*[[TEXTURES]] lump for text-based texture definitions.&lt;br /&gt;
:*[[Automatic compatibility|MD5-based recognition of maps]] that require certain [[compatibility options]] to work (e.g., {{dw|Strain}} map 7 which relied on the {{dw|Spechits overflow}} bug) to apply these settings transparently.&lt;br /&gt;
:*[[Freedoom]], [[Chex Quest]], and [[Chex Quest 3]] are recognized as [[IWAD]]s and can be selected in the [[IWAD selection box]]. New aliases are available for IWADs, too.&lt;br /&gt;
:*New [[MAPINFO]] format (the old is still supported of course) with a more robust syntax.&lt;br /&gt;
:*Custom [[map translator]]s for Doom-format maps, which can be specified in MAPINFO.&lt;br /&gt;
:*[[Strife]] dialogues now work in multiplayer.&lt;br /&gt;
:*Setting up slots for custom weapons no longer requires a [[KEYCONF]] lump, the limit of 8 weapons per slot is removed.&lt;br /&gt;
:*Added the &amp;quot;{{Class|RandomSpawner|random spawner}}&amp;quot; actor, customizable {{Class|BossEye}}s, {{Class|CustomBridge}}, {{Class|FastProjectile}}.&lt;br /&gt;
:*Many new [[compatibility options]], including one to have [[projectile]]s pass through solid decorations.&lt;br /&gt;
:*More flexible use of [[lightning]] in a map.&lt;br /&gt;
:*The two different [[crushing mode]]s (Doom and Hexen) are now selectable per action.&lt;br /&gt;
:*Customizable pickup flash with {{Property|Inventory.PickupFlash}} property.&lt;br /&gt;
:*[[DeHackEd]] music name replacement has been restored.&lt;br /&gt;
:*Rewritten DECORATE parser, more robust and featuring better error reporting. All actors are defined in DECORATE now.&lt;br /&gt;
:*Functions to handle [[weapon]] reloading through DECORATE.&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInput]], [[GetActorProperty|Get]]/[[SetActorProperty]].&lt;br /&gt;
:*Many actions are now more flexible through optional parameters, for example [[A_Die]] can specify damage type to send to a custom Death state, [[A_KeenDie]] can affect tags other than 666, [[A_Fire]] can specify a vertical offset, and so on.&lt;br /&gt;
:*Many, many new [[DMFlags]] for [[cooperative]] plays, such as having to kill all [[monster]]s before leaving the map or seeing the other [[player]]s on the [[automap]].&lt;br /&gt;
:*Enhanced &#039;&#039;[[Strife]]&#039;&#039; support.&lt;br /&gt;
:*Various and sundry bug fixes.&lt;br /&gt;
;{{LE|2.3.1}}{{rev|1480}} (March 15): {{Forum|t=21296|Release thread}} | {{versionlinks|2|3|1}}&lt;br /&gt;
:Mostly a bugfix release.&lt;br /&gt;
:*Fixes the bug that prevented you from switching weapons after respawning in multiplayer.&lt;br /&gt;
:*Fixes a performance regression introduced in 2.3.0.&lt;br /&gt;
:*Adds support for zip/pk3 files with LZMA and BZip2 compression. (7-Zip is one program that can create such files.)&lt;br /&gt;
:*Addresses a few other niggles.&lt;br /&gt;
&lt;br /&gt;
==2010==&lt;br /&gt;
;{{LE|2.4.0}}{{rev|2075}} (January 1): {{Forum|t=24602|Release thread}} | {{versionlinks|2|4|0}}&lt;br /&gt;
:*Rewritten [[archive format|archive]] management code.&lt;br /&gt;
::*Added support for new [[archive format]]s: 7z, &#039;&#039;Quake&#039;&#039; PAK, &amp;quot;Shrink&amp;quot; and &amp;quot;Implode&amp;quot;.&lt;br /&gt;
::*Removed loading limit of 65 535 lumps. The archive manager can now handle up to 4 294 967 295 lumps.&lt;br /&gt;
:*Rewritten mouse and keyboard handling input under Windows.&lt;br /&gt;
:*Reimplemented and improved support for gamepads and joysticks.&lt;br /&gt;
:*Added truecolor display of the [[HUD]], [[menu]]s and other 2D elements outside the game world when using [[Direct3D]] on Windows.&lt;br /&gt;
:*Replaced SNES_SPC with Game Music Emu, greatly increasing the number of supported emulated [[music format]]s.&lt;br /&gt;
:*Added compiling support for {{wp|Macintosh}} systems.&lt;br /&gt;
:*Added [[IWAD]] recognition for Ultimate [[Freedoom]], [[Action Doom 2: Urban Brawl|Action Doom 2]], [[Blasphemer]] and [[Harmony]].&lt;br /&gt;
:*Added {{param|-noautoload}}, {{param|-norun}}, {{param|-stdout}}, and {{param|-warpwipe}} command line parameters.&lt;br /&gt;
:*Added {{CVAR|C|save_dir}} and {{CVAR|R|d3d_antilag}} console variables.&lt;br /&gt;
:*Added optional parameters to {{CCMD|D|summon}} commands, added {{CCMD|D|summonmbf}} command.&lt;br /&gt;
:*Added {{CCMD|D|info}} command to obtain very verbose debugging information on actors.&lt;br /&gt;
:*Buddha mode&lt;br /&gt;
:*Added [[score]] and {{Class|ScoreItem}}s.&lt;br /&gt;
:*Added [[GameInfo definition]]s to [[MAPINFO]].&lt;br /&gt;
:*Changed random seed initialization so that it uses the system&#039;s cryptographically secure random number generator, if available, instead of the current time. Also changed the random number generator from Lee Killough&#039;s algorithm to the SFMT607 variant of the {{wp|Mersenne twister}}.&lt;br /&gt;
:*Disabled custom [[DEHSUPP]] lumps.&lt;br /&gt;
:*Added &#039;damage&#039; to the actor variables exported to [[DECORATE expressions|DECORATE&#039;s expression evaluator]].&lt;br /&gt;
:*Added &#039;frandom&#039; DECORATE function to the expression evaluator, which is like &#039;random&#039; but for floating point values instead of integers.&lt;br /&gt;
:*Added Raven color set and dagger-like vector sprite to the [[automap]].&lt;br /&gt;
:*Added desatured [[translation]]s.&lt;br /&gt;
:*[[SBARINFO]]: Added the ability to center things with fullscreenoffsets enabled, added [[underwater]] stats.&lt;br /&gt;
:*[[MAPINFO]]: Added [no_]grinding_polyobj, resetinventory properties, added EndTitle option for {{c|nextmap}}.&lt;br /&gt;
:*Added actor replacement to [[skill definition]]s.&lt;br /&gt;
:*Exported many hardcoded values to [[GameInfo definition]]s.&lt;br /&gt;
:*Added [[Line_SetBlocking]] and [[Sector_SetPortal]] specials.&lt;br /&gt;
:*Added {{c|defaultterrain}} section to [[TERRAIN]].&lt;br /&gt;
:*Added new [[earthquake]] functions.&lt;br /&gt;
:*Added [[user variable]]s.&lt;br /&gt;
:*[[DECORATE]]: Added {{Property|Species}}, {{Property|Activation}}, {{Property|PainThreshold}}, {{Property|PushFactor}}, {{Property|WeaveIndexXY}}, {{Property|WeaveIndexZ}}, {{Property|Powerup.Strength}}, {{Property|Player.MugShotMaxHealth}}, {{Property|Inventory.InterHubAmount}} properties.&lt;br /&gt;
:*Turned old bounce flags into {{Property|BounceType}} property.&lt;br /&gt;
:*Added {{Property|DamageFactor}} handling to Armors.&lt;br /&gt;
:*Added &amp;quot;BLUEMAP&amp;quot; [[palette blend]] for {{Property|Powerup.Color}}, and added {{Property|Powerup.Colormap}} for custom colormaps.&lt;br /&gt;
:*Added {{Flag|MOVEWITHSECTOR}}, {{Flag|NOBOSSRIP}}, {{Flag|THRUACTORS}}, {{Flag|THRUSPECIES}}, {{Flag|DONTSEEKINVISIBLE}}, {{Flag|FORCEPAIN}}, {{Flag|NOFEAR}}, {{Flag|BUMPSPECIAL}}, {{Flag|STEPMISSILE}}, {{Flag|NOTELEPORT}}, {{Flag|NOTRIGGER}},  {{Flag|AVOIDMELEE}}, {{Flag|JUMPDOWN}}, {{Flag|SCREENSEEKER}}, {{Flag|INVENTORY.PERSISTENTPOWER}}, {{Flag|WEAPON.AMMO_CHECKBOTH}}, {{Flag|WEAPON.NOAUTOAIM}} flags.&lt;br /&gt;
:*Added [[A_CheckCeiling]], [[A_MonsterRefire]], [[A_Weave]], [[A_JumpIfTargetInSight]], [[A_ZoomFactor]], [[A_SetAngle]], [[A_SetPitch]], [[A_ScaleVelocity]], [[A_ChangeVelocity]], [[A_SetCrosshair]], [[A_RemoveSiblings]], [[A_RaiseMaster]]/[[A_RaiseChildren|Children]]/[[A_RaiseSiblings|Siblings]], [[A_Log]], [[A_PrintBold]], [[A_SetArg]], [[A_SetSpecial]], [[A_Blast]] codepointers.&lt;br /&gt;
:*Added parameters to [[A_PodPain]], [[A_MakePod]], [[A_MLightningAttack]], [[A_M_Saw]], [[A_FireCustomMissile]], [[A_FadeOut]], [[A_Explode]], [[A_WeaponReady]], [[A_VileAttack]], [[A_Mushroom]], [[A_SeekerMissile]], [[A_KillChildren]]/[[A_KillMaster|Master]]/[[A_KillSiblings|Siblings]], [[A_CustomRailgun]] and [[A_RailAttack]], added SXF_TRANSFERPOINTERS flag to [[A_SpawnItemEx]] and several flags to [[A_Respawn]].&lt;br /&gt;
:*Imported {{Class|PowerDoubleFiringSpeed}} from [[Skulltag]], added {{Class|PowerInfiniteAmmo}}.&lt;br /&gt;
:*{{Class|PowerProtection}} and {{Class|PowerInvisibility}} can now be used to give certain flags to the player. Other enhancements to PowerInvisibility, such as changing the player&#039;s {{Property|RenderStyle}}.&lt;br /&gt;
:*Customizable mage lightning, sapphire wand, and {{Class|SpawnShot}} spawn lists.&lt;br /&gt;
:*[[ACS]]: compatibility fix for vanilla Hexen map where script execution order is critical.&lt;br /&gt;
:*Added [[GetActorVelX]]/[[GetActorVelY|Y]]/[[GetActorVelZ|Z]], [[SetActorVelocity]], [[GetActorViewHeight]], [[SetActivator]], [[SetActivatorToTarget]], [[GetChar]], [[SetSkyScrollSpeed]], [[GetAirSupply|Get]]/[[SetAirSupply]], [[GetArmorType]], [[CheckActorProperty]], [[CheckActorClass]], [[SoundSequenceOnActor]]/[[SoundSequenceOnSector|Sector]]/[[SoundSequenceOnPolyobj|Polyobj]], [[SpawnSpotForced]] and [[SpawnSpotFacingForced]].&lt;br /&gt;
:*Added ML_BLOCKUSE line flag, accessible through [[UDMF]] and [[Line_SetBlocking]].&lt;br /&gt;
:*Improved [[automatic compatibility]] with {{dw|Hacx}}, {{dw|Suspended in Dusk}}, {{dw|Community Chest}}, {{dw|Doomsday of UAC}}, {{dw|Strain}}, and the {{dw|Astrostein}} series.&lt;br /&gt;
:*[[Compatibility options]]: added Minotaur footclipped floor fire setting, sprite sorting order, [[MBF]]-style [[A_Mushroom]], monster movements affected by terrain, and friendly monsters able to cross blocking lines.&lt;br /&gt;
:*Added arch-vile &amp;quot;ghost&amp;quot; bug emulation for selected maps only.&lt;br /&gt;
:*Added several other MBF features, including {{Class|BetaSkull}}, [[A_FireOldBFG]], and [[DeHackEd]] support of MBF codepointers and actors.&lt;br /&gt;
:*Repaired accuracy of player behavior in &#039;&#039;[[Hexen]]&#039;&#039; with regards to [[jumping]] and pushing enemies away with attacks.&lt;br /&gt;
:*Fixed compatibility issues arising with [[Action Doom]].&lt;br /&gt;
:*Puffs now set their angle to face the originator of the attack.&lt;br /&gt;
:*Added SoulPriestess&#039; patch to force aspect ratio with {{CVAR|R|vid_aspect}}.&lt;br /&gt;
:*Added Spleen&#039;s patch to customize [[railgun]] performances with {{CVAR|R|r_rail_smartspiral}}, {{CVAR|R|r_rail_spiralsparsity}}, and {{CVAR|R|r_rail_trailsparsity}}.&lt;br /&gt;
:*[[UDMF]]: Added per-tier texture scaling with new [[sidedef]] properties and sidedef versions of [[linedef]] flags {{c|wrapmidtex}} and {{c|clipmidtex}}.&lt;br /&gt;
:*Improved [[sky]] projection and [[sky stretching]].&lt;br /&gt;
:*Updated Italian [[LANGUAGE|language]] file.&lt;br /&gt;
:*A whole lot more.&lt;br /&gt;
;{{LE|2.4.1}}{{rev|2126}} (January 24): {{Forum|t=24895|Release thread}} | {{versionlinks|2|4|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*[[Floor_Waggle]] effects are smoother now.&lt;br /&gt;
:*Negative numbers in the [[alternate HUD]] have their minus sign at the right place now.&lt;br /&gt;
:*Menu option scales better in widescreen resolution.&lt;br /&gt;
:*[[Player setup]] menu looks better in non-Doom games.&lt;br /&gt;
:*Moving [[camera]]s work correctly again.&lt;br /&gt;
:*[[Polyobject]]s glitch a bit less now.&lt;br /&gt;
:*The internal nodebuilder works correctly now with certain troublesome maps.&lt;br /&gt;
:*&#039;&#039;[[Strife]]&#039;&#039; conversations fixed and improved.&lt;br /&gt;
:*Many nitpicky fixes in &#039;&#039;Strife&#039;&#039; (switch sounds, messages, etc.).&lt;br /&gt;
:*&#039;&#039;[[Action Doom 2]]&#039;&#039; and &#039;&#039;[[Harmony]]&#039;&#039; can now use idclev, and they have their Autoload section in [[the ini]].&lt;br /&gt;
:*[[MAPINFO]] {{c|ResetInventory}} keyword now works as expected.&lt;br /&gt;
:*The {{CVAR|C|norawinput}} console variable can be set to true to fix input problems while playing a Windows build through {{wp|Wine_(software)|Wine}}.&lt;br /&gt;
:*A [[character input grid]] is available to play ZDoom with a controller without having to use the keyboard.&lt;br /&gt;
:*Added [[GAMEINFO]] lump so that a mod can specify which [[IWAD]] and external resource files it uses.&lt;br /&gt;
;{{LE|2.5.0}}{{rev|2508}} (August 11): {{Forum|t=26755|Release thread}} | {{versionlinks|2|5|0}}&lt;br /&gt;
:*Enhanced [[polyobject]] system, allowing them to move anywhere in the map (like [[Eternity Engine|Eternity]]&#039;s &amp;quot;dynasegs&amp;quot;) and to give them any arbitrary shape. This is accompanied by new [[ACS]] polyobject movement functions.&lt;br /&gt;
:*Support for [[node|uncompressed extended nodes]], also supported by [[Eternity Engine]] and [[PrBoom+]], to create a new cross-port standard for node storage.&lt;br /&gt;
:*Support for using [[Byte Map Font]]s.&lt;br /&gt;
:*Ability to use metadata tags in audio formats to define custom loop points.&lt;br /&gt;
:*Added support for the [[MUSINFO]] lump (from [[Risen3D]] and [[PrBoom+]]).&lt;br /&gt;
:*Improved compatibility settings to allow optionally a greater faithfulness to the [[vanilla Doom]] and vanilla Heretic behaviors.&lt;br /&gt;
:*ZMAPINFO as an alias for [[MAPINFO]] to avoid compatibility problems with other ports parsing this lump.&lt;br /&gt;
:*Full rewrite of the [[SBARINFO]] system allowing many additional features and options.&lt;br /&gt;
:*Added support for multi-monitor display.&lt;br /&gt;
:*default reverbs environment setting in MAPINFO&lt;br /&gt;
:*Several generalized [[action functions|codepointers]] to emulate some very specific &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; action functions&lt;br /&gt;
:*New functions to refine actor behavior through&lt;br /&gt;
:*Enhanced [[poison]] damage system&lt;br /&gt;
:*Generalized [[railgun]] codepointers&lt;br /&gt;
:*New [[automap options]]&lt;br /&gt;
:*[[Hall of mirrors|HOM]] detection system&lt;br /&gt;
:*New [[console commands]]&lt;br /&gt;
:*The usual bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
==2011==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2012==&lt;br /&gt;
;{{LE|2.6.0}}{{rev|3730}} (July 2): {{Forum|t=33295|Release thread}} | {{versionlinks|2|6|0}}&lt;br /&gt;
:*Added [[Hacx]] IWAD support.&lt;br /&gt;
:*Added text-format Strife conversation system with [[USDF]] and [[ZSDF]].&lt;br /&gt;
:*A textured [[automap]] is now available; automap graphics are now [[map arrow|externalized]].&lt;br /&gt;
:*Rewritten [[menu]] system, which can now be defined with the [[MENUDEF]] lump.&lt;br /&gt;
:*Externalized intermissions to [[MAPINFO]].&lt;br /&gt;
:*Externalized [[IWAD]] detection and gave each IWAD its own independent config section.&lt;br /&gt;
:*Added [[FluidSynth]] and [[GUS|GUS emulator]] softsynths; fixed issues with [[TiMidity++]].&lt;br /&gt;
:*Added [[VOC]] support and enhanced [[MIDI]] playback with support for alternative formats such as [[XMI]] and [[HMI]].&lt;br /&gt;
:*[[Action specials]]: Added [[Ceiling_LowerAndCrushDist]] and [[Thing_SetConversation]]. Added [[console command]] to execute specials.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Increased maximum script number from 999 to 32767.&lt;br /&gt;
::*[[Named script]]s allow to avoid script number conflicts.&lt;br /&gt;
::*Added [[StrCpy]], [[CheckSight]], [[SetActivator]], [[SetPointer]] functions.&lt;br /&gt;
::*Added [[ACS actor properties|APROP_ScaleX/Y]] and APROP_Mass actor properties.&lt;br /&gt;
::*Added temporary dynamic strings variables with [[StrParam]].&lt;br /&gt;
::*Scripts can now have up to four parameters.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added [[A_CheckFlag]], [[A_FaceMaster]], [[A_FaceTracer]], [[A_RadiusGive]], [[A_SetMass]], [[A_SetScale]], [[A_Warp]] and [[A_WolfAttack]]...&lt;br /&gt;
::*Enhanced [[A_AlertMonsters]], [[A_BFGSpray]], [[A_Blast]], [[A_CustomBulletAttack]], [[A_FireBullets]], [[A_GunFlash]], [[A_PainAttack]], [[A_RadiusThrust]]...&lt;br /&gt;
::*Added an [[actor pointer]] manipulation system with several new codepointers...&lt;br /&gt;
::*Added {{Flag|DOHARMSPECIES}}, {{Flag|DONTCORPSE}}, {{Flag|SEEINVISIBLE}} and {{Flag|INVENTORY.UNTOSSABLE}}&lt;br /&gt;
::*Increased [[damage type]] flexibility in several ways with {{Property|DeathType}} and {{Property|PainType}}.&lt;br /&gt;
::*Added customizable {{Class|ArtiPoisonBag|fléchettes}}.&lt;br /&gt;
::*Made [[accuracy]] and [[stamina]] accessible through [[DECORATE expressions]].&lt;br /&gt;
::*Added {{Property|ProjectileKickback}}, {{Property|Inventory.RestrictedTo}} and {{Property|Inventory.ForbiddenTo}} class-based properties.&lt;br /&gt;
::*Backported {{Property|VisibleToTeam}}, {{Property|VisibleToPlayerClass}} and weapon {{Property|DropItem}} feature from [[Skulltag]], and enhanced them.&lt;br /&gt;
::*Added &amp;quot;Fast&amp;quot; keyword for states and deprecated the unreliable {{Flag|FASTER}} and {{Flag|FASTMELEE}} flags.&lt;br /&gt;
:*Added a [[SECRETS|secret hint system]].&lt;br /&gt;
:*[[3D floor]]s support.&lt;br /&gt;
:*[[FraggleScript]] support.&lt;br /&gt;
:*[[Voxel]] support.&lt;br /&gt;
:*[[SBARINFO]]: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.&lt;br /&gt;
:*[[SNDINFO]]: Added {{sndinfo|musicalias}} and {{sndinfo|attenuation}}.&lt;br /&gt;
:*Compatibility: fixed issues with {{dw|Eternal Doom}}, [[Happy Time Circus]], {{dw|Phobos_(WAD)|Phobos}}, vanilla compat, [[Boom]] compat, light levels higher than 255, [[Heretic]], [[Strife]], [[MUSINFO]], misnamed UDMF field.&lt;br /&gt;
:*Fixed loading of [[BMF]] palettes.&lt;br /&gt;
:*{{CCMD|O|restart}} console command.&lt;br /&gt;
:*Added [[PALVERS]] lump.&lt;br /&gt;
:*Custom [[IWAD]]s no longer need to include a [[COLORMAP]], as ZDoom will generate one automatically if it is missing.&lt;br /&gt;
:*Fixed vertical tiling of non-power-of-two textures.&lt;br /&gt;
:*Fixed blockmap overflows in huge maps with help from [[Mocha Doom|Maes]] and [[PrBoom+|Entryway]].&lt;br /&gt;
:*Joystick support for non-Windows platforms.&lt;br /&gt;
:*As always, a plethora of bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.6.1}}{{rev|3794}} (July 28): {{Forum|t=33547|Release thread}} | {{versionlinks|2|6|1}}&lt;br /&gt;
:*Added [[Hacx]] 2.0 IWAD support.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added [[ACS_NamedExecuteWait]] and [[NamedScriptWait]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{Flag|INVENTORY.RESTRICTABSOLUTELY}} and {{Flag|PLAYERPAWN.CANSUPERMORPH}}.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Added RandomPlayerStarts and UsePlayerStartZ flags for [[map definition]]s.&lt;br /&gt;
:*Solved compatibility issue with [[Massmouth 2]].&lt;br /&gt;
:*[[Voxel]]s are now rotated by 90° to match their orientation in Slab6 and [[Build]] games.&lt;br /&gt;
&lt;br /&gt;
==2013==&lt;br /&gt;
;{{LE|2.7.0}}{{rev|4342}} (June 8): {{Forum|t=36456|Release thread}} | {{versionlinks|2|7|0}}&lt;br /&gt;
:*Added [[Floor_RaiseAndCrushDoom]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Made dynamic strings persistent. ACS can now safely generate up to one million new strings.&lt;br /&gt;
::*Added [[CheckFont]], [[GetCVarString]], [[GetUserCVar]], [[GetUserCVarString]], [[IsTIDUsed]], [[LineAttack_(ACS)|LineAttack]], [[SetCVar]], [[SetCVarString]], [[SetUserCVar]], [[SetUserCVarString]], [[SpawnDecal]], and [[UniqueTID]].&lt;br /&gt;
::*Added HUD layers, visibility flags, additive blending, and alpha parameter to [[HudMessage]] and [[HudMessageBold]].&lt;br /&gt;
::*Also added HUD message wrapping and clipping with [[SetHudClipRect]] and [[SetHudWrapWidth]].&lt;br /&gt;
::*Added PLAYERINFO_FOV and _DESIREDFOV to [[GetPlayerInfo]].&lt;br /&gt;
::*Added support for desaturated [[translation]]s.&lt;br /&gt;
::*Added [[Sqrt]], [[FixedSqrt]], and [[VectorLength]] functions.&lt;br /&gt;
::*Support for advanced structures from non-ACC compilers.&lt;br /&gt;
::*Added the ability to retrieve the {{Property|ReactionTime}}, {{Property|Height}} and {{Property|Radius}} properties through [[GetActorProperty]].&lt;br /&gt;
::*Added CHANGELEVEL_PRERAISEWEAPON to [[ChangeLevel]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*{{Flag|FLOATBOB}} things are no longer moved physically when bobbing.&lt;br /&gt;
::*Added {{Property|Player.FallingScreamSpeed}}, {{Property|Player.GruntSpeed}}, {{Property|Weapon.MinSelectionAmmo1}}, and {{Property|Weapon.MinSelectionAmmo2}}.&lt;br /&gt;
::*Added random state duration and [[A_SetTics]].&lt;br /&gt;
::*[[A_Explode]]&#039;s &#039;&#039;affectsource&#039;&#039; parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to [[A_RadiusThrust]].&lt;br /&gt;
::*[[A_RadiusThrust]] can use negative &#039;&#039;force&#039;&#039; values.&lt;br /&gt;
::*Added [[A_JumpIfTargetInsideMeleeRange]], [[A_JumpIfTargetOutsideMeleeRange]], [[A_SetDamageType]], and [[A_CheckLOF]].&lt;br /&gt;
::*Added {{Flag|INVENTORY.NEVERRESPAWN}}, {{Flag|INVENTORY.NOSCREENFLASH}}, {{Flag|POWERSPEED.NOTRAIL}}, and {{Flag|PLAYERPAWN.CROUCHABLEMORPH}}.&lt;br /&gt;
::*Added JLOSF_NOAUTOAIM flag to [[A_JumpIfTargetInLOS]].&lt;br /&gt;
::*Added WRF_DISABLESWITCH to [[A_WeaponReady]].&lt;br /&gt;
::*[[A_Light]] can use negative values to darken the scene.&lt;br /&gt;
::*Added NORANDOMPUFFZ flag to [[A_CustomPunch]], [[A_FireBullets]], and [[A_CustomBulletAttack]].&lt;br /&gt;
::*Added SXF_USEBLOODCOLOR, SXF_CLEARCALLERTID, SXF_MULTIPLYSPEED, SXF_TRANSFERSCALE, SXF_TRANSFERSPECIAL, and SXF_CLEARCALLERSPECIAL flags to [[A_SpawnItemEx]].&lt;br /&gt;
::*Added the ability to adjust the vertical offset of a rail attack to [[A_RailAttack]] and [[A_CustomRailgun]].&lt;br /&gt;
::*Player-fired seeker [[Projectile|missiles]]&#039; range at which the missiles initially lock-on a [[Actor pointer|tracer]] can be set via {{Property|MaxTargetRange}} actor property.&lt;br /&gt;
::*{{Property|ReactionTime}} added to [[DECORATE expressions]].&lt;br /&gt;
::*Added [[Actor states#NoDelay|NoDelay]] state flag.&lt;br /&gt;
::*Added [[Actor_states#States|Bounce]] actor states.&lt;br /&gt;
::*Fixed few cases of DECORATE definitions inaccuracies for [[Doom]], [[Heretic]], [[Hexen]] and [[Strife]] actors.&lt;br /&gt;
:*[[FONTDEFS]]: Backported SPACEWIDTH from [[ECWolf]].&lt;br /&gt;
:*[[LANGUAGE]]: Brazilian Portuguese support.&lt;br /&gt;
:*[[MAPINFO]]: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for [[map definition]]s and NoRandomPlayerclass for [[GameInfo definition]]s.&lt;br /&gt;
:*[[MIDI]]: [[FluidSynth]] now recognize {{c|libfluidsynth.dll}} as a valid alias for {{c|fluidsynth.dll}}, various FluidSynth [http://forums.scummvm.org/viewtopic.php?p=72972#72972 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.&lt;br /&gt;
:*Updated [[foo_DUMB]].&lt;br /&gt;
:*Implemented additive rendering for [[3D floor]]s.&lt;br /&gt;
:*Added &#039;&#039;{{wp|Quake (video game)|Quake}}&#039;&#039;-like no-clipping with {{CCMD|D|noclip2}}.&lt;br /&gt;
:*Exported the [[scoreboard]] text to [[LANGUAGE]].&lt;br /&gt;
:*The sound system should now precache nearly all sounds used by actor properties and [[ambient sound]]s, and the [[MAPINFO/Map definition|MAPINFO]] command &amp;quot;PrecacheSounds&amp;quot; can be used to precache other sounds.&lt;br /&gt;
:*Arbitrary FPS cap with {{CVAR|R|vid_maxfps}}.&lt;br /&gt;
:*Increased maximum resolution to 5760&amp;amp;times;3600.&lt;br /&gt;
:*Added {{c|lightfog}} property for [[sidedef]]s.&lt;br /&gt;
:*Added support for {{dw|Doom 3: BFG Edition}}&#039;s modified [[IWAD]]s, including {{dw|No Rest for the Living}}.&lt;br /&gt;
:*Improved [[WAD]] archive code with support for big-endian format and LZSS compression used in several console ports.&lt;br /&gt;
:*Added ability in [[UDMF]] to specify things to spawn by [[:Category:Thing specials|thing specials]] and [[Hexen breakable items]] by names with {{c|arg1str}}, as well as the ability to set initial values to a thing&#039;s [[user variable]].&lt;br /&gt;
:*Added new [[node]] format for complex UDMF maps which need fractional precision on node splitters.&lt;br /&gt;
:*The [[alternate HUD]] now features a {{Class|Berserk}} indicator and a customizable time display.&lt;br /&gt;
:*Tweaked {{Class|ScriptedMarine|scripted marines}}.&lt;br /&gt;
:*Added {{c|{{CCMD|D|acsprofile}}}} [[CCMDs|console command]].&lt;br /&gt;
:*[[Weapon slots]] can be configured from the [[Customize controls]] menu.&lt;br /&gt;
:*Solved compatibility issues with [[Daedalus: Alien Defense]], {{dw|Community Chest 3}}, Nuke Mine, Khorus, [[Void]], the {{dw|Master Levels}}, and {{dw|Claustrophobia 1024}}.&lt;br /&gt;
:*{{Class|RandomSpawner}}s now respect {{param|nomonsters}}.&lt;br /&gt;
:*Added the ability to define mod-specific [[CVARs|console variables]] through the addition of the [[CVARINFO]] lump.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.7.1}}{{cs|21efe3b}} (July 3): {{Forum|t=36679|Release thread}} | {{versionlinks|2|7|1}}&lt;br /&gt;
&#039;&#039;Note: this is the first version based on the [[Git repository]]; 2.7.0 was the last version based on the SVN repository.&#039;&#039;&lt;br /&gt;
* Added new additive [[MAPINFO/GameInfo definition|GameInfo]] keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.&lt;br /&gt;
* Added a new {{Flag|DONTDRAIN}} flag to mark actors as ineligible for vampirism attacks.&lt;br /&gt;
* [[Automatic compatibility|Compatibility]] fixes for [[Ultimate Simplicity]] map07, [[Cheogsh]] map01, [[Super Sonic Doom]] map31&lt;br /&gt;
* [[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.&lt;br /&gt;
* The powered-up {{Class|GoldWand|Gold Wand}} was not puffing on actors.&lt;br /&gt;
* Disabled [[Heretic]]&#039;s punishment [[cheat]]s when in {{CVAR|C|allcheats}} mode.&lt;br /&gt;
* Objects that explode on death no longer deal the damage they were dealt instead of their own.&lt;br /&gt;
* Vampirism attacks now respect damage reduction.&lt;br /&gt;
* [[Demo]] recording now writes correct user info to demos.&lt;br /&gt;
* ACS&#039;s [[PlaySound]] for looping sounds now works properly when using channel flags.&lt;br /&gt;
&lt;br /&gt;
==2014==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2015==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2016==&lt;br /&gt;
;{{LE|2.8.0}}{{cs|56359b6}} (February 3): {{Forum|t=50712|Release thread}} | {{versionlinks|2|8|0}}&lt;br /&gt;
:*Frontend&lt;br /&gt;
:**GoG-installed IWADs are now detected automatically.  Steam-installed IWADs are detected on OS X and Linux.&lt;br /&gt;
:**Improved netcode and added [[network options]] menu to configure new features.&lt;br /&gt;
:**Two new cheats, god2 and buddha2. The player cannot die from telefrag damage with these.&lt;br /&gt;
:**Added WAD compatibility fixes for over a dozen maps, including &#039;&#039;[[Cheogsh 2]]&#039;&#039;, &#039;&#039;XtheaterIII&#039;&#039;, and the infamous missing yellow keycard on TNT MAP31.&lt;br /&gt;
:**+warp now works from the command line.&lt;br /&gt;
:**Added support for standard file paths on Windows.&lt;br /&gt;
:**Added a user-settable factor for [[earthquake]] intensity.&lt;br /&gt;
:*Automap&lt;br /&gt;
:**Non-countable monster actors can have their own separate automap color.&lt;br /&gt;
:**Extended {{c|{{CVAR|A|am_cheat}}}} with three modes to prevent lines flagged as &#039;&#039;hidden&#039;&#039; from being shown on the automap.&lt;br /&gt;
:**Added separate colors for the various types of 2-sided walls for the overlay automap, as well as colors missing from that mode.&lt;br /&gt;
:**Actors sprites can be shown on the automap instead of simple triangles when the second, third, fifth or sixth modes of {{c|am_cheat}} console variable are enabled.&lt;br /&gt;
:*Console&lt;br /&gt;
:**Added a {{c|{{CCMD|O|closemenu}}}} [[CCMDs|console command]], so that menu options that close the [[menu]] can be added.&lt;br /&gt;
:**The behavior of auto-loading external [[DEHACKED]] lumps can be controlled by setting the {{c|dehload}} [[CVARs|console variable]].&lt;br /&gt;
:**Results for console tab-completion are now color-coded; console commands appear blue, console variables green, and aliases red.&lt;br /&gt;
:**Fixed: the {{c|{{CVAR|R|wi_noautostartmap}}}} console variable was not sync-safe.&lt;br /&gt;
:**Added {{c|{{CVAR|C|sv_freelook}}}}, {{c|{{CVAR|C|sv_allowfreelook}}}} and {{c|{{CVAR|C|sv_nofreelook}}}}.&lt;br /&gt;
:*Building&lt;br /&gt;
:**Native Cocoa back end for OS X resulting in significant increases in performance over SDL in addition to better overall user experience.&lt;br /&gt;
:**Added optional support for the OpenAL sound library, allowing for compiling without FMOD.&lt;br /&gt;
:**Added a new [[software synthesizer]], [[WildMIDI]], and a new [[OPL]] core.&lt;br /&gt;
:**Added support for building with clang.&lt;br /&gt;
:**Nearly-complete support for ARM devices such as the Raspberry Pi.  (Some known bugs remain — in particular, you must set vid_forcesurface to true in zdoom.ini, or ZDoom will instantly segfault.)&lt;br /&gt;
:*Modding&lt;br /&gt;
:**Added [[Ceiling_CrushAndRaiseSilentDist]].&lt;br /&gt;
:**New type of [[earthquake]], can only be accessed with [[A_QuakeEx]] or its [[QuakeEx|ACS equivalent]], which can replicate the shaking effect seen in many recent games instead of random camera offsets using the QF_WAVE flag. Quakes can now be scaled in, out, or mixed up. Both wave and regular quakes work together.&lt;br /&gt;
:**Menu&#039;s back button and the pause sign can be animated.&lt;br /&gt;
:**The particle engine is now exposed to modders via the [[A_SpawnParticle]] action function and [[SpawnParticle]] ACS function.&lt;br /&gt;
:**Directory-structured archives now support [[lump filtering]], which loads different resources depending on the base game.&lt;br /&gt;
:**Friction and [[TERRAIN]]-based sector damage are now transferred to [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Fixed scaling of textures on [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Overhauled [[sector type]]s and properties. Sectors have several new UDMF properties.&lt;br /&gt;
:**Lines and sectors may now have multiple ids/tags via the moreids UDMF property.&lt;br /&gt;
:**&amp;lt;code&amp;gt;checkswitchrange&amp;lt;/code&amp;gt; now correctly prevents players from pressing switches embedded in the floor or ceiling, and works correctly with switches that are part of 3D floors.&lt;br /&gt;
:**Added {{c|blockhitscan}} and {{c|transparent}} [[linedef|line]] properties, {{c|waterzone}} [[sector]] property, and {{c|alpha}}, {{c|fillcolor}}, {{c|gravity}}, {{c|health}}, {{c|pitch}}, {{c|renderstyle}}, {{c|roll}}, {{c|scale}}, {{c|scalex}}, {{c|scaley}} and {{c|score}} [[thing]] properties for [[Universal Doom Map Format|UDMF]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
:**Added {{c|[[DropItem]]}}, {{c|[[DropInventory]]}}, {{c|[[CheckFlag]]}}, {{c|[[GetLineActivation]]}}, {{c|[[GetMaxInventory]]}}, {{c|[[SetLineActivation]]}}, {{c|[[GetArmorInfo]]}}, {{c|[[GetActorPowerupTics]]}}, {{c|[[IsPointerEqual]]}}, {{c|[[ChangeActorAngle]]}}, {{c|[[ChangeActorPitch]]}}, {{c|[[PickActor]]}}, {{c|[[SetSectorDamage]]}}, {{c|[[QuakeEx]]}}, {{c|[[Warp]]}} and {{c|[[CanRaiseActor]]}}  functions.&lt;br /&gt;
:**Added FHF_NORANDOMPUFFZ flag for {{c|[[LineAttack_(ACS)|LineAttack]]}}.&lt;br /&gt;
:**Added BLOCKF_HITSCAN flag for {{c|[[Line_SetBlocking]]}}.&lt;br /&gt;
:**Added {{c|APROP_ViewHeight}}, {{c|APROP_AttackZOffset}} and {{c|APROP_StencilColor}} [[ACS actor properties]].&lt;br /&gt;
:**Fixed potential desync with {{c|[[CheckPlayerCamera]]}}.&lt;br /&gt;
:**Fixed: {{c|[[Thing_SetGoal]]}} could put an actor&#039;s target and goal out of sync.&lt;br /&gt;
:**{{c|[[GetSectorFloorZ]]}} and {{c|[[GetSectorCeilingZ]]}} now interpret 0-tag as &#039;any sector&#039; and return the z-height of whatever sector is at those coordinates.&lt;br /&gt;
:**[[Arrays]] are now supported at the script scope.&lt;br /&gt;
:*[[ANIMDEFS]]:&lt;br /&gt;
:**Added an optional {{c|worldpanning}} flag for camera textures definitions in order to make camera textures pan in world units instead of texture units.&lt;br /&gt;
:**Added {{c|allowdecals}} option to animated doors.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
:**Four new keybinds for DECORATE use with weapons (see {{c|[[A_WeaponReady]]}}&#039;s User states.)&lt;br /&gt;
:**Sprites now support mirroring via negative scales.&lt;br /&gt;
:**Added {{c|{{Property|Player.UseRange}}}} and {{c|{{Property|Player.AirCapacity}}}} [[player properties]].&lt;br /&gt;
:**Actors can now have extreme death/crash states that are damage type specific.&lt;br /&gt;
:**New &amp;lt;code&amp;gt;randompick&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;frandompick&amp;lt;/code&amp;gt; [[DECORATE expressions|non-action functions]].&lt;br /&gt;
:**[[A_Print]], [[A_PrintBold]], and [[A_Log]] can now use &amp;lt;code&amp;gt;$FOO&amp;lt;/code&amp;gt; [[LANGUAGE|translation strings]].&lt;br /&gt;
:**The following functions have been given additional functionalities: {{c|[[A_AlertMonsters]]}}, {{c|[[A_BFGSpray]]}}, {{c|[[A_ChangeVelocity|A_Change]]/[[A_ScaleVelocity|ScaleVelocity]]}}, {{c|[[A_CustomPunch]]}}, {{c|[[A_SetAngle]]}} and {{c|[[A_SetPitch]]}}, {{c|[[A_DamageMaster]]/[[A_DamageChildren|Children]]/[[A_DamageSiblings|Siblings]]}}, {{c|[[A_KillMaster]]/[[A_KillChildren|Children]]/[[A_KillSiblings|Siblings]]}}, {{c|[[A_Log]]}}, {{c|[[A_Print]]}}, {{c|[[A_PrintBold]]}}, {{c|[[A_RadiusGive]]}}, {{c|[[A_Saw]]}}, {{c|[[A_SetScale]]}}, {{c|[[A_SetTics]]}}, {{c|[[A_SpawnItemEx]]}}, {{c|[[A_Teleport]]}}, {{c|[[A_VileAttack]]}}, {{c|[[A_Warp]]}}, {{c|[[A_WeaponReady]]}}.&lt;br /&gt;
:**Added {{Flag|NOFORWARDFALL}}, {{Flag|NOTONAUTOMAP}}, {{Flag|RELATIVETOFLOOR}}, {{Flag|NEVERTARGET}}, {{Flag|NOTELESTOMP}}, {{Flag|ALWAYSTELEFRAG}}, {{Flag|ALLOWPAIN}}, {{Flag|CAUSEPAIN}}, {{Flag|DONTTHRUST}}, {{Flag|BUDDHA}}, {{Flag|FOILBUDDHA}}, {{Flag|MIRRORREFLECT}}, {{Flag|AIMREFLECT}}, {{Flag|THRUREFLECT}}, {{Flag|HARMFRIENDS}}, {{Flag|NOFORWARDFALL}}, {{Flag|HITTARGET}}, {{Flag|HITMASTER}}, {{Flag|HITTRACER}}, {{Flag|WEAPONSPAWN}}, {{Flag|INVENTORY.TOSSED}}, {{Flag|INVENTORY.ALWAYSRESPAWN}}, {{Flag|INVENTORY.TRANSFER}}, and {{Flag|INVENTORY.NOTELEPORTFREEZE}} [[actor flags]].&lt;br /&gt;
:**{{Flag|MTHRUSPECIES}} now works with [[A_BFGSpray]] and rail attacks.&lt;br /&gt;
:**Added {{c|[[A_DamageSelf]]/[[A_DamageTarget|Target]]/[[A_DamageTracer|Tracer]]}}, {{c|[[A_Remove]]/[[A_RemoveSiblings|Siblings]]/[[A_RemoveTarget|Target]]/[[A_RemoveTracer|Tracer]]}}, {{c|[[A_KillTarget]]/[[A_KillTracer|Tracer]]}}, {{c|[[A_DropItem]]}}, {{c|[[A_SetSpeed]]}}, {{c|[[A_SetHealth]]}}, {{c|[[A_ResetHealth]]}}, {{c|[[A_SetFloatBobPhase]]}}, {{c|[[A_SetRoll]]}}, {{c|[[A_SetTeleFog]]}}, {{c|[[A_GiveToChildren|A_GiveTo]]/[[A_TakeFromChildren|TakeFromChildren]]}}, {{c|[[A_GiveToSiblings|A_GiveTo]]/[[A_TakeFromSiblings|TakeFromSiblings]]}}, {{c|[[A_JumpIfHigherOrLower]]}},  {{c|[[A_SetFloatSpeed]]}}, {{c|[[A_SetSpecies]]}}, {{c|[[A_CheckBlock]]}}, {{c|[[A_CheckProximity]]}}, and {{c|[[A_QuakeEx]]}} [[action functions]].&lt;br /&gt;
:**Players with the NODAMAGE flag cannot be telefragged anymore, nor can they take any damage via voodoo dolls.&lt;br /&gt;
:**The amount of health regeneration gained from a {{c|{{Class|PowerRegeneration}}}} powerup can be controlled with the {{c|{{Property|Powerup.Strength}}}} property.&lt;br /&gt;
:**Improved the {{c|[[Actor states#NoDelay|NoDelay]]}} state flag reliability.&lt;br /&gt;
:**Added {{c|Subtract}} render style.&lt;br /&gt;
:**Different types of {{Class|HereticImp|gargoyles}} and {{Class|Mummy|golems}} could infight amongst themselves (original &#039;&#039;[[Heretic]]&#039;&#039; behavior).&lt;br /&gt;
:**Added {{c|[[Actor states#CanRaise|CanRaise]]}} and {{c|[[Actor states#Slow|Slow]]}} actor [[actor states#State keywords|state flags]].&lt;br /&gt;
:*[[LANGUAGE]]:&lt;br /&gt;
:**Externalized &amp;quot;New save game&amp;quot; line for save screen, and [[automap]] statistics display.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
:**Custom colors for both modes of the automap can be set on per-mod basis.&lt;br /&gt;
:**Added {{c|SlowMonsters}}, {{c|HealthFactor}}, {{c|NoInfighting}} and {{c|TotalInfighting}} [[skill definition]]s property.&lt;br /&gt;
:*[[SBARINFO]]:&lt;br /&gt;
:**Extended {{c|[[DrawImage]]}} command.&lt;br /&gt;
:*[[SNDINFO]]:&lt;br /&gt;
:**Fixed incorrect {{Class|Minotaur|Maulotaur}} melee attack sound.&lt;br /&gt;
:*Internals&lt;br /&gt;
:**Removed [[Polymost]] code.&lt;br /&gt;
:**Vast improvements to movement interpolation.&lt;br /&gt;
:**Fixed a lot of leaks and garbage collection issues.&lt;br /&gt;
:**Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.8.1}}{{cs|1a9bc53}} (February 23): {{Forum|t=50968|Release thread}} | {{versionlinks|2|8|1}}&lt;br /&gt;
* {{c|#region}}/{{c|#endregion}} is now supported for text lumps. ZDoom does not do anything with them but ignore them, but this allows editors to treat them however they like.&lt;br /&gt;
* Better [[LANGUAGE|localizability]] of the [[menus]].&lt;br /&gt;
* [[TERRAIN|Terrain]] definitions can now be optional.&lt;br /&gt;
* Walking into an area with a [[REVERBS|reverb effect]] no longer mutes all sound.&lt;br /&gt;
* &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{Class|ArtiTimeBomb|time bomb artifacts}} now spawn in the proper locations.&lt;br /&gt;
* &#039;&#039;Heretic&#039;&#039;&#039;s powered {{Class|Mace|firemace}} balls once again seek their targets.&lt;br /&gt;
* The {{Class|Whirlwind|whirlwind attack}} used by &#039;&#039;Heretic&#039;&#039;&#039;s {{Class|Ironlich}} sometimes fizzled out immediately.&lt;br /&gt;
* Instant [[sector]] movement actions are again instant.&lt;br /&gt;
* Various other minor fixes.&lt;br /&gt;
&lt;br /&gt;
==Post 2.8.1==&lt;br /&gt;
The following additions are available in [[Git]] builds, but never were released officially before ZDoom ceased development.&lt;br /&gt;
&lt;br /&gt;
:* The scripting branch was merged, laying the VM groundwork for [[ZScript]].&lt;br /&gt;
:* [[DECORATE]]: &lt;br /&gt;
:** [[Actor_states|States]]: &lt;br /&gt;
:*** Can contain multiple action functions enclosed in braces&lt;br /&gt;
:*** &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blocks&lt;br /&gt;
:*** return; statement&lt;br /&gt;
:** Functions:&lt;br /&gt;
:*** Added the following non-action functions: [[CountInv]], [[GetDistance]]&lt;br /&gt;
:*** Added the following action functions: [[A_SetChaseThreshold]]&lt;br /&gt;
:* Portals via [[Line_SetPortal]] (visual only; {{Forum|t=46916|original forum thread}})&lt;br /&gt;
&lt;br /&gt;
The final commit to ZDoom was made December 29, 2016.  These features would become part of [[GZDoom version history|GZDoom releases]].&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://sourceforge.net/projects/zdoom/files/ Sourceforge archive] Unofficial mirror for ZDoom versions&lt;br /&gt;
* [https://github.com/doomtech/zdoom-old GitHub archive] Unofficial repository of pre-SVN source code&lt;br /&gt;
[[Category:Nostalgia]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDuke&amp;diff=47035</id>
		<title>ZDuke</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDuke&amp;diff=47035"/>
		<updated>2019-11-27T00:30:48Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Update this article with newly uncovered things&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Starting in 1999, [[User:Randy Heit|Randy]] started looking for ways of using [[Build]]-like features to enhance [[ZDoom]] and outgrow some of the limitations enforced by the use of a BSP algorithm. These forays didn&#039;t pan out entirely, as ZDoom still uses a BSP tree, but some elements (such as [[slopes]], [[cameras]], [[skybox]]es and [[stacked sectors]]) were implemented as a result. Other traces of Build support can be seen in the {{Class|CustomSprite}} actor and a limited ability to load Build maps.&lt;br /&gt;
&lt;br /&gt;
But it also resulted in a ZDoom-based &#039;&#039;Duke Nukem 3D&#039;&#039; [[source port]], entitled &#039;&#039;&#039;ZDuke&#039;&#039;&#039;. ZDuke had one release, based on ZDoom 2.0.43, and was afterwards more or less abandoned. In November 2009, after some people expressed interest in this erstwhile project, Randy uploaded the ZDuke source code, allegedly then based on 2.0.48, to the ZDoom SVN ({{plainlink|[http://zdoom.org/Changelog/1963/files r1963]}}). The thread with this discussion and the announcement of the release was in the &amp;quot;off topic&amp;quot; forum and therefore unfortunately pruned out. However, it mentioned that the ZDuke code is outdated and unsupported.&lt;br /&gt;
&lt;br /&gt;
Following the migration to a [[Git repository]], the old [[Subversion repository]] on mancubus.net was erased, and the source code of ZDuke was taken along with it.&lt;br /&gt;
&lt;br /&gt;
Note that merging ZDoom and ZDuke (even an updated version) is considered more trouble than it would be worth. The internal game logics are too different to be conciliated in a single engine in a streamlined and stable fashion.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*{{forum|p=8100|Forum post with ZDuke binary}}&lt;br /&gt;
*{{forum|t=22268|Forum thread on exploring Build maps in ZDoom}}&lt;br /&gt;
*{{forum|t=22075|Old forum thread asking for adding Duke 3D support}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Nostalgia]][[Category:Software]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47034</id>
		<title>ZDoom version history</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47034"/>
		<updated>2019-11-26T23:09:46Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* 2002 */ Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the evolution of [[ZDoom]] by listing the main features of each version.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!By year&lt;br /&gt;
|[[#1998|1998]] &amp;amp;middot; [[#1999|1999]] &amp;amp;middot; [[#2000|2000]] &amp;amp;middot; [[#2001|2001]] &amp;amp;middot; [[#2002|2002]] &amp;amp;middot; [[#2003|2003]] &amp;amp;middot; [[#2004|2004]] &amp;amp;middot; [[#2005|2005]] &amp;amp;middot; [[#2006|2006]] &amp;amp;middot; [[#2007|2007]] &amp;amp;middot; [[#2008|2008]] &amp;amp;middot; [[#2009|2009]] &amp;amp;middot; [[#2010|2010]] &amp;amp;middot; [[#2011|2011]] &amp;amp;middot; [[#2012|2012]] &amp;amp;middot; [[#2013|2013]] &amp;amp;middot; [[#2014|2014]] &amp;amp;middot; [[#2015|2015]] &amp;amp;middot; [[#2016|2016]]&lt;br /&gt;
|-&lt;br /&gt;
!1.x Branch&lt;br /&gt;
|[[#1.11|1.11]] &amp;amp;middot; [[#1.12|1.12]] &amp;amp;middot; [[#1.13|1.13]] &amp;amp;middot; [[#1.14|1.14]] &amp;amp;middot; [[#1.14a|1.14a]] &amp;amp;middot; [[#1.16|1.16]] &amp;amp;middot; [[#1.17|1.17]] &amp;amp;middot; [[#1.17a|1.17a]] &amp;amp;middot; [[#1.17b|1.17b]] &amp;amp;middot; [[#1.17b1|1.17b1]] &amp;amp;middot; [[#1.17c|1.17c]] &amp;amp;middot; [[#1.18|1.18]] &amp;amp;middot; [[#1.18a|1.18a]] &amp;amp;middot; [[#1.18b|1.18b]] &amp;amp;middot; [[#1.19|1.19]] &amp;amp;middot; [[#1.20|1.20]] &amp;amp;middot; [[#1.21|1.21]] &amp;amp;middot; [[#1.22|1.22]] &amp;amp;middot; [[#1.23 Beta|1.23 Beta]] &amp;amp;middot; [[#1.23 Beta 19|1.23 Beta 19]] &amp;amp;middot; [[#1.23 Beta 20|1.23 Beta 20]] &amp;amp;middot; [[#1.23 Beta 23|1.23 Beta 23]] &amp;amp;middot; [[#1.23 Beta 24|1.23 Beta 24]] &amp;amp;middot; [[#1.23 Beta 25|1.23 Beta 25]] &amp;amp;middot; [[#1.23 Beta 33|1.23 Beta 33]]&lt;br /&gt;
|-&lt;br /&gt;
!2.0 Branch&lt;br /&gt;
|[[#2.0 Beta 13|2.0 Beta 13]] &amp;amp;middot; [[#2.0.47|2.0.47]] &amp;amp;middot; [[#2.0.47i|2.0.47i]] &amp;amp;middot; [[#2.0.48|2.0.48]] &amp;amp;middot; [[#2.0.49|2.0.49]] &amp;amp;middot; [[#2.0.50|2.0.50]] &amp;amp;middot; [[#2.0.51|2.0.51]] &amp;amp;middot; [[#2.0.52|2.0.52]] &amp;amp;middot; [[#2.0.53|2.0.53]] &amp;amp;middot; [[#2.0.54|2.0.54]] &amp;amp;middot; [[#2.0.55|2.0.55]] &amp;amp;middot; [[#2.0.56|2.0.56]] &amp;amp;middot; [[#2.0.57|2.0.57]] &amp;amp;middot; [[#2.0.58|2.0.58]] &amp;amp;middot; [[#2.0.59|2.0.59]] &amp;amp;middot; [[#2.0.60|2.0.60]] &amp;amp;middot; [[#2.0.61|2.0.61]] &amp;amp;middot; [[#2.0.62|2.0.62]] &amp;amp;middot; [[#2.0.63|2.0.63]] &amp;amp;middot; [[#2.0.64|2.0.64]] &amp;amp;middot; [[#2.0.90|2.0.90]] &amp;amp;middot; [[#2.0.91|2.0.91]] &amp;amp;middot; [[#2.0.92|2.0.92]] &amp;amp;middot; [[#2.0.93|2.0.93]] &amp;amp;middot; [[#2.0.94|2.0.94]] &amp;amp;middot; [[#2.0.95|2.0.95]] &amp;amp;middot; [[#2.0.96|2.0.96]] &amp;amp;middot; [[#2.0.97|2.0.97]] &amp;amp;middot; [[#2.0.98|2.0.98]]&lt;br /&gt;
|-&lt;br /&gt;
!2.1 Branch&lt;br /&gt;
|[[#2.1.0|2.1.0]] &amp;amp;middot; [[#2.1.1|2.1.1]] &amp;amp;middot; [[#2.1.2|2.1.2]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.4|2.1.4]] &amp;amp;middot; [[#2.1.5|2.1.5]] &amp;amp;middot; [[#2.1.6|2.1.6]] &amp;amp;middot; [[#2.1.7|2.1.7]]&lt;br /&gt;
|-&lt;br /&gt;
!Modern&lt;br /&gt;
|[[#2.2.0|2.2.0]] &amp;amp;middot; [[#2.3.0|2.3.0]] &amp;amp;middot; [[#2.3.1|2.3.1]] &amp;amp;middot; [[#2.4.0|2.4.0]] &amp;amp;middot; [[#2.4.1|2.4.1]] &amp;amp;middot; [[#2.5.0|2.5.0]] &amp;amp;middot; [[#2.6.0|2.6.0]] &amp;amp;middot; [[#2.6.1|2.6.1]] &amp;amp;middot; [[#2.7.0|2.7.0]] &amp;amp;middot; [[#2.7.1|2.7.1]] &amp;amp;middot; [[#2.8.0|2.8.0]] &amp;amp;middot; [[#2.8.1|2.8.1]] &amp;amp;middot; [[#Next version|Next version]]&lt;br /&gt;
|}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==1998==&lt;br /&gt;
;{{LE|1.11}} (March 6): {{Plainlink|[http://www.zdoom.org/files/old/zdoom111.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom111s.zip Source]}}&lt;br /&gt;
:Initial release, based on the [[NTDoom]] and [[ATB Doom]]. The version numbering follows from the Doom source code version numbering of 1.10.&lt;br /&gt;
:* Works under both Windows 95 and NT 4.0, although it works best under Win95.&lt;br /&gt;
:* Limited support for the Pause key. It works with some keyboards on some machines.&lt;br /&gt;
:* Supports any resolution compatible with your DirectDraw drivers.&lt;br /&gt;
:* Look up/down à la &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
:* Translucency for selected objects.&lt;br /&gt;
:* Has a [[console]] with most of the functionality of &#039;&#039;Quake&#039;&#039;&#039;s. The only significant missing feature is Tab-completion.&lt;br /&gt;
:* Notarget [[cheat]].&lt;br /&gt;
:* Command to {{CCMD|D|kill}} all [[monster]]s in a level or yourself.&lt;br /&gt;
:* Can play [[MUS]], [[MIDI]], and MOD music.&lt;br /&gt;
:* Selected sounds are played in surround sound.&lt;br /&gt;
:* Doors that need keys to open are highlighted on the [[automap]].&lt;br /&gt;
:* Automap now shows various statistics in addition to the level name.&lt;br /&gt;
:* True keybindings. Bind any key to any command or sequence of commands.&lt;br /&gt;
:* [[Intermission]] screen can now display your stats using absolute values rather than percentages.&lt;br /&gt;
:* A new more general [[demo]] format.&lt;br /&gt;
;{{LE|1.12}} (April 7): {{Plainlink|[http://www.zdoom.org/files/old/zdoom112.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom112s.zip Source]}}&lt;br /&gt;
:* Some visual enhancements were made such as centering the menus and drawing borders around the status bar in higher resolutions.&lt;br /&gt;
:* [[Console command]]s can now be specified on the [[command line parameters|command line]].&lt;br /&gt;
:* Removed some of [[Doom]]&#039;s limits such as VisPlanes, VisSprites, and 2S [[HOM]].&lt;br /&gt;
:* Rewrote some of the inner loops in assembly. (There was some assembly in 1.11, but it never got used.)&lt;br /&gt;
:* New [[CVAR]]s relating to mouse movement. ({{CVAR|C|invertmouse}}, {{CVAR|C|m_pitch}}, {{CVAR|C|m_yaw}}, etc.)&lt;br /&gt;
:* Mouse movement doesn&#039;t get sluggish in high resolutions.&lt;br /&gt;
:* [[Automap]] colors are customizable.&lt;br /&gt;
:* Automap overlay and rotation are available.&lt;br /&gt;
:* Eight [[crosshair]]s.&lt;br /&gt;
:* Shoot up/down.&lt;br /&gt;
:* Alt-Tab and Pause work properly on all machines now.&lt;br /&gt;
:* The {{CCMD|P|+jump}} command now works.&lt;br /&gt;
:* 25% and 75% translucency levels in addition to 50%. The translucency tables now get saved to disk, too, so they only need to be calculated once instead of every time the game is run.&lt;br /&gt;
:* The [[console]] [[font]] is now editable.&lt;br /&gt;
:* Near complete support for [[DeHackEd]] patches. (Only monster infighting and changing a few minor text strings are not supported.)&lt;br /&gt;
:* Sky height and position is now fixed for high resolutions. (It still wraps if you look up, but at least now if you look straight ahead, it never will.)&lt;br /&gt;
:* Weapon sprite is always drawn at the correct location. (It was being drawn too low in some resolutions like 400x300.)&lt;br /&gt;
:* New [[options menu]], which includes a key configuration screen.&lt;br /&gt;
:* [[Stealth monster]]s.&lt;br /&gt;
:* New full-screen [[HUD]].&lt;br /&gt;
:* And a few other things not worth mentioning separately.&lt;br /&gt;
;{{LE|1.13}} (May 26):{{forum|t=4|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom113.zip Build]}}&lt;br /&gt;
:* Fixed some major bugs (that crashed the game) and other lesser bugs that were just annoying.&lt;br /&gt;
:* 3-D collisions for walking under and standing on other things.&lt;br /&gt;
:* The status bar can be scaled to the full width of the screen.&lt;br /&gt;
:* The screen mode can be selected from a menu inside the game.&lt;br /&gt;
:* ZDoom can run in a window on the desktop.&lt;br /&gt;
:* Better [[DeHackEd]] support. Only a few text replacements are not supported. Everything else works (including monster infighting which I haven&#039;t seen in any other port).&lt;br /&gt;
:* New features for level designers (see editing.txt for details):&lt;br /&gt;
::*Specification of next and secret maps on a per-map basis.&lt;br /&gt;
::*Specify sky texture on a per-map basis.&lt;br /&gt;
::*Use any lump in a wad as music for a map.&lt;br /&gt;
::*Give maps a custom name without using a DeHackEd patch.&lt;br /&gt;
::*Maps can be named anything (not just E?M? or MAP??).&lt;br /&gt;
::*Place any messages of any length between any two maps.&lt;br /&gt;
::*&#039;&#039;[[Hexen]]&#039;&#039;-style fog (of any color).&lt;br /&gt;
::*[[Ambient sound]]s &amp;amp;mdash; either point like &#039;&#039;Quake&#039;&#039; or global like &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;Hexen&#039;&#039;.&lt;br /&gt;
::*Automatic use of [[DeHackEd]] patches in PWADs.&lt;br /&gt;
::*No more {{dw|tutti-frutti}} for short textures of certain heights.&lt;br /&gt;
::*zdoom.wcf file for use with [[WadAuthor]].&lt;br /&gt;
:* Rocket jumping. (One very important note about this: You need to be *in the air* when your rocket explodes for rocket jumping to work. This is different from &#039;&#039;Quake&#039;&#039;, and I will probably rewrite it for the next release.)&lt;br /&gt;
:* Dynamic [[palette flash]]es.&lt;br /&gt;
:* Supports stretching skies for [[freelook]].&lt;br /&gt;
:* Larger freelook range.&lt;br /&gt;
:* Added tab-completion to the [[console]].&lt;br /&gt;
:* zdoom.cfg is now the name of the default [[configuration file]] since [[Doom Legacy]] decided to start using config.cfg.&lt;br /&gt;
:* French language support. (Set {{CVAR|C|language}} CVAR to &amp;quot;french&amp;quot;.)&lt;br /&gt;
:* Player obituaries.&lt;br /&gt;
:* Unlimited ammo cheat (use g_unlimitedammo cvar).&lt;br /&gt;
;{{LE|1.14}} (July 22): {{forum|t=5|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom114-src.zip Source]}}&lt;br /&gt;
:Bugs fixed:&lt;br /&gt;
:* The bunny scroller at the end of E3M8 no longer crashes the game.&lt;br /&gt;
:* The IDKFA [[cheat]] gives the proper amount of armor again.&lt;br /&gt;
:* Demo recording works again.&lt;br /&gt;
:* Telefragging works again.&lt;br /&gt;
:* Picking up the {{Class|InvulnerabilitySphere|invulnerability sphere}} displays the correct colors now.&lt;br /&gt;
:* [[DeHackEd]] patches containing text replacements no longer crash the game.&lt;br /&gt;
:* Printing a string containing &amp;quot;%s&amp;quot; to the console and then changing the video mode will no longer crash the game.&lt;br /&gt;
:* Chat mode finally works again.&lt;br /&gt;
:* If MIDAS can&#039;t initialize, you can still play the game but without sound.&lt;br /&gt;
:* {{Class|Pistol}} and {{Class|chaingun}} sounds no longer cut out when there are lots of {{Class|ZombieMan|zombie men}} shooting their pistols at you.&lt;br /&gt;
:* Mouse input should no longer be so jerky under Windows NT.&lt;br /&gt;
:* The [[crosshair]] is finally accurate for aiming.&lt;br /&gt;
:* [[Autoaim]] is properly remembered each time you start ZDoom.&lt;br /&gt;
:* Switches in &#039;&#039;[[the Ultimate Doom]]&#039;&#039; that aren&#039;t also in the shareware Doom properly change their appearance when switched.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Players can choose their own colors and names. ([[Player setup]] menu is included).&lt;br /&gt;
:* 8-player support (untested but should work).&lt;br /&gt;
:* Miscellaneous internal code changes have been borrowed from the [[Boom]] source. (This does *not* mean that ZDoom supports Boom levels yet.)&lt;br /&gt;
:* [[Cheat]]s, chat messages, and gamestate changes are now recorded in demos.&lt;br /&gt;
:* Single-player demos recorded with ZDoom are generally smaller than before.&lt;br /&gt;
:* &#039;&#039;Quake 2&#039;&#039;-style deathmatch flags.&lt;br /&gt;
:* Cheats (optionally) work in multiplayer games.&lt;br /&gt;
:* Mode X is now supported under Win95, so all the machines that couldn&#039;t run ZDoom in 320x200 before should be able to now.&lt;br /&gt;
:* Fewer conditions result in error messages that quit the game. (If you have &#039;&#039;[[Heretic]]&#039;&#039;, try this: Start ZDoom with -file heretic and go to the console and type &amp;quot;{{CCMD|D|map}} E1M1&amp;quot;.)&lt;br /&gt;
:* Keys can repeat in the [[console]].&lt;br /&gt;
:* The console and chat mode now use the localized keymap set with the Keyboard control panel.&lt;br /&gt;
:* Messages at the top of the screen now break along between words instead of in the middle of them.&lt;br /&gt;
:* Added {{c|-config}} [[command line parameter]].&lt;br /&gt;
:* Added {{c|-fastdemo}} command line parameter.&lt;br /&gt;
:* Added new {{CCMD|D|screenshot}} command. (bound to &amp;quot;Print Screen&amp;quot; key by default)&lt;br /&gt;
:* Added &#039;&#039;Quake&#039;&#039;-like {{CCMD|P|+showscores}} command. (bound to &amp;quot;\&amp;quot; key by default)&lt;br /&gt;
:* [[Alias]]es are now saved in the config file.&lt;br /&gt;
:* Added support for multiple pitched sounds like in very old version of Doom. (Use the snd_pitched cvar to turn it on and off.)&lt;br /&gt;
;{{LE|1.14a}} (July 27): {{forum|t=6|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114a.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoomsrc114-114a.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:Bugs fixed are:&lt;br /&gt;
:* No more crashing about freeing a pointer without ZONEID when changing levels.&lt;br /&gt;
:* Skies wider than 256 pixels are drawn correctly.&lt;br /&gt;
:* [[Monster]]s&#039; heights are once again the same as they were in id&#039;s original &#039;&#039;[[Doom]]&#039;&#039;, so certain areas work properly again.&lt;br /&gt;
:* Monsters shouldn&#039;t teleport into each other anymore.&lt;br /&gt;
:* Improved support for international keyboards.&lt;br /&gt;
:* The skill level chosen for a new game is no longer ignored if the new game is started while a demo is playing.&lt;br /&gt;
:Cosmetic changes:&lt;br /&gt;
:* No more &amp;quot;sv_gravity changed to...&amp;quot;, &amp;quot;skill changed to...&amp;quot;, etc. messages in single player games.&lt;br /&gt;
:* Activating the [[player setup]] [[menu]] automatically stops any playing [[demo]]s, since it doesn&#039;t work properly while they play.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} don&#039;t go flying away when exploding anymore.&lt;br /&gt;
:* Added def_patch cvar to automatically load a DeHackEd patch each time the game is started.&lt;br /&gt;
:* ZDoom [[savegame]]s now use the name zdoomsv?.dsg instead of doomsav?.dsg.&lt;br /&gt;
:This version also includes some preliminary [[Boom]] support as I started integrating some of the Boom source code with ZDoom:&lt;br /&gt;
:* Medusa fix.&lt;br /&gt;
:* Openings limit removed.&lt;br /&gt;
:* Removed limit on switches and animations.&lt;br /&gt;
:* Added support for Boom-like [[ANIMATED]] and [[SWITCHES]] lumps in PWADs.&lt;br /&gt;
:* Added support for Boom-style scrollers (including conveyors).&lt;br /&gt;
:* Added partial [[deep water]] support.&lt;br /&gt;
;{{LE|1.16}} (December 22): {{forum|t=13|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom116.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom116-src.zip Source]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* No more limit on size of [[savegame]]s or [[demo]]s.&lt;br /&gt;
:* Screen resolutions above 320x200 are now the proper brightness (they were too bright before.)&lt;br /&gt;
:* Improved the brightness of the [[console]] [[font]].&lt;br /&gt;
:* {{Class|BulletPuff|Bullet puffs}} can show up on the floor and ceiling and not just walls.&lt;br /&gt;
:* Missile weapons can trigger gun activation lines.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} now bounce around as much as they did in original &#039;&#039;[[Doom]]&#039;&#039;. (They were too &amp;quot;inert&amp;quot; in 1.14.)&lt;br /&gt;
:* If a demo is being recorded, quitting the game normally will save the demo to disk. (Previously, you had to use the stop command to do this.)&lt;br /&gt;
:New features for players:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* Mouse wheel support and {{CCMD|P|weapnext}}/{{CCMD|P|weapprev}} commands.&lt;br /&gt;
:* Doublebindings.&lt;br /&gt;
:* Better analog joystick support.&lt;br /&gt;
:* 180 degree turn command for keyboarders.&lt;br /&gt;
:* Damage done by a rocket to its shooter is {{CVAR|C|splashfator|configurable}} and defaults to the original Doom behavior.&lt;br /&gt;
:* User-configurable gender. (Even though I don&#039;t have any new player sounds, at least the [[obituaries]] are gender-aware. :-)&lt;br /&gt;
:* [[Teamplay]] mode.&lt;br /&gt;
:* {{CVAR|C|sv_nobfgaim|New CVAR}} to disable manual aiming of the BFG to prevent someone from shooting it at the floor and quickly triggering tracer damage before.&lt;br /&gt;
:* Maps no longer need to have as many deathmatch starts as there are players in a deathmatch game.&lt;br /&gt;
:* Support for [[Doom Legacy]] [[skin]]s.&lt;br /&gt;
:* Rewrote the [[MIDI]]/[[MUS]] code so that it has a working volume control.&lt;br /&gt;
:* Many more [[console command]]s and [[CVARs]].&lt;br /&gt;
:New features for editors:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* [[Obituaries]] are configurable with a .bex patch.&lt;br /&gt;
:* [[Monster path]]s&lt;br /&gt;
:* [[Colored lighting]]&lt;br /&gt;
:* [[Fog]] can be applied to only part of a level instead of all of it.&lt;br /&gt;
:* Per-sector [[gravity]] settings.&lt;br /&gt;
:* Support for up to 256 [[ambient sound]]s (as opposed to the limit of 64 in earlier versions).&lt;br /&gt;
:* [[Sector damage]] adjustable from between 0-255 points of damage.&lt;br /&gt;
:* Changeable [[camera]] views.&lt;br /&gt;
:* The following editing features that were introduced in &#039;&#039;[[Hexen]]&#039;&#039; are also available in ZDoom:&lt;br /&gt;
::*Most line specials take arguments that modify their behavior.&lt;br /&gt;
::*[[ACS]] scripting.&lt;br /&gt;
::*[[Hub]]s.&lt;br /&gt;
::*[[Earthquake]]s.&lt;br /&gt;
::*[[Dormant]] monsters.&lt;br /&gt;
::*Trigger events to happen on monster deaths.&lt;br /&gt;
::*[[Floor_Waggle|&amp;quot;Waggling&amp;quot; floors]].&lt;br /&gt;
::*[[Pillar_Build|Pillar builders]].&lt;br /&gt;
::*Push activation lines (walking into a wall can trigger an event).&lt;br /&gt;
::*[[Thing_Spawn|Thing spawning]] (e.g. for traps/gifts).&lt;br /&gt;
&lt;br /&gt;
==1999==&lt;br /&gt;
January 6 of this year saw the first release of the [[Raven Software]] source code.&lt;br /&gt;
;{{LE|1.17}} (February 17): {{forum|t=15|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/zdos117c.zip DOS build]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* [[Multiplayer]] games with [[monster]]s do not crash.&lt;br /&gt;
:* Player corpses do not levitate and then fall down when a player respawns in multiplayer games.&lt;br /&gt;
:* Using {{CCMD|P|togglemap}} outside of a game will not crash.&lt;br /&gt;
:* Monsters stop attacking their target once it is dead.&lt;br /&gt;
:* EV_StopPlat() does not get stuck in an infinite loop if there are [[moving platform]]s.&lt;br /&gt;
:* Partially invisible players are drawn the proper colors (instead of green) if {{CVAR|R|r_drawfuzz}} is 0.&lt;br /&gt;
:* If you are invisible, so are your muzzle flashes.&lt;br /&gt;
:* Trying to execute a non-existent [[ACS|script]] will not crash.&lt;br /&gt;
:* Using a [[ChangeCamera]] special from an open script will not crash.&lt;br /&gt;
:* The [[FloorAndCeiling_RaiseByValue]] and [[FloorAndCeiling_LowerByValue]] now behave like &#039;&#039;[[Hexen]]&#039;&#039;&#039;s.&lt;br /&gt;
:* Using {{c|{{param|-loadgame}}}} from the [[command line]] works.&lt;br /&gt;
:* Fixed a memory leak during generation of the translucency tables.&lt;br /&gt;
:* In high resolutions, weapon sprites meet the bottom of the screen.&lt;br /&gt;
:* Sounds will not cut out mysteriously when there is no reason for them to do so.&lt;br /&gt;
:* Sounds will also not be stopped immediately when a thing is removed, so explosion sounds will play to their full length.&lt;br /&gt;
:* Things can make more than one sound at once.&lt;br /&gt;
:* The [[deathmatch]] [[scoreboard]] is aligned properly at high resolutions.&lt;br /&gt;
:* {{CCMD|P|Spynext}} and {{CCMD|P|spyprev}} work properly instead of leaving the [[status bar]] &amp;quot;lagging behind&amp;quot; the player being viewed.&lt;br /&gt;
:* The {{Class|Infrared|light-amp}} does not disable colored lighting.&lt;br /&gt;
:* The [[sky]] gets {{dw|invulnerability colormap bug|inverted}} when using the invulnerability powerup.&lt;br /&gt;
:* Implemented better z-checking code (from &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039;).&lt;br /&gt;
:* {{Class|PainElemental|Pain elementals}} will spawn one {{Class|LostSoul|lost soul}} at a time instead of two inside of each other.&lt;br /&gt;
:* Bex patches that use thing mnemonics really do work now, and unknown bit messages aren&#039;t generated for regular [[DeHackEd]]  patches.&lt;br /&gt;
:* Linedef type 134 for regular &#039;&#039;[[Doom]]&#039;&#039;/[[Boom]] maps requires a red key for activation (it was being improperly translated to require a blue one).&lt;br /&gt;
:* Monsters can activate secret lines when they cross them. (See &#039;&#039;[[Doom II]]&#039;&#039; MAP08).&lt;br /&gt;
:* The player extreme death sound is used.&lt;br /&gt;
:* When a player leaves a network game, their body is removed instead of being left empty.&lt;br /&gt;
:* 0-length sounds are treated as empty sounds instead of sounds 4 gigs long.&lt;br /&gt;
:* [[Skin]]s that replaced player sounds with sounds in the [[IWAD]] work.&lt;br /&gt;
:* Muzzle flashes do not light up foggy areas, and fullbright sprites stay shrouded in fog.&lt;br /&gt;
:* Alphanumeric keys no longer automatically repeat on the console.&lt;br /&gt;
:* Wads such as gothicdm2 that used new flats in addition to the ones in the IWAD with the regular doom.exe work.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Significant speed improvements on modern processors.&lt;br /&gt;
:* [[Armor]] and [[key]]s are shown on the fullscreen HUD.&lt;br /&gt;
:* Colored text.&lt;br /&gt;
:* A {{CCMD|P|playdemo}} console command.&lt;br /&gt;
:* A [[chasecam]].&lt;br /&gt;
:* A [[particle]] system.&lt;br /&gt;
:* An optional [[railgun]] to show off the particle system. (Start the game with {{c|{{param|-deh}} [[railgun.bex]]}} if you want to use it.)&lt;br /&gt;
:New features interesting for wad authors:&lt;br /&gt;
:* [[Polyobject]]s.&lt;br /&gt;
:* [[Sound sequence]]s.&lt;br /&gt;
:* WAVE files can be used as sound lumps without converting them to DMX&#039;s format first.&lt;br /&gt;
:* A sky can be specified to not be stretched even if it is shorter than 200 pixels.&lt;br /&gt;
:* {{Class|Spark}}s.&lt;br /&gt;
:* {{Class|ParticleFountain|Particle fountain}}s.&lt;br /&gt;
:* Parallax skies.&lt;br /&gt;
:* Some new [[DeHackEd]] thing flags from &#039;&#039;[[Hexen]]&#039;&#039; (bobbing, reflective, etc.).&lt;br /&gt;
;{{LE|1.17a}} (February 21): {{forum|t=16|Release thread}}&lt;br /&gt;
:Mostly minor bug fixes, released because [[Herian 2]] needed some of those fixes. There are a few new features, however:&lt;br /&gt;
:* If you have a skins/ directory in the same directory as zdoom.exe, every wad file in it will be automatically loaded when the game starts. This way, you don&#039;t have to load your [[skin]]s by hand to use them.&lt;br /&gt;
:* New formatting options for text [[print]]ed using [[ACS]].&lt;br /&gt;
:* A [[A_MonsterRail|code pointer]] to make monsters fire a railgun.&lt;br /&gt;
;{{LE|1.17b}} (March 17): {{forum|t=21|Release thread}}&lt;br /&gt;
:Some minor bug fixes over 1.17 and 1.17a. It also loads faster because the sprite dimensions are not cached until they are actually needed. There are also some other internal changes in preparation for supporting &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, but those don&#039;t affect the user yet.&lt;br /&gt;
;{{LE|1.17b1}} (March 19): {{forum|t=22|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|1.17c}} (May 5): {{forum|t=28|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom117c.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom117c-src.zip Source]}}&lt;br /&gt;
:* Fixed game saving crashes on maps with [[wind]]/[[current]] effects.&lt;br /&gt;
:* In [[Boom]] [[deep water]] sectors, the underwater light and fog colors can now be set independently of the area above water.&lt;br /&gt;
:* Added nojump, allowjump, nofreelook, and allowfreelook keywords for use in [[MAPINFO]] lumps to control [[jumping]] and [[free look]].&lt;br /&gt;
:* The random number seed now changes each time you run the program.&lt;br /&gt;
;{{LE|1.18 test 1}} (June 30): {{forum|t=33|Release thread}}&lt;br /&gt;
:* Tweaked the optimized renderer for fifth-generation processors.&lt;br /&gt;
:* Added the following specials:&lt;br /&gt;
::*[[Line_AlignFloor]]&lt;br /&gt;
::*[[Line_AlignCeiling]]&lt;br /&gt;
::*[[Sector_SetRotation]]&lt;br /&gt;
::*[[Sector_SetCeilingPanning]]&lt;br /&gt;
::*[[Sector_SetFloorPanning]]&lt;br /&gt;
::*[[Sector_SetCeilingScale]]&lt;br /&gt;
::*[[Sector_SetFloorScale]]&lt;br /&gt;
:* Added an additional parameter to the [[Transfer_Heights]] special.&lt;br /&gt;
:* Switched to the [http://sourceforge.net/projects/openptc/ OpenPTC] library for display.&lt;br /&gt;
:* Converted lots of code to an object-oriented C++ architecture.&lt;br /&gt;
;{{LE|1.18 test 2}} (July 1): {{forum|t=36|Release thread}}&lt;br /&gt;
:* Fixed vertical aim clipping ({{Class|BFG9000|BFG}} works again).&lt;br /&gt;
:* Fixed [[monster]] wandering.&lt;br /&gt;
:* Maps with mapthings of type 0 no longer generate warning messages.&lt;br /&gt;
:* [[Crusher]]s that do no damage no longer act as if they inflict pain to actors.&lt;br /&gt;
:* The [[alias]] command lists aliases again.&lt;br /&gt;
:* Aliases are saved to the [[config file]] again.&lt;br /&gt;
;{{LE|1.18 test 3}} (July 2): {{forum|t=37|Release thread}}&lt;br /&gt;
:* Removed unnecessary display mode switches.&lt;br /&gt;
:* Created a DCanvas class to encapsulate most 2D rendering.&lt;br /&gt;
;{{LE|1.18 test 4}} (July 3): {{forum|t=39|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;Bad DCanvas::CopyRect&amp;quot; problem introduced in test3.&lt;br /&gt;
:* Fixed [[sound sequence]]s that should not be cut off when stopped (such as the standard doors).&lt;br /&gt;
;{{LE|1.18 test 5}} (July 6): {{forum|t=40|Release thread}}&lt;br /&gt;
:* Fixed a potential infinite loop that was introduced in [[#1.18 test 1|118test1]].&lt;br /&gt;
:* Delayed the initial execution of [[CVAR]] callbacks.&lt;br /&gt;
:* Added &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{wp|Xiaolin Wu&#039;s line algorithm|anti-aliased Wu line drawer}} to the [[automap]].&lt;br /&gt;
;{{LE|1.18 test 6}} (July 10): {{forum|t=41|Release thread}}&lt;br /&gt;
:* Rewrote the {{wp|Xiaolin Wu&#039;s line algorithm|Wu line drawer}} to look better (especially in overlay mode).&lt;br /&gt;
:* [[Sky stretching|Stretched skies]] now get stretched horizontally as well as vertically.&lt;br /&gt;
:* Did an initial integration of the [[Cajun Bot]] 0.71 code.&lt;br /&gt;
;{{LE|1.18 test 7}} (July 12):&lt;br /&gt;
:* Fixed handling of maps with scrolling walls.&lt;br /&gt;
:* Single player works again. In test 6, all games were considered either [[coop]] or [[deathmatch]].&lt;br /&gt;
:* Disabled the [[bot]] thinking code in single player games, so you don&#039;t suffer a performance hit when not using bots.&lt;br /&gt;
:* Added some performance counters accessible through the {{CCMD|D|stat}} command.&lt;br /&gt;
;{{LE|1.18 test 8}} (July 20): {{forum|t=43|Release thread}}&lt;br /&gt;
:* Fixed a crash problem with the &amp;quot;burn&amp;quot; [[screen wipe]].&lt;br /&gt;
:* Fixed a crash problem with playing non-assigned [[sound sequence]]s.&lt;br /&gt;
:* Fixed a crash problem related to trying to shutdown the music subsystem twice.&lt;br /&gt;
:* If you try to add more coop [[bot]]s than there are coop starts, the extra bot leaves quietly instead of ending the game.&lt;br /&gt;
:* {{CVAR|C|sv_weapondrop|Weapondrop}} is now a &amp;quot;server&amp;quot; CVAR, which it should have been in the first place.&lt;br /&gt;
:* Changed the nodetable file format to be more compact.&lt;br /&gt;
:* Bots can now be recorded in demos.&lt;br /&gt;
:* Bots work in [[multiplayer]] games. Still buggy. Spawning bots can cause consistency failures, and they can start spinning wildly.&lt;br /&gt;
;{{LE|1.18 test 9}} (August 9): {{forum|t=44|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;wild&amp;quot; [[bot]] spinning problem.&lt;br /&gt;
:* Commands like {{CCMD|D|changemap}} that could make network games go out of sync should work properly now. The reason they would do that is closely related to the reason that the bots would start spinning.&lt;br /&gt;
:* Finished the serializer. Now savegames work. [[Hub]]s don&#039;t, because I haven&#039;t written the player travelling code yet.&lt;br /&gt;
:* Various other code cleanup.&lt;br /&gt;
;{{LE|1.18 test 10}} (August 14):&lt;br /&gt;
:* Reimplemented [[hub]] travel.&lt;br /&gt;
:* Optimized R_MapPlane slightly.&lt;br /&gt;
:* Added {{CCMD|D|fov}} command.&lt;br /&gt;
:* Added vertical sub-pixel accuracy to the renderer.&lt;br /&gt;
:* Added searches for an [[IWAD]] in the current directory, $DOOMWADDIR, and $HOME.&lt;br /&gt;
;{{LE|1.18}} (September 5): {{forum|t=46|Release thread}}&lt;br /&gt;
:* Replaced the older [[Bots|Cajun]] 0.71 with Cajun 0.97.&lt;br /&gt;
:* Fixed handling of [[status bar]] [[mugshot|faces]] with [[skin]]s that provide them.&lt;br /&gt;
:* Added [[swimmable water]].&lt;br /&gt;
:* Messages printed to the middle of the screen also print to the [[console]].&lt;br /&gt;
:* Skill and other server [[CVARs]] get saved in [[savegame]]s again.&lt;br /&gt;
:* Added liquid [[texture warping]].&lt;br /&gt;
:* Bad [[MAPINFO]] lumps generate error messages instead of hanging.&lt;br /&gt;
:* Realized that it&#039;s impossible to guarantee that all object pointers will be valid without some effort, so FArchive saves DObject objects as NULL objects now instead of aborting with an error.&lt;br /&gt;
:* Added the [[built-in ACS functions]] [[LocalAmbientSound]], [[ActivatorSound]], and [[SetLineMonsterBlocking]].&lt;br /&gt;
:* Added a {{Class|SecretTrigger|thing}} that does nothing but count toward the number of [[secret]]s.&lt;br /&gt;
:* Added a {{CCMD|D|fly}} mode.&lt;br /&gt;
:* Finally implemented the {{CCMD|P|+moveup}} and {{CCMD|P|+movedown}} commands.&lt;br /&gt;
;{{LE|1.18a}} (September 12): {{forum|t=47|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed [[liquid warping]] temporarily stopping when changing levels.&lt;br /&gt;
:* {{CCMD|P|+mlook|+/-mlook}} commands do not generate unknown command messages.&lt;br /&gt;
:* Fixed support for maps with &amp;gt;10 deathmatch starts. Thanks to Roman Hatsiev.&lt;br /&gt;
:* Fixed support for the special &amp;quot;maps&amp;quot; EndGame? in MAPINFO lumps.&lt;br /&gt;
:* {{Class|TeleportDest2|Teleport destination (no gravity)}} now works as intended.&lt;br /&gt;
:* Hopefully fixed [[savegame]] problems.&lt;br /&gt;
:* [[Bots]] are restored from savegames.&lt;br /&gt;
:* Fixed keyboard turning speed when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* Network commands get executed only once when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* In sectors with [[damaging floor]]s and swimmable [[deep water]], the damage will also be applied while the player is swimming and not just when the player is on the ground.&lt;br /&gt;
;{{LE|1.18b}} (September 15): {{forum|t=48|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom118b.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom118b-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed crash when saving games with more than 1024 objects.&lt;br /&gt;
:* Fixed crash when loading a game without starting a new one first.&lt;br /&gt;
:* Reduced the size and frequency of pregame network packets, under the assumption that problems people were having using 1.18 on the Internet are a result of limited modem bandwidth.&lt;br /&gt;
;{{LE|1.19}} (November 24): {{forum|t=53|Release thread}} | {{forum|t=54|Source/Linux build release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom-1.19.tar.gz Source]}}&lt;br /&gt;
:First official Linux build.&lt;br /&gt;
:* [[DeHackEd]] patches that set an actor&#039;s {{Property|DeathSound|death sound}} to 0 without removing the [[A_Scream]] call no longer crash.&lt;br /&gt;
:* Fixed sync problems when playing with {{Class|BulletPuff|bullet puffs}} as [[particle]]s vs as sprites.&lt;br /&gt;
:* Fixed friction when walking on the bottom of swimmable water.&lt;br /&gt;
:* Added Jeffrey Cuenco&#039;s fixes to get {{c|{{param|-host}}}} and {{c|{{param|-join}}}} [[command line parameters]] to work properly.&lt;br /&gt;
:* Fixed [[Boom]] [[Generic_Door|generalized locked doors]] so that the open/close type will actually close.&lt;br /&gt;
:* Added pointer tracking and cleanup. This should fix the occasional crashes when saving games and various other anomalies.&lt;br /&gt;
;{{LE|1.20}} (November 25): {{forum|t=56|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed saving, reloading, and then resaving [[savegame|games]] when travelling between levels in a [[hub]].&lt;br /&gt;
:* Fixed saving of [[ACS]] scripts scheduled to occur on a future level.&lt;br /&gt;
;{{LE|1.21}} (November 26): {{forum|t=57|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom121.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom121-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed problems with thinkers removing themselves and causing other thinkers to not get a chance to think.&lt;br /&gt;
:* Added {{CVAR|R|hud_scale}} CVAR&lt;br /&gt;
;{{LE|1.22}} (November 12): {{forum|t=60|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom122.zip Windows build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22-i386.tar.gz Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom122-src.zip Windows source] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22.tar.gz Linux source]}}&lt;br /&gt;
:* [[Scroll_Texture_Both]] and [[TranslucentLine]] specials can now be used from [[ACS]].&lt;br /&gt;
:* Fixed compiler-dependent [[CVAR]] ordering during [[netgame]] arbitration.&lt;br /&gt;
:* Fixed certain [[polyobject]] movement combinations that would not stop even though they were supposed to.&lt;br /&gt;
:* Did some cleanup for Alpha processors.&lt;br /&gt;
&lt;br /&gt;
==2000==&lt;br /&gt;
June 20 of this year saw the public release of the [[Build]] source code.&lt;br /&gt;
;{{LE|1.23 Beta}} (May 10): {{forum|t=64|Release thread}}&lt;br /&gt;
:*Partial &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; support.&lt;br /&gt;
:*Windows build uses [[FMOD Ex|FMOD]] instead of [http://www.s2.org/midas/ MIDAS].&lt;br /&gt;
&lt;br /&gt;
==2001==&lt;br /&gt;
;{{LE|1.23 Beta 19}} (March 9): {{forum|t=74|Release thread}}&lt;br /&gt;
:Added new [[camera]] types.&lt;br /&gt;
:Added [[LANGUAGE|string localization]].&lt;br /&gt;
:Added [[decal]]s.&lt;br /&gt;
:Added [[slope]]s.&lt;br /&gt;
:Added [[skybox]]es.&lt;br /&gt;
;{{LE|1.23 Beta 20}} (March 11): {{forum|t=75|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 23}} (April 9): {{forum|t=76|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 24}} (April 12): {{forum|t=77|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 25}} (August 15): {{forum|t=81|Release thread}}&lt;br /&gt;
:Linux build now uses SDL&lt;br /&gt;
;{{LE|1.23 Beta 28}} (September 17): {{forum|t=83|Release thread}}&lt;br /&gt;
:Added a few [[decal]]-related [[CVARs]].&lt;br /&gt;
;{{LE|1.23 Beta 28a}} (December 13): {{forum|t=88|Release thread}}&lt;br /&gt;
&lt;br /&gt;
==2002==&lt;br /&gt;
;{{LE|1.23 Beta 33}} (February 5): {{Forum|t=90|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-linux.bz2 Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-src.tar.bz2 Source]}}&lt;br /&gt;
:Many fixes and rendering optimization.&lt;br /&gt;
:*Increased &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039; support&lt;br /&gt;
:*Improved [[decal]]s.&lt;br /&gt;
:*Added support for the [[Bloodbath announcer]]&lt;br /&gt;
:*Added [[underwater]] [[REVERBS|reverb]] effect.&lt;br /&gt;
:*Added [[Line_Horizon]] effect.&lt;br /&gt;
:*Added {{Class|ScriptedMarine|scripted marines}} and several [[ACS]] enhancements.&lt;br /&gt;
:*Added support for [[DeePsea]]&#039;s [[patch|tall patches]].&lt;br /&gt;
:*Added [[slope]] things.&lt;br /&gt;
:*Changed [[license]] for original ZDoom source code to a &amp;quot;BSD-ish one&amp;quot;.&lt;br /&gt;
;{{LE|2.0 Beta 13}} (August 27):&lt;br /&gt;
:*Further increased &#039;&#039;Heretic&#039;&#039;/&#039;&#039;Hexen&#039;&#039; support.&lt;br /&gt;
:*Added [[PNG]] support for screenshots. [[Savegame]]s are actually PNG files now.&lt;br /&gt;
:*Added [[ZDBSP|internal nodebuilder]], made it [[polyobject]]-aware.&lt;br /&gt;
:*Added SNES SPC music support.&lt;br /&gt;
:*Added a loader for [[Build]] maps.&lt;br /&gt;
:*Added support for double- and quadruple-resolution flats (128x128 and 256x256).&lt;br /&gt;
:*Added ACS [[libraries]].&lt;br /&gt;
:*Added support for up to 8 mouse buttons.&lt;br /&gt;
:*Added the very first version of [[DECORATE]].&lt;br /&gt;
:*Removed [[MBF]]&#039;s torque simulation because of the problems it caused.&lt;br /&gt;
;{{LE|2.0.21}} (December 10)&lt;br /&gt;
;{{LE|2.0.22}} (December 11)&lt;br /&gt;
;{{LE|2.0.23}}, {{LE|2.0.24}} (December 12)&lt;br /&gt;
;{{LE|2.0.25}} (December 13)&lt;br /&gt;
;{{LE|2.0.26}}, {{LE|2.0.27}} (December 19)&lt;br /&gt;
;{{LE|2.0.28}} (December 24)&lt;br /&gt;
;{{LE|2.0.29}} (December 28)&lt;br /&gt;
&lt;br /&gt;
==2003==&lt;br /&gt;
;{{LE|2.0.30}} (January 1)&lt;br /&gt;
;{{LE|2.0.32}}, {{LE|2.0.33}} (January 2)&lt;br /&gt;
;{{LE|2.0.34}} (January 3)&lt;br /&gt;
;{{LE|2.0.35}} (January 8)&lt;br /&gt;
;{{LE|2.0.36}} (January 10)&lt;br /&gt;
;{{LE|2.0.37}} (January 23)&lt;br /&gt;
;{{LE|2.0.38}} (January 24)&lt;br /&gt;
;{{LE|2.0.39}} (February 2)&lt;br /&gt;
;{{LE|2.0.40}} (February 8)&lt;br /&gt;
;{{LE|2.0.41}} (February 10)&lt;br /&gt;
;{{LE|2.0.42}} (February 12)&lt;br /&gt;
;{{LE|2.0.43}} (April 8)&lt;br /&gt;
;{{LE|2.0.44}} (April 9)&lt;br /&gt;
;{{LE|2.0.45}} (April 9)&lt;br /&gt;
;{{LE|2.0.46}} (April 14)&lt;br /&gt;
;{{LE|2.0.47}} (April 26): {{Forum|t=101|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/47.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47i}} (June 9): {{plainlink|[http://www.zdoom.org/files/lars/47i.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47j}} (July 7):&lt;br /&gt;
;{{LE|2.0.47l}} (July 21):&lt;br /&gt;
;{{LE|2.0.47o}} (August 5):&lt;br /&gt;
;{{LE|2.0.47p}} (August 6):&lt;br /&gt;
;{{LE|2.0.48}} (October 23):&lt;br /&gt;
:*Interchangeability between [[flat]]s and [[texture]]s.&lt;br /&gt;
;{{LE|2.0.49}}, {{LE|2.0.50}} (October 26)&lt;br /&gt;
;{{LE|2.0.51}} (October 30)&lt;br /&gt;
;{{LE|2.0.52}} (October 31)&lt;br /&gt;
;{{LE|2.0.53}} (November 16)&lt;br /&gt;
;{{LE|2.0.54}}, {{LE|2.0.55}} (November 23)&lt;br /&gt;
;{{LE|2.0.56}} (November 25)&lt;br /&gt;
;{{LE|2.0.57}} (November 26)&lt;br /&gt;
;{{LE|2.0.58}}, {{LE|2.0.59}} (December 7)&lt;br /&gt;
;{{LE|2.0.60}} (December 8)&lt;br /&gt;
&lt;br /&gt;
==2004==&lt;br /&gt;
;{{LE|2.0.61}} (January 22) &lt;br /&gt;
;{{LE|2.0.62}} (February 7):&lt;br /&gt;
:*Added modern [[DECORATE]] support.&lt;br /&gt;
;{{LE|2.0.63}} (February 10): {{plainlink|[http://www.zdoom.org/files/lars/63.cab Build] {{!}} [http://www.zdoom.org/files/lars/63src.cab Source]}}&lt;br /&gt;
:*Added custom monsters to DECORATE.&lt;br /&gt;
;{{LE|2.0.64}} (June 8)&lt;br /&gt;
;{{LE|2.0.90}} (October 21):&lt;br /&gt;
:*Added &#039;&#039;[[Strife]]&#039;&#039; support and new inventory system&lt;br /&gt;
;{{LE|2.0.91}} (October 22)&lt;br /&gt;
;{{LE|2.0.92}} (October 31)&lt;br /&gt;
;{{LE|2.0.93}} (November 3)&lt;br /&gt;
;{{LE|2.0.94}} (November 19)&lt;br /&gt;
;{{LE|2.0.95}} (December 24): {{plainlink|[http://www.zdoom.org/files/lars/95changes.html Changelog]}}&lt;br /&gt;
:*Added [[camera]] textures to [[ANIMDEFS]] and [[SetCameraToTexture]]&lt;br /&gt;
:*Improved [[console]] tab completion, added Ctrl-X shortcut to clear the console&#039;s command line&lt;br /&gt;
:*Several &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039; fixes&lt;br /&gt;
:*Merged in Jim&#039;s [[ACS]] character array [[print]]ing support. &lt;br /&gt;
:*Added the [[polymost]] clipper.&lt;br /&gt;
:*Added support for 16:10 and 5:4 aspect ratios and letterboxing.&lt;br /&gt;
:*Added [[scope|static local variables]], [[Log]], [[SetAmmoCapacity]] and [[GetAmmoCapacity]] to [[ACS]].&lt;br /&gt;
;{{LE|2.0.96}} (December 25): {{plainlink|[http://www.zdoom.org/files/lars/96.cab Build] {{!}} [http://www.zdoom.org/files/lars/96src.cab Source] {{!}} [http://www.zdoom.org/files/lars/96changes.html Changelog]}}&lt;br /&gt;
:*Added [[TITLEMAP]]&lt;br /&gt;
&lt;br /&gt;
==2005==&lt;br /&gt;
;{{LE|2.0.97}} (September 28): {{forum|t=8060|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/97.cab Build] {{!}} [http://www.zdoom.org/files/lars/97src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*The [[LANGUAGE]] lump is now text-based.&lt;br /&gt;
:*Added IMF [[music format]] support.&lt;br /&gt;
:*Ported [[SetActorAngle]] and [[SetLineBlocking|BLOCK_RAILING]] from the [[ZDoom Community Build]].&lt;br /&gt;
:*Added [[Polymost]] visualization code from [[Build]].&lt;br /&gt;
:*Gave {{Flag|DONTMORPH}} flag to {{Class|Cyberdemon}}, {{Class|SpiderMastermind}}, {{Class|AlienSpectre1}}, {{Class|Crusader}}, {{Class|Programmer}}, and {{Class|Inquisitor}}.&lt;br /&gt;
:*Made {{Class|Puffy}} and projectiles spawned by [[A_LastZap]] deal no damage.&lt;br /&gt;
:*[[Teleport_NewMap]] can now be used within a [[TITLEMAP]] in order to make it possible to use different maps as the title map.&lt;br /&gt;
:*Merged in Graf Zahl&#039;s [[Caverns of Darkness]] patch.&lt;br /&gt;
:*Added [[Polymost]] wireframe mode.&lt;br /&gt;
:*Added {{CCMD|O|writeopl}} console command.&lt;br /&gt;
:*[[UsePuzzleItem]] can now be a [[thing]]&#039;s [[special]].&lt;br /&gt;
:*Missiles with negative damage now give you health.&lt;br /&gt;
;{{LE|2.0.98}} (November 3): {{forum|t=8460|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/98.cab Build] {{!}} [http://www.zdoom.org/files/lars/98src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
&lt;br /&gt;
==2006==&lt;br /&gt;
February 16 of this year saw the first commit to the [[SVN]] repository.&lt;br /&gt;
;{{LE|2.1.0}}{{rev|204}} (June 21): {{forum|t=10550|Release thread}} | {{plainlink|[http://zdoom.org/files/old/zdoom-2.1.0.zip Build] {{!}} [http://zdoom.org/files/old/zdoom-2.1.0-src.7z Source]}}&lt;br /&gt;
:*Added several things from [[ZDoom Community Build]] (unofficial 2.0.96x) and [[GZDoom]], including custom [[DECORATE]] [[weapon]]s.&lt;br /&gt;
;{{LE|2.1.1}}{{rev|226}} (June 25): {{forum|t=10630|Release thread}} | {{versionlinks|2|1|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|2.1.2}}{{rev|257}} (July 17): {{forum|t=10895|Release thread}} | {{versionlinks|2|1|2}}&lt;br /&gt;
:*Added custom [[player class]]es.&lt;br /&gt;
:*Added &amp;quot;replaces&amp;quot; keyword for [[DECORATE]].&lt;br /&gt;
:*[[IWAD selection box]] now remembers the last choice.&lt;br /&gt;
:*Added [[A_RadiusThrust]] to DECORATE.&lt;br /&gt;
:*Added [[ThingCountName]] and  [[SpawnSpotFacing]] to [[ACS]].&lt;br /&gt;
:*Changed additive scroller options into a [[compatibility options|compatibility flag]].&lt;br /&gt;
;{{LE|2.1.3}}{{rev|265}} (July 18): {{forum|t=10930|Release thread}} | {{versionlinks|2|1|3}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Sounds can be specified by full path now in [[SNDINFO]] and [[S_SKIN]].&lt;br /&gt;
:* [[DECORATE]] replacement is more universal.&lt;br /&gt;
:* Added NecroMage&#039;s submission for bitwise/shift assignment operators for [[ACS]]. (Requires [[ACC]] 1.42+.)&lt;br /&gt;
:* Changed PlayAttacking2 to always use the melee state instead of different implementations per player and hard coding it to MissileState+1. Also changed PlayAttacking for the {{Class|HereticPlayer}} to use the same animation as PlayAttacking2. Now the special handling for &#039;&#039;[[Heretic]]&#039;&#039; in the FireWeapon functions can be removed.&lt;br /&gt;
;{{LE|2.1.4}}{{rev|273}} (July 29): {{forum|t=11063|Release thread}} | {{versionlinks|2|1|4}}&lt;br /&gt;
:*Added partial emulation of [[Boom]]&#039;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.&lt;br /&gt;
:*Added a {{CVAR|C|queryiwad_key}} cvar to control which key can force the [[IWAD selection box]] to appear. It can be either &amp;quot;shift&amp;quot; or &amp;quot;control&amp;quot;. Any other value will disable its functionality.&lt;br /&gt;
;{{LE|2.1.5}}{{rev|321}} (September 2): {{forum|t=11466|Release thread}} | {{versionlinks|2|1|5}}&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInfo]], [[ChangeLevel]], [[SectorDamage]], [[ReplaceTextures]]&lt;br /&gt;
:*New [[DECORATE]] functions: [[A_PlaySoundEx]], [[A_StopSoundEx]]&lt;br /&gt;
:*The {{CVAR|C|vid_nowidescreen}} cvar can be used to disable widescreen aspect ratio correction.&lt;br /&gt;
:*[[A_SpawnDebris]] and [[A_SpawnItem]] can optionally transfer the caller&#039;s color translation to the newly spawned item.&lt;br /&gt;
:*New morphing artifacts can be created by subclassing the {{Class|MorphProjectile}} and {{Class|MorphedMonster}} classes.&lt;br /&gt;
:*[[A_FireCustomMissile]] has a new parameter: Previously it always aimed straight ahead and altered the projectile&#039;s angle according to the resulting direction. If the 6th parameter is 1 now it will aim at the specified angle directly.&lt;br /&gt;
:*Users can now define their own [[TEXTCOLO|text colors]], and there are several new standard ones.&lt;br /&gt;
:*The fourth parameter of [[Polyobj_StartLine]] and the fifth parameter of [[Polyobj_ExplicitLine]] now set the line&#039;s ID.&lt;br /&gt;
:*DECORATE explosion parameters are no longer considered deprecated.&lt;br /&gt;
:*Calling [[Radius_Quake]], [[Thing_Activate]], or [[Thing_Remove]] with a [[TID]] of 0 now operates the activator.&lt;br /&gt;
:*Strife&#039;s {{Class|PhosphorousFire}} now does completely thrustless damage.&lt;br /&gt;
:*An actor&#039;s damage in DECORATE can now be specified as an expression that is evaluated each time it needs to do damage. To do this, enclose it within parentheses, and the normal Doom damage calculation will be bypassed.&lt;br /&gt;
:*Passing a negative script number to the {{CCMD|D|puke}} [[console command]] now runs the script with [[ACS_ExecuteAlways]] instead of [[ACS_Execute]].&lt;br /&gt;
:*[[Polyobject]]s defined with [[Polyobj_ExplicitLine]] are no longer limited to 64 segs.&lt;br /&gt;
:*Starting a new game or reloading an old one no longer resets the [[chasecam]].&lt;br /&gt;
:*The [[automap]] background is now a regular texture.&lt;br /&gt;
:*Added support for many [[image format]]s for use as textures: [[PNG]], JPEG, PCX, TGA, DDS.&lt;br /&gt;
:*Numerous bugfixes.&lt;br /&gt;
;{{LE|2.1.6}}{{rev|346}} (October 2): {{forum|t=11758|Release thread}} | {{versionlinks|2|1|6}}&lt;br /&gt;
:*Scaled 2D images are supported.&lt;br /&gt;
:*Dehacked max health usage defaults to consistency with other ([[Boom]]) ports.&lt;br /&gt;
:*A &#039;&#039;font&#039;&#039; parameter was added to [[A_Print]].&lt;br /&gt;
:*Quoted strings in [[DECORATE]] can no longer span multiple lines without using the escape character (\) at the end of each line. This makes it easier to spot places where you unintentionally left off a closing quote and got an error several lines later.&lt;br /&gt;
:*A new {{CCMD|O|writeini}} console command can be used to save [[the ini]] at any time, with any file name.&lt;br /&gt;
:*If the ini is write-protected when you quit, an error dialog now opens to let you know your settings could not be saved and gives you the opportunity to unprotect it.&lt;br /&gt;
:*Multiple stat displays can be enabled at once.&lt;br /&gt;
:*Several bugfixes.&lt;br /&gt;
;{{LE|2.1.7}}{{rev|524}} (October 31): {{forum|t=12015|Release thread}} | {{versionlinks|2|1|7}}&lt;br /&gt;
:*Alias commands can now do parameter substitution. If you have %x, where x is some number, in an alias command, it will be replaced by the appropriately numbered parameter passed when the alias is used, with %0 being replaced by the name of the alias itself.&lt;br /&gt;
:*A new {{Class|MapMarker}} actor has been added that you can use to mark points of interest on the [[automap]]. If its first argument is zero, the map marker itself appears on the automap, otherwise it is drawn on top of any actor with a [[TID]] matching that argument. If the second argument is one, then the map marker will only be appear if the player has previously seen the sector it is in. You can use [[Thing_Activate]] and [[Thing_Deactivate]] on markers to turn them on and off. To make custom markers, all you need to do is subclass MapMarker with [[DECORATE]].&lt;br /&gt;
:*Added the [[SetActorPitch]] [[ACS]] command to set an actor&#039;s pitch.&lt;br /&gt;
:*You can pass multiple jump targets to the [[A_Jump]] [[DECORATE]] function, and it will choose one of them at random if it jumps.&lt;br /&gt;
:*Using a [[TID]] of 0 with [[Thing_Deactivate]], [[SetActorAngle]], [[Thing_Spawn]]*, [[Thing_Projectile]]*, and [[Thing_Move]] will now operate on the activator.&lt;br /&gt;
:*The fifth argument for [[Line_SetIdentification]] can be used to set the high byte of the line ID.&lt;br /&gt;
:*Added a {{Property|CameraHeight}} [[DECORATE]] property for actors.&lt;br /&gt;
:*Added special death states for [[projectile]]s hitting actors. If missiles hit a non-bleeding actor, they try the Crash state first. If that doesn&#039;t exist or the actor is bleeding, they try the XDeath state next. If they hit anything else or neither of the two states are defined, they use the normal death state.&lt;br /&gt;
:*Added a {{Flag|PIERCEARMOR}} [[DECORATE]] flag for projectiles.&lt;br /&gt;
:*The {{CCMD|D|morphme}} [[console command]] can be given an optional argument to specify which class to morph into.&lt;br /&gt;
:*Miscellaneous bugfixes.&lt;br /&gt;
&lt;br /&gt;
==2007==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
==2008==&lt;br /&gt;
;{{LE|2.2.0}}{{rev|748}} (February 15): {{forum|t=16272|Release thread}} | {{versionlinks|2|2|0}}&lt;br /&gt;
:*This is the final version of ZDoom to fully support Windows 95 since later versions switched to [[FMOD Ex]].&lt;br /&gt;
:*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 pain and death sounds.&lt;br /&gt;
:*Custom damage color for [[palette flash]]es per [[player class]].&lt;br /&gt;
:*Custom state labels. New states can be defined in [[DECORATE]].&lt;br /&gt;
:*The [[SBARINFO]] lump for creating status bar and other [[HUD]]s.&lt;br /&gt;
:*[[Skill definition]] in [[MAPINFO]], with many properties.&lt;br /&gt;
:*Most thing functions treat a [[TID]] of 0 as the activator now.&lt;br /&gt;
:*Support for [[ENDOOM]] screens and the graphical or semi-graphical [[startup lumps|screens]] from &#039;&#039;[[Heretic]]&#039;&#039;, &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;.&lt;br /&gt;
:*Several things backported from [[Skulltag]], including powerups and flags for increased port compatibility:&lt;br /&gt;
::*{{Class|PowerDrain|Drain}}, {{Class|PowerHighJump|HighJump}} and {{Class|PowerRegeneration|Regeneration}} runes as powerups and used specific player sounds for their sound effects.&lt;br /&gt;
::*PowerQuadDamage and PowerQuarterDamage as more customizable {{Class|PowerDamage}} and {{Class|PowerProtection}}. These new powerups allow free customization of the damage modification per damage type by inheriting from these classes and setting specific values. Such derived damage/protection powerups will be considered as separate powers so that for example a QuadDamage and a DoubleDamage item can be stacked which would result in 8x damage.&lt;br /&gt;
::*{{Property|Armor.MaxBonus}} and {{Property|Armor.MaxBonusMax}} properties to create armor bonuses that increases the max amount that can be given by other armor items.&lt;br /&gt;
::*Custom F1 help screen [[MAPINFO]] option&lt;br /&gt;
::*Added REDMAP and GREENMAP [[palette blend]]s.&lt;br /&gt;
::*Imported SAME_SPAWN_SPOT [[DM flag]]&lt;br /&gt;
::*Pickup sprite for the {{Class|pistol}}.&lt;br /&gt;
::*Imported {{CVAR|R|r_maxparticles}} CVAR.&lt;br /&gt;
:*New [[Direct3D]] code for better Vista support.&lt;br /&gt;
:*Autoload sections in [[the ini]].&lt;br /&gt;
:*[[GZDoom]]&#039;s [[alternate HUD]].&lt;br /&gt;
:*Custom blood on an actor-by-actor basis into [[DECORATE]].&lt;br /&gt;
:*Smart [[autoaim]] code to prevent the targeting of friendly monsters.&lt;br /&gt;
:*New {{Flag|NOBLOODDECALS}} flag that prevents bleeding actors from spawning blood [[decal]]s.&lt;br /&gt;
:*Customizable border textures. They are defined with the [[MAPINFO]] keyword &#039;bordertexture&#039; and are settable per map.&lt;br /&gt;
:*Custom label support for [[A_Chase]] and [[A_VileChase]]&lt;br /&gt;
:*{{Property|Player.RunHealth}} property to expose the {{Class|StrifePlayer}}&#039;s behavior of not being able to run when its [[health]] is below 10.&lt;br /&gt;
:*Customizable gravity per actor&lt;br /&gt;
:*New {{CCMD|D|summonfoe}} console command, which is analogous to {{CCMD|D|summonfriend}} but forces the summoned creature to be hostile instead.&lt;br /&gt;
:*Added two new [[MAPINFO]] flags to control what actor activates impact lines: {{c|MissileShootersActivateImpactLines}} (the current behavior) and {{c|MissilesActivateImpactLines}} (the original &#039;&#039;[[Hexen]]&#039;&#039; behavior).&lt;br /&gt;
:*More player water sounds: {{c|*dive}} (head goes below water), {{c|*surface}} (your head goes back above water), {{c|*gasp}} (getting air back after starting to drown)&lt;br /&gt;
:*Using &amp;quot;*&amp;quot; with [[ACS]]&#039;s music commands will play the level&#039;s default music set in [[MAPINFO]]&lt;br /&gt;
:*Two new CVARs ({{CVAR|C|win_x}} and {{CVAR|C|win_y}}) that keep track of the window position when not playing in fullscreen mode&lt;br /&gt;
:*Key bindings can now be [[print]]ed with [[ACS]]&lt;br /&gt;
:*{{Flag|INVENTORY.KEEPDEPLETED}} flag for inventory items to keep them in the player&#039;s inventory even when they have been used up. If the item also has an inventory bar icon, it will be drawn darkened while it is depleted.&lt;br /&gt;
:*{{Flag|INVENTORY.IGNORESKILL}} flag for ammo that prevents the given quantity from being modified by the skill level&lt;br /&gt;
:*{{Property|Player.AttackZOffset}} for {{Class|PlayerPawn}}. This is the offset from the center of the player at which their attacks are fired and scales according to their crouched height.&lt;br /&gt;
:*Added a new [[SetActorState]] [[ACS]] function.&lt;br /&gt;
:*{{Flag|CANUSEWALLS}} flag which allows a [[monster]] to activate &#039;use&#039; specials like doors. This flag is on by default for any monster, which was the previous behavior.&lt;br /&gt;
:*[[Thing_Stop]] action special.&lt;br /&gt;
:*New {{Flag|FORCERADIUSDMG}} flag that allows exploding items to hurt boss monsters.&lt;br /&gt;
:*New {{Flag|USESPECIAL}} flag that allows using things to execute their [[special]]s.&lt;br /&gt;
:*[[Compatibility option]] to restore the original behavior of the {{Class|PowerInvisibility|Invisibility}} powerup&lt;br /&gt;
:*Telefrag option added to [[A_SpawnItemEx]].&lt;br /&gt;
:*Added option to [[A_Chase]] that prevents the monster from moving.&lt;br /&gt;
:*New {{c|allowrespawn}} MAPINFO option.&lt;br /&gt;
:*New [[scoreboard]]s.&lt;br /&gt;
:*New [[A_LookEx]] function.&lt;br /&gt;
:*Customizable [[team]]s through the [[TEAMINFO]] lump.&lt;br /&gt;
:*New {{CCMD|D|take}} console command to do the opposite of {{CCMD|D|give}}.&lt;br /&gt;
:*[[UseInventory]]/[[UseActorInventory]] [[ACS]] functions.&lt;br /&gt;
:*New [[A_CustomBulletAttack]] &#039;&#039;aimfacing&#039;&#039; parameter&lt;br /&gt;
:*New [[A_PlaySoundEx]] attenuation parameter.&lt;br /&gt;
:*[[Automap]] markers are stored in [[savegame]]s now.&lt;br /&gt;
:*&#039;No respawn&#039; [[DM flag]] which prevents a [[player]] from respawning after they have died.&lt;br /&gt;
:*&#039;Keep frags gained&#039; [[DM flag]] which allows you to choose whether you want to reset the [[frag]]s of each player next level or not.&lt;br /&gt;
:*Sector_Outside [[sector type]] which forces outside [[fog]] regardless of ceiling texture.&lt;br /&gt;
:*User-defined [[crosshair]]s in the [[Display options]] menu. See xhairs.txt in zdoom.pk3.&lt;br /&gt;
:*Generic log display that can show &#039;&#039;[[Strife]]&#039;&#039;&#039;s log messages in all games regardless of the current game, active [[status bar]] and [[HUD]] mode.&lt;br /&gt;
:*Support for stenciling actors with {{Property|RenderStyle}} property.&lt;br /&gt;
:*.TXT files can now be loaded by simply dragging-and-dropping them on top of zdoom.exe.&lt;br /&gt;
:*&#039;Ice&#039; [[translation]] is accessible from [[DECORATE]].&lt;br /&gt;
:*[[Teamplay]] MAPINFO option.&lt;br /&gt;
:*[[ACS]] script type [[RETURN]]. These are executed by players who return to a map they&#039;ve previously been to.&lt;br /&gt;
&lt;br /&gt;
==2009==&lt;br /&gt;
;{{LE|2.3.0}}{{rev|1455}} (March 1): {{Forum|t=21116|Release thread}} | {{versionlinks|2|3|0}}&lt;br /&gt;
:*[[Universal Doom Map Format]] (UDMF) support.&lt;br /&gt;
:*New garbage collector to improve performances on resource-intensive maps.&lt;br /&gt;
:*Sound uses [[FMOD Ex]] instead of FMOD. Among the benefits, [[REVERBS|reverbs]] can now work on any sound card, not just those that support EAX.&lt;br /&gt;
:*SPC is now a first-class [[music format]] that no longer requires an external DLL to play.&lt;br /&gt;
:*Support for [[Vavoom]]&#039;s [[slope|vertex height things]] and [[Eternity Engine]]&#039;s [[3D middle texture]]s.&lt;br /&gt;
:*[[Linked sectors]], to ensure that multiple [[sector]]s can move consistently in sync.&lt;br /&gt;
:*[[TEXTURES]] lump for text-based texture definitions.&lt;br /&gt;
:*[[Automatic compatibility|MD5-based recognition of maps]] that require certain [[compatibility options]] to work (e.g., {{dw|Strain}} map 7 which relied on the {{dw|Spechits overflow}} bug) to apply these settings transparently.&lt;br /&gt;
:*[[Freedoom]], [[Chex Quest]], and [[Chex Quest 3]] are recognized as [[IWAD]]s and can be selected in the [[IWAD selection box]]. New aliases are available for IWADs, too.&lt;br /&gt;
:*New [[MAPINFO]] format (the old is still supported of course) with a more robust syntax.&lt;br /&gt;
:*Custom [[map translator]]s for Doom-format maps, which can be specified in MAPINFO.&lt;br /&gt;
:*[[Strife]] dialogues now work in multiplayer.&lt;br /&gt;
:*Setting up slots for custom weapons no longer requires a [[KEYCONF]] lump, the limit of 8 weapons per slot is removed.&lt;br /&gt;
:*Added the &amp;quot;{{Class|RandomSpawner|random spawner}}&amp;quot; actor, customizable {{Class|BossEye}}s, {{Class|CustomBridge}}, {{Class|FastProjectile}}.&lt;br /&gt;
:*Many new [[compatibility options]], including one to have [[projectile]]s pass through solid decorations.&lt;br /&gt;
:*More flexible use of [[lightning]] in a map.&lt;br /&gt;
:*The two different [[crushing mode]]s (Doom and Hexen) are now selectable per action.&lt;br /&gt;
:*Customizable pickup flash with {{Property|Inventory.PickupFlash}} property.&lt;br /&gt;
:*[[DeHackEd]] music name replacement has been restored.&lt;br /&gt;
:*Rewritten DECORATE parser, more robust and featuring better error reporting. All actors are defined in DECORATE now.&lt;br /&gt;
:*Functions to handle [[weapon]] reloading through DECORATE.&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInput]], [[GetActorProperty|Get]]/[[SetActorProperty]].&lt;br /&gt;
:*Many actions are now more flexible through optional parameters, for example [[A_Die]] can specify damage type to send to a custom Death state, [[A_KeenDie]] can affect tags other than 666, [[A_Fire]] can specify a vertical offset, and so on.&lt;br /&gt;
:*Many, many new [[DMFlags]] for [[cooperative]] plays, such as having to kill all [[monster]]s before leaving the map or seeing the other [[player]]s on the [[automap]].&lt;br /&gt;
:*Enhanced &#039;&#039;[[Strife]]&#039;&#039; support.&lt;br /&gt;
:*Various and sundry bug fixes.&lt;br /&gt;
;{{LE|2.3.1}}{{rev|1480}} (March 15): {{Forum|t=21296|Release thread}} | {{versionlinks|2|3|1}}&lt;br /&gt;
:Mostly a bugfix release.&lt;br /&gt;
:*Fixes the bug that prevented you from switching weapons after respawning in multiplayer.&lt;br /&gt;
:*Fixes a performance regression introduced in 2.3.0.&lt;br /&gt;
:*Adds support for zip/pk3 files with LZMA and BZip2 compression. (7-Zip is one program that can create such files.)&lt;br /&gt;
:*Addresses a few other niggles.&lt;br /&gt;
&lt;br /&gt;
==2010==&lt;br /&gt;
;{{LE|2.4.0}}{{rev|2075}} (January 1): {{Forum|t=24602|Release thread}} | {{versionlinks|2|4|0}}&lt;br /&gt;
:*Rewritten [[archive format|archive]] management code.&lt;br /&gt;
::*Added support for new [[archive format]]s: 7z, &#039;&#039;Quake&#039;&#039; PAK, &amp;quot;Shrink&amp;quot; and &amp;quot;Implode&amp;quot;.&lt;br /&gt;
::*Removed loading limit of 65 535 lumps. The archive manager can now handle up to 4 294 967 295 lumps.&lt;br /&gt;
:*Rewritten mouse and keyboard handling input under Windows.&lt;br /&gt;
:*Reimplemented and improved support for gamepads and joysticks.&lt;br /&gt;
:*Added truecolor display of the [[HUD]], [[menu]]s and other 2D elements outside the game world when using [[Direct3D]] on Windows.&lt;br /&gt;
:*Replaced SNES_SPC with Game Music Emu, greatly increasing the number of supported emulated [[music format]]s.&lt;br /&gt;
:*Added compiling support for {{wp|Macintosh}} systems.&lt;br /&gt;
:*Added [[IWAD]] recognition for Ultimate [[Freedoom]], [[Action Doom 2: Urban Brawl|Action Doom 2]], [[Blasphemer]] and [[Harmony]].&lt;br /&gt;
:*Added {{param|-noautoload}}, {{param|-norun}}, {{param|-stdout}}, and {{param|-warpwipe}} command line parameters.&lt;br /&gt;
:*Added {{CVAR|C|save_dir}} and {{CVAR|R|d3d_antilag}} console variables.&lt;br /&gt;
:*Added optional parameters to {{CCMD|D|summon}} commands, added {{CCMD|D|summonmbf}} command.&lt;br /&gt;
:*Added {{CCMD|D|info}} command to obtain very verbose debugging information on actors.&lt;br /&gt;
:*Buddha mode&lt;br /&gt;
:*Added [[score]] and {{Class|ScoreItem}}s.&lt;br /&gt;
:*Added [[GameInfo definition]]s to [[MAPINFO]].&lt;br /&gt;
:*Changed random seed initialization so that it uses the system&#039;s cryptographically secure random number generator, if available, instead of the current time. Also changed the random number generator from Lee Killough&#039;s algorithm to the SFMT607 variant of the {{wp|Mersenne twister}}.&lt;br /&gt;
:*Disabled custom [[DEHSUPP]] lumps.&lt;br /&gt;
:*Added &#039;damage&#039; to the actor variables exported to [[DECORATE expressions|DECORATE&#039;s expression evaluator]].&lt;br /&gt;
:*Added &#039;frandom&#039; DECORATE function to the expression evaluator, which is like &#039;random&#039; but for floating point values instead of integers.&lt;br /&gt;
:*Added Raven color set and dagger-like vector sprite to the [[automap]].&lt;br /&gt;
:*Added desatured [[translation]]s.&lt;br /&gt;
:*[[SBARINFO]]: Added the ability to center things with fullscreenoffsets enabled, added [[underwater]] stats.&lt;br /&gt;
:*[[MAPINFO]]: Added [no_]grinding_polyobj, resetinventory properties, added EndTitle option for {{c|nextmap}}.&lt;br /&gt;
:*Added actor replacement to [[skill definition]]s.&lt;br /&gt;
:*Exported many hardcoded values to [[GameInfo definition]]s.&lt;br /&gt;
:*Added [[Line_SetBlocking]] and [[Sector_SetPortal]] specials.&lt;br /&gt;
:*Added {{c|defaultterrain}} section to [[TERRAIN]].&lt;br /&gt;
:*Added new [[earthquake]] functions.&lt;br /&gt;
:*Added [[user variable]]s.&lt;br /&gt;
:*[[DECORATE]]: Added {{Property|Species}}, {{Property|Activation}}, {{Property|PainThreshold}}, {{Property|PushFactor}}, {{Property|WeaveIndexXY}}, {{Property|WeaveIndexZ}}, {{Property|Powerup.Strength}}, {{Property|Player.MugShotMaxHealth}}, {{Property|Inventory.InterHubAmount}} properties.&lt;br /&gt;
:*Turned old bounce flags into {{Property|BounceType}} property.&lt;br /&gt;
:*Added {{Property|DamageFactor}} handling to Armors.&lt;br /&gt;
:*Added &amp;quot;BLUEMAP&amp;quot; [[palette blend]] for {{Property|Powerup.Color}}, and added {{Property|Powerup.Colormap}} for custom colormaps.&lt;br /&gt;
:*Added {{Flag|MOVEWITHSECTOR}}, {{Flag|NOBOSSRIP}}, {{Flag|THRUACTORS}}, {{Flag|THRUSPECIES}}, {{Flag|DONTSEEKINVISIBLE}}, {{Flag|FORCEPAIN}}, {{Flag|NOFEAR}}, {{Flag|BUMPSPECIAL}}, {{Flag|STEPMISSILE}}, {{Flag|NOTELEPORT}}, {{Flag|NOTRIGGER}},  {{Flag|AVOIDMELEE}}, {{Flag|JUMPDOWN}}, {{Flag|SCREENSEEKER}}, {{Flag|INVENTORY.PERSISTENTPOWER}}, {{Flag|WEAPON.AMMO_CHECKBOTH}}, {{Flag|WEAPON.NOAUTOAIM}} flags.&lt;br /&gt;
:*Added [[A_CheckCeiling]], [[A_MonsterRefire]], [[A_Weave]], [[A_JumpIfTargetInSight]], [[A_ZoomFactor]], [[A_SetAngle]], [[A_SetPitch]], [[A_ScaleVelocity]], [[A_ChangeVelocity]], [[A_SetCrosshair]], [[A_RemoveSiblings]], [[A_RaiseMaster]]/[[A_RaiseChildren|Children]]/[[A_RaiseSiblings|Siblings]], [[A_Log]], [[A_PrintBold]], [[A_SetArg]], [[A_SetSpecial]], [[A_Blast]] codepointers.&lt;br /&gt;
:*Added parameters to [[A_PodPain]], [[A_MakePod]], [[A_MLightningAttack]], [[A_M_Saw]], [[A_FireCustomMissile]], [[A_FadeOut]], [[A_Explode]], [[A_WeaponReady]], [[A_VileAttack]], [[A_Mushroom]], [[A_SeekerMissile]], [[A_KillChildren]]/[[A_KillMaster|Master]]/[[A_KillSiblings|Siblings]], [[A_CustomRailgun]] and [[A_RailAttack]], added SXF_TRANSFERPOINTERS flag to [[A_SpawnItemEx]] and several flags to [[A_Respawn]].&lt;br /&gt;
:*Imported {{Class|PowerDoubleFiringSpeed}} from [[Skulltag]], added {{Class|PowerInfiniteAmmo}}.&lt;br /&gt;
:*{{Class|PowerProtection}} and {{Class|PowerInvisibility}} can now be used to give certain flags to the player. Other enhancements to PowerInvisibility, such as changing the player&#039;s {{Property|RenderStyle}}.&lt;br /&gt;
:*Customizable mage lightning, sapphire wand, and {{Class|SpawnShot}} spawn lists.&lt;br /&gt;
:*[[ACS]]: compatibility fix for vanilla Hexen map where script execution order is critical.&lt;br /&gt;
:*Added [[GetActorVelX]]/[[GetActorVelY|Y]]/[[GetActorVelZ|Z]], [[SetActorVelocity]], [[GetActorViewHeight]], [[SetActivator]], [[SetActivatorToTarget]], [[GetChar]], [[SetSkyScrollSpeed]], [[GetAirSupply|Get]]/[[SetAirSupply]], [[GetArmorType]], [[CheckActorProperty]], [[CheckActorClass]], [[SoundSequenceOnActor]]/[[SoundSequenceOnSector|Sector]]/[[SoundSequenceOnPolyobj|Polyobj]], [[SpawnSpotForced]] and [[SpawnSpotFacingForced]].&lt;br /&gt;
:*Added ML_BLOCKUSE line flag, accessible through [[UDMF]] and [[Line_SetBlocking]].&lt;br /&gt;
:*Improved [[automatic compatibility]] with {{dw|Hacx}}, {{dw|Suspended in Dusk}}, {{dw|Community Chest}}, {{dw|Doomsday of UAC}}, {{dw|Strain}}, and the {{dw|Astrostein}} series.&lt;br /&gt;
:*[[Compatibility options]]: added Minotaur footclipped floor fire setting, sprite sorting order, [[MBF]]-style [[A_Mushroom]], monster movements affected by terrain, and friendly monsters able to cross blocking lines.&lt;br /&gt;
:*Added arch-vile &amp;quot;ghost&amp;quot; bug emulation for selected maps only.&lt;br /&gt;
:*Added several other MBF features, including {{Class|BetaSkull}}, [[A_FireOldBFG]], and [[DeHackEd]] support of MBF codepointers and actors.&lt;br /&gt;
:*Repaired accuracy of player behavior in &#039;&#039;[[Hexen]]&#039;&#039; with regards to [[jumping]] and pushing enemies away with attacks.&lt;br /&gt;
:*Fixed compatibility issues arising with [[Action Doom]].&lt;br /&gt;
:*Puffs now set their angle to face the originator of the attack.&lt;br /&gt;
:*Added SoulPriestess&#039; patch to force aspect ratio with {{CVAR|R|vid_aspect}}.&lt;br /&gt;
:*Added Spleen&#039;s patch to customize [[railgun]] performances with {{CVAR|R|r_rail_smartspiral}}, {{CVAR|R|r_rail_spiralsparsity}}, and {{CVAR|R|r_rail_trailsparsity}}.&lt;br /&gt;
:*[[UDMF]]: Added per-tier texture scaling with new [[sidedef]] properties and sidedef versions of [[linedef]] flags {{c|wrapmidtex}} and {{c|clipmidtex}}.&lt;br /&gt;
:*Improved [[sky]] projection and [[sky stretching]].&lt;br /&gt;
:*Updated Italian [[LANGUAGE|language]] file.&lt;br /&gt;
:*A whole lot more.&lt;br /&gt;
;{{LE|2.4.1}}{{rev|2126}} (January 24): {{Forum|t=24895|Release thread}} | {{versionlinks|2|4|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*[[Floor_Waggle]] effects are smoother now.&lt;br /&gt;
:*Negative numbers in the [[alternate HUD]] have their minus sign at the right place now.&lt;br /&gt;
:*Menu option scales better in widescreen resolution.&lt;br /&gt;
:*[[Player setup]] menu looks better in non-Doom games.&lt;br /&gt;
:*Moving [[camera]]s work correctly again.&lt;br /&gt;
:*[[Polyobject]]s glitch a bit less now.&lt;br /&gt;
:*The internal nodebuilder works correctly now with certain troublesome maps.&lt;br /&gt;
:*&#039;&#039;[[Strife]]&#039;&#039; conversations fixed and improved.&lt;br /&gt;
:*Many nitpicky fixes in &#039;&#039;Strife&#039;&#039; (switch sounds, messages, etc.).&lt;br /&gt;
:*&#039;&#039;[[Action Doom 2]]&#039;&#039; and &#039;&#039;[[Harmony]]&#039;&#039; can now use idclev, and they have their Autoload section in [[the ini]].&lt;br /&gt;
:*[[MAPINFO]] {{c|ResetInventory}} keyword now works as expected.&lt;br /&gt;
:*The {{CVAR|C|norawinput}} console variable can be set to true to fix input problems while playing a Windows build through {{wp|Wine_(software)|Wine}}.&lt;br /&gt;
:*A [[character input grid]] is available to play ZDoom with a controller without having to use the keyboard.&lt;br /&gt;
:*Added [[GAMEINFO]] lump so that a mod can specify which [[IWAD]] and external resource files it uses.&lt;br /&gt;
;{{LE|2.5.0}}{{rev|2508}} (August 11): {{Forum|t=26755|Release thread}} | {{versionlinks|2|5|0}}&lt;br /&gt;
:*Enhanced [[polyobject]] system, allowing them to move anywhere in the map (like [[Eternity Engine|Eternity]]&#039;s &amp;quot;dynasegs&amp;quot;) and to give them any arbitrary shape. This is accompanied by new [[ACS]] polyobject movement functions.&lt;br /&gt;
:*Support for [[node|uncompressed extended nodes]], also supported by [[Eternity Engine]] and [[PrBoom+]], to create a new cross-port standard for node storage.&lt;br /&gt;
:*Support for using [[Byte Map Font]]s.&lt;br /&gt;
:*Ability to use metadata tags in audio formats to define custom loop points.&lt;br /&gt;
:*Added support for the [[MUSINFO]] lump (from [[Risen3D]] and [[PrBoom+]]).&lt;br /&gt;
:*Improved compatibility settings to allow optionally a greater faithfulness to the [[vanilla Doom]] and vanilla Heretic behaviors.&lt;br /&gt;
:*ZMAPINFO as an alias for [[MAPINFO]] to avoid compatibility problems with other ports parsing this lump.&lt;br /&gt;
:*Full rewrite of the [[SBARINFO]] system allowing many additional features and options.&lt;br /&gt;
:*Added support for multi-monitor display.&lt;br /&gt;
:*default reverbs environment setting in MAPINFO&lt;br /&gt;
:*Several generalized [[action functions|codepointers]] to emulate some very specific &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; action functions&lt;br /&gt;
:*New functions to refine actor behavior through&lt;br /&gt;
:*Enhanced [[poison]] damage system&lt;br /&gt;
:*Generalized [[railgun]] codepointers&lt;br /&gt;
:*New [[automap options]]&lt;br /&gt;
:*[[Hall of mirrors|HOM]] detection system&lt;br /&gt;
:*New [[console commands]]&lt;br /&gt;
:*The usual bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
==2011==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2012==&lt;br /&gt;
;{{LE|2.6.0}}{{rev|3730}} (July 2): {{Forum|t=33295|Release thread}} | {{versionlinks|2|6|0}}&lt;br /&gt;
:*Added [[Hacx]] IWAD support.&lt;br /&gt;
:*Added text-format Strife conversation system with [[USDF]] and [[ZSDF]].&lt;br /&gt;
:*A textured [[automap]] is now available; automap graphics are now [[map arrow|externalized]].&lt;br /&gt;
:*Rewritten [[menu]] system, which can now be defined with the [[MENUDEF]] lump.&lt;br /&gt;
:*Externalized intermissions to [[MAPINFO]].&lt;br /&gt;
:*Externalized [[IWAD]] detection and gave each IWAD its own independent config section.&lt;br /&gt;
:*Added [[FluidSynth]] and [[GUS|GUS emulator]] softsynths; fixed issues with [[TiMidity++]].&lt;br /&gt;
:*Added [[VOC]] support and enhanced [[MIDI]] playback with support for alternative formats such as [[XMI]] and [[HMI]].&lt;br /&gt;
:*[[Action specials]]: Added [[Ceiling_LowerAndCrushDist]] and [[Thing_SetConversation]]. Added [[console command]] to execute specials.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Increased maximum script number from 999 to 32767.&lt;br /&gt;
::*[[Named script]]s allow to avoid script number conflicts.&lt;br /&gt;
::*Added [[StrCpy]], [[CheckSight]], [[SetActivator]], [[SetPointer]] functions.&lt;br /&gt;
::*Added [[ACS actor properties|APROP_ScaleX/Y]] and APROP_Mass actor properties.&lt;br /&gt;
::*Added temporary dynamic strings variables with [[StrParam]].&lt;br /&gt;
::*Scripts can now have up to four parameters.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added [[A_CheckFlag]], [[A_FaceMaster]], [[A_FaceTracer]], [[A_RadiusGive]], [[A_SetMass]], [[A_SetScale]], [[A_Warp]] and [[A_WolfAttack]]...&lt;br /&gt;
::*Enhanced [[A_AlertMonsters]], [[A_BFGSpray]], [[A_Blast]], [[A_CustomBulletAttack]], [[A_FireBullets]], [[A_GunFlash]], [[A_PainAttack]], [[A_RadiusThrust]]...&lt;br /&gt;
::*Added an [[actor pointer]] manipulation system with several new codepointers...&lt;br /&gt;
::*Added {{Flag|DOHARMSPECIES}}, {{Flag|DONTCORPSE}}, {{Flag|SEEINVISIBLE}} and {{Flag|INVENTORY.UNTOSSABLE}}&lt;br /&gt;
::*Increased [[damage type]] flexibility in several ways with {{Property|DeathType}} and {{Property|PainType}}.&lt;br /&gt;
::*Added customizable {{Class|ArtiPoisonBag|fléchettes}}.&lt;br /&gt;
::*Made [[accuracy]] and [[stamina]] accessible through [[DECORATE expressions]].&lt;br /&gt;
::*Added {{Property|ProjectileKickback}}, {{Property|Inventory.RestrictedTo}} and {{Property|Inventory.ForbiddenTo}} class-based properties.&lt;br /&gt;
::*Backported {{Property|VisibleToTeam}}, {{Property|VisibleToPlayerClass}} and weapon {{Property|DropItem}} feature from [[Skulltag]], and enhanced them.&lt;br /&gt;
::*Added &amp;quot;Fast&amp;quot; keyword for states and deprecated the unreliable {{Flag|FASTER}} and {{Flag|FASTMELEE}} flags.&lt;br /&gt;
:*Added a [[SECRETS|secret hint system]].&lt;br /&gt;
:*[[3D floor]]s support.&lt;br /&gt;
:*[[FraggleScript]] support.&lt;br /&gt;
:*[[Voxel]] support.&lt;br /&gt;
:*[[SBARINFO]]: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.&lt;br /&gt;
:*[[SNDINFO]]: Added {{sndinfo|musicalias}} and {{sndinfo|attenuation}}.&lt;br /&gt;
:*Compatibility: fixed issues with {{dw|Eternal Doom}}, [[Happy Time Circus]], {{dw|Phobos_(WAD)|Phobos}}, vanilla compat, [[Boom]] compat, light levels higher than 255, [[Heretic]], [[Strife]], [[MUSINFO]], misnamed UDMF field.&lt;br /&gt;
:*Fixed loading of [[BMF]] palettes.&lt;br /&gt;
:*{{CCMD|O|restart}} console command.&lt;br /&gt;
:*Added [[PALVERS]] lump.&lt;br /&gt;
:*Custom [[IWAD]]s no longer need to include a [[COLORMAP]], as ZDoom will generate one automatically if it is missing.&lt;br /&gt;
:*Fixed vertical tiling of non-power-of-two textures.&lt;br /&gt;
:*Fixed blockmap overflows in huge maps with help from [[Mocha Doom|Maes]] and [[PrBoom+|Entryway]].&lt;br /&gt;
:*Joystick support for non-Windows platforms.&lt;br /&gt;
:*As always, a plethora of bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.6.1}}{{rev|3794}} (July 28): {{Forum|t=33547|Release thread}} | {{versionlinks|2|6|1}}&lt;br /&gt;
:*Added [[Hacx]] 2.0 IWAD support.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added [[ACS_NamedExecuteWait]] and [[NamedScriptWait]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{Flag|INVENTORY.RESTRICTABSOLUTELY}} and {{Flag|PLAYERPAWN.CANSUPERMORPH}}.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Added RandomPlayerStarts and UsePlayerStartZ flags for [[map definition]]s.&lt;br /&gt;
:*Solved compatibility issue with [[Massmouth 2]].&lt;br /&gt;
:*[[Voxel]]s are now rotated by 90° to match their orientation in Slab6 and [[Build]] games.&lt;br /&gt;
&lt;br /&gt;
==2013==&lt;br /&gt;
;{{LE|2.7.0}}{{rev|4342}} (June 8): {{Forum|t=36456|Release thread}} | {{versionlinks|2|7|0}}&lt;br /&gt;
:*Added [[Floor_RaiseAndCrushDoom]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Made dynamic strings persistent. ACS can now safely generate up to one million new strings.&lt;br /&gt;
::*Added [[CheckFont]], [[GetCVarString]], [[GetUserCVar]], [[GetUserCVarString]], [[IsTIDUsed]], [[LineAttack_(ACS)|LineAttack]], [[SetCVar]], [[SetCVarString]], [[SetUserCVar]], [[SetUserCVarString]], [[SpawnDecal]], and [[UniqueTID]].&lt;br /&gt;
::*Added HUD layers, visibility flags, additive blending, and alpha parameter to [[HudMessage]] and [[HudMessageBold]].&lt;br /&gt;
::*Also added HUD message wrapping and clipping with [[SetHudClipRect]] and [[SetHudWrapWidth]].&lt;br /&gt;
::*Added PLAYERINFO_FOV and _DESIREDFOV to [[GetPlayerInfo]].&lt;br /&gt;
::*Added support for desaturated [[translation]]s.&lt;br /&gt;
::*Added [[Sqrt]], [[FixedSqrt]], and [[VectorLength]] functions.&lt;br /&gt;
::*Support for advanced structures from non-ACC compilers.&lt;br /&gt;
::*Added the ability to retrieve the {{Property|ReactionTime}}, {{Property|Height}} and {{Property|Radius}} properties through [[GetActorProperty]].&lt;br /&gt;
::*Added CHANGELEVEL_PRERAISEWEAPON to [[ChangeLevel]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*{{Flag|FLOATBOB}} things are no longer moved physically when bobbing.&lt;br /&gt;
::*Added {{Property|Player.FallingScreamSpeed}}, {{Property|Player.GruntSpeed}}, {{Property|Weapon.MinSelectionAmmo1}}, and {{Property|Weapon.MinSelectionAmmo2}}.&lt;br /&gt;
::*Added random state duration and [[A_SetTics]].&lt;br /&gt;
::*[[A_Explode]]&#039;s &#039;&#039;affectsource&#039;&#039; parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to [[A_RadiusThrust]].&lt;br /&gt;
::*[[A_RadiusThrust]] can use negative &#039;&#039;force&#039;&#039; values.&lt;br /&gt;
::*Added [[A_JumpIfTargetInsideMeleeRange]], [[A_JumpIfTargetOutsideMeleeRange]], [[A_SetDamageType]], and [[A_CheckLOF]].&lt;br /&gt;
::*Added {{Flag|INVENTORY.NEVERRESPAWN}}, {{Flag|INVENTORY.NOSCREENFLASH}}, {{Flag|POWERSPEED.NOTRAIL}}, and {{Flag|PLAYERPAWN.CROUCHABLEMORPH}}.&lt;br /&gt;
::*Added JLOSF_NOAUTOAIM flag to [[A_JumpIfTargetInLOS]].&lt;br /&gt;
::*Added WRF_DISABLESWITCH to [[A_WeaponReady]].&lt;br /&gt;
::*[[A_Light]] can use negative values to darken the scene.&lt;br /&gt;
::*Added NORANDOMPUFFZ flag to [[A_CustomPunch]], [[A_FireBullets]], and [[A_CustomBulletAttack]].&lt;br /&gt;
::*Added SXF_USEBLOODCOLOR, SXF_CLEARCALLERTID, SXF_MULTIPLYSPEED, SXF_TRANSFERSCALE, SXF_TRANSFERSPECIAL, and SXF_CLEARCALLERSPECIAL flags to [[A_SpawnItemEx]].&lt;br /&gt;
::*Added the ability to adjust the vertical offset of a rail attack to [[A_RailAttack]] and [[A_CustomRailgun]].&lt;br /&gt;
::*Player-fired seeker [[Projectile|missiles]]&#039; range at which the missiles initially lock-on a [[Actor pointer|tracer]] can be set via {{Property|MaxTargetRange}} actor property.&lt;br /&gt;
::*{{Property|ReactionTime}} added to [[DECORATE expressions]].&lt;br /&gt;
::*Added [[Actor states#NoDelay|NoDelay]] state flag.&lt;br /&gt;
::*Added [[Actor_states#States|Bounce]] actor states.&lt;br /&gt;
::*Fixed few cases of DECORATE definitions inaccuracies for [[Doom]], [[Heretic]], [[Hexen]] and [[Strife]] actors.&lt;br /&gt;
:*[[FONTDEFS]]: Backported SPACEWIDTH from [[ECWolf]].&lt;br /&gt;
:*[[LANGUAGE]]: Brazilian Portuguese support.&lt;br /&gt;
:*[[MAPINFO]]: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for [[map definition]]s and NoRandomPlayerclass for [[GameInfo definition]]s.&lt;br /&gt;
:*[[MIDI]]: [[FluidSynth]] now recognize {{c|libfluidsynth.dll}} as a valid alias for {{c|fluidsynth.dll}}, various FluidSynth [http://forums.scummvm.org/viewtopic.php?p=72972#72972 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.&lt;br /&gt;
:*Updated [[foo_DUMB]].&lt;br /&gt;
:*Implemented additive rendering for [[3D floor]]s.&lt;br /&gt;
:*Added &#039;&#039;{{wp|Quake (video game)|Quake}}&#039;&#039;-like no-clipping with {{CCMD|D|noclip2}}.&lt;br /&gt;
:*Exported the [[scoreboard]] text to [[LANGUAGE]].&lt;br /&gt;
:*The sound system should now precache nearly all sounds used by actor properties and [[ambient sound]]s, and the [[MAPINFO/Map definition|MAPINFO]] command &amp;quot;PrecacheSounds&amp;quot; can be used to precache other sounds.&lt;br /&gt;
:*Arbitrary FPS cap with {{CVAR|R|vid_maxfps}}.&lt;br /&gt;
:*Increased maximum resolution to 5760&amp;amp;times;3600.&lt;br /&gt;
:*Added {{c|lightfog}} property for [[sidedef]]s.&lt;br /&gt;
:*Added support for {{dw|Doom 3: BFG Edition}}&#039;s modified [[IWAD]]s, including {{dw|No Rest for the Living}}.&lt;br /&gt;
:*Improved [[WAD]] archive code with support for big-endian format and LZSS compression used in several console ports.&lt;br /&gt;
:*Added ability in [[UDMF]] to specify things to spawn by [[:Category:Thing specials|thing specials]] and [[Hexen breakable items]] by names with {{c|arg1str}}, as well as the ability to set initial values to a thing&#039;s [[user variable]].&lt;br /&gt;
:*Added new [[node]] format for complex UDMF maps which need fractional precision on node splitters.&lt;br /&gt;
:*The [[alternate HUD]] now features a {{Class|Berserk}} indicator and a customizable time display.&lt;br /&gt;
:*Tweaked {{Class|ScriptedMarine|scripted marines}}.&lt;br /&gt;
:*Added {{c|{{CCMD|D|acsprofile}}}} [[CCMDs|console command]].&lt;br /&gt;
:*[[Weapon slots]] can be configured from the [[Customize controls]] menu.&lt;br /&gt;
:*Solved compatibility issues with [[Daedalus: Alien Defense]], {{dw|Community Chest 3}}, Nuke Mine, Khorus, [[Void]], the {{dw|Master Levels}}, and {{dw|Claustrophobia 1024}}.&lt;br /&gt;
:*{{Class|RandomSpawner}}s now respect {{param|nomonsters}}.&lt;br /&gt;
:*Added the ability to define mod-specific [[CVARs|console variables]] through the addition of the [[CVARINFO]] lump.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.7.1}}{{cs|21efe3b}} (July 3): {{Forum|t=36679|Release thread}} | {{versionlinks|2|7|1}}&lt;br /&gt;
&#039;&#039;Note: this is the first version based on the [[Git repository]]; 2.7.0 was the last version based on the SVN repository.&#039;&#039;&lt;br /&gt;
* Added new additive [[MAPINFO/GameInfo definition|GameInfo]] keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.&lt;br /&gt;
* Added a new {{Flag|DONTDRAIN}} flag to mark actors as ineligible for vampirism attacks.&lt;br /&gt;
* [[Automatic compatibility|Compatibility]] fixes for [[Ultimate Simplicity]] map07, [[Cheogsh]] map01, [[Super Sonic Doom]] map31&lt;br /&gt;
* [[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.&lt;br /&gt;
* The powered-up {{Class|GoldWand|Gold Wand}} was not puffing on actors.&lt;br /&gt;
* Disabled [[Heretic]]&#039;s punishment [[cheat]]s when in {{CVAR|C|allcheats}} mode.&lt;br /&gt;
* Objects that explode on death no longer deal the damage they were dealt instead of their own.&lt;br /&gt;
* Vampirism attacks now respect damage reduction.&lt;br /&gt;
* [[Demo]] recording now writes correct user info to demos.&lt;br /&gt;
* ACS&#039;s [[PlaySound]] for looping sounds now works properly when using channel flags.&lt;br /&gt;
&lt;br /&gt;
==2014==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2015==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2016==&lt;br /&gt;
;{{LE|2.8.0}}{{cs|56359b6}} (February 3): {{Forum|t=50712|Release thread}} | {{versionlinks|2|8|0}}&lt;br /&gt;
:*Frontend&lt;br /&gt;
:**GoG-installed IWADs are now detected automatically.  Steam-installed IWADs are detected on OS X and Linux.&lt;br /&gt;
:**Improved netcode and added [[network options]] menu to configure new features.&lt;br /&gt;
:**Two new cheats, god2 and buddha2. The player cannot die from telefrag damage with these.&lt;br /&gt;
:**Added WAD compatibility fixes for over a dozen maps, including &#039;&#039;[[Cheogsh 2]]&#039;&#039;, &#039;&#039;XtheaterIII&#039;&#039;, and the infamous missing yellow keycard on TNT MAP31.&lt;br /&gt;
:**+warp now works from the command line.&lt;br /&gt;
:**Added support for standard file paths on Windows.&lt;br /&gt;
:**Added a user-settable factor for [[earthquake]] intensity.&lt;br /&gt;
:*Automap&lt;br /&gt;
:**Non-countable monster actors can have their own separate automap color.&lt;br /&gt;
:**Extended {{c|{{CVAR|A|am_cheat}}}} with three modes to prevent lines flagged as &#039;&#039;hidden&#039;&#039; from being shown on the automap.&lt;br /&gt;
:**Added separate colors for the various types of 2-sided walls for the overlay automap, as well as colors missing from that mode.&lt;br /&gt;
:**Actors sprites can be shown on the automap instead of simple triangles when the second, third, fifth or sixth modes of {{c|am_cheat}} console variable are enabled.&lt;br /&gt;
:*Console&lt;br /&gt;
:**Added a {{c|{{CCMD|O|closemenu}}}} [[CCMDs|console command]], so that menu options that close the [[menu]] can be added.&lt;br /&gt;
:**The behavior of auto-loading external [[DEHACKED]] lumps can be controlled by setting the {{c|dehload}} [[CVARs|console variable]].&lt;br /&gt;
:**Results for console tab-completion are now color-coded; console commands appear blue, console variables green, and aliases red.&lt;br /&gt;
:**Fixed: the {{c|{{CVAR|R|wi_noautostartmap}}}} console variable was not sync-safe.&lt;br /&gt;
:**Added {{c|{{CVAR|C|sv_freelook}}}}, {{c|{{CVAR|C|sv_allowfreelook}}}} and {{c|{{CVAR|C|sv_nofreelook}}}}.&lt;br /&gt;
:*Building&lt;br /&gt;
:**Native Cocoa back end for OS X resulting in significant increases in performance over SDL in addition to better overall user experience.&lt;br /&gt;
:**Added optional support for the OpenAL sound library, allowing for compiling without FMOD.&lt;br /&gt;
:**Added a new [[software synthesizer]], [[WildMIDI]], and a new [[OPL]] core.&lt;br /&gt;
:**Added support for building with clang.&lt;br /&gt;
:**Nearly-complete support for ARM devices such as the Raspberry Pi.  (Some known bugs remain — in particular, you must set vid_forcesurface to true in zdoom.ini, or ZDoom will instantly segfault.)&lt;br /&gt;
:*Modding&lt;br /&gt;
:**Added [[Ceiling_CrushAndRaiseSilentDist]].&lt;br /&gt;
:**New type of [[earthquake]], can only be accessed with [[A_QuakeEx]] or its [[QuakeEx|ACS equivalent]], which can replicate the shaking effect seen in many recent games instead of random camera offsets using the QF_WAVE flag. Quakes can now be scaled in, out, or mixed up. Both wave and regular quakes work together.&lt;br /&gt;
:**Menu&#039;s back button and the pause sign can be animated.&lt;br /&gt;
:**The particle engine is now exposed to modders via the [[A_SpawnParticle]] action function and [[SpawnParticle]] ACS function.&lt;br /&gt;
:**Directory-structured archives now support [[lump filtering]], which loads different resources depending on the base game.&lt;br /&gt;
:**Friction and [[TERRAIN]]-based sector damage are now transferred to [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Fixed scaling of textures on [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Overhauled [[sector type]]s and properties. Sectors have several new UDMF properties.&lt;br /&gt;
:**Lines and sectors may now have multiple ids/tags via the moreids UDMF property.&lt;br /&gt;
:**&amp;lt;code&amp;gt;checkswitchrange&amp;lt;/code&amp;gt; now correctly prevents players from pressing switches embedded in the floor or ceiling, and works correctly with switches that are part of 3D floors.&lt;br /&gt;
:**Added {{c|blockhitscan}} and {{c|transparent}} [[linedef|line]] properties, {{c|waterzone}} [[sector]] property, and {{c|alpha}}, {{c|fillcolor}}, {{c|gravity}}, {{c|health}}, {{c|pitch}}, {{c|renderstyle}}, {{c|roll}}, {{c|scale}}, {{c|scalex}}, {{c|scaley}} and {{c|score}} [[thing]] properties for [[Universal Doom Map Format|UDMF]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
:**Added {{c|[[DropItem]]}}, {{c|[[DropInventory]]}}, {{c|[[CheckFlag]]}}, {{c|[[GetLineActivation]]}}, {{c|[[GetMaxInventory]]}}, {{c|[[SetLineActivation]]}}, {{c|[[GetArmorInfo]]}}, {{c|[[GetActorPowerupTics]]}}, {{c|[[IsPointerEqual]]}}, {{c|[[ChangeActorAngle]]}}, {{c|[[ChangeActorPitch]]}}, {{c|[[PickActor]]}}, {{c|[[SetSectorDamage]]}}, {{c|[[QuakeEx]]}}, {{c|[[Warp]]}} and {{c|[[CanRaiseActor]]}}  functions.&lt;br /&gt;
:**Added FHF_NORANDOMPUFFZ flag for {{c|[[LineAttack_(ACS)|LineAttack]]}}.&lt;br /&gt;
:**Added BLOCKF_HITSCAN flag for {{c|[[Line_SetBlocking]]}}.&lt;br /&gt;
:**Added {{c|APROP_ViewHeight}}, {{c|APROP_AttackZOffset}} and {{c|APROP_StencilColor}} [[ACS actor properties]].&lt;br /&gt;
:**Fixed potential desync with {{c|[[CheckPlayerCamera]]}}.&lt;br /&gt;
:**Fixed: {{c|[[Thing_SetGoal]]}} could put an actor&#039;s target and goal out of sync.&lt;br /&gt;
:**{{c|[[GetSectorFloorZ]]}} and {{c|[[GetSectorCeilingZ]]}} now interpret 0-tag as &#039;any sector&#039; and return the z-height of whatever sector is at those coordinates.&lt;br /&gt;
:**[[Arrays]] are now supported at the script scope.&lt;br /&gt;
:*[[ANIMDEFS]]:&lt;br /&gt;
:**Added an optional {{c|worldpanning}} flag for camera textures definitions in order to make camera textures pan in world units instead of texture units.&lt;br /&gt;
:**Added {{c|allowdecals}} option to animated doors.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
:**Four new keybinds for DECORATE use with weapons (see {{c|[[A_WeaponReady]]}}&#039;s User states.)&lt;br /&gt;
:**Sprites now support mirroring via negative scales.&lt;br /&gt;
:**Added {{c|{{Property|Player.UseRange}}}} and {{c|{{Property|Player.AirCapacity}}}} [[player properties]].&lt;br /&gt;
:**Actors can now have extreme death/crash states that are damage type specific.&lt;br /&gt;
:**New &amp;lt;code&amp;gt;randompick&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;frandompick&amp;lt;/code&amp;gt; [[DECORATE expressions|non-action functions]].&lt;br /&gt;
:**[[A_Print]], [[A_PrintBold]], and [[A_Log]] can now use &amp;lt;code&amp;gt;$FOO&amp;lt;/code&amp;gt; [[LANGUAGE|translation strings]].&lt;br /&gt;
:**The following functions have been given additional functionalities: {{c|[[A_AlertMonsters]]}}, {{c|[[A_BFGSpray]]}}, {{c|[[A_ChangeVelocity|A_Change]]/[[A_ScaleVelocity|ScaleVelocity]]}}, {{c|[[A_CustomPunch]]}}, {{c|[[A_SetAngle]]}} and {{c|[[A_SetPitch]]}}, {{c|[[A_DamageMaster]]/[[A_DamageChildren|Children]]/[[A_DamageSiblings|Siblings]]}}, {{c|[[A_KillMaster]]/[[A_KillChildren|Children]]/[[A_KillSiblings|Siblings]]}}, {{c|[[A_Log]]}}, {{c|[[A_Print]]}}, {{c|[[A_PrintBold]]}}, {{c|[[A_RadiusGive]]}}, {{c|[[A_Saw]]}}, {{c|[[A_SetScale]]}}, {{c|[[A_SetTics]]}}, {{c|[[A_SpawnItemEx]]}}, {{c|[[A_Teleport]]}}, {{c|[[A_VileAttack]]}}, {{c|[[A_Warp]]}}, {{c|[[A_WeaponReady]]}}.&lt;br /&gt;
:**Added {{Flag|NOFORWARDFALL}}, {{Flag|NOTONAUTOMAP}}, {{Flag|RELATIVETOFLOOR}}, {{Flag|NEVERTARGET}}, {{Flag|NOTELESTOMP}}, {{Flag|ALWAYSTELEFRAG}}, {{Flag|ALLOWPAIN}}, {{Flag|CAUSEPAIN}}, {{Flag|DONTTHRUST}}, {{Flag|BUDDHA}}, {{Flag|FOILBUDDHA}}, {{Flag|MIRRORREFLECT}}, {{Flag|AIMREFLECT}}, {{Flag|THRUREFLECT}}, {{Flag|HARMFRIENDS}}, {{Flag|NOFORWARDFALL}}, {{Flag|HITTARGET}}, {{Flag|HITMASTER}}, {{Flag|HITTRACER}}, {{Flag|WEAPONSPAWN}}, {{Flag|INVENTORY.TOSSED}}, {{Flag|INVENTORY.ALWAYSRESPAWN}}, {{Flag|INVENTORY.TRANSFER}}, and {{Flag|INVENTORY.NOTELEPORTFREEZE}} [[actor flags]].&lt;br /&gt;
:**{{Flag|MTHRUSPECIES}} now works with [[A_BFGSpray]] and rail attacks.&lt;br /&gt;
:**Added {{c|[[A_DamageSelf]]/[[A_DamageTarget|Target]]/[[A_DamageTracer|Tracer]]}}, {{c|[[A_Remove]]/[[A_RemoveSiblings|Siblings]]/[[A_RemoveTarget|Target]]/[[A_RemoveTracer|Tracer]]}}, {{c|[[A_KillTarget]]/[[A_KillTracer|Tracer]]}}, {{c|[[A_DropItem]]}}, {{c|[[A_SetSpeed]]}}, {{c|[[A_SetHealth]]}}, {{c|[[A_ResetHealth]]}}, {{c|[[A_SetFloatBobPhase]]}}, {{c|[[A_SetRoll]]}}, {{c|[[A_SetTeleFog]]}}, {{c|[[A_GiveToChildren|A_GiveTo]]/[[A_TakeFromChildren|TakeFromChildren]]}}, {{c|[[A_GiveToSiblings|A_GiveTo]]/[[A_TakeFromSiblings|TakeFromSiblings]]}}, {{c|[[A_JumpIfHigherOrLower]]}},  {{c|[[A_SetFloatSpeed]]}}, {{c|[[A_SetSpecies]]}}, {{c|[[A_CheckBlock]]}}, {{c|[[A_CheckProximity]]}}, and {{c|[[A_QuakeEx]]}} [[action functions]].&lt;br /&gt;
:**Players with the NODAMAGE flag cannot be telefragged anymore, nor can they take any damage via voodoo dolls.&lt;br /&gt;
:**The amount of health regeneration gained from a {{c|{{Class|PowerRegeneration}}}} powerup can be controlled with the {{c|{{Property|Powerup.Strength}}}} property.&lt;br /&gt;
:**Improved the {{c|[[Actor states#NoDelay|NoDelay]]}} state flag reliability.&lt;br /&gt;
:**Added {{c|Subtract}} render style.&lt;br /&gt;
:**Different types of {{Class|HereticImp|gargoyles}} and {{Class|Mummy|golems}} could infight amongst themselves (original &#039;&#039;[[Heretic]]&#039;&#039; behavior).&lt;br /&gt;
:**Added {{c|[[Actor states#CanRaise|CanRaise]]}} and {{c|[[Actor states#Slow|Slow]]}} actor [[actor states#State keywords|state flags]].&lt;br /&gt;
:*[[LANGUAGE]]:&lt;br /&gt;
:**Externalized &amp;quot;New save game&amp;quot; line for save screen, and [[automap]] statistics display.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
:**Custom colors for both modes of the automap can be set on per-mod basis.&lt;br /&gt;
:**Added {{c|SlowMonsters}}, {{c|HealthFactor}}, {{c|NoInfighting}} and {{c|TotalInfighting}} [[skill definition]]s property.&lt;br /&gt;
:*[[SBARINFO]]:&lt;br /&gt;
:**Extended {{c|[[DrawImage]]}} command.&lt;br /&gt;
:*[[SNDINFO]]:&lt;br /&gt;
:**Fixed incorrect {{Class|Minotaur|Maulotaur}} melee attack sound.&lt;br /&gt;
:*Internals&lt;br /&gt;
:**Removed [[Polymost]] code.&lt;br /&gt;
:**Vast improvements to movement interpolation.&lt;br /&gt;
:**Fixed a lot of leaks and garbage collection issues.&lt;br /&gt;
:**Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.8.1}}{{cs|1a9bc53}} (February 23): {{Forum|t=50968|Release thread}} | {{versionlinks|2|8|1}}&lt;br /&gt;
* {{c|#region}}/{{c|#endregion}} is now supported for text lumps. ZDoom does not do anything with them but ignore them, but this allows editors to treat them however they like.&lt;br /&gt;
* Better [[LANGUAGE|localizability]] of the [[menus]].&lt;br /&gt;
* [[TERRAIN|Terrain]] definitions can now be optional.&lt;br /&gt;
* Walking into an area with a [[REVERBS|reverb effect]] no longer mutes all sound.&lt;br /&gt;
* &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{Class|ArtiTimeBomb|time bomb artifacts}} now spawn in the proper locations.&lt;br /&gt;
* &#039;&#039;Heretic&#039;&#039;&#039;s powered {{Class|Mace|firemace}} balls once again seek their targets.&lt;br /&gt;
* The {{Class|Whirlwind|whirlwind attack}} used by &#039;&#039;Heretic&#039;&#039;&#039;s {{Class|Ironlich}} sometimes fizzled out immediately.&lt;br /&gt;
* Instant [[sector]] movement actions are again instant.&lt;br /&gt;
* Various other minor fixes.&lt;br /&gt;
&lt;br /&gt;
==Next version==&lt;br /&gt;
The following additions are available in [[Git]] builds, but not yet in an official version.&lt;br /&gt;
&lt;br /&gt;
:* The scripting branch has been merged, laying some groundwork for DoomScript™.&lt;br /&gt;
:* [[DECORATE]]: &lt;br /&gt;
:** [[Actor_states|States]]: &lt;br /&gt;
:*** Can contain multiple action functions enclosed in braces&lt;br /&gt;
:*** &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blocks&lt;br /&gt;
:*** return; statement&lt;br /&gt;
:** Functions:&lt;br /&gt;
:*** Added the following non-action functions: [[CountInv]], [[GetDistance]]&lt;br /&gt;
:*** Added the following action functions: [[A_SetChaseThreshold]]&lt;br /&gt;
:* Portals via [[Line_SetPortal]] (visual only so far; {{Forum|t=46916|original forum thread}})&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://sourceforge.net/projects/zdoom/files/ Sourceforge archive] Unofficial mirror for ZDoom versions&lt;br /&gt;
* [https://github.com/doomtech/zdoom-old GitHub archive] Unofficial repository of pre-SVN source code&lt;br /&gt;
[[Category:Nostalgia]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47033</id>
		<title>ZDoom version history</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47033"/>
		<updated>2019-11-26T23:09:09Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* 2003 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the evolution of [[ZDoom]] by listing the main features of each version.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!By year&lt;br /&gt;
|[[#1998|1998]] &amp;amp;middot; [[#1999|1999]] &amp;amp;middot; [[#2000|2000]] &amp;amp;middot; [[#2001|2001]] &amp;amp;middot; [[#2002|2002]] &amp;amp;middot; [[#2003|2003]] &amp;amp;middot; [[#2004|2004]] &amp;amp;middot; [[#2005|2005]] &amp;amp;middot; [[#2006|2006]] &amp;amp;middot; [[#2007|2007]] &amp;amp;middot; [[#2008|2008]] &amp;amp;middot; [[#2009|2009]] &amp;amp;middot; [[#2010|2010]] &amp;amp;middot; [[#2011|2011]] &amp;amp;middot; [[#2012|2012]] &amp;amp;middot; [[#2013|2013]] &amp;amp;middot; [[#2014|2014]] &amp;amp;middot; [[#2015|2015]] &amp;amp;middot; [[#2016|2016]]&lt;br /&gt;
|-&lt;br /&gt;
!1.x Branch&lt;br /&gt;
|[[#1.11|1.11]] &amp;amp;middot; [[#1.12|1.12]] &amp;amp;middot; [[#1.13|1.13]] &amp;amp;middot; [[#1.14|1.14]] &amp;amp;middot; [[#1.14a|1.14a]] &amp;amp;middot; [[#1.16|1.16]] &amp;amp;middot; [[#1.17|1.17]] &amp;amp;middot; [[#1.17a|1.17a]] &amp;amp;middot; [[#1.17b|1.17b]] &amp;amp;middot; [[#1.17b1|1.17b1]] &amp;amp;middot; [[#1.17c|1.17c]] &amp;amp;middot; [[#1.18|1.18]] &amp;amp;middot; [[#1.18a|1.18a]] &amp;amp;middot; [[#1.18b|1.18b]] &amp;amp;middot; [[#1.19|1.19]] &amp;amp;middot; [[#1.20|1.20]] &amp;amp;middot; [[#1.21|1.21]] &amp;amp;middot; [[#1.22|1.22]] &amp;amp;middot; [[#1.23 Beta|1.23 Beta]] &amp;amp;middot; [[#1.23 Beta 19|1.23 Beta 19]] &amp;amp;middot; [[#1.23 Beta 20|1.23 Beta 20]] &amp;amp;middot; [[#1.23 Beta 23|1.23 Beta 23]] &amp;amp;middot; [[#1.23 Beta 24|1.23 Beta 24]] &amp;amp;middot; [[#1.23 Beta 25|1.23 Beta 25]] &amp;amp;middot; [[#1.23 Beta 33|1.23 Beta 33]]&lt;br /&gt;
|-&lt;br /&gt;
!2.0 Branch&lt;br /&gt;
|[[#2.0 Beta 13|2.0 Beta 13]] &amp;amp;middot; [[#2.0.47|2.0.47]] &amp;amp;middot; [[#2.0.47i|2.0.47i]] &amp;amp;middot; [[#2.0.48|2.0.48]] &amp;amp;middot; [[#2.0.49|2.0.49]] &amp;amp;middot; [[#2.0.50|2.0.50]] &amp;amp;middot; [[#2.0.51|2.0.51]] &amp;amp;middot; [[#2.0.52|2.0.52]] &amp;amp;middot; [[#2.0.53|2.0.53]] &amp;amp;middot; [[#2.0.54|2.0.54]] &amp;amp;middot; [[#2.0.55|2.0.55]] &amp;amp;middot; [[#2.0.56|2.0.56]] &amp;amp;middot; [[#2.0.57|2.0.57]] &amp;amp;middot; [[#2.0.58|2.0.58]] &amp;amp;middot; [[#2.0.59|2.0.59]] &amp;amp;middot; [[#2.0.60|2.0.60]] &amp;amp;middot; [[#2.0.61|2.0.61]] &amp;amp;middot; [[#2.0.62|2.0.62]] &amp;amp;middot; [[#2.0.63|2.0.63]] &amp;amp;middot; [[#2.0.64|2.0.64]] &amp;amp;middot; [[#2.0.90|2.0.90]] &amp;amp;middot; [[#2.0.91|2.0.91]] &amp;amp;middot; [[#2.0.92|2.0.92]] &amp;amp;middot; [[#2.0.93|2.0.93]] &amp;amp;middot; [[#2.0.94|2.0.94]] &amp;amp;middot; [[#2.0.95|2.0.95]] &amp;amp;middot; [[#2.0.96|2.0.96]] &amp;amp;middot; [[#2.0.97|2.0.97]] &amp;amp;middot; [[#2.0.98|2.0.98]]&lt;br /&gt;
|-&lt;br /&gt;
!2.1 Branch&lt;br /&gt;
|[[#2.1.0|2.1.0]] &amp;amp;middot; [[#2.1.1|2.1.1]] &amp;amp;middot; [[#2.1.2|2.1.2]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.4|2.1.4]] &amp;amp;middot; [[#2.1.5|2.1.5]] &amp;amp;middot; [[#2.1.6|2.1.6]] &amp;amp;middot; [[#2.1.7|2.1.7]]&lt;br /&gt;
|-&lt;br /&gt;
!Modern&lt;br /&gt;
|[[#2.2.0|2.2.0]] &amp;amp;middot; [[#2.3.0|2.3.0]] &amp;amp;middot; [[#2.3.1|2.3.1]] &amp;amp;middot; [[#2.4.0|2.4.0]] &amp;amp;middot; [[#2.4.1|2.4.1]] &amp;amp;middot; [[#2.5.0|2.5.0]] &amp;amp;middot; [[#2.6.0|2.6.0]] &amp;amp;middot; [[#2.6.1|2.6.1]] &amp;amp;middot; [[#2.7.0|2.7.0]] &amp;amp;middot; [[#2.7.1|2.7.1]] &amp;amp;middot; [[#2.8.0|2.8.0]] &amp;amp;middot; [[#2.8.1|2.8.1]] &amp;amp;middot; [[#Next version|Next version]]&lt;br /&gt;
|}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==1998==&lt;br /&gt;
;{{LE|1.11}} (March 6): {{Plainlink|[http://www.zdoom.org/files/old/zdoom111.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom111s.zip Source]}}&lt;br /&gt;
:Initial release, based on the [[NTDoom]] and [[ATB Doom]]. The version numbering follows from the Doom source code version numbering of 1.10.&lt;br /&gt;
:* Works under both Windows 95 and NT 4.0, although it works best under Win95.&lt;br /&gt;
:* Limited support for the Pause key. It works with some keyboards on some machines.&lt;br /&gt;
:* Supports any resolution compatible with your DirectDraw drivers.&lt;br /&gt;
:* Look up/down à la &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
:* Translucency for selected objects.&lt;br /&gt;
:* Has a [[console]] with most of the functionality of &#039;&#039;Quake&#039;&#039;&#039;s. The only significant missing feature is Tab-completion.&lt;br /&gt;
:* Notarget [[cheat]].&lt;br /&gt;
:* Command to {{CCMD|D|kill}} all [[monster]]s in a level or yourself.&lt;br /&gt;
:* Can play [[MUS]], [[MIDI]], and MOD music.&lt;br /&gt;
:* Selected sounds are played in surround sound.&lt;br /&gt;
:* Doors that need keys to open are highlighted on the [[automap]].&lt;br /&gt;
:* Automap now shows various statistics in addition to the level name.&lt;br /&gt;
:* True keybindings. Bind any key to any command or sequence of commands.&lt;br /&gt;
:* [[Intermission]] screen can now display your stats using absolute values rather than percentages.&lt;br /&gt;
:* A new more general [[demo]] format.&lt;br /&gt;
;{{LE|1.12}} (April 7): {{Plainlink|[http://www.zdoom.org/files/old/zdoom112.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom112s.zip Source]}}&lt;br /&gt;
:* Some visual enhancements were made such as centering the menus and drawing borders around the status bar in higher resolutions.&lt;br /&gt;
:* [[Console command]]s can now be specified on the [[command line parameters|command line]].&lt;br /&gt;
:* Removed some of [[Doom]]&#039;s limits such as VisPlanes, VisSprites, and 2S [[HOM]].&lt;br /&gt;
:* Rewrote some of the inner loops in assembly. (There was some assembly in 1.11, but it never got used.)&lt;br /&gt;
:* New [[CVAR]]s relating to mouse movement. ({{CVAR|C|invertmouse}}, {{CVAR|C|m_pitch}}, {{CVAR|C|m_yaw}}, etc.)&lt;br /&gt;
:* Mouse movement doesn&#039;t get sluggish in high resolutions.&lt;br /&gt;
:* [[Automap]] colors are customizable.&lt;br /&gt;
:* Automap overlay and rotation are available.&lt;br /&gt;
:* Eight [[crosshair]]s.&lt;br /&gt;
:* Shoot up/down.&lt;br /&gt;
:* Alt-Tab and Pause work properly on all machines now.&lt;br /&gt;
:* The {{CCMD|P|+jump}} command now works.&lt;br /&gt;
:* 25% and 75% translucency levels in addition to 50%. The translucency tables now get saved to disk, too, so they only need to be calculated once instead of every time the game is run.&lt;br /&gt;
:* The [[console]] [[font]] is now editable.&lt;br /&gt;
:* Near complete support for [[DeHackEd]] patches. (Only monster infighting and changing a few minor text strings are not supported.)&lt;br /&gt;
:* Sky height and position is now fixed for high resolutions. (It still wraps if you look up, but at least now if you look straight ahead, it never will.)&lt;br /&gt;
:* Weapon sprite is always drawn at the correct location. (It was being drawn too low in some resolutions like 400x300.)&lt;br /&gt;
:* New [[options menu]], which includes a key configuration screen.&lt;br /&gt;
:* [[Stealth monster]]s.&lt;br /&gt;
:* New full-screen [[HUD]].&lt;br /&gt;
:* And a few other things not worth mentioning separately.&lt;br /&gt;
;{{LE|1.13}} (May 26):{{forum|t=4|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom113.zip Build]}}&lt;br /&gt;
:* Fixed some major bugs (that crashed the game) and other lesser bugs that were just annoying.&lt;br /&gt;
:* 3-D collisions for walking under and standing on other things.&lt;br /&gt;
:* The status bar can be scaled to the full width of the screen.&lt;br /&gt;
:* The screen mode can be selected from a menu inside the game.&lt;br /&gt;
:* ZDoom can run in a window on the desktop.&lt;br /&gt;
:* Better [[DeHackEd]] support. Only a few text replacements are not supported. Everything else works (including monster infighting which I haven&#039;t seen in any other port).&lt;br /&gt;
:* New features for level designers (see editing.txt for details):&lt;br /&gt;
::*Specification of next and secret maps on a per-map basis.&lt;br /&gt;
::*Specify sky texture on a per-map basis.&lt;br /&gt;
::*Use any lump in a wad as music for a map.&lt;br /&gt;
::*Give maps a custom name without using a DeHackEd patch.&lt;br /&gt;
::*Maps can be named anything (not just E?M? or MAP??).&lt;br /&gt;
::*Place any messages of any length between any two maps.&lt;br /&gt;
::*&#039;&#039;[[Hexen]]&#039;&#039;-style fog (of any color).&lt;br /&gt;
::*[[Ambient sound]]s &amp;amp;mdash; either point like &#039;&#039;Quake&#039;&#039; or global like &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;Hexen&#039;&#039;.&lt;br /&gt;
::*Automatic use of [[DeHackEd]] patches in PWADs.&lt;br /&gt;
::*No more {{dw|tutti-frutti}} for short textures of certain heights.&lt;br /&gt;
::*zdoom.wcf file for use with [[WadAuthor]].&lt;br /&gt;
:* Rocket jumping. (One very important note about this: You need to be *in the air* when your rocket explodes for rocket jumping to work. This is different from &#039;&#039;Quake&#039;&#039;, and I will probably rewrite it for the next release.)&lt;br /&gt;
:* Dynamic [[palette flash]]es.&lt;br /&gt;
:* Supports stretching skies for [[freelook]].&lt;br /&gt;
:* Larger freelook range.&lt;br /&gt;
:* Added tab-completion to the [[console]].&lt;br /&gt;
:* zdoom.cfg is now the name of the default [[configuration file]] since [[Doom Legacy]] decided to start using config.cfg.&lt;br /&gt;
:* French language support. (Set {{CVAR|C|language}} CVAR to &amp;quot;french&amp;quot;.)&lt;br /&gt;
:* Player obituaries.&lt;br /&gt;
:* Unlimited ammo cheat (use g_unlimitedammo cvar).&lt;br /&gt;
;{{LE|1.14}} (July 22): {{forum|t=5|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom114-src.zip Source]}}&lt;br /&gt;
:Bugs fixed:&lt;br /&gt;
:* The bunny scroller at the end of E3M8 no longer crashes the game.&lt;br /&gt;
:* The IDKFA [[cheat]] gives the proper amount of armor again.&lt;br /&gt;
:* Demo recording works again.&lt;br /&gt;
:* Telefragging works again.&lt;br /&gt;
:* Picking up the {{Class|InvulnerabilitySphere|invulnerability sphere}} displays the correct colors now.&lt;br /&gt;
:* [[DeHackEd]] patches containing text replacements no longer crash the game.&lt;br /&gt;
:* Printing a string containing &amp;quot;%s&amp;quot; to the console and then changing the video mode will no longer crash the game.&lt;br /&gt;
:* Chat mode finally works again.&lt;br /&gt;
:* If MIDAS can&#039;t initialize, you can still play the game but without sound.&lt;br /&gt;
:* {{Class|Pistol}} and {{Class|chaingun}} sounds no longer cut out when there are lots of {{Class|ZombieMan|zombie men}} shooting their pistols at you.&lt;br /&gt;
:* Mouse input should no longer be so jerky under Windows NT.&lt;br /&gt;
:* The [[crosshair]] is finally accurate for aiming.&lt;br /&gt;
:* [[Autoaim]] is properly remembered each time you start ZDoom.&lt;br /&gt;
:* Switches in &#039;&#039;[[the Ultimate Doom]]&#039;&#039; that aren&#039;t also in the shareware Doom properly change their appearance when switched.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Players can choose their own colors and names. ([[Player setup]] menu is included).&lt;br /&gt;
:* 8-player support (untested but should work).&lt;br /&gt;
:* Miscellaneous internal code changes have been borrowed from the [[Boom]] source. (This does *not* mean that ZDoom supports Boom levels yet.)&lt;br /&gt;
:* [[Cheat]]s, chat messages, and gamestate changes are now recorded in demos.&lt;br /&gt;
:* Single-player demos recorded with ZDoom are generally smaller than before.&lt;br /&gt;
:* &#039;&#039;Quake 2&#039;&#039;-style deathmatch flags.&lt;br /&gt;
:* Cheats (optionally) work in multiplayer games.&lt;br /&gt;
:* Mode X is now supported under Win95, so all the machines that couldn&#039;t run ZDoom in 320x200 before should be able to now.&lt;br /&gt;
:* Fewer conditions result in error messages that quit the game. (If you have &#039;&#039;[[Heretic]]&#039;&#039;, try this: Start ZDoom with -file heretic and go to the console and type &amp;quot;{{CCMD|D|map}} E1M1&amp;quot;.)&lt;br /&gt;
:* Keys can repeat in the [[console]].&lt;br /&gt;
:* The console and chat mode now use the localized keymap set with the Keyboard control panel.&lt;br /&gt;
:* Messages at the top of the screen now break along between words instead of in the middle of them.&lt;br /&gt;
:* Added {{c|-config}} [[command line parameter]].&lt;br /&gt;
:* Added {{c|-fastdemo}} command line parameter.&lt;br /&gt;
:* Added new {{CCMD|D|screenshot}} command. (bound to &amp;quot;Print Screen&amp;quot; key by default)&lt;br /&gt;
:* Added &#039;&#039;Quake&#039;&#039;-like {{CCMD|P|+showscores}} command. (bound to &amp;quot;\&amp;quot; key by default)&lt;br /&gt;
:* [[Alias]]es are now saved in the config file.&lt;br /&gt;
:* Added support for multiple pitched sounds like in very old version of Doom. (Use the snd_pitched cvar to turn it on and off.)&lt;br /&gt;
;{{LE|1.14a}} (July 27): {{forum|t=6|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114a.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoomsrc114-114a.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:Bugs fixed are:&lt;br /&gt;
:* No more crashing about freeing a pointer without ZONEID when changing levels.&lt;br /&gt;
:* Skies wider than 256 pixels are drawn correctly.&lt;br /&gt;
:* [[Monster]]s&#039; heights are once again the same as they were in id&#039;s original &#039;&#039;[[Doom]]&#039;&#039;, so certain areas work properly again.&lt;br /&gt;
:* Monsters shouldn&#039;t teleport into each other anymore.&lt;br /&gt;
:* Improved support for international keyboards.&lt;br /&gt;
:* The skill level chosen for a new game is no longer ignored if the new game is started while a demo is playing.&lt;br /&gt;
:Cosmetic changes:&lt;br /&gt;
:* No more &amp;quot;sv_gravity changed to...&amp;quot;, &amp;quot;skill changed to...&amp;quot;, etc. messages in single player games.&lt;br /&gt;
:* Activating the [[player setup]] [[menu]] automatically stops any playing [[demo]]s, since it doesn&#039;t work properly while they play.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} don&#039;t go flying away when exploding anymore.&lt;br /&gt;
:* Added def_patch cvar to automatically load a DeHackEd patch each time the game is started.&lt;br /&gt;
:* ZDoom [[savegame]]s now use the name zdoomsv?.dsg instead of doomsav?.dsg.&lt;br /&gt;
:This version also includes some preliminary [[Boom]] support as I started integrating some of the Boom source code with ZDoom:&lt;br /&gt;
:* Medusa fix.&lt;br /&gt;
:* Openings limit removed.&lt;br /&gt;
:* Removed limit on switches and animations.&lt;br /&gt;
:* Added support for Boom-like [[ANIMATED]] and [[SWITCHES]] lumps in PWADs.&lt;br /&gt;
:* Added support for Boom-style scrollers (including conveyors).&lt;br /&gt;
:* Added partial [[deep water]] support.&lt;br /&gt;
;{{LE|1.16}} (December 22): {{forum|t=13|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom116.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom116-src.zip Source]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* No more limit on size of [[savegame]]s or [[demo]]s.&lt;br /&gt;
:* Screen resolutions above 320x200 are now the proper brightness (they were too bright before.)&lt;br /&gt;
:* Improved the brightness of the [[console]] [[font]].&lt;br /&gt;
:* {{Class|BulletPuff|Bullet puffs}} can show up on the floor and ceiling and not just walls.&lt;br /&gt;
:* Missile weapons can trigger gun activation lines.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} now bounce around as much as they did in original &#039;&#039;[[Doom]]&#039;&#039;. (They were too &amp;quot;inert&amp;quot; in 1.14.)&lt;br /&gt;
:* If a demo is being recorded, quitting the game normally will save the demo to disk. (Previously, you had to use the stop command to do this.)&lt;br /&gt;
:New features for players:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* Mouse wheel support and {{CCMD|P|weapnext}}/{{CCMD|P|weapprev}} commands.&lt;br /&gt;
:* Doublebindings.&lt;br /&gt;
:* Better analog joystick support.&lt;br /&gt;
:* 180 degree turn command for keyboarders.&lt;br /&gt;
:* Damage done by a rocket to its shooter is {{CVAR|C|splashfator|configurable}} and defaults to the original Doom behavior.&lt;br /&gt;
:* User-configurable gender. (Even though I don&#039;t have any new player sounds, at least the [[obituaries]] are gender-aware. :-)&lt;br /&gt;
:* [[Teamplay]] mode.&lt;br /&gt;
:* {{CVAR|C|sv_nobfgaim|New CVAR}} to disable manual aiming of the BFG to prevent someone from shooting it at the floor and quickly triggering tracer damage before.&lt;br /&gt;
:* Maps no longer need to have as many deathmatch starts as there are players in a deathmatch game.&lt;br /&gt;
:* Support for [[Doom Legacy]] [[skin]]s.&lt;br /&gt;
:* Rewrote the [[MIDI]]/[[MUS]] code so that it has a working volume control.&lt;br /&gt;
:* Many more [[console command]]s and [[CVARs]].&lt;br /&gt;
:New features for editors:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* [[Obituaries]] are configurable with a .bex patch.&lt;br /&gt;
:* [[Monster path]]s&lt;br /&gt;
:* [[Colored lighting]]&lt;br /&gt;
:* [[Fog]] can be applied to only part of a level instead of all of it.&lt;br /&gt;
:* Per-sector [[gravity]] settings.&lt;br /&gt;
:* Support for up to 256 [[ambient sound]]s (as opposed to the limit of 64 in earlier versions).&lt;br /&gt;
:* [[Sector damage]] adjustable from between 0-255 points of damage.&lt;br /&gt;
:* Changeable [[camera]] views.&lt;br /&gt;
:* The following editing features that were introduced in &#039;&#039;[[Hexen]]&#039;&#039; are also available in ZDoom:&lt;br /&gt;
::*Most line specials take arguments that modify their behavior.&lt;br /&gt;
::*[[ACS]] scripting.&lt;br /&gt;
::*[[Hub]]s.&lt;br /&gt;
::*[[Earthquake]]s.&lt;br /&gt;
::*[[Dormant]] monsters.&lt;br /&gt;
::*Trigger events to happen on monster deaths.&lt;br /&gt;
::*[[Floor_Waggle|&amp;quot;Waggling&amp;quot; floors]].&lt;br /&gt;
::*[[Pillar_Build|Pillar builders]].&lt;br /&gt;
::*Push activation lines (walking into a wall can trigger an event).&lt;br /&gt;
::*[[Thing_Spawn|Thing spawning]] (e.g. for traps/gifts).&lt;br /&gt;
&lt;br /&gt;
==1999==&lt;br /&gt;
January 6 of this year saw the first release of the [[Raven Software]] source code.&lt;br /&gt;
;{{LE|1.17}} (February 17): {{forum|t=15|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/zdos117c.zip DOS build]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* [[Multiplayer]] games with [[monster]]s do not crash.&lt;br /&gt;
:* Player corpses do not levitate and then fall down when a player respawns in multiplayer games.&lt;br /&gt;
:* Using {{CCMD|P|togglemap}} outside of a game will not crash.&lt;br /&gt;
:* Monsters stop attacking their target once it is dead.&lt;br /&gt;
:* EV_StopPlat() does not get stuck in an infinite loop if there are [[moving platform]]s.&lt;br /&gt;
:* Partially invisible players are drawn the proper colors (instead of green) if {{CVAR|R|r_drawfuzz}} is 0.&lt;br /&gt;
:* If you are invisible, so are your muzzle flashes.&lt;br /&gt;
:* Trying to execute a non-existent [[ACS|script]] will not crash.&lt;br /&gt;
:* Using a [[ChangeCamera]] special from an open script will not crash.&lt;br /&gt;
:* The [[FloorAndCeiling_RaiseByValue]] and [[FloorAndCeiling_LowerByValue]] now behave like &#039;&#039;[[Hexen]]&#039;&#039;&#039;s.&lt;br /&gt;
:* Using {{c|{{param|-loadgame}}}} from the [[command line]] works.&lt;br /&gt;
:* Fixed a memory leak during generation of the translucency tables.&lt;br /&gt;
:* In high resolutions, weapon sprites meet the bottom of the screen.&lt;br /&gt;
:* Sounds will not cut out mysteriously when there is no reason for them to do so.&lt;br /&gt;
:* Sounds will also not be stopped immediately when a thing is removed, so explosion sounds will play to their full length.&lt;br /&gt;
:* Things can make more than one sound at once.&lt;br /&gt;
:* The [[deathmatch]] [[scoreboard]] is aligned properly at high resolutions.&lt;br /&gt;
:* {{CCMD|P|Spynext}} and {{CCMD|P|spyprev}} work properly instead of leaving the [[status bar]] &amp;quot;lagging behind&amp;quot; the player being viewed.&lt;br /&gt;
:* The {{Class|Infrared|light-amp}} does not disable colored lighting.&lt;br /&gt;
:* The [[sky]] gets {{dw|invulnerability colormap bug|inverted}} when using the invulnerability powerup.&lt;br /&gt;
:* Implemented better z-checking code (from &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039;).&lt;br /&gt;
:* {{Class|PainElemental|Pain elementals}} will spawn one {{Class|LostSoul|lost soul}} at a time instead of two inside of each other.&lt;br /&gt;
:* Bex patches that use thing mnemonics really do work now, and unknown bit messages aren&#039;t generated for regular [[DeHackEd]]  patches.&lt;br /&gt;
:* Linedef type 134 for regular &#039;&#039;[[Doom]]&#039;&#039;/[[Boom]] maps requires a red key for activation (it was being improperly translated to require a blue one).&lt;br /&gt;
:* Monsters can activate secret lines when they cross them. (See &#039;&#039;[[Doom II]]&#039;&#039; MAP08).&lt;br /&gt;
:* The player extreme death sound is used.&lt;br /&gt;
:* When a player leaves a network game, their body is removed instead of being left empty.&lt;br /&gt;
:* 0-length sounds are treated as empty sounds instead of sounds 4 gigs long.&lt;br /&gt;
:* [[Skin]]s that replaced player sounds with sounds in the [[IWAD]] work.&lt;br /&gt;
:* Muzzle flashes do not light up foggy areas, and fullbright sprites stay shrouded in fog.&lt;br /&gt;
:* Alphanumeric keys no longer automatically repeat on the console.&lt;br /&gt;
:* Wads such as gothicdm2 that used new flats in addition to the ones in the IWAD with the regular doom.exe work.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Significant speed improvements on modern processors.&lt;br /&gt;
:* [[Armor]] and [[key]]s are shown on the fullscreen HUD.&lt;br /&gt;
:* Colored text.&lt;br /&gt;
:* A {{CCMD|P|playdemo}} console command.&lt;br /&gt;
:* A [[chasecam]].&lt;br /&gt;
:* A [[particle]] system.&lt;br /&gt;
:* An optional [[railgun]] to show off the particle system. (Start the game with {{c|{{param|-deh}} [[railgun.bex]]}} if you want to use it.)&lt;br /&gt;
:New features interesting for wad authors:&lt;br /&gt;
:* [[Polyobject]]s.&lt;br /&gt;
:* [[Sound sequence]]s.&lt;br /&gt;
:* WAVE files can be used as sound lumps without converting them to DMX&#039;s format first.&lt;br /&gt;
:* A sky can be specified to not be stretched even if it is shorter than 200 pixels.&lt;br /&gt;
:* {{Class|Spark}}s.&lt;br /&gt;
:* {{Class|ParticleFountain|Particle fountain}}s.&lt;br /&gt;
:* Parallax skies.&lt;br /&gt;
:* Some new [[DeHackEd]] thing flags from &#039;&#039;[[Hexen]]&#039;&#039; (bobbing, reflective, etc.).&lt;br /&gt;
;{{LE|1.17a}} (February 21): {{forum|t=16|Release thread}}&lt;br /&gt;
:Mostly minor bug fixes, released because [[Herian 2]] needed some of those fixes. There are a few new features, however:&lt;br /&gt;
:* If you have a skins/ directory in the same directory as zdoom.exe, every wad file in it will be automatically loaded when the game starts. This way, you don&#039;t have to load your [[skin]]s by hand to use them.&lt;br /&gt;
:* New formatting options for text [[print]]ed using [[ACS]].&lt;br /&gt;
:* A [[A_MonsterRail|code pointer]] to make monsters fire a railgun.&lt;br /&gt;
;{{LE|1.17b}} (March 17): {{forum|t=21|Release thread}}&lt;br /&gt;
:Some minor bug fixes over 1.17 and 1.17a. It also loads faster because the sprite dimensions are not cached until they are actually needed. There are also some other internal changes in preparation for supporting &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, but those don&#039;t affect the user yet.&lt;br /&gt;
;{{LE|1.17b1}} (March 19): {{forum|t=22|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|1.17c}} (May 5): {{forum|t=28|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom117c.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom117c-src.zip Source]}}&lt;br /&gt;
:* Fixed game saving crashes on maps with [[wind]]/[[current]] effects.&lt;br /&gt;
:* In [[Boom]] [[deep water]] sectors, the underwater light and fog colors can now be set independently of the area above water.&lt;br /&gt;
:* Added nojump, allowjump, nofreelook, and allowfreelook keywords for use in [[MAPINFO]] lumps to control [[jumping]] and [[free look]].&lt;br /&gt;
:* The random number seed now changes each time you run the program.&lt;br /&gt;
;{{LE|1.18 test 1}} (June 30): {{forum|t=33|Release thread}}&lt;br /&gt;
:* Tweaked the optimized renderer for fifth-generation processors.&lt;br /&gt;
:* Added the following specials:&lt;br /&gt;
::*[[Line_AlignFloor]]&lt;br /&gt;
::*[[Line_AlignCeiling]]&lt;br /&gt;
::*[[Sector_SetRotation]]&lt;br /&gt;
::*[[Sector_SetCeilingPanning]]&lt;br /&gt;
::*[[Sector_SetFloorPanning]]&lt;br /&gt;
::*[[Sector_SetCeilingScale]]&lt;br /&gt;
::*[[Sector_SetFloorScale]]&lt;br /&gt;
:* Added an additional parameter to the [[Transfer_Heights]] special.&lt;br /&gt;
:* Switched to the [http://sourceforge.net/projects/openptc/ OpenPTC] library for display.&lt;br /&gt;
:* Converted lots of code to an object-oriented C++ architecture.&lt;br /&gt;
;{{LE|1.18 test 2}} (July 1): {{forum|t=36|Release thread}}&lt;br /&gt;
:* Fixed vertical aim clipping ({{Class|BFG9000|BFG}} works again).&lt;br /&gt;
:* Fixed [[monster]] wandering.&lt;br /&gt;
:* Maps with mapthings of type 0 no longer generate warning messages.&lt;br /&gt;
:* [[Crusher]]s that do no damage no longer act as if they inflict pain to actors.&lt;br /&gt;
:* The [[alias]] command lists aliases again.&lt;br /&gt;
:* Aliases are saved to the [[config file]] again.&lt;br /&gt;
;{{LE|1.18 test 3}} (July 2): {{forum|t=37|Release thread}}&lt;br /&gt;
:* Removed unnecessary display mode switches.&lt;br /&gt;
:* Created a DCanvas class to encapsulate most 2D rendering.&lt;br /&gt;
;{{LE|1.18 test 4}} (July 3): {{forum|t=39|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;Bad DCanvas::CopyRect&amp;quot; problem introduced in test3.&lt;br /&gt;
:* Fixed [[sound sequence]]s that should not be cut off when stopped (such as the standard doors).&lt;br /&gt;
;{{LE|1.18 test 5}} (July 6): {{forum|t=40|Release thread}}&lt;br /&gt;
:* Fixed a potential infinite loop that was introduced in [[#1.18 test 1|118test1]].&lt;br /&gt;
:* Delayed the initial execution of [[CVAR]] callbacks.&lt;br /&gt;
:* Added &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{wp|Xiaolin Wu&#039;s line algorithm|anti-aliased Wu line drawer}} to the [[automap]].&lt;br /&gt;
;{{LE|1.18 test 6}} (July 10): {{forum|t=41|Release thread}}&lt;br /&gt;
:* Rewrote the {{wp|Xiaolin Wu&#039;s line algorithm|Wu line drawer}} to look better (especially in overlay mode).&lt;br /&gt;
:* [[Sky stretching|Stretched skies]] now get stretched horizontally as well as vertically.&lt;br /&gt;
:* Did an initial integration of the [[Cajun Bot]] 0.71 code.&lt;br /&gt;
;{{LE|1.18 test 7}} (July 12):&lt;br /&gt;
:* Fixed handling of maps with scrolling walls.&lt;br /&gt;
:* Single player works again. In test 6, all games were considered either [[coop]] or [[deathmatch]].&lt;br /&gt;
:* Disabled the [[bot]] thinking code in single player games, so you don&#039;t suffer a performance hit when not using bots.&lt;br /&gt;
:* Added some performance counters accessible through the {{CCMD|D|stat}} command.&lt;br /&gt;
;{{LE|1.18 test 8}} (July 20): {{forum|t=43|Release thread}}&lt;br /&gt;
:* Fixed a crash problem with the &amp;quot;burn&amp;quot; [[screen wipe]].&lt;br /&gt;
:* Fixed a crash problem with playing non-assigned [[sound sequence]]s.&lt;br /&gt;
:* Fixed a crash problem related to trying to shutdown the music subsystem twice.&lt;br /&gt;
:* If you try to add more coop [[bot]]s than there are coop starts, the extra bot leaves quietly instead of ending the game.&lt;br /&gt;
:* {{CVAR|C|sv_weapondrop|Weapondrop}} is now a &amp;quot;server&amp;quot; CVAR, which it should have been in the first place.&lt;br /&gt;
:* Changed the nodetable file format to be more compact.&lt;br /&gt;
:* Bots can now be recorded in demos.&lt;br /&gt;
:* Bots work in [[multiplayer]] games. Still buggy. Spawning bots can cause consistency failures, and they can start spinning wildly.&lt;br /&gt;
;{{LE|1.18 test 9}} (August 9): {{forum|t=44|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;wild&amp;quot; [[bot]] spinning problem.&lt;br /&gt;
:* Commands like {{CCMD|D|changemap}} that could make network games go out of sync should work properly now. The reason they would do that is closely related to the reason that the bots would start spinning.&lt;br /&gt;
:* Finished the serializer. Now savegames work. [[Hub]]s don&#039;t, because I haven&#039;t written the player travelling code yet.&lt;br /&gt;
:* Various other code cleanup.&lt;br /&gt;
;{{LE|1.18 test 10}} (August 14):&lt;br /&gt;
:* Reimplemented [[hub]] travel.&lt;br /&gt;
:* Optimized R_MapPlane slightly.&lt;br /&gt;
:* Added {{CCMD|D|fov}} command.&lt;br /&gt;
:* Added vertical sub-pixel accuracy to the renderer.&lt;br /&gt;
:* Added searches for an [[IWAD]] in the current directory, $DOOMWADDIR, and $HOME.&lt;br /&gt;
;{{LE|1.18}} (September 5): {{forum|t=46|Release thread}}&lt;br /&gt;
:* Replaced the older [[Bots|Cajun]] 0.71 with Cajun 0.97.&lt;br /&gt;
:* Fixed handling of [[status bar]] [[mugshot|faces]] with [[skin]]s that provide them.&lt;br /&gt;
:* Added [[swimmable water]].&lt;br /&gt;
:* Messages printed to the middle of the screen also print to the [[console]].&lt;br /&gt;
:* Skill and other server [[CVARs]] get saved in [[savegame]]s again.&lt;br /&gt;
:* Added liquid [[texture warping]].&lt;br /&gt;
:* Bad [[MAPINFO]] lumps generate error messages instead of hanging.&lt;br /&gt;
:* Realized that it&#039;s impossible to guarantee that all object pointers will be valid without some effort, so FArchive saves DObject objects as NULL objects now instead of aborting with an error.&lt;br /&gt;
:* Added the [[built-in ACS functions]] [[LocalAmbientSound]], [[ActivatorSound]], and [[SetLineMonsterBlocking]].&lt;br /&gt;
:* Added a {{Class|SecretTrigger|thing}} that does nothing but count toward the number of [[secret]]s.&lt;br /&gt;
:* Added a {{CCMD|D|fly}} mode.&lt;br /&gt;
:* Finally implemented the {{CCMD|P|+moveup}} and {{CCMD|P|+movedown}} commands.&lt;br /&gt;
;{{LE|1.18a}} (September 12): {{forum|t=47|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed [[liquid warping]] temporarily stopping when changing levels.&lt;br /&gt;
:* {{CCMD|P|+mlook|+/-mlook}} commands do not generate unknown command messages.&lt;br /&gt;
:* Fixed support for maps with &amp;gt;10 deathmatch starts. Thanks to Roman Hatsiev.&lt;br /&gt;
:* Fixed support for the special &amp;quot;maps&amp;quot; EndGame? in MAPINFO lumps.&lt;br /&gt;
:* {{Class|TeleportDest2|Teleport destination (no gravity)}} now works as intended.&lt;br /&gt;
:* Hopefully fixed [[savegame]] problems.&lt;br /&gt;
:* [[Bots]] are restored from savegames.&lt;br /&gt;
:* Fixed keyboard turning speed when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* Network commands get executed only once when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* In sectors with [[damaging floor]]s and swimmable [[deep water]], the damage will also be applied while the player is swimming and not just when the player is on the ground.&lt;br /&gt;
;{{LE|1.18b}} (September 15): {{forum|t=48|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom118b.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom118b-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed crash when saving games with more than 1024 objects.&lt;br /&gt;
:* Fixed crash when loading a game without starting a new one first.&lt;br /&gt;
:* Reduced the size and frequency of pregame network packets, under the assumption that problems people were having using 1.18 on the Internet are a result of limited modem bandwidth.&lt;br /&gt;
;{{LE|1.19}} (November 24): {{forum|t=53|Release thread}} | {{forum|t=54|Source/Linux build release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom-1.19.tar.gz Source]}}&lt;br /&gt;
:First official Linux build.&lt;br /&gt;
:* [[DeHackEd]] patches that set an actor&#039;s {{Property|DeathSound|death sound}} to 0 without removing the [[A_Scream]] call no longer crash.&lt;br /&gt;
:* Fixed sync problems when playing with {{Class|BulletPuff|bullet puffs}} as [[particle]]s vs as sprites.&lt;br /&gt;
:* Fixed friction when walking on the bottom of swimmable water.&lt;br /&gt;
:* Added Jeffrey Cuenco&#039;s fixes to get {{c|{{param|-host}}}} and {{c|{{param|-join}}}} [[command line parameters]] to work properly.&lt;br /&gt;
:* Fixed [[Boom]] [[Generic_Door|generalized locked doors]] so that the open/close type will actually close.&lt;br /&gt;
:* Added pointer tracking and cleanup. This should fix the occasional crashes when saving games and various other anomalies.&lt;br /&gt;
;{{LE|1.20}} (November 25): {{forum|t=56|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed saving, reloading, and then resaving [[savegame|games]] when travelling between levels in a [[hub]].&lt;br /&gt;
:* Fixed saving of [[ACS]] scripts scheduled to occur on a future level.&lt;br /&gt;
;{{LE|1.21}} (November 26): {{forum|t=57|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom121.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom121-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed problems with thinkers removing themselves and causing other thinkers to not get a chance to think.&lt;br /&gt;
:* Added {{CVAR|R|hud_scale}} CVAR&lt;br /&gt;
;{{LE|1.22}} (November 12): {{forum|t=60|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom122.zip Windows build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22-i386.tar.gz Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom122-src.zip Windows source] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22.tar.gz Linux source]}}&lt;br /&gt;
:* [[Scroll_Texture_Both]] and [[TranslucentLine]] specials can now be used from [[ACS]].&lt;br /&gt;
:* Fixed compiler-dependent [[CVAR]] ordering during [[netgame]] arbitration.&lt;br /&gt;
:* Fixed certain [[polyobject]] movement combinations that would not stop even though they were supposed to.&lt;br /&gt;
:* Did some cleanup for Alpha processors.&lt;br /&gt;
&lt;br /&gt;
==2000==&lt;br /&gt;
June 20 of this year saw the public release of the [[Build]] source code.&lt;br /&gt;
;{{LE|1.23 Beta}} (May 10): {{forum|t=64|Release thread}}&lt;br /&gt;
:*Partial &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; support.&lt;br /&gt;
:*Windows build uses [[FMOD Ex|FMOD]] instead of [http://www.s2.org/midas/ MIDAS].&lt;br /&gt;
&lt;br /&gt;
==2001==&lt;br /&gt;
;{{LE|1.23 Beta 19}} (March 9): {{forum|t=74|Release thread}}&lt;br /&gt;
:Added new [[camera]] types.&lt;br /&gt;
:Added [[LANGUAGE|string localization]].&lt;br /&gt;
:Added [[decal]]s.&lt;br /&gt;
:Added [[slope]]s.&lt;br /&gt;
:Added [[skybox]]es.&lt;br /&gt;
;{{LE|1.23 Beta 20}} (March 11): {{forum|t=75|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 23}} (April 9): {{forum|t=76|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 24}} (April 12): {{forum|t=77|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 25}} (August 15): {{forum|t=81|Release thread}}&lt;br /&gt;
:Linux build now uses SDL&lt;br /&gt;
;{{LE|1.23 Beta 28}} (September 17): {{forum|t=83|Release thread}}&lt;br /&gt;
:Added a few [[decal]]-related [[CVARs]].&lt;br /&gt;
;{{LE|1.23 Beta 28a}} (December 13): {{forum|t=88|Release thread}}&lt;br /&gt;
&lt;br /&gt;
==2002==&lt;br /&gt;
;{{LE|1.23 Beta 33}} (February 5): {{Forum|t=90|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-linux.bz2 Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-src.tar.bz2 Source]}}&lt;br /&gt;
:Many fixes and rendering optimization.&lt;br /&gt;
:*Increased &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039; support&lt;br /&gt;
:*Improved [[decal]]s.&lt;br /&gt;
:*Added support for the [[Bloodbath announcer]]&lt;br /&gt;
:*Added [[underwater]] [[REVERBS|reverb]] effect.&lt;br /&gt;
:*Added [[Line_Horizon]] effect.&lt;br /&gt;
:*Added {{Class|ScriptedMarine|scripted marines}} and several [[ACS]] enhancements.&lt;br /&gt;
:*Added support for [[DeePsea]]&#039;s [[patch|tall patches]].&lt;br /&gt;
:*Added [[slope]] things.&lt;br /&gt;
:*Changed [[license]] for original ZDoom source code to a &amp;quot;BSD-ish one&amp;quot;.&lt;br /&gt;
;{{LE|2.0 Beta 13}} (August 27):&lt;br /&gt;
:*Further increased &#039;&#039;Heretic&#039;&#039;/&#039;&#039;Hexen&#039;&#039; support.&lt;br /&gt;
:*Added [[PNG]] support for screenshots. [[Savegame]]s are actually PNG files now.&lt;br /&gt;
:*Added [[ZDBSP|internal nodebuilder]], made it [[polyobject]]-aware.&lt;br /&gt;
:*Added SNES SPC music support.&lt;br /&gt;
:*Added a loader for [[Build]] maps.&lt;br /&gt;
:*Added support for double- and quadruple-resolution flats (128x128 and 256x256).&lt;br /&gt;
:*Added ACS [[libraries]].&lt;br /&gt;
:*Added support for up to 8 mouse buttons.&lt;br /&gt;
:*Added the very first version of [[DECORATE]].&lt;br /&gt;
:*Removed [[MBF]]&#039;s torque simulation because of the problems it caused.&lt;br /&gt;
;{{LE|2.0.21}} (December 10)&lt;br /&gt;
;{{LE|2.0.22}} (December 11)&lt;br /&gt;
;{{LE|2.0.23}} (December 12)&lt;br /&gt;
;{{LE|2.0.24}} (December 12)&lt;br /&gt;
;{{LE|2.0.25}} (December 13)&lt;br /&gt;
;{{LE|2.0.26}} (December 19)&lt;br /&gt;
;{{LE|2.0.27}} (December 19)&lt;br /&gt;
;{{LE|2.0.28}} (December 24)&lt;br /&gt;
;{{LE|2.0.29}} (December 28)&lt;br /&gt;
&lt;br /&gt;
==2003==&lt;br /&gt;
;{{LE|2.0.30}} (January 1)&lt;br /&gt;
;{{LE|2.0.32}}, {{LE|2.0.33}} (January 2)&lt;br /&gt;
;{{LE|2.0.34}} (January 3)&lt;br /&gt;
;{{LE|2.0.35}} (January 8)&lt;br /&gt;
;{{LE|2.0.36}} (January 10)&lt;br /&gt;
;{{LE|2.0.37}} (January 23)&lt;br /&gt;
;{{LE|2.0.38}} (January 24)&lt;br /&gt;
;{{LE|2.0.39}} (February 2)&lt;br /&gt;
;{{LE|2.0.40}} (February 8)&lt;br /&gt;
;{{LE|2.0.41}} (February 10)&lt;br /&gt;
;{{LE|2.0.42}} (February 12)&lt;br /&gt;
;{{LE|2.0.43}} (April 8)&lt;br /&gt;
;{{LE|2.0.44}} (April 9)&lt;br /&gt;
;{{LE|2.0.45}} (April 9)&lt;br /&gt;
;{{LE|2.0.46}} (April 14)&lt;br /&gt;
;{{LE|2.0.47}} (April 26): {{Forum|t=101|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/47.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47i}} (June 9): {{plainlink|[http://www.zdoom.org/files/lars/47i.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47j}} (July 7):&lt;br /&gt;
;{{LE|2.0.47l}} (July 21):&lt;br /&gt;
;{{LE|2.0.47o}} (August 5):&lt;br /&gt;
;{{LE|2.0.47p}} (August 6):&lt;br /&gt;
;{{LE|2.0.48}} (October 23):&lt;br /&gt;
:*Interchangeability between [[flat]]s and [[texture]]s.&lt;br /&gt;
;{{LE|2.0.49}}, {{LE|2.0.50}} (October 26)&lt;br /&gt;
;{{LE|2.0.51}} (October 30)&lt;br /&gt;
;{{LE|2.0.52}} (October 31)&lt;br /&gt;
;{{LE|2.0.53}} (November 16)&lt;br /&gt;
;{{LE|2.0.54}}, {{LE|2.0.55}} (November 23)&lt;br /&gt;
;{{LE|2.0.56}} (November 25)&lt;br /&gt;
;{{LE|2.0.57}} (November 26)&lt;br /&gt;
;{{LE|2.0.58}}, {{LE|2.0.59}} (December 7)&lt;br /&gt;
;{{LE|2.0.60}} (December 8)&lt;br /&gt;
&lt;br /&gt;
==2004==&lt;br /&gt;
;{{LE|2.0.61}} (January 22) &lt;br /&gt;
;{{LE|2.0.62}} (February 7):&lt;br /&gt;
:*Added modern [[DECORATE]] support.&lt;br /&gt;
;{{LE|2.0.63}} (February 10): {{plainlink|[http://www.zdoom.org/files/lars/63.cab Build] {{!}} [http://www.zdoom.org/files/lars/63src.cab Source]}}&lt;br /&gt;
:*Added custom monsters to DECORATE.&lt;br /&gt;
;{{LE|2.0.64}} (June 8)&lt;br /&gt;
;{{LE|2.0.90}} (October 21):&lt;br /&gt;
:*Added &#039;&#039;[[Strife]]&#039;&#039; support and new inventory system&lt;br /&gt;
;{{LE|2.0.91}} (October 22)&lt;br /&gt;
;{{LE|2.0.92}} (October 31)&lt;br /&gt;
;{{LE|2.0.93}} (November 3)&lt;br /&gt;
;{{LE|2.0.94}} (November 19)&lt;br /&gt;
;{{LE|2.0.95}} (December 24): {{plainlink|[http://www.zdoom.org/files/lars/95changes.html Changelog]}}&lt;br /&gt;
:*Added [[camera]] textures to [[ANIMDEFS]] and [[SetCameraToTexture]]&lt;br /&gt;
:*Improved [[console]] tab completion, added Ctrl-X shortcut to clear the console&#039;s command line&lt;br /&gt;
:*Several &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039; fixes&lt;br /&gt;
:*Merged in Jim&#039;s [[ACS]] character array [[print]]ing support. &lt;br /&gt;
:*Added the [[polymost]] clipper.&lt;br /&gt;
:*Added support for 16:10 and 5:4 aspect ratios and letterboxing.&lt;br /&gt;
:*Added [[scope|static local variables]], [[Log]], [[SetAmmoCapacity]] and [[GetAmmoCapacity]] to [[ACS]].&lt;br /&gt;
;{{LE|2.0.96}} (December 25): {{plainlink|[http://www.zdoom.org/files/lars/96.cab Build] {{!}} [http://www.zdoom.org/files/lars/96src.cab Source] {{!}} [http://www.zdoom.org/files/lars/96changes.html Changelog]}}&lt;br /&gt;
:*Added [[TITLEMAP]]&lt;br /&gt;
&lt;br /&gt;
==2005==&lt;br /&gt;
;{{LE|2.0.97}} (September 28): {{forum|t=8060|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/97.cab Build] {{!}} [http://www.zdoom.org/files/lars/97src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*The [[LANGUAGE]] lump is now text-based.&lt;br /&gt;
:*Added IMF [[music format]] support.&lt;br /&gt;
:*Ported [[SetActorAngle]] and [[SetLineBlocking|BLOCK_RAILING]] from the [[ZDoom Community Build]].&lt;br /&gt;
:*Added [[Polymost]] visualization code from [[Build]].&lt;br /&gt;
:*Gave {{Flag|DONTMORPH}} flag to {{Class|Cyberdemon}}, {{Class|SpiderMastermind}}, {{Class|AlienSpectre1}}, {{Class|Crusader}}, {{Class|Programmer}}, and {{Class|Inquisitor}}.&lt;br /&gt;
:*Made {{Class|Puffy}} and projectiles spawned by [[A_LastZap]] deal no damage.&lt;br /&gt;
:*[[Teleport_NewMap]] can now be used within a [[TITLEMAP]] in order to make it possible to use different maps as the title map.&lt;br /&gt;
:*Merged in Graf Zahl&#039;s [[Caverns of Darkness]] patch.&lt;br /&gt;
:*Added [[Polymost]] wireframe mode.&lt;br /&gt;
:*Added {{CCMD|O|writeopl}} console command.&lt;br /&gt;
:*[[UsePuzzleItem]] can now be a [[thing]]&#039;s [[special]].&lt;br /&gt;
:*Missiles with negative damage now give you health.&lt;br /&gt;
;{{LE|2.0.98}} (November 3): {{forum|t=8460|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/98.cab Build] {{!}} [http://www.zdoom.org/files/lars/98src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
&lt;br /&gt;
==2006==&lt;br /&gt;
February 16 of this year saw the first commit to the [[SVN]] repository.&lt;br /&gt;
;{{LE|2.1.0}}{{rev|204}} (June 21): {{forum|t=10550|Release thread}} | {{plainlink|[http://zdoom.org/files/old/zdoom-2.1.0.zip Build] {{!}} [http://zdoom.org/files/old/zdoom-2.1.0-src.7z Source]}}&lt;br /&gt;
:*Added several things from [[ZDoom Community Build]] (unofficial 2.0.96x) and [[GZDoom]], including custom [[DECORATE]] [[weapon]]s.&lt;br /&gt;
;{{LE|2.1.1}}{{rev|226}} (June 25): {{forum|t=10630|Release thread}} | {{versionlinks|2|1|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|2.1.2}}{{rev|257}} (July 17): {{forum|t=10895|Release thread}} | {{versionlinks|2|1|2}}&lt;br /&gt;
:*Added custom [[player class]]es.&lt;br /&gt;
:*Added &amp;quot;replaces&amp;quot; keyword for [[DECORATE]].&lt;br /&gt;
:*[[IWAD selection box]] now remembers the last choice.&lt;br /&gt;
:*Added [[A_RadiusThrust]] to DECORATE.&lt;br /&gt;
:*Added [[ThingCountName]] and  [[SpawnSpotFacing]] to [[ACS]].&lt;br /&gt;
:*Changed additive scroller options into a [[compatibility options|compatibility flag]].&lt;br /&gt;
;{{LE|2.1.3}}{{rev|265}} (July 18): {{forum|t=10930|Release thread}} | {{versionlinks|2|1|3}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Sounds can be specified by full path now in [[SNDINFO]] and [[S_SKIN]].&lt;br /&gt;
:* [[DECORATE]] replacement is more universal.&lt;br /&gt;
:* Added NecroMage&#039;s submission for bitwise/shift assignment operators for [[ACS]]. (Requires [[ACC]] 1.42+.)&lt;br /&gt;
:* Changed PlayAttacking2 to always use the melee state instead of different implementations per player and hard coding it to MissileState+1. Also changed PlayAttacking for the {{Class|HereticPlayer}} to use the same animation as PlayAttacking2. Now the special handling for &#039;&#039;[[Heretic]]&#039;&#039; in the FireWeapon functions can be removed.&lt;br /&gt;
;{{LE|2.1.4}}{{rev|273}} (July 29): {{forum|t=11063|Release thread}} | {{versionlinks|2|1|4}}&lt;br /&gt;
:*Added partial emulation of [[Boom]]&#039;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.&lt;br /&gt;
:*Added a {{CVAR|C|queryiwad_key}} cvar to control which key can force the [[IWAD selection box]] to appear. It can be either &amp;quot;shift&amp;quot; or &amp;quot;control&amp;quot;. Any other value will disable its functionality.&lt;br /&gt;
;{{LE|2.1.5}}{{rev|321}} (September 2): {{forum|t=11466|Release thread}} | {{versionlinks|2|1|5}}&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInfo]], [[ChangeLevel]], [[SectorDamage]], [[ReplaceTextures]]&lt;br /&gt;
:*New [[DECORATE]] functions: [[A_PlaySoundEx]], [[A_StopSoundEx]]&lt;br /&gt;
:*The {{CVAR|C|vid_nowidescreen}} cvar can be used to disable widescreen aspect ratio correction.&lt;br /&gt;
:*[[A_SpawnDebris]] and [[A_SpawnItem]] can optionally transfer the caller&#039;s color translation to the newly spawned item.&lt;br /&gt;
:*New morphing artifacts can be created by subclassing the {{Class|MorphProjectile}} and {{Class|MorphedMonster}} classes.&lt;br /&gt;
:*[[A_FireCustomMissile]] has a new parameter: Previously it always aimed straight ahead and altered the projectile&#039;s angle according to the resulting direction. If the 6th parameter is 1 now it will aim at the specified angle directly.&lt;br /&gt;
:*Users can now define their own [[TEXTCOLO|text colors]], and there are several new standard ones.&lt;br /&gt;
:*The fourth parameter of [[Polyobj_StartLine]] and the fifth parameter of [[Polyobj_ExplicitLine]] now set the line&#039;s ID.&lt;br /&gt;
:*DECORATE explosion parameters are no longer considered deprecated.&lt;br /&gt;
:*Calling [[Radius_Quake]], [[Thing_Activate]], or [[Thing_Remove]] with a [[TID]] of 0 now operates the activator.&lt;br /&gt;
:*Strife&#039;s {{Class|PhosphorousFire}} now does completely thrustless damage.&lt;br /&gt;
:*An actor&#039;s damage in DECORATE can now be specified as an expression that is evaluated each time it needs to do damage. To do this, enclose it within parentheses, and the normal Doom damage calculation will be bypassed.&lt;br /&gt;
:*Passing a negative script number to the {{CCMD|D|puke}} [[console command]] now runs the script with [[ACS_ExecuteAlways]] instead of [[ACS_Execute]].&lt;br /&gt;
:*[[Polyobject]]s defined with [[Polyobj_ExplicitLine]] are no longer limited to 64 segs.&lt;br /&gt;
:*Starting a new game or reloading an old one no longer resets the [[chasecam]].&lt;br /&gt;
:*The [[automap]] background is now a regular texture.&lt;br /&gt;
:*Added support for many [[image format]]s for use as textures: [[PNG]], JPEG, PCX, TGA, DDS.&lt;br /&gt;
:*Numerous bugfixes.&lt;br /&gt;
;{{LE|2.1.6}}{{rev|346}} (October 2): {{forum|t=11758|Release thread}} | {{versionlinks|2|1|6}}&lt;br /&gt;
:*Scaled 2D images are supported.&lt;br /&gt;
:*Dehacked max health usage defaults to consistency with other ([[Boom]]) ports.&lt;br /&gt;
:*A &#039;&#039;font&#039;&#039; parameter was added to [[A_Print]].&lt;br /&gt;
:*Quoted strings in [[DECORATE]] can no longer span multiple lines without using the escape character (\) at the end of each line. This makes it easier to spot places where you unintentionally left off a closing quote and got an error several lines later.&lt;br /&gt;
:*A new {{CCMD|O|writeini}} console command can be used to save [[the ini]] at any time, with any file name.&lt;br /&gt;
:*If the ini is write-protected when you quit, an error dialog now opens to let you know your settings could not be saved and gives you the opportunity to unprotect it.&lt;br /&gt;
:*Multiple stat displays can be enabled at once.&lt;br /&gt;
:*Several bugfixes.&lt;br /&gt;
;{{LE|2.1.7}}{{rev|524}} (October 31): {{forum|t=12015|Release thread}} | {{versionlinks|2|1|7}}&lt;br /&gt;
:*Alias commands can now do parameter substitution. If you have %x, where x is some number, in an alias command, it will be replaced by the appropriately numbered parameter passed when the alias is used, with %0 being replaced by the name of the alias itself.&lt;br /&gt;
:*A new {{Class|MapMarker}} actor has been added that you can use to mark points of interest on the [[automap]]. If its first argument is zero, the map marker itself appears on the automap, otherwise it is drawn on top of any actor with a [[TID]] matching that argument. If the second argument is one, then the map marker will only be appear if the player has previously seen the sector it is in. You can use [[Thing_Activate]] and [[Thing_Deactivate]] on markers to turn them on and off. To make custom markers, all you need to do is subclass MapMarker with [[DECORATE]].&lt;br /&gt;
:*Added the [[SetActorPitch]] [[ACS]] command to set an actor&#039;s pitch.&lt;br /&gt;
:*You can pass multiple jump targets to the [[A_Jump]] [[DECORATE]] function, and it will choose one of them at random if it jumps.&lt;br /&gt;
:*Using a [[TID]] of 0 with [[Thing_Deactivate]], [[SetActorAngle]], [[Thing_Spawn]]*, [[Thing_Projectile]]*, and [[Thing_Move]] will now operate on the activator.&lt;br /&gt;
:*The fifth argument for [[Line_SetIdentification]] can be used to set the high byte of the line ID.&lt;br /&gt;
:*Added a {{Property|CameraHeight}} [[DECORATE]] property for actors.&lt;br /&gt;
:*Added special death states for [[projectile]]s hitting actors. If missiles hit a non-bleeding actor, they try the Crash state first. If that doesn&#039;t exist or the actor is bleeding, they try the XDeath state next. If they hit anything else or neither of the two states are defined, they use the normal death state.&lt;br /&gt;
:*Added a {{Flag|PIERCEARMOR}} [[DECORATE]] flag for projectiles.&lt;br /&gt;
:*The {{CCMD|D|morphme}} [[console command]] can be given an optional argument to specify which class to morph into.&lt;br /&gt;
:*Miscellaneous bugfixes.&lt;br /&gt;
&lt;br /&gt;
==2007==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
==2008==&lt;br /&gt;
;{{LE|2.2.0}}{{rev|748}} (February 15): {{forum|t=16272|Release thread}} | {{versionlinks|2|2|0}}&lt;br /&gt;
:*This is the final version of ZDoom to fully support Windows 95 since later versions switched to [[FMOD Ex]].&lt;br /&gt;
:*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 pain and death sounds.&lt;br /&gt;
:*Custom damage color for [[palette flash]]es per [[player class]].&lt;br /&gt;
:*Custom state labels. New states can be defined in [[DECORATE]].&lt;br /&gt;
:*The [[SBARINFO]] lump for creating status bar and other [[HUD]]s.&lt;br /&gt;
:*[[Skill definition]] in [[MAPINFO]], with many properties.&lt;br /&gt;
:*Most thing functions treat a [[TID]] of 0 as the activator now.&lt;br /&gt;
:*Support for [[ENDOOM]] screens and the graphical or semi-graphical [[startup lumps|screens]] from &#039;&#039;[[Heretic]]&#039;&#039;, &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;.&lt;br /&gt;
:*Several things backported from [[Skulltag]], including powerups and flags for increased port compatibility:&lt;br /&gt;
::*{{Class|PowerDrain|Drain}}, {{Class|PowerHighJump|HighJump}} and {{Class|PowerRegeneration|Regeneration}} runes as powerups and used specific player sounds for their sound effects.&lt;br /&gt;
::*PowerQuadDamage and PowerQuarterDamage as more customizable {{Class|PowerDamage}} and {{Class|PowerProtection}}. These new powerups allow free customization of the damage modification per damage type by inheriting from these classes and setting specific values. Such derived damage/protection powerups will be considered as separate powers so that for example a QuadDamage and a DoubleDamage item can be stacked which would result in 8x damage.&lt;br /&gt;
::*{{Property|Armor.MaxBonus}} and {{Property|Armor.MaxBonusMax}} properties to create armor bonuses that increases the max amount that can be given by other armor items.&lt;br /&gt;
::*Custom F1 help screen [[MAPINFO]] option&lt;br /&gt;
::*Added REDMAP and GREENMAP [[palette blend]]s.&lt;br /&gt;
::*Imported SAME_SPAWN_SPOT [[DM flag]]&lt;br /&gt;
::*Pickup sprite for the {{Class|pistol}}.&lt;br /&gt;
::*Imported {{CVAR|R|r_maxparticles}} CVAR.&lt;br /&gt;
:*New [[Direct3D]] code for better Vista support.&lt;br /&gt;
:*Autoload sections in [[the ini]].&lt;br /&gt;
:*[[GZDoom]]&#039;s [[alternate HUD]].&lt;br /&gt;
:*Custom blood on an actor-by-actor basis into [[DECORATE]].&lt;br /&gt;
:*Smart [[autoaim]] code to prevent the targeting of friendly monsters.&lt;br /&gt;
:*New {{Flag|NOBLOODDECALS}} flag that prevents bleeding actors from spawning blood [[decal]]s.&lt;br /&gt;
:*Customizable border textures. They are defined with the [[MAPINFO]] keyword &#039;bordertexture&#039; and are settable per map.&lt;br /&gt;
:*Custom label support for [[A_Chase]] and [[A_VileChase]]&lt;br /&gt;
:*{{Property|Player.RunHealth}} property to expose the {{Class|StrifePlayer}}&#039;s behavior of not being able to run when its [[health]] is below 10.&lt;br /&gt;
:*Customizable gravity per actor&lt;br /&gt;
:*New {{CCMD|D|summonfoe}} console command, which is analogous to {{CCMD|D|summonfriend}} but forces the summoned creature to be hostile instead.&lt;br /&gt;
:*Added two new [[MAPINFO]] flags to control what actor activates impact lines: {{c|MissileShootersActivateImpactLines}} (the current behavior) and {{c|MissilesActivateImpactLines}} (the original &#039;&#039;[[Hexen]]&#039;&#039; behavior).&lt;br /&gt;
:*More player water sounds: {{c|*dive}} (head goes below water), {{c|*surface}} (your head goes back above water), {{c|*gasp}} (getting air back after starting to drown)&lt;br /&gt;
:*Using &amp;quot;*&amp;quot; with [[ACS]]&#039;s music commands will play the level&#039;s default music set in [[MAPINFO]]&lt;br /&gt;
:*Two new CVARs ({{CVAR|C|win_x}} and {{CVAR|C|win_y}}) that keep track of the window position when not playing in fullscreen mode&lt;br /&gt;
:*Key bindings can now be [[print]]ed with [[ACS]]&lt;br /&gt;
:*{{Flag|INVENTORY.KEEPDEPLETED}} flag for inventory items to keep them in the player&#039;s inventory even when they have been used up. If the item also has an inventory bar icon, it will be drawn darkened while it is depleted.&lt;br /&gt;
:*{{Flag|INVENTORY.IGNORESKILL}} flag for ammo that prevents the given quantity from being modified by the skill level&lt;br /&gt;
:*{{Property|Player.AttackZOffset}} for {{Class|PlayerPawn}}. This is the offset from the center of the player at which their attacks are fired and scales according to their crouched height.&lt;br /&gt;
:*Added a new [[SetActorState]] [[ACS]] function.&lt;br /&gt;
:*{{Flag|CANUSEWALLS}} flag which allows a [[monster]] to activate &#039;use&#039; specials like doors. This flag is on by default for any monster, which was the previous behavior.&lt;br /&gt;
:*[[Thing_Stop]] action special.&lt;br /&gt;
:*New {{Flag|FORCERADIUSDMG}} flag that allows exploding items to hurt boss monsters.&lt;br /&gt;
:*New {{Flag|USESPECIAL}} flag that allows using things to execute their [[special]]s.&lt;br /&gt;
:*[[Compatibility option]] to restore the original behavior of the {{Class|PowerInvisibility|Invisibility}} powerup&lt;br /&gt;
:*Telefrag option added to [[A_SpawnItemEx]].&lt;br /&gt;
:*Added option to [[A_Chase]] that prevents the monster from moving.&lt;br /&gt;
:*New {{c|allowrespawn}} MAPINFO option.&lt;br /&gt;
:*New [[scoreboard]]s.&lt;br /&gt;
:*New [[A_LookEx]] function.&lt;br /&gt;
:*Customizable [[team]]s through the [[TEAMINFO]] lump.&lt;br /&gt;
:*New {{CCMD|D|take}} console command to do the opposite of {{CCMD|D|give}}.&lt;br /&gt;
:*[[UseInventory]]/[[UseActorInventory]] [[ACS]] functions.&lt;br /&gt;
:*New [[A_CustomBulletAttack]] &#039;&#039;aimfacing&#039;&#039; parameter&lt;br /&gt;
:*New [[A_PlaySoundEx]] attenuation parameter.&lt;br /&gt;
:*[[Automap]] markers are stored in [[savegame]]s now.&lt;br /&gt;
:*&#039;No respawn&#039; [[DM flag]] which prevents a [[player]] from respawning after they have died.&lt;br /&gt;
:*&#039;Keep frags gained&#039; [[DM flag]] which allows you to choose whether you want to reset the [[frag]]s of each player next level or not.&lt;br /&gt;
:*Sector_Outside [[sector type]] which forces outside [[fog]] regardless of ceiling texture.&lt;br /&gt;
:*User-defined [[crosshair]]s in the [[Display options]] menu. See xhairs.txt in zdoom.pk3.&lt;br /&gt;
:*Generic log display that can show &#039;&#039;[[Strife]]&#039;&#039;&#039;s log messages in all games regardless of the current game, active [[status bar]] and [[HUD]] mode.&lt;br /&gt;
:*Support for stenciling actors with {{Property|RenderStyle}} property.&lt;br /&gt;
:*.TXT files can now be loaded by simply dragging-and-dropping them on top of zdoom.exe.&lt;br /&gt;
:*&#039;Ice&#039; [[translation]] is accessible from [[DECORATE]].&lt;br /&gt;
:*[[Teamplay]] MAPINFO option.&lt;br /&gt;
:*[[ACS]] script type [[RETURN]]. These are executed by players who return to a map they&#039;ve previously been to.&lt;br /&gt;
&lt;br /&gt;
==2009==&lt;br /&gt;
;{{LE|2.3.0}}{{rev|1455}} (March 1): {{Forum|t=21116|Release thread}} | {{versionlinks|2|3|0}}&lt;br /&gt;
:*[[Universal Doom Map Format]] (UDMF) support.&lt;br /&gt;
:*New garbage collector to improve performances on resource-intensive maps.&lt;br /&gt;
:*Sound uses [[FMOD Ex]] instead of FMOD. Among the benefits, [[REVERBS|reverbs]] can now work on any sound card, not just those that support EAX.&lt;br /&gt;
:*SPC is now a first-class [[music format]] that no longer requires an external DLL to play.&lt;br /&gt;
:*Support for [[Vavoom]]&#039;s [[slope|vertex height things]] and [[Eternity Engine]]&#039;s [[3D middle texture]]s.&lt;br /&gt;
:*[[Linked sectors]], to ensure that multiple [[sector]]s can move consistently in sync.&lt;br /&gt;
:*[[TEXTURES]] lump for text-based texture definitions.&lt;br /&gt;
:*[[Automatic compatibility|MD5-based recognition of maps]] that require certain [[compatibility options]] to work (e.g., {{dw|Strain}} map 7 which relied on the {{dw|Spechits overflow}} bug) to apply these settings transparently.&lt;br /&gt;
:*[[Freedoom]], [[Chex Quest]], and [[Chex Quest 3]] are recognized as [[IWAD]]s and can be selected in the [[IWAD selection box]]. New aliases are available for IWADs, too.&lt;br /&gt;
:*New [[MAPINFO]] format (the old is still supported of course) with a more robust syntax.&lt;br /&gt;
:*Custom [[map translator]]s for Doom-format maps, which can be specified in MAPINFO.&lt;br /&gt;
:*[[Strife]] dialogues now work in multiplayer.&lt;br /&gt;
:*Setting up slots for custom weapons no longer requires a [[KEYCONF]] lump, the limit of 8 weapons per slot is removed.&lt;br /&gt;
:*Added the &amp;quot;{{Class|RandomSpawner|random spawner}}&amp;quot; actor, customizable {{Class|BossEye}}s, {{Class|CustomBridge}}, {{Class|FastProjectile}}.&lt;br /&gt;
:*Many new [[compatibility options]], including one to have [[projectile]]s pass through solid decorations.&lt;br /&gt;
:*More flexible use of [[lightning]] in a map.&lt;br /&gt;
:*The two different [[crushing mode]]s (Doom and Hexen) are now selectable per action.&lt;br /&gt;
:*Customizable pickup flash with {{Property|Inventory.PickupFlash}} property.&lt;br /&gt;
:*[[DeHackEd]] music name replacement has been restored.&lt;br /&gt;
:*Rewritten DECORATE parser, more robust and featuring better error reporting. All actors are defined in DECORATE now.&lt;br /&gt;
:*Functions to handle [[weapon]] reloading through DECORATE.&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInput]], [[GetActorProperty|Get]]/[[SetActorProperty]].&lt;br /&gt;
:*Many actions are now more flexible through optional parameters, for example [[A_Die]] can specify damage type to send to a custom Death state, [[A_KeenDie]] can affect tags other than 666, [[A_Fire]] can specify a vertical offset, and so on.&lt;br /&gt;
:*Many, many new [[DMFlags]] for [[cooperative]] plays, such as having to kill all [[monster]]s before leaving the map or seeing the other [[player]]s on the [[automap]].&lt;br /&gt;
:*Enhanced &#039;&#039;[[Strife]]&#039;&#039; support.&lt;br /&gt;
:*Various and sundry bug fixes.&lt;br /&gt;
;{{LE|2.3.1}}{{rev|1480}} (March 15): {{Forum|t=21296|Release thread}} | {{versionlinks|2|3|1}}&lt;br /&gt;
:Mostly a bugfix release.&lt;br /&gt;
:*Fixes the bug that prevented you from switching weapons after respawning in multiplayer.&lt;br /&gt;
:*Fixes a performance regression introduced in 2.3.0.&lt;br /&gt;
:*Adds support for zip/pk3 files with LZMA and BZip2 compression. (7-Zip is one program that can create such files.)&lt;br /&gt;
:*Addresses a few other niggles.&lt;br /&gt;
&lt;br /&gt;
==2010==&lt;br /&gt;
;{{LE|2.4.0}}{{rev|2075}} (January 1): {{Forum|t=24602|Release thread}} | {{versionlinks|2|4|0}}&lt;br /&gt;
:*Rewritten [[archive format|archive]] management code.&lt;br /&gt;
::*Added support for new [[archive format]]s: 7z, &#039;&#039;Quake&#039;&#039; PAK, &amp;quot;Shrink&amp;quot; and &amp;quot;Implode&amp;quot;.&lt;br /&gt;
::*Removed loading limit of 65 535 lumps. The archive manager can now handle up to 4 294 967 295 lumps.&lt;br /&gt;
:*Rewritten mouse and keyboard handling input under Windows.&lt;br /&gt;
:*Reimplemented and improved support for gamepads and joysticks.&lt;br /&gt;
:*Added truecolor display of the [[HUD]], [[menu]]s and other 2D elements outside the game world when using [[Direct3D]] on Windows.&lt;br /&gt;
:*Replaced SNES_SPC with Game Music Emu, greatly increasing the number of supported emulated [[music format]]s.&lt;br /&gt;
:*Added compiling support for {{wp|Macintosh}} systems.&lt;br /&gt;
:*Added [[IWAD]] recognition for Ultimate [[Freedoom]], [[Action Doom 2: Urban Brawl|Action Doom 2]], [[Blasphemer]] and [[Harmony]].&lt;br /&gt;
:*Added {{param|-noautoload}}, {{param|-norun}}, {{param|-stdout}}, and {{param|-warpwipe}} command line parameters.&lt;br /&gt;
:*Added {{CVAR|C|save_dir}} and {{CVAR|R|d3d_antilag}} console variables.&lt;br /&gt;
:*Added optional parameters to {{CCMD|D|summon}} commands, added {{CCMD|D|summonmbf}} command.&lt;br /&gt;
:*Added {{CCMD|D|info}} command to obtain very verbose debugging information on actors.&lt;br /&gt;
:*Buddha mode&lt;br /&gt;
:*Added [[score]] and {{Class|ScoreItem}}s.&lt;br /&gt;
:*Added [[GameInfo definition]]s to [[MAPINFO]].&lt;br /&gt;
:*Changed random seed initialization so that it uses the system&#039;s cryptographically secure random number generator, if available, instead of the current time. Also changed the random number generator from Lee Killough&#039;s algorithm to the SFMT607 variant of the {{wp|Mersenne twister}}.&lt;br /&gt;
:*Disabled custom [[DEHSUPP]] lumps.&lt;br /&gt;
:*Added &#039;damage&#039; to the actor variables exported to [[DECORATE expressions|DECORATE&#039;s expression evaluator]].&lt;br /&gt;
:*Added &#039;frandom&#039; DECORATE function to the expression evaluator, which is like &#039;random&#039; but for floating point values instead of integers.&lt;br /&gt;
:*Added Raven color set and dagger-like vector sprite to the [[automap]].&lt;br /&gt;
:*Added desatured [[translation]]s.&lt;br /&gt;
:*[[SBARINFO]]: Added the ability to center things with fullscreenoffsets enabled, added [[underwater]] stats.&lt;br /&gt;
:*[[MAPINFO]]: Added [no_]grinding_polyobj, resetinventory properties, added EndTitle option for {{c|nextmap}}.&lt;br /&gt;
:*Added actor replacement to [[skill definition]]s.&lt;br /&gt;
:*Exported many hardcoded values to [[GameInfo definition]]s.&lt;br /&gt;
:*Added [[Line_SetBlocking]] and [[Sector_SetPortal]] specials.&lt;br /&gt;
:*Added {{c|defaultterrain}} section to [[TERRAIN]].&lt;br /&gt;
:*Added new [[earthquake]] functions.&lt;br /&gt;
:*Added [[user variable]]s.&lt;br /&gt;
:*[[DECORATE]]: Added {{Property|Species}}, {{Property|Activation}}, {{Property|PainThreshold}}, {{Property|PushFactor}}, {{Property|WeaveIndexXY}}, {{Property|WeaveIndexZ}}, {{Property|Powerup.Strength}}, {{Property|Player.MugShotMaxHealth}}, {{Property|Inventory.InterHubAmount}} properties.&lt;br /&gt;
:*Turned old bounce flags into {{Property|BounceType}} property.&lt;br /&gt;
:*Added {{Property|DamageFactor}} handling to Armors.&lt;br /&gt;
:*Added &amp;quot;BLUEMAP&amp;quot; [[palette blend]] for {{Property|Powerup.Color}}, and added {{Property|Powerup.Colormap}} for custom colormaps.&lt;br /&gt;
:*Added {{Flag|MOVEWITHSECTOR}}, {{Flag|NOBOSSRIP}}, {{Flag|THRUACTORS}}, {{Flag|THRUSPECIES}}, {{Flag|DONTSEEKINVISIBLE}}, {{Flag|FORCEPAIN}}, {{Flag|NOFEAR}}, {{Flag|BUMPSPECIAL}}, {{Flag|STEPMISSILE}}, {{Flag|NOTELEPORT}}, {{Flag|NOTRIGGER}},  {{Flag|AVOIDMELEE}}, {{Flag|JUMPDOWN}}, {{Flag|SCREENSEEKER}}, {{Flag|INVENTORY.PERSISTENTPOWER}}, {{Flag|WEAPON.AMMO_CHECKBOTH}}, {{Flag|WEAPON.NOAUTOAIM}} flags.&lt;br /&gt;
:*Added [[A_CheckCeiling]], [[A_MonsterRefire]], [[A_Weave]], [[A_JumpIfTargetInSight]], [[A_ZoomFactor]], [[A_SetAngle]], [[A_SetPitch]], [[A_ScaleVelocity]], [[A_ChangeVelocity]], [[A_SetCrosshair]], [[A_RemoveSiblings]], [[A_RaiseMaster]]/[[A_RaiseChildren|Children]]/[[A_RaiseSiblings|Siblings]], [[A_Log]], [[A_PrintBold]], [[A_SetArg]], [[A_SetSpecial]], [[A_Blast]] codepointers.&lt;br /&gt;
:*Added parameters to [[A_PodPain]], [[A_MakePod]], [[A_MLightningAttack]], [[A_M_Saw]], [[A_FireCustomMissile]], [[A_FadeOut]], [[A_Explode]], [[A_WeaponReady]], [[A_VileAttack]], [[A_Mushroom]], [[A_SeekerMissile]], [[A_KillChildren]]/[[A_KillMaster|Master]]/[[A_KillSiblings|Siblings]], [[A_CustomRailgun]] and [[A_RailAttack]], added SXF_TRANSFERPOINTERS flag to [[A_SpawnItemEx]] and several flags to [[A_Respawn]].&lt;br /&gt;
:*Imported {{Class|PowerDoubleFiringSpeed}} from [[Skulltag]], added {{Class|PowerInfiniteAmmo}}.&lt;br /&gt;
:*{{Class|PowerProtection}} and {{Class|PowerInvisibility}} can now be used to give certain flags to the player. Other enhancements to PowerInvisibility, such as changing the player&#039;s {{Property|RenderStyle}}.&lt;br /&gt;
:*Customizable mage lightning, sapphire wand, and {{Class|SpawnShot}} spawn lists.&lt;br /&gt;
:*[[ACS]]: compatibility fix for vanilla Hexen map where script execution order is critical.&lt;br /&gt;
:*Added [[GetActorVelX]]/[[GetActorVelY|Y]]/[[GetActorVelZ|Z]], [[SetActorVelocity]], [[GetActorViewHeight]], [[SetActivator]], [[SetActivatorToTarget]], [[GetChar]], [[SetSkyScrollSpeed]], [[GetAirSupply|Get]]/[[SetAirSupply]], [[GetArmorType]], [[CheckActorProperty]], [[CheckActorClass]], [[SoundSequenceOnActor]]/[[SoundSequenceOnSector|Sector]]/[[SoundSequenceOnPolyobj|Polyobj]], [[SpawnSpotForced]] and [[SpawnSpotFacingForced]].&lt;br /&gt;
:*Added ML_BLOCKUSE line flag, accessible through [[UDMF]] and [[Line_SetBlocking]].&lt;br /&gt;
:*Improved [[automatic compatibility]] with {{dw|Hacx}}, {{dw|Suspended in Dusk}}, {{dw|Community Chest}}, {{dw|Doomsday of UAC}}, {{dw|Strain}}, and the {{dw|Astrostein}} series.&lt;br /&gt;
:*[[Compatibility options]]: added Minotaur footclipped floor fire setting, sprite sorting order, [[MBF]]-style [[A_Mushroom]], monster movements affected by terrain, and friendly monsters able to cross blocking lines.&lt;br /&gt;
:*Added arch-vile &amp;quot;ghost&amp;quot; bug emulation for selected maps only.&lt;br /&gt;
:*Added several other MBF features, including {{Class|BetaSkull}}, [[A_FireOldBFG]], and [[DeHackEd]] support of MBF codepointers and actors.&lt;br /&gt;
:*Repaired accuracy of player behavior in &#039;&#039;[[Hexen]]&#039;&#039; with regards to [[jumping]] and pushing enemies away with attacks.&lt;br /&gt;
:*Fixed compatibility issues arising with [[Action Doom]].&lt;br /&gt;
:*Puffs now set their angle to face the originator of the attack.&lt;br /&gt;
:*Added SoulPriestess&#039; patch to force aspect ratio with {{CVAR|R|vid_aspect}}.&lt;br /&gt;
:*Added Spleen&#039;s patch to customize [[railgun]] performances with {{CVAR|R|r_rail_smartspiral}}, {{CVAR|R|r_rail_spiralsparsity}}, and {{CVAR|R|r_rail_trailsparsity}}.&lt;br /&gt;
:*[[UDMF]]: Added per-tier texture scaling with new [[sidedef]] properties and sidedef versions of [[linedef]] flags {{c|wrapmidtex}} and {{c|clipmidtex}}.&lt;br /&gt;
:*Improved [[sky]] projection and [[sky stretching]].&lt;br /&gt;
:*Updated Italian [[LANGUAGE|language]] file.&lt;br /&gt;
:*A whole lot more.&lt;br /&gt;
;{{LE|2.4.1}}{{rev|2126}} (January 24): {{Forum|t=24895|Release thread}} | {{versionlinks|2|4|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*[[Floor_Waggle]] effects are smoother now.&lt;br /&gt;
:*Negative numbers in the [[alternate HUD]] have their minus sign at the right place now.&lt;br /&gt;
:*Menu option scales better in widescreen resolution.&lt;br /&gt;
:*[[Player setup]] menu looks better in non-Doom games.&lt;br /&gt;
:*Moving [[camera]]s work correctly again.&lt;br /&gt;
:*[[Polyobject]]s glitch a bit less now.&lt;br /&gt;
:*The internal nodebuilder works correctly now with certain troublesome maps.&lt;br /&gt;
:*&#039;&#039;[[Strife]]&#039;&#039; conversations fixed and improved.&lt;br /&gt;
:*Many nitpicky fixes in &#039;&#039;Strife&#039;&#039; (switch sounds, messages, etc.).&lt;br /&gt;
:*&#039;&#039;[[Action Doom 2]]&#039;&#039; and &#039;&#039;[[Harmony]]&#039;&#039; can now use idclev, and they have their Autoload section in [[the ini]].&lt;br /&gt;
:*[[MAPINFO]] {{c|ResetInventory}} keyword now works as expected.&lt;br /&gt;
:*The {{CVAR|C|norawinput}} console variable can be set to true to fix input problems while playing a Windows build through {{wp|Wine_(software)|Wine}}.&lt;br /&gt;
:*A [[character input grid]] is available to play ZDoom with a controller without having to use the keyboard.&lt;br /&gt;
:*Added [[GAMEINFO]] lump so that a mod can specify which [[IWAD]] and external resource files it uses.&lt;br /&gt;
;{{LE|2.5.0}}{{rev|2508}} (August 11): {{Forum|t=26755|Release thread}} | {{versionlinks|2|5|0}}&lt;br /&gt;
:*Enhanced [[polyobject]] system, allowing them to move anywhere in the map (like [[Eternity Engine|Eternity]]&#039;s &amp;quot;dynasegs&amp;quot;) and to give them any arbitrary shape. This is accompanied by new [[ACS]] polyobject movement functions.&lt;br /&gt;
:*Support for [[node|uncompressed extended nodes]], also supported by [[Eternity Engine]] and [[PrBoom+]], to create a new cross-port standard for node storage.&lt;br /&gt;
:*Support for using [[Byte Map Font]]s.&lt;br /&gt;
:*Ability to use metadata tags in audio formats to define custom loop points.&lt;br /&gt;
:*Added support for the [[MUSINFO]] lump (from [[Risen3D]] and [[PrBoom+]]).&lt;br /&gt;
:*Improved compatibility settings to allow optionally a greater faithfulness to the [[vanilla Doom]] and vanilla Heretic behaviors.&lt;br /&gt;
:*ZMAPINFO as an alias for [[MAPINFO]] to avoid compatibility problems with other ports parsing this lump.&lt;br /&gt;
:*Full rewrite of the [[SBARINFO]] system allowing many additional features and options.&lt;br /&gt;
:*Added support for multi-monitor display.&lt;br /&gt;
:*default reverbs environment setting in MAPINFO&lt;br /&gt;
:*Several generalized [[action functions|codepointers]] to emulate some very specific &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; action functions&lt;br /&gt;
:*New functions to refine actor behavior through&lt;br /&gt;
:*Enhanced [[poison]] damage system&lt;br /&gt;
:*Generalized [[railgun]] codepointers&lt;br /&gt;
:*New [[automap options]]&lt;br /&gt;
:*[[Hall of mirrors|HOM]] detection system&lt;br /&gt;
:*New [[console commands]]&lt;br /&gt;
:*The usual bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
==2011==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2012==&lt;br /&gt;
;{{LE|2.6.0}}{{rev|3730}} (July 2): {{Forum|t=33295|Release thread}} | {{versionlinks|2|6|0}}&lt;br /&gt;
:*Added [[Hacx]] IWAD support.&lt;br /&gt;
:*Added text-format Strife conversation system with [[USDF]] and [[ZSDF]].&lt;br /&gt;
:*A textured [[automap]] is now available; automap graphics are now [[map arrow|externalized]].&lt;br /&gt;
:*Rewritten [[menu]] system, which can now be defined with the [[MENUDEF]] lump.&lt;br /&gt;
:*Externalized intermissions to [[MAPINFO]].&lt;br /&gt;
:*Externalized [[IWAD]] detection and gave each IWAD its own independent config section.&lt;br /&gt;
:*Added [[FluidSynth]] and [[GUS|GUS emulator]] softsynths; fixed issues with [[TiMidity++]].&lt;br /&gt;
:*Added [[VOC]] support and enhanced [[MIDI]] playback with support for alternative formats such as [[XMI]] and [[HMI]].&lt;br /&gt;
:*[[Action specials]]: Added [[Ceiling_LowerAndCrushDist]] and [[Thing_SetConversation]]. Added [[console command]] to execute specials.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Increased maximum script number from 999 to 32767.&lt;br /&gt;
::*[[Named script]]s allow to avoid script number conflicts.&lt;br /&gt;
::*Added [[StrCpy]], [[CheckSight]], [[SetActivator]], [[SetPointer]] functions.&lt;br /&gt;
::*Added [[ACS actor properties|APROP_ScaleX/Y]] and APROP_Mass actor properties.&lt;br /&gt;
::*Added temporary dynamic strings variables with [[StrParam]].&lt;br /&gt;
::*Scripts can now have up to four parameters.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added [[A_CheckFlag]], [[A_FaceMaster]], [[A_FaceTracer]], [[A_RadiusGive]], [[A_SetMass]], [[A_SetScale]], [[A_Warp]] and [[A_WolfAttack]]...&lt;br /&gt;
::*Enhanced [[A_AlertMonsters]], [[A_BFGSpray]], [[A_Blast]], [[A_CustomBulletAttack]], [[A_FireBullets]], [[A_GunFlash]], [[A_PainAttack]], [[A_RadiusThrust]]...&lt;br /&gt;
::*Added an [[actor pointer]] manipulation system with several new codepointers...&lt;br /&gt;
::*Added {{Flag|DOHARMSPECIES}}, {{Flag|DONTCORPSE}}, {{Flag|SEEINVISIBLE}} and {{Flag|INVENTORY.UNTOSSABLE}}&lt;br /&gt;
::*Increased [[damage type]] flexibility in several ways with {{Property|DeathType}} and {{Property|PainType}}.&lt;br /&gt;
::*Added customizable {{Class|ArtiPoisonBag|fléchettes}}.&lt;br /&gt;
::*Made [[accuracy]] and [[stamina]] accessible through [[DECORATE expressions]].&lt;br /&gt;
::*Added {{Property|ProjectileKickback}}, {{Property|Inventory.RestrictedTo}} and {{Property|Inventory.ForbiddenTo}} class-based properties.&lt;br /&gt;
::*Backported {{Property|VisibleToTeam}}, {{Property|VisibleToPlayerClass}} and weapon {{Property|DropItem}} feature from [[Skulltag]], and enhanced them.&lt;br /&gt;
::*Added &amp;quot;Fast&amp;quot; keyword for states and deprecated the unreliable {{Flag|FASTER}} and {{Flag|FASTMELEE}} flags.&lt;br /&gt;
:*Added a [[SECRETS|secret hint system]].&lt;br /&gt;
:*[[3D floor]]s support.&lt;br /&gt;
:*[[FraggleScript]] support.&lt;br /&gt;
:*[[Voxel]] support.&lt;br /&gt;
:*[[SBARINFO]]: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.&lt;br /&gt;
:*[[SNDINFO]]: Added {{sndinfo|musicalias}} and {{sndinfo|attenuation}}.&lt;br /&gt;
:*Compatibility: fixed issues with {{dw|Eternal Doom}}, [[Happy Time Circus]], {{dw|Phobos_(WAD)|Phobos}}, vanilla compat, [[Boom]] compat, light levels higher than 255, [[Heretic]], [[Strife]], [[MUSINFO]], misnamed UDMF field.&lt;br /&gt;
:*Fixed loading of [[BMF]] palettes.&lt;br /&gt;
:*{{CCMD|O|restart}} console command.&lt;br /&gt;
:*Added [[PALVERS]] lump.&lt;br /&gt;
:*Custom [[IWAD]]s no longer need to include a [[COLORMAP]], as ZDoom will generate one automatically if it is missing.&lt;br /&gt;
:*Fixed vertical tiling of non-power-of-two textures.&lt;br /&gt;
:*Fixed blockmap overflows in huge maps with help from [[Mocha Doom|Maes]] and [[PrBoom+|Entryway]].&lt;br /&gt;
:*Joystick support for non-Windows platforms.&lt;br /&gt;
:*As always, a plethora of bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.6.1}}{{rev|3794}} (July 28): {{Forum|t=33547|Release thread}} | {{versionlinks|2|6|1}}&lt;br /&gt;
:*Added [[Hacx]] 2.0 IWAD support.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added [[ACS_NamedExecuteWait]] and [[NamedScriptWait]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{Flag|INVENTORY.RESTRICTABSOLUTELY}} and {{Flag|PLAYERPAWN.CANSUPERMORPH}}.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Added RandomPlayerStarts and UsePlayerStartZ flags for [[map definition]]s.&lt;br /&gt;
:*Solved compatibility issue with [[Massmouth 2]].&lt;br /&gt;
:*[[Voxel]]s are now rotated by 90° to match their orientation in Slab6 and [[Build]] games.&lt;br /&gt;
&lt;br /&gt;
==2013==&lt;br /&gt;
;{{LE|2.7.0}}{{rev|4342}} (June 8): {{Forum|t=36456|Release thread}} | {{versionlinks|2|7|0}}&lt;br /&gt;
:*Added [[Floor_RaiseAndCrushDoom]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Made dynamic strings persistent. ACS can now safely generate up to one million new strings.&lt;br /&gt;
::*Added [[CheckFont]], [[GetCVarString]], [[GetUserCVar]], [[GetUserCVarString]], [[IsTIDUsed]], [[LineAttack_(ACS)|LineAttack]], [[SetCVar]], [[SetCVarString]], [[SetUserCVar]], [[SetUserCVarString]], [[SpawnDecal]], and [[UniqueTID]].&lt;br /&gt;
::*Added HUD layers, visibility flags, additive blending, and alpha parameter to [[HudMessage]] and [[HudMessageBold]].&lt;br /&gt;
::*Also added HUD message wrapping and clipping with [[SetHudClipRect]] and [[SetHudWrapWidth]].&lt;br /&gt;
::*Added PLAYERINFO_FOV and _DESIREDFOV to [[GetPlayerInfo]].&lt;br /&gt;
::*Added support for desaturated [[translation]]s.&lt;br /&gt;
::*Added [[Sqrt]], [[FixedSqrt]], and [[VectorLength]] functions.&lt;br /&gt;
::*Support for advanced structures from non-ACC compilers.&lt;br /&gt;
::*Added the ability to retrieve the {{Property|ReactionTime}}, {{Property|Height}} and {{Property|Radius}} properties through [[GetActorProperty]].&lt;br /&gt;
::*Added CHANGELEVEL_PRERAISEWEAPON to [[ChangeLevel]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*{{Flag|FLOATBOB}} things are no longer moved physically when bobbing.&lt;br /&gt;
::*Added {{Property|Player.FallingScreamSpeed}}, {{Property|Player.GruntSpeed}}, {{Property|Weapon.MinSelectionAmmo1}}, and {{Property|Weapon.MinSelectionAmmo2}}.&lt;br /&gt;
::*Added random state duration and [[A_SetTics]].&lt;br /&gt;
::*[[A_Explode]]&#039;s &#039;&#039;affectsource&#039;&#039; parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to [[A_RadiusThrust]].&lt;br /&gt;
::*[[A_RadiusThrust]] can use negative &#039;&#039;force&#039;&#039; values.&lt;br /&gt;
::*Added [[A_JumpIfTargetInsideMeleeRange]], [[A_JumpIfTargetOutsideMeleeRange]], [[A_SetDamageType]], and [[A_CheckLOF]].&lt;br /&gt;
::*Added {{Flag|INVENTORY.NEVERRESPAWN}}, {{Flag|INVENTORY.NOSCREENFLASH}}, {{Flag|POWERSPEED.NOTRAIL}}, and {{Flag|PLAYERPAWN.CROUCHABLEMORPH}}.&lt;br /&gt;
::*Added JLOSF_NOAUTOAIM flag to [[A_JumpIfTargetInLOS]].&lt;br /&gt;
::*Added WRF_DISABLESWITCH to [[A_WeaponReady]].&lt;br /&gt;
::*[[A_Light]] can use negative values to darken the scene.&lt;br /&gt;
::*Added NORANDOMPUFFZ flag to [[A_CustomPunch]], [[A_FireBullets]], and [[A_CustomBulletAttack]].&lt;br /&gt;
::*Added SXF_USEBLOODCOLOR, SXF_CLEARCALLERTID, SXF_MULTIPLYSPEED, SXF_TRANSFERSCALE, SXF_TRANSFERSPECIAL, and SXF_CLEARCALLERSPECIAL flags to [[A_SpawnItemEx]].&lt;br /&gt;
::*Added the ability to adjust the vertical offset of a rail attack to [[A_RailAttack]] and [[A_CustomRailgun]].&lt;br /&gt;
::*Player-fired seeker [[Projectile|missiles]]&#039; range at which the missiles initially lock-on a [[Actor pointer|tracer]] can be set via {{Property|MaxTargetRange}} actor property.&lt;br /&gt;
::*{{Property|ReactionTime}} added to [[DECORATE expressions]].&lt;br /&gt;
::*Added [[Actor states#NoDelay|NoDelay]] state flag.&lt;br /&gt;
::*Added [[Actor_states#States|Bounce]] actor states.&lt;br /&gt;
::*Fixed few cases of DECORATE definitions inaccuracies for [[Doom]], [[Heretic]], [[Hexen]] and [[Strife]] actors.&lt;br /&gt;
:*[[FONTDEFS]]: Backported SPACEWIDTH from [[ECWolf]].&lt;br /&gt;
:*[[LANGUAGE]]: Brazilian Portuguese support.&lt;br /&gt;
:*[[MAPINFO]]: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for [[map definition]]s and NoRandomPlayerclass for [[GameInfo definition]]s.&lt;br /&gt;
:*[[MIDI]]: [[FluidSynth]] now recognize {{c|libfluidsynth.dll}} as a valid alias for {{c|fluidsynth.dll}}, various FluidSynth [http://forums.scummvm.org/viewtopic.php?p=72972#72972 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.&lt;br /&gt;
:*Updated [[foo_DUMB]].&lt;br /&gt;
:*Implemented additive rendering for [[3D floor]]s.&lt;br /&gt;
:*Added &#039;&#039;{{wp|Quake (video game)|Quake}}&#039;&#039;-like no-clipping with {{CCMD|D|noclip2}}.&lt;br /&gt;
:*Exported the [[scoreboard]] text to [[LANGUAGE]].&lt;br /&gt;
:*The sound system should now precache nearly all sounds used by actor properties and [[ambient sound]]s, and the [[MAPINFO/Map definition|MAPINFO]] command &amp;quot;PrecacheSounds&amp;quot; can be used to precache other sounds.&lt;br /&gt;
:*Arbitrary FPS cap with {{CVAR|R|vid_maxfps}}.&lt;br /&gt;
:*Increased maximum resolution to 5760&amp;amp;times;3600.&lt;br /&gt;
:*Added {{c|lightfog}} property for [[sidedef]]s.&lt;br /&gt;
:*Added support for {{dw|Doom 3: BFG Edition}}&#039;s modified [[IWAD]]s, including {{dw|No Rest for the Living}}.&lt;br /&gt;
:*Improved [[WAD]] archive code with support for big-endian format and LZSS compression used in several console ports.&lt;br /&gt;
:*Added ability in [[UDMF]] to specify things to spawn by [[:Category:Thing specials|thing specials]] and [[Hexen breakable items]] by names with {{c|arg1str}}, as well as the ability to set initial values to a thing&#039;s [[user variable]].&lt;br /&gt;
:*Added new [[node]] format for complex UDMF maps which need fractional precision on node splitters.&lt;br /&gt;
:*The [[alternate HUD]] now features a {{Class|Berserk}} indicator and a customizable time display.&lt;br /&gt;
:*Tweaked {{Class|ScriptedMarine|scripted marines}}.&lt;br /&gt;
:*Added {{c|{{CCMD|D|acsprofile}}}} [[CCMDs|console command]].&lt;br /&gt;
:*[[Weapon slots]] can be configured from the [[Customize controls]] menu.&lt;br /&gt;
:*Solved compatibility issues with [[Daedalus: Alien Defense]], {{dw|Community Chest 3}}, Nuke Mine, Khorus, [[Void]], the {{dw|Master Levels}}, and {{dw|Claustrophobia 1024}}.&lt;br /&gt;
:*{{Class|RandomSpawner}}s now respect {{param|nomonsters}}.&lt;br /&gt;
:*Added the ability to define mod-specific [[CVARs|console variables]] through the addition of the [[CVARINFO]] lump.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.7.1}}{{cs|21efe3b}} (July 3): {{Forum|t=36679|Release thread}} | {{versionlinks|2|7|1}}&lt;br /&gt;
&#039;&#039;Note: this is the first version based on the [[Git repository]]; 2.7.0 was the last version based on the SVN repository.&#039;&#039;&lt;br /&gt;
* Added new additive [[MAPINFO/GameInfo definition|GameInfo]] keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.&lt;br /&gt;
* Added a new {{Flag|DONTDRAIN}} flag to mark actors as ineligible for vampirism attacks.&lt;br /&gt;
* [[Automatic compatibility|Compatibility]] fixes for [[Ultimate Simplicity]] map07, [[Cheogsh]] map01, [[Super Sonic Doom]] map31&lt;br /&gt;
* [[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.&lt;br /&gt;
* The powered-up {{Class|GoldWand|Gold Wand}} was not puffing on actors.&lt;br /&gt;
* Disabled [[Heretic]]&#039;s punishment [[cheat]]s when in {{CVAR|C|allcheats}} mode.&lt;br /&gt;
* Objects that explode on death no longer deal the damage they were dealt instead of their own.&lt;br /&gt;
* Vampirism attacks now respect damage reduction.&lt;br /&gt;
* [[Demo]] recording now writes correct user info to demos.&lt;br /&gt;
* ACS&#039;s [[PlaySound]] for looping sounds now works properly when using channel flags.&lt;br /&gt;
&lt;br /&gt;
==2014==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2015==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2016==&lt;br /&gt;
;{{LE|2.8.0}}{{cs|56359b6}} (February 3): {{Forum|t=50712|Release thread}} | {{versionlinks|2|8|0}}&lt;br /&gt;
:*Frontend&lt;br /&gt;
:**GoG-installed IWADs are now detected automatically.  Steam-installed IWADs are detected on OS X and Linux.&lt;br /&gt;
:**Improved netcode and added [[network options]] menu to configure new features.&lt;br /&gt;
:**Two new cheats, god2 and buddha2. The player cannot die from telefrag damage with these.&lt;br /&gt;
:**Added WAD compatibility fixes for over a dozen maps, including &#039;&#039;[[Cheogsh 2]]&#039;&#039;, &#039;&#039;XtheaterIII&#039;&#039;, and the infamous missing yellow keycard on TNT MAP31.&lt;br /&gt;
:**+warp now works from the command line.&lt;br /&gt;
:**Added support for standard file paths on Windows.&lt;br /&gt;
:**Added a user-settable factor for [[earthquake]] intensity.&lt;br /&gt;
:*Automap&lt;br /&gt;
:**Non-countable monster actors can have their own separate automap color.&lt;br /&gt;
:**Extended {{c|{{CVAR|A|am_cheat}}}} with three modes to prevent lines flagged as &#039;&#039;hidden&#039;&#039; from being shown on the automap.&lt;br /&gt;
:**Added separate colors for the various types of 2-sided walls for the overlay automap, as well as colors missing from that mode.&lt;br /&gt;
:**Actors sprites can be shown on the automap instead of simple triangles when the second, third, fifth or sixth modes of {{c|am_cheat}} console variable are enabled.&lt;br /&gt;
:*Console&lt;br /&gt;
:**Added a {{c|{{CCMD|O|closemenu}}}} [[CCMDs|console command]], so that menu options that close the [[menu]] can be added.&lt;br /&gt;
:**The behavior of auto-loading external [[DEHACKED]] lumps can be controlled by setting the {{c|dehload}} [[CVARs|console variable]].&lt;br /&gt;
:**Results for console tab-completion are now color-coded; console commands appear blue, console variables green, and aliases red.&lt;br /&gt;
:**Fixed: the {{c|{{CVAR|R|wi_noautostartmap}}}} console variable was not sync-safe.&lt;br /&gt;
:**Added {{c|{{CVAR|C|sv_freelook}}}}, {{c|{{CVAR|C|sv_allowfreelook}}}} and {{c|{{CVAR|C|sv_nofreelook}}}}.&lt;br /&gt;
:*Building&lt;br /&gt;
:**Native Cocoa back end for OS X resulting in significant increases in performance over SDL in addition to better overall user experience.&lt;br /&gt;
:**Added optional support for the OpenAL sound library, allowing for compiling without FMOD.&lt;br /&gt;
:**Added a new [[software synthesizer]], [[WildMIDI]], and a new [[OPL]] core.&lt;br /&gt;
:**Added support for building with clang.&lt;br /&gt;
:**Nearly-complete support for ARM devices such as the Raspberry Pi.  (Some known bugs remain — in particular, you must set vid_forcesurface to true in zdoom.ini, or ZDoom will instantly segfault.)&lt;br /&gt;
:*Modding&lt;br /&gt;
:**Added [[Ceiling_CrushAndRaiseSilentDist]].&lt;br /&gt;
:**New type of [[earthquake]], can only be accessed with [[A_QuakeEx]] or its [[QuakeEx|ACS equivalent]], which can replicate the shaking effect seen in many recent games instead of random camera offsets using the QF_WAVE flag. Quakes can now be scaled in, out, or mixed up. Both wave and regular quakes work together.&lt;br /&gt;
:**Menu&#039;s back button and the pause sign can be animated.&lt;br /&gt;
:**The particle engine is now exposed to modders via the [[A_SpawnParticle]] action function and [[SpawnParticle]] ACS function.&lt;br /&gt;
:**Directory-structured archives now support [[lump filtering]], which loads different resources depending on the base game.&lt;br /&gt;
:**Friction and [[TERRAIN]]-based sector damage are now transferred to [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Fixed scaling of textures on [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Overhauled [[sector type]]s and properties. Sectors have several new UDMF properties.&lt;br /&gt;
:**Lines and sectors may now have multiple ids/tags via the moreids UDMF property.&lt;br /&gt;
:**&amp;lt;code&amp;gt;checkswitchrange&amp;lt;/code&amp;gt; now correctly prevents players from pressing switches embedded in the floor or ceiling, and works correctly with switches that are part of 3D floors.&lt;br /&gt;
:**Added {{c|blockhitscan}} and {{c|transparent}} [[linedef|line]] properties, {{c|waterzone}} [[sector]] property, and {{c|alpha}}, {{c|fillcolor}}, {{c|gravity}}, {{c|health}}, {{c|pitch}}, {{c|renderstyle}}, {{c|roll}}, {{c|scale}}, {{c|scalex}}, {{c|scaley}} and {{c|score}} [[thing]] properties for [[Universal Doom Map Format|UDMF]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
:**Added {{c|[[DropItem]]}}, {{c|[[DropInventory]]}}, {{c|[[CheckFlag]]}}, {{c|[[GetLineActivation]]}}, {{c|[[GetMaxInventory]]}}, {{c|[[SetLineActivation]]}}, {{c|[[GetArmorInfo]]}}, {{c|[[GetActorPowerupTics]]}}, {{c|[[IsPointerEqual]]}}, {{c|[[ChangeActorAngle]]}}, {{c|[[ChangeActorPitch]]}}, {{c|[[PickActor]]}}, {{c|[[SetSectorDamage]]}}, {{c|[[QuakeEx]]}}, {{c|[[Warp]]}} and {{c|[[CanRaiseActor]]}}  functions.&lt;br /&gt;
:**Added FHF_NORANDOMPUFFZ flag for {{c|[[LineAttack_(ACS)|LineAttack]]}}.&lt;br /&gt;
:**Added BLOCKF_HITSCAN flag for {{c|[[Line_SetBlocking]]}}.&lt;br /&gt;
:**Added {{c|APROP_ViewHeight}}, {{c|APROP_AttackZOffset}} and {{c|APROP_StencilColor}} [[ACS actor properties]].&lt;br /&gt;
:**Fixed potential desync with {{c|[[CheckPlayerCamera]]}}.&lt;br /&gt;
:**Fixed: {{c|[[Thing_SetGoal]]}} could put an actor&#039;s target and goal out of sync.&lt;br /&gt;
:**{{c|[[GetSectorFloorZ]]}} and {{c|[[GetSectorCeilingZ]]}} now interpret 0-tag as &#039;any sector&#039; and return the z-height of whatever sector is at those coordinates.&lt;br /&gt;
:**[[Arrays]] are now supported at the script scope.&lt;br /&gt;
:*[[ANIMDEFS]]:&lt;br /&gt;
:**Added an optional {{c|worldpanning}} flag for camera textures definitions in order to make camera textures pan in world units instead of texture units.&lt;br /&gt;
:**Added {{c|allowdecals}} option to animated doors.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
:**Four new keybinds for DECORATE use with weapons (see {{c|[[A_WeaponReady]]}}&#039;s User states.)&lt;br /&gt;
:**Sprites now support mirroring via negative scales.&lt;br /&gt;
:**Added {{c|{{Property|Player.UseRange}}}} and {{c|{{Property|Player.AirCapacity}}}} [[player properties]].&lt;br /&gt;
:**Actors can now have extreme death/crash states that are damage type specific.&lt;br /&gt;
:**New &amp;lt;code&amp;gt;randompick&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;frandompick&amp;lt;/code&amp;gt; [[DECORATE expressions|non-action functions]].&lt;br /&gt;
:**[[A_Print]], [[A_PrintBold]], and [[A_Log]] can now use &amp;lt;code&amp;gt;$FOO&amp;lt;/code&amp;gt; [[LANGUAGE|translation strings]].&lt;br /&gt;
:**The following functions have been given additional functionalities: {{c|[[A_AlertMonsters]]}}, {{c|[[A_BFGSpray]]}}, {{c|[[A_ChangeVelocity|A_Change]]/[[A_ScaleVelocity|ScaleVelocity]]}}, {{c|[[A_CustomPunch]]}}, {{c|[[A_SetAngle]]}} and {{c|[[A_SetPitch]]}}, {{c|[[A_DamageMaster]]/[[A_DamageChildren|Children]]/[[A_DamageSiblings|Siblings]]}}, {{c|[[A_KillMaster]]/[[A_KillChildren|Children]]/[[A_KillSiblings|Siblings]]}}, {{c|[[A_Log]]}}, {{c|[[A_Print]]}}, {{c|[[A_PrintBold]]}}, {{c|[[A_RadiusGive]]}}, {{c|[[A_Saw]]}}, {{c|[[A_SetScale]]}}, {{c|[[A_SetTics]]}}, {{c|[[A_SpawnItemEx]]}}, {{c|[[A_Teleport]]}}, {{c|[[A_VileAttack]]}}, {{c|[[A_Warp]]}}, {{c|[[A_WeaponReady]]}}.&lt;br /&gt;
:**Added {{Flag|NOFORWARDFALL}}, {{Flag|NOTONAUTOMAP}}, {{Flag|RELATIVETOFLOOR}}, {{Flag|NEVERTARGET}}, {{Flag|NOTELESTOMP}}, {{Flag|ALWAYSTELEFRAG}}, {{Flag|ALLOWPAIN}}, {{Flag|CAUSEPAIN}}, {{Flag|DONTTHRUST}}, {{Flag|BUDDHA}}, {{Flag|FOILBUDDHA}}, {{Flag|MIRRORREFLECT}}, {{Flag|AIMREFLECT}}, {{Flag|THRUREFLECT}}, {{Flag|HARMFRIENDS}}, {{Flag|NOFORWARDFALL}}, {{Flag|HITTARGET}}, {{Flag|HITMASTER}}, {{Flag|HITTRACER}}, {{Flag|WEAPONSPAWN}}, {{Flag|INVENTORY.TOSSED}}, {{Flag|INVENTORY.ALWAYSRESPAWN}}, {{Flag|INVENTORY.TRANSFER}}, and {{Flag|INVENTORY.NOTELEPORTFREEZE}} [[actor flags]].&lt;br /&gt;
:**{{Flag|MTHRUSPECIES}} now works with [[A_BFGSpray]] and rail attacks.&lt;br /&gt;
:**Added {{c|[[A_DamageSelf]]/[[A_DamageTarget|Target]]/[[A_DamageTracer|Tracer]]}}, {{c|[[A_Remove]]/[[A_RemoveSiblings|Siblings]]/[[A_RemoveTarget|Target]]/[[A_RemoveTracer|Tracer]]}}, {{c|[[A_KillTarget]]/[[A_KillTracer|Tracer]]}}, {{c|[[A_DropItem]]}}, {{c|[[A_SetSpeed]]}}, {{c|[[A_SetHealth]]}}, {{c|[[A_ResetHealth]]}}, {{c|[[A_SetFloatBobPhase]]}}, {{c|[[A_SetRoll]]}}, {{c|[[A_SetTeleFog]]}}, {{c|[[A_GiveToChildren|A_GiveTo]]/[[A_TakeFromChildren|TakeFromChildren]]}}, {{c|[[A_GiveToSiblings|A_GiveTo]]/[[A_TakeFromSiblings|TakeFromSiblings]]}}, {{c|[[A_JumpIfHigherOrLower]]}},  {{c|[[A_SetFloatSpeed]]}}, {{c|[[A_SetSpecies]]}}, {{c|[[A_CheckBlock]]}}, {{c|[[A_CheckProximity]]}}, and {{c|[[A_QuakeEx]]}} [[action functions]].&lt;br /&gt;
:**Players with the NODAMAGE flag cannot be telefragged anymore, nor can they take any damage via voodoo dolls.&lt;br /&gt;
:**The amount of health regeneration gained from a {{c|{{Class|PowerRegeneration}}}} powerup can be controlled with the {{c|{{Property|Powerup.Strength}}}} property.&lt;br /&gt;
:**Improved the {{c|[[Actor states#NoDelay|NoDelay]]}} state flag reliability.&lt;br /&gt;
:**Added {{c|Subtract}} render style.&lt;br /&gt;
:**Different types of {{Class|HereticImp|gargoyles}} and {{Class|Mummy|golems}} could infight amongst themselves (original &#039;&#039;[[Heretic]]&#039;&#039; behavior).&lt;br /&gt;
:**Added {{c|[[Actor states#CanRaise|CanRaise]]}} and {{c|[[Actor states#Slow|Slow]]}} actor [[actor states#State keywords|state flags]].&lt;br /&gt;
:*[[LANGUAGE]]:&lt;br /&gt;
:**Externalized &amp;quot;New save game&amp;quot; line for save screen, and [[automap]] statistics display.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
:**Custom colors for both modes of the automap can be set on per-mod basis.&lt;br /&gt;
:**Added {{c|SlowMonsters}}, {{c|HealthFactor}}, {{c|NoInfighting}} and {{c|TotalInfighting}} [[skill definition]]s property.&lt;br /&gt;
:*[[SBARINFO]]:&lt;br /&gt;
:**Extended {{c|[[DrawImage]]}} command.&lt;br /&gt;
:*[[SNDINFO]]:&lt;br /&gt;
:**Fixed incorrect {{Class|Minotaur|Maulotaur}} melee attack sound.&lt;br /&gt;
:*Internals&lt;br /&gt;
:**Removed [[Polymost]] code.&lt;br /&gt;
:**Vast improvements to movement interpolation.&lt;br /&gt;
:**Fixed a lot of leaks and garbage collection issues.&lt;br /&gt;
:**Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.8.1}}{{cs|1a9bc53}} (February 23): {{Forum|t=50968|Release thread}} | {{versionlinks|2|8|1}}&lt;br /&gt;
* {{c|#region}}/{{c|#endregion}} is now supported for text lumps. ZDoom does not do anything with them but ignore them, but this allows editors to treat them however they like.&lt;br /&gt;
* Better [[LANGUAGE|localizability]] of the [[menus]].&lt;br /&gt;
* [[TERRAIN|Terrain]] definitions can now be optional.&lt;br /&gt;
* Walking into an area with a [[REVERBS|reverb effect]] no longer mutes all sound.&lt;br /&gt;
* &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{Class|ArtiTimeBomb|time bomb artifacts}} now spawn in the proper locations.&lt;br /&gt;
* &#039;&#039;Heretic&#039;&#039;&#039;s powered {{Class|Mace|firemace}} balls once again seek their targets.&lt;br /&gt;
* The {{Class|Whirlwind|whirlwind attack}} used by &#039;&#039;Heretic&#039;&#039;&#039;s {{Class|Ironlich}} sometimes fizzled out immediately.&lt;br /&gt;
* Instant [[sector]] movement actions are again instant.&lt;br /&gt;
* Various other minor fixes.&lt;br /&gt;
&lt;br /&gt;
==Next version==&lt;br /&gt;
The following additions are available in [[Git]] builds, but not yet in an official version.&lt;br /&gt;
&lt;br /&gt;
:* The scripting branch has been merged, laying some groundwork for DoomScript™.&lt;br /&gt;
:* [[DECORATE]]: &lt;br /&gt;
:** [[Actor_states|States]]: &lt;br /&gt;
:*** Can contain multiple action functions enclosed in braces&lt;br /&gt;
:*** &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blocks&lt;br /&gt;
:*** return; statement&lt;br /&gt;
:** Functions:&lt;br /&gt;
:*** Added the following non-action functions: [[CountInv]], [[GetDistance]]&lt;br /&gt;
:*** Added the following action functions: [[A_SetChaseThreshold]]&lt;br /&gt;
:* Portals via [[Line_SetPortal]] (visual only so far; {{Forum|t=46916|original forum thread}})&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://sourceforge.net/projects/zdoom/files/ Sourceforge archive] Unofficial mirror for ZDoom versions&lt;br /&gt;
* [https://github.com/doomtech/zdoom-old GitHub archive] Unofficial repository of pre-SVN source code&lt;br /&gt;
[[Category:Nostalgia]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47032</id>
		<title>ZDoom version history</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=47032"/>
		<updated>2019-11-26T22:54:37Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* 2002 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the evolution of [[ZDoom]] by listing the main features of each version.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!By year&lt;br /&gt;
|[[#1998|1998]] &amp;amp;middot; [[#1999|1999]] &amp;amp;middot; [[#2000|2000]] &amp;amp;middot; [[#2001|2001]] &amp;amp;middot; [[#2002|2002]] &amp;amp;middot; [[#2003|2003]] &amp;amp;middot; [[#2004|2004]] &amp;amp;middot; [[#2005|2005]] &amp;amp;middot; [[#2006|2006]] &amp;amp;middot; [[#2007|2007]] &amp;amp;middot; [[#2008|2008]] &amp;amp;middot; [[#2009|2009]] &amp;amp;middot; [[#2010|2010]] &amp;amp;middot; [[#2011|2011]] &amp;amp;middot; [[#2012|2012]] &amp;amp;middot; [[#2013|2013]] &amp;amp;middot; [[#2014|2014]] &amp;amp;middot; [[#2015|2015]] &amp;amp;middot; [[#2016|2016]]&lt;br /&gt;
|-&lt;br /&gt;
!1.x Branch&lt;br /&gt;
|[[#1.11|1.11]] &amp;amp;middot; [[#1.12|1.12]] &amp;amp;middot; [[#1.13|1.13]] &amp;amp;middot; [[#1.14|1.14]] &amp;amp;middot; [[#1.14a|1.14a]] &amp;amp;middot; [[#1.16|1.16]] &amp;amp;middot; [[#1.17|1.17]] &amp;amp;middot; [[#1.17a|1.17a]] &amp;amp;middot; [[#1.17b|1.17b]] &amp;amp;middot; [[#1.17b1|1.17b1]] &amp;amp;middot; [[#1.17c|1.17c]] &amp;amp;middot; [[#1.18|1.18]] &amp;amp;middot; [[#1.18a|1.18a]] &amp;amp;middot; [[#1.18b|1.18b]] &amp;amp;middot; [[#1.19|1.19]] &amp;amp;middot; [[#1.20|1.20]] &amp;amp;middot; [[#1.21|1.21]] &amp;amp;middot; [[#1.22|1.22]] &amp;amp;middot; [[#1.23 Beta|1.23 Beta]] &amp;amp;middot; [[#1.23 Beta 19|1.23 Beta 19]] &amp;amp;middot; [[#1.23 Beta 20|1.23 Beta 20]] &amp;amp;middot; [[#1.23 Beta 23|1.23 Beta 23]] &amp;amp;middot; [[#1.23 Beta 24|1.23 Beta 24]] &amp;amp;middot; [[#1.23 Beta 25|1.23 Beta 25]] &amp;amp;middot; [[#1.23 Beta 33|1.23 Beta 33]]&lt;br /&gt;
|-&lt;br /&gt;
!2.0 Branch&lt;br /&gt;
|[[#2.0 Beta 13|2.0 Beta 13]] &amp;amp;middot; [[#2.0.47|2.0.47]] &amp;amp;middot; [[#2.0.47i|2.0.47i]] &amp;amp;middot; [[#2.0.48|2.0.48]] &amp;amp;middot; [[#2.0.49|2.0.49]] &amp;amp;middot; [[#2.0.50|2.0.50]] &amp;amp;middot; [[#2.0.51|2.0.51]] &amp;amp;middot; [[#2.0.52|2.0.52]] &amp;amp;middot; [[#2.0.53|2.0.53]] &amp;amp;middot; [[#2.0.54|2.0.54]] &amp;amp;middot; [[#2.0.55|2.0.55]] &amp;amp;middot; [[#2.0.56|2.0.56]] &amp;amp;middot; [[#2.0.57|2.0.57]] &amp;amp;middot; [[#2.0.58|2.0.58]] &amp;amp;middot; [[#2.0.59|2.0.59]] &amp;amp;middot; [[#2.0.60|2.0.60]] &amp;amp;middot; [[#2.0.61|2.0.61]] &amp;amp;middot; [[#2.0.62|2.0.62]] &amp;amp;middot; [[#2.0.63|2.0.63]] &amp;amp;middot; [[#2.0.64|2.0.64]] &amp;amp;middot; [[#2.0.90|2.0.90]] &amp;amp;middot; [[#2.0.91|2.0.91]] &amp;amp;middot; [[#2.0.92|2.0.92]] &amp;amp;middot; [[#2.0.93|2.0.93]] &amp;amp;middot; [[#2.0.94|2.0.94]] &amp;amp;middot; [[#2.0.95|2.0.95]] &amp;amp;middot; [[#2.0.96|2.0.96]] &amp;amp;middot; [[#2.0.97|2.0.97]] &amp;amp;middot; [[#2.0.98|2.0.98]]&lt;br /&gt;
|-&lt;br /&gt;
!2.1 Branch&lt;br /&gt;
|[[#2.1.0|2.1.0]] &amp;amp;middot; [[#2.1.1|2.1.1]] &amp;amp;middot; [[#2.1.2|2.1.2]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.4|2.1.4]] &amp;amp;middot; [[#2.1.5|2.1.5]] &amp;amp;middot; [[#2.1.6|2.1.6]] &amp;amp;middot; [[#2.1.7|2.1.7]]&lt;br /&gt;
|-&lt;br /&gt;
!Modern&lt;br /&gt;
|[[#2.2.0|2.2.0]] &amp;amp;middot; [[#2.3.0|2.3.0]] &amp;amp;middot; [[#2.3.1|2.3.1]] &amp;amp;middot; [[#2.4.0|2.4.0]] &amp;amp;middot; [[#2.4.1|2.4.1]] &amp;amp;middot; [[#2.5.0|2.5.0]] &amp;amp;middot; [[#2.6.0|2.6.0]] &amp;amp;middot; [[#2.6.1|2.6.1]] &amp;amp;middot; [[#2.7.0|2.7.0]] &amp;amp;middot; [[#2.7.1|2.7.1]] &amp;amp;middot; [[#2.8.0|2.8.0]] &amp;amp;middot; [[#2.8.1|2.8.1]] &amp;amp;middot; [[#Next version|Next version]]&lt;br /&gt;
|}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==1998==&lt;br /&gt;
;{{LE|1.11}} (March 6): {{Plainlink|[http://www.zdoom.org/files/old/zdoom111.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom111s.zip Source]}}&lt;br /&gt;
:Initial release, based on the [[NTDoom]] and [[ATB Doom]]. The version numbering follows from the Doom source code version numbering of 1.10.&lt;br /&gt;
:* Works under both Windows 95 and NT 4.0, although it works best under Win95.&lt;br /&gt;
:* Limited support for the Pause key. It works with some keyboards on some machines.&lt;br /&gt;
:* Supports any resolution compatible with your DirectDraw drivers.&lt;br /&gt;
:* Look up/down à la &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
:* Translucency for selected objects.&lt;br /&gt;
:* Has a [[console]] with most of the functionality of &#039;&#039;Quake&#039;&#039;&#039;s. The only significant missing feature is Tab-completion.&lt;br /&gt;
:* Notarget [[cheat]].&lt;br /&gt;
:* Command to {{CCMD|D|kill}} all [[monster]]s in a level or yourself.&lt;br /&gt;
:* Can play [[MUS]], [[MIDI]], and MOD music.&lt;br /&gt;
:* Selected sounds are played in surround sound.&lt;br /&gt;
:* Doors that need keys to open are highlighted on the [[automap]].&lt;br /&gt;
:* Automap now shows various statistics in addition to the level name.&lt;br /&gt;
:* True keybindings. Bind any key to any command or sequence of commands.&lt;br /&gt;
:* [[Intermission]] screen can now display your stats using absolute values rather than percentages.&lt;br /&gt;
:* A new more general [[demo]] format.&lt;br /&gt;
;{{LE|1.12}} (April 7): {{Plainlink|[http://www.zdoom.org/files/old/zdoom112.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom112s.zip Source]}}&lt;br /&gt;
:* Some visual enhancements were made such as centering the menus and drawing borders around the status bar in higher resolutions.&lt;br /&gt;
:* [[Console command]]s can now be specified on the [[command line parameters|command line]].&lt;br /&gt;
:* Removed some of [[Doom]]&#039;s limits such as VisPlanes, VisSprites, and 2S [[HOM]].&lt;br /&gt;
:* Rewrote some of the inner loops in assembly. (There was some assembly in 1.11, but it never got used.)&lt;br /&gt;
:* New [[CVAR]]s relating to mouse movement. ({{CVAR|C|invertmouse}}, {{CVAR|C|m_pitch}}, {{CVAR|C|m_yaw}}, etc.)&lt;br /&gt;
:* Mouse movement doesn&#039;t get sluggish in high resolutions.&lt;br /&gt;
:* [[Automap]] colors are customizable.&lt;br /&gt;
:* Automap overlay and rotation are available.&lt;br /&gt;
:* Eight [[crosshair]]s.&lt;br /&gt;
:* Shoot up/down.&lt;br /&gt;
:* Alt-Tab and Pause work properly on all machines now.&lt;br /&gt;
:* The {{CCMD|P|+jump}} command now works.&lt;br /&gt;
:* 25% and 75% translucency levels in addition to 50%. The translucency tables now get saved to disk, too, so they only need to be calculated once instead of every time the game is run.&lt;br /&gt;
:* The [[console]] [[font]] is now editable.&lt;br /&gt;
:* Near complete support for [[DeHackEd]] patches. (Only monster infighting and changing a few minor text strings are not supported.)&lt;br /&gt;
:* Sky height and position is now fixed for high resolutions. (It still wraps if you look up, but at least now if you look straight ahead, it never will.)&lt;br /&gt;
:* Weapon sprite is always drawn at the correct location. (It was being drawn too low in some resolutions like 400x300.)&lt;br /&gt;
:* New [[options menu]], which includes a key configuration screen.&lt;br /&gt;
:* [[Stealth monster]]s.&lt;br /&gt;
:* New full-screen [[HUD]].&lt;br /&gt;
:* And a few other things not worth mentioning separately.&lt;br /&gt;
;{{LE|1.13}} (May 26):{{forum|t=4|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom113.zip Build]}}&lt;br /&gt;
:* Fixed some major bugs (that crashed the game) and other lesser bugs that were just annoying.&lt;br /&gt;
:* 3-D collisions for walking under and standing on other things.&lt;br /&gt;
:* The status bar can be scaled to the full width of the screen.&lt;br /&gt;
:* The screen mode can be selected from a menu inside the game.&lt;br /&gt;
:* ZDoom can run in a window on the desktop.&lt;br /&gt;
:* Better [[DeHackEd]] support. Only a few text replacements are not supported. Everything else works (including monster infighting which I haven&#039;t seen in any other port).&lt;br /&gt;
:* New features for level designers (see editing.txt for details):&lt;br /&gt;
::*Specification of next and secret maps on a per-map basis.&lt;br /&gt;
::*Specify sky texture on a per-map basis.&lt;br /&gt;
::*Use any lump in a wad as music for a map.&lt;br /&gt;
::*Give maps a custom name without using a DeHackEd patch.&lt;br /&gt;
::*Maps can be named anything (not just E?M? or MAP??).&lt;br /&gt;
::*Place any messages of any length between any two maps.&lt;br /&gt;
::*&#039;&#039;[[Hexen]]&#039;&#039;-style fog (of any color).&lt;br /&gt;
::*[[Ambient sound]]s &amp;amp;mdash; either point like &#039;&#039;Quake&#039;&#039; or global like &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;Hexen&#039;&#039;.&lt;br /&gt;
::*Automatic use of [[DeHackEd]] patches in PWADs.&lt;br /&gt;
::*No more {{dw|tutti-frutti}} for short textures of certain heights.&lt;br /&gt;
::*zdoom.wcf file for use with [[WadAuthor]].&lt;br /&gt;
:* Rocket jumping. (One very important note about this: You need to be *in the air* when your rocket explodes for rocket jumping to work. This is different from &#039;&#039;Quake&#039;&#039;, and I will probably rewrite it for the next release.)&lt;br /&gt;
:* Dynamic [[palette flash]]es.&lt;br /&gt;
:* Supports stretching skies for [[freelook]].&lt;br /&gt;
:* Larger freelook range.&lt;br /&gt;
:* Added tab-completion to the [[console]].&lt;br /&gt;
:* zdoom.cfg is now the name of the default [[configuration file]] since [[Doom Legacy]] decided to start using config.cfg.&lt;br /&gt;
:* French language support. (Set {{CVAR|C|language}} CVAR to &amp;quot;french&amp;quot;.)&lt;br /&gt;
:* Player obituaries.&lt;br /&gt;
:* Unlimited ammo cheat (use g_unlimitedammo cvar).&lt;br /&gt;
;{{LE|1.14}} (July 22): {{forum|t=5|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom114-src.zip Source]}}&lt;br /&gt;
:Bugs fixed:&lt;br /&gt;
:* The bunny scroller at the end of E3M8 no longer crashes the game.&lt;br /&gt;
:* The IDKFA [[cheat]] gives the proper amount of armor again.&lt;br /&gt;
:* Demo recording works again.&lt;br /&gt;
:* Telefragging works again.&lt;br /&gt;
:* Picking up the {{Class|InvulnerabilitySphere|invulnerability sphere}} displays the correct colors now.&lt;br /&gt;
:* [[DeHackEd]] patches containing text replacements no longer crash the game.&lt;br /&gt;
:* Printing a string containing &amp;quot;%s&amp;quot; to the console and then changing the video mode will no longer crash the game.&lt;br /&gt;
:* Chat mode finally works again.&lt;br /&gt;
:* If MIDAS can&#039;t initialize, you can still play the game but without sound.&lt;br /&gt;
:* {{Class|Pistol}} and {{Class|chaingun}} sounds no longer cut out when there are lots of {{Class|ZombieMan|zombie men}} shooting their pistols at you.&lt;br /&gt;
:* Mouse input should no longer be so jerky under Windows NT.&lt;br /&gt;
:* The [[crosshair]] is finally accurate for aiming.&lt;br /&gt;
:* [[Autoaim]] is properly remembered each time you start ZDoom.&lt;br /&gt;
:* Switches in &#039;&#039;[[the Ultimate Doom]]&#039;&#039; that aren&#039;t also in the shareware Doom properly change their appearance when switched.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Players can choose their own colors and names. ([[Player setup]] menu is included).&lt;br /&gt;
:* 8-player support (untested but should work).&lt;br /&gt;
:* Miscellaneous internal code changes have been borrowed from the [[Boom]] source. (This does *not* mean that ZDoom supports Boom levels yet.)&lt;br /&gt;
:* [[Cheat]]s, chat messages, and gamestate changes are now recorded in demos.&lt;br /&gt;
:* Single-player demos recorded with ZDoom are generally smaller than before.&lt;br /&gt;
:* &#039;&#039;Quake 2&#039;&#039;-style deathmatch flags.&lt;br /&gt;
:* Cheats (optionally) work in multiplayer games.&lt;br /&gt;
:* Mode X is now supported under Win95, so all the machines that couldn&#039;t run ZDoom in 320x200 before should be able to now.&lt;br /&gt;
:* Fewer conditions result in error messages that quit the game. (If you have &#039;&#039;[[Heretic]]&#039;&#039;, try this: Start ZDoom with -file heretic and go to the console and type &amp;quot;{{CCMD|D|map}} E1M1&amp;quot;.)&lt;br /&gt;
:* Keys can repeat in the [[console]].&lt;br /&gt;
:* The console and chat mode now use the localized keymap set with the Keyboard control panel.&lt;br /&gt;
:* Messages at the top of the screen now break along between words instead of in the middle of them.&lt;br /&gt;
:* Added {{c|-config}} [[command line parameter]].&lt;br /&gt;
:* Added {{c|-fastdemo}} command line parameter.&lt;br /&gt;
:* Added new {{CCMD|D|screenshot}} command. (bound to &amp;quot;Print Screen&amp;quot; key by default)&lt;br /&gt;
:* Added &#039;&#039;Quake&#039;&#039;-like {{CCMD|P|+showscores}} command. (bound to &amp;quot;\&amp;quot; key by default)&lt;br /&gt;
:* [[Alias]]es are now saved in the config file.&lt;br /&gt;
:* Added support for multiple pitched sounds like in very old version of Doom. (Use the snd_pitched cvar to turn it on and off.)&lt;br /&gt;
;{{LE|1.14a}} (July 27): {{forum|t=6|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114a.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoomsrc114-114a.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:Bugs fixed are:&lt;br /&gt;
:* No more crashing about freeing a pointer without ZONEID when changing levels.&lt;br /&gt;
:* Skies wider than 256 pixels are drawn correctly.&lt;br /&gt;
:* [[Monster]]s&#039; heights are once again the same as they were in id&#039;s original &#039;&#039;[[Doom]]&#039;&#039;, so certain areas work properly again.&lt;br /&gt;
:* Monsters shouldn&#039;t teleport into each other anymore.&lt;br /&gt;
:* Improved support for international keyboards.&lt;br /&gt;
:* The skill level chosen for a new game is no longer ignored if the new game is started while a demo is playing.&lt;br /&gt;
:Cosmetic changes:&lt;br /&gt;
:* No more &amp;quot;sv_gravity changed to...&amp;quot;, &amp;quot;skill changed to...&amp;quot;, etc. messages in single player games.&lt;br /&gt;
:* Activating the [[player setup]] [[menu]] automatically stops any playing [[demo]]s, since it doesn&#039;t work properly while they play.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} don&#039;t go flying away when exploding anymore.&lt;br /&gt;
:* Added def_patch cvar to automatically load a DeHackEd patch each time the game is started.&lt;br /&gt;
:* ZDoom [[savegame]]s now use the name zdoomsv?.dsg instead of doomsav?.dsg.&lt;br /&gt;
:This version also includes some preliminary [[Boom]] support as I started integrating some of the Boom source code with ZDoom:&lt;br /&gt;
:* Medusa fix.&lt;br /&gt;
:* Openings limit removed.&lt;br /&gt;
:* Removed limit on switches and animations.&lt;br /&gt;
:* Added support for Boom-like [[ANIMATED]] and [[SWITCHES]] lumps in PWADs.&lt;br /&gt;
:* Added support for Boom-style scrollers (including conveyors).&lt;br /&gt;
:* Added partial [[deep water]] support.&lt;br /&gt;
;{{LE|1.16}} (December 22): {{forum|t=13|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom116.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom116-src.zip Source]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* No more limit on size of [[savegame]]s or [[demo]]s.&lt;br /&gt;
:* Screen resolutions above 320x200 are now the proper brightness (they were too bright before.)&lt;br /&gt;
:* Improved the brightness of the [[console]] [[font]].&lt;br /&gt;
:* {{Class|BulletPuff|Bullet puffs}} can show up on the floor and ceiling and not just walls.&lt;br /&gt;
:* Missile weapons can trigger gun activation lines.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} now bounce around as much as they did in original &#039;&#039;[[Doom]]&#039;&#039;. (They were too &amp;quot;inert&amp;quot; in 1.14.)&lt;br /&gt;
:* If a demo is being recorded, quitting the game normally will save the demo to disk. (Previously, you had to use the stop command to do this.)&lt;br /&gt;
:New features for players:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* Mouse wheel support and {{CCMD|P|weapnext}}/{{CCMD|P|weapprev}} commands.&lt;br /&gt;
:* Doublebindings.&lt;br /&gt;
:* Better analog joystick support.&lt;br /&gt;
:* 180 degree turn command for keyboarders.&lt;br /&gt;
:* Damage done by a rocket to its shooter is {{CVAR|C|splashfator|configurable}} and defaults to the original Doom behavior.&lt;br /&gt;
:* User-configurable gender. (Even though I don&#039;t have any new player sounds, at least the [[obituaries]] are gender-aware. :-)&lt;br /&gt;
:* [[Teamplay]] mode.&lt;br /&gt;
:* {{CVAR|C|sv_nobfgaim|New CVAR}} to disable manual aiming of the BFG to prevent someone from shooting it at the floor and quickly triggering tracer damage before.&lt;br /&gt;
:* Maps no longer need to have as many deathmatch starts as there are players in a deathmatch game.&lt;br /&gt;
:* Support for [[Doom Legacy]] [[skin]]s.&lt;br /&gt;
:* Rewrote the [[MIDI]]/[[MUS]] code so that it has a working volume control.&lt;br /&gt;
:* Many more [[console command]]s and [[CVARs]].&lt;br /&gt;
:New features for editors:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* [[Obituaries]] are configurable with a .bex patch.&lt;br /&gt;
:* [[Monster path]]s&lt;br /&gt;
:* [[Colored lighting]]&lt;br /&gt;
:* [[Fog]] can be applied to only part of a level instead of all of it.&lt;br /&gt;
:* Per-sector [[gravity]] settings.&lt;br /&gt;
:* Support for up to 256 [[ambient sound]]s (as opposed to the limit of 64 in earlier versions).&lt;br /&gt;
:* [[Sector damage]] adjustable from between 0-255 points of damage.&lt;br /&gt;
:* Changeable [[camera]] views.&lt;br /&gt;
:* The following editing features that were introduced in &#039;&#039;[[Hexen]]&#039;&#039; are also available in ZDoom:&lt;br /&gt;
::*Most line specials take arguments that modify their behavior.&lt;br /&gt;
::*[[ACS]] scripting.&lt;br /&gt;
::*[[Hub]]s.&lt;br /&gt;
::*[[Earthquake]]s.&lt;br /&gt;
::*[[Dormant]] monsters.&lt;br /&gt;
::*Trigger events to happen on monster deaths.&lt;br /&gt;
::*[[Floor_Waggle|&amp;quot;Waggling&amp;quot; floors]].&lt;br /&gt;
::*[[Pillar_Build|Pillar builders]].&lt;br /&gt;
::*Push activation lines (walking into a wall can trigger an event).&lt;br /&gt;
::*[[Thing_Spawn|Thing spawning]] (e.g. for traps/gifts).&lt;br /&gt;
&lt;br /&gt;
==1999==&lt;br /&gt;
January 6 of this year saw the first release of the [[Raven Software]] source code.&lt;br /&gt;
;{{LE|1.17}} (February 17): {{forum|t=15|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/zdos117c.zip DOS build]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* [[Multiplayer]] games with [[monster]]s do not crash.&lt;br /&gt;
:* Player corpses do not levitate and then fall down when a player respawns in multiplayer games.&lt;br /&gt;
:* Using {{CCMD|P|togglemap}} outside of a game will not crash.&lt;br /&gt;
:* Monsters stop attacking their target once it is dead.&lt;br /&gt;
:* EV_StopPlat() does not get stuck in an infinite loop if there are [[moving platform]]s.&lt;br /&gt;
:* Partially invisible players are drawn the proper colors (instead of green) if {{CVAR|R|r_drawfuzz}} is 0.&lt;br /&gt;
:* If you are invisible, so are your muzzle flashes.&lt;br /&gt;
:* Trying to execute a non-existent [[ACS|script]] will not crash.&lt;br /&gt;
:* Using a [[ChangeCamera]] special from an open script will not crash.&lt;br /&gt;
:* The [[FloorAndCeiling_RaiseByValue]] and [[FloorAndCeiling_LowerByValue]] now behave like &#039;&#039;[[Hexen]]&#039;&#039;&#039;s.&lt;br /&gt;
:* Using {{c|{{param|-loadgame}}}} from the [[command line]] works.&lt;br /&gt;
:* Fixed a memory leak during generation of the translucency tables.&lt;br /&gt;
:* In high resolutions, weapon sprites meet the bottom of the screen.&lt;br /&gt;
:* Sounds will not cut out mysteriously when there is no reason for them to do so.&lt;br /&gt;
:* Sounds will also not be stopped immediately when a thing is removed, so explosion sounds will play to their full length.&lt;br /&gt;
:* Things can make more than one sound at once.&lt;br /&gt;
:* The [[deathmatch]] [[scoreboard]] is aligned properly at high resolutions.&lt;br /&gt;
:* {{CCMD|P|Spynext}} and {{CCMD|P|spyprev}} work properly instead of leaving the [[status bar]] &amp;quot;lagging behind&amp;quot; the player being viewed.&lt;br /&gt;
:* The {{Class|Infrared|light-amp}} does not disable colored lighting.&lt;br /&gt;
:* The [[sky]] gets {{dw|invulnerability colormap bug|inverted}} when using the invulnerability powerup.&lt;br /&gt;
:* Implemented better z-checking code (from &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039;).&lt;br /&gt;
:* {{Class|PainElemental|Pain elementals}} will spawn one {{Class|LostSoul|lost soul}} at a time instead of two inside of each other.&lt;br /&gt;
:* Bex patches that use thing mnemonics really do work now, and unknown bit messages aren&#039;t generated for regular [[DeHackEd]]  patches.&lt;br /&gt;
:* Linedef type 134 for regular &#039;&#039;[[Doom]]&#039;&#039;/[[Boom]] maps requires a red key for activation (it was being improperly translated to require a blue one).&lt;br /&gt;
:* Monsters can activate secret lines when they cross them. (See &#039;&#039;[[Doom II]]&#039;&#039; MAP08).&lt;br /&gt;
:* The player extreme death sound is used.&lt;br /&gt;
:* When a player leaves a network game, their body is removed instead of being left empty.&lt;br /&gt;
:* 0-length sounds are treated as empty sounds instead of sounds 4 gigs long.&lt;br /&gt;
:* [[Skin]]s that replaced player sounds with sounds in the [[IWAD]] work.&lt;br /&gt;
:* Muzzle flashes do not light up foggy areas, and fullbright sprites stay shrouded in fog.&lt;br /&gt;
:* Alphanumeric keys no longer automatically repeat on the console.&lt;br /&gt;
:* Wads such as gothicdm2 that used new flats in addition to the ones in the IWAD with the regular doom.exe work.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Significant speed improvements on modern processors.&lt;br /&gt;
:* [[Armor]] and [[key]]s are shown on the fullscreen HUD.&lt;br /&gt;
:* Colored text.&lt;br /&gt;
:* A {{CCMD|P|playdemo}} console command.&lt;br /&gt;
:* A [[chasecam]].&lt;br /&gt;
:* A [[particle]] system.&lt;br /&gt;
:* An optional [[railgun]] to show off the particle system. (Start the game with {{c|{{param|-deh}} [[railgun.bex]]}} if you want to use it.)&lt;br /&gt;
:New features interesting for wad authors:&lt;br /&gt;
:* [[Polyobject]]s.&lt;br /&gt;
:* [[Sound sequence]]s.&lt;br /&gt;
:* WAVE files can be used as sound lumps without converting them to DMX&#039;s format first.&lt;br /&gt;
:* A sky can be specified to not be stretched even if it is shorter than 200 pixels.&lt;br /&gt;
:* {{Class|Spark}}s.&lt;br /&gt;
:* {{Class|ParticleFountain|Particle fountain}}s.&lt;br /&gt;
:* Parallax skies.&lt;br /&gt;
:* Some new [[DeHackEd]] thing flags from &#039;&#039;[[Hexen]]&#039;&#039; (bobbing, reflective, etc.).&lt;br /&gt;
;{{LE|1.17a}} (February 21): {{forum|t=16|Release thread}}&lt;br /&gt;
:Mostly minor bug fixes, released because [[Herian 2]] needed some of those fixes. There are a few new features, however:&lt;br /&gt;
:* If you have a skins/ directory in the same directory as zdoom.exe, every wad file in it will be automatically loaded when the game starts. This way, you don&#039;t have to load your [[skin]]s by hand to use them.&lt;br /&gt;
:* New formatting options for text [[print]]ed using [[ACS]].&lt;br /&gt;
:* A [[A_MonsterRail|code pointer]] to make monsters fire a railgun.&lt;br /&gt;
;{{LE|1.17b}} (March 17): {{forum|t=21|Release thread}}&lt;br /&gt;
:Some minor bug fixes over 1.17 and 1.17a. It also loads faster because the sprite dimensions are not cached until they are actually needed. There are also some other internal changes in preparation for supporting &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, but those don&#039;t affect the user yet.&lt;br /&gt;
;{{LE|1.17b1}} (March 19): {{forum|t=22|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|1.17c}} (May 5): {{forum|t=28|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom117c.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom117c-src.zip Source]}}&lt;br /&gt;
:* Fixed game saving crashes on maps with [[wind]]/[[current]] effects.&lt;br /&gt;
:* In [[Boom]] [[deep water]] sectors, the underwater light and fog colors can now be set independently of the area above water.&lt;br /&gt;
:* Added nojump, allowjump, nofreelook, and allowfreelook keywords for use in [[MAPINFO]] lumps to control [[jumping]] and [[free look]].&lt;br /&gt;
:* The random number seed now changes each time you run the program.&lt;br /&gt;
;{{LE|1.18 test 1}} (June 30): {{forum|t=33|Release thread}}&lt;br /&gt;
:* Tweaked the optimized renderer for fifth-generation processors.&lt;br /&gt;
:* Added the following specials:&lt;br /&gt;
::*[[Line_AlignFloor]]&lt;br /&gt;
::*[[Line_AlignCeiling]]&lt;br /&gt;
::*[[Sector_SetRotation]]&lt;br /&gt;
::*[[Sector_SetCeilingPanning]]&lt;br /&gt;
::*[[Sector_SetFloorPanning]]&lt;br /&gt;
::*[[Sector_SetCeilingScale]]&lt;br /&gt;
::*[[Sector_SetFloorScale]]&lt;br /&gt;
:* Added an additional parameter to the [[Transfer_Heights]] special.&lt;br /&gt;
:* Switched to the [http://sourceforge.net/projects/openptc/ OpenPTC] library for display.&lt;br /&gt;
:* Converted lots of code to an object-oriented C++ architecture.&lt;br /&gt;
;{{LE|1.18 test 2}} (July 1): {{forum|t=36|Release thread}}&lt;br /&gt;
:* Fixed vertical aim clipping ({{Class|BFG9000|BFG}} works again).&lt;br /&gt;
:* Fixed [[monster]] wandering.&lt;br /&gt;
:* Maps with mapthings of type 0 no longer generate warning messages.&lt;br /&gt;
:* [[Crusher]]s that do no damage no longer act as if they inflict pain to actors.&lt;br /&gt;
:* The [[alias]] command lists aliases again.&lt;br /&gt;
:* Aliases are saved to the [[config file]] again.&lt;br /&gt;
;{{LE|1.18 test 3}} (July 2): {{forum|t=37|Release thread}}&lt;br /&gt;
:* Removed unnecessary display mode switches.&lt;br /&gt;
:* Created a DCanvas class to encapsulate most 2D rendering.&lt;br /&gt;
;{{LE|1.18 test 4}} (July 3): {{forum|t=39|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;Bad DCanvas::CopyRect&amp;quot; problem introduced in test3.&lt;br /&gt;
:* Fixed [[sound sequence]]s that should not be cut off when stopped (such as the standard doors).&lt;br /&gt;
;{{LE|1.18 test 5}} (July 6): {{forum|t=40|Release thread}}&lt;br /&gt;
:* Fixed a potential infinite loop that was introduced in [[#1.18 test 1|118test1]].&lt;br /&gt;
:* Delayed the initial execution of [[CVAR]] callbacks.&lt;br /&gt;
:* Added &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{wp|Xiaolin Wu&#039;s line algorithm|anti-aliased Wu line drawer}} to the [[automap]].&lt;br /&gt;
;{{LE|1.18 test 6}} (July 10): {{forum|t=41|Release thread}}&lt;br /&gt;
:* Rewrote the {{wp|Xiaolin Wu&#039;s line algorithm|Wu line drawer}} to look better (especially in overlay mode).&lt;br /&gt;
:* [[Sky stretching|Stretched skies]] now get stretched horizontally as well as vertically.&lt;br /&gt;
:* Did an initial integration of the [[Cajun Bot]] 0.71 code.&lt;br /&gt;
;{{LE|1.18 test 7}} (July 12):&lt;br /&gt;
:* Fixed handling of maps with scrolling walls.&lt;br /&gt;
:* Single player works again. In test 6, all games were considered either [[coop]] or [[deathmatch]].&lt;br /&gt;
:* Disabled the [[bot]] thinking code in single player games, so you don&#039;t suffer a performance hit when not using bots.&lt;br /&gt;
:* Added some performance counters accessible through the {{CCMD|D|stat}} command.&lt;br /&gt;
;{{LE|1.18 test 8}} (July 20): {{forum|t=43|Release thread}}&lt;br /&gt;
:* Fixed a crash problem with the &amp;quot;burn&amp;quot; [[screen wipe]].&lt;br /&gt;
:* Fixed a crash problem with playing non-assigned [[sound sequence]]s.&lt;br /&gt;
:* Fixed a crash problem related to trying to shutdown the music subsystem twice.&lt;br /&gt;
:* If you try to add more coop [[bot]]s than there are coop starts, the extra bot leaves quietly instead of ending the game.&lt;br /&gt;
:* {{CVAR|C|sv_weapondrop|Weapondrop}} is now a &amp;quot;server&amp;quot; CVAR, which it should have been in the first place.&lt;br /&gt;
:* Changed the nodetable file format to be more compact.&lt;br /&gt;
:* Bots can now be recorded in demos.&lt;br /&gt;
:* Bots work in [[multiplayer]] games. Still buggy. Spawning bots can cause consistency failures, and they can start spinning wildly.&lt;br /&gt;
;{{LE|1.18 test 9}} (August 9): {{forum|t=44|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;wild&amp;quot; [[bot]] spinning problem.&lt;br /&gt;
:* Commands like {{CCMD|D|changemap}} that could make network games go out of sync should work properly now. The reason they would do that is closely related to the reason that the bots would start spinning.&lt;br /&gt;
:* Finished the serializer. Now savegames work. [[Hub]]s don&#039;t, because I haven&#039;t written the player travelling code yet.&lt;br /&gt;
:* Various other code cleanup.&lt;br /&gt;
;{{LE|1.18 test 10}} (August 14):&lt;br /&gt;
:* Reimplemented [[hub]] travel.&lt;br /&gt;
:* Optimized R_MapPlane slightly.&lt;br /&gt;
:* Added {{CCMD|D|fov}} command.&lt;br /&gt;
:* Added vertical sub-pixel accuracy to the renderer.&lt;br /&gt;
:* Added searches for an [[IWAD]] in the current directory, $DOOMWADDIR, and $HOME.&lt;br /&gt;
;{{LE|1.18}} (September 5): {{forum|t=46|Release thread}}&lt;br /&gt;
:* Replaced the older [[Bots|Cajun]] 0.71 with Cajun 0.97.&lt;br /&gt;
:* Fixed handling of [[status bar]] [[mugshot|faces]] with [[skin]]s that provide them.&lt;br /&gt;
:* Added [[swimmable water]].&lt;br /&gt;
:* Messages printed to the middle of the screen also print to the [[console]].&lt;br /&gt;
:* Skill and other server [[CVARs]] get saved in [[savegame]]s again.&lt;br /&gt;
:* Added liquid [[texture warping]].&lt;br /&gt;
:* Bad [[MAPINFO]] lumps generate error messages instead of hanging.&lt;br /&gt;
:* Realized that it&#039;s impossible to guarantee that all object pointers will be valid without some effort, so FArchive saves DObject objects as NULL objects now instead of aborting with an error.&lt;br /&gt;
:* Added the [[built-in ACS functions]] [[LocalAmbientSound]], [[ActivatorSound]], and [[SetLineMonsterBlocking]].&lt;br /&gt;
:* Added a {{Class|SecretTrigger|thing}} that does nothing but count toward the number of [[secret]]s.&lt;br /&gt;
:* Added a {{CCMD|D|fly}} mode.&lt;br /&gt;
:* Finally implemented the {{CCMD|P|+moveup}} and {{CCMD|P|+movedown}} commands.&lt;br /&gt;
;{{LE|1.18a}} (September 12): {{forum|t=47|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed [[liquid warping]] temporarily stopping when changing levels.&lt;br /&gt;
:* {{CCMD|P|+mlook|+/-mlook}} commands do not generate unknown command messages.&lt;br /&gt;
:* Fixed support for maps with &amp;gt;10 deathmatch starts. Thanks to Roman Hatsiev.&lt;br /&gt;
:* Fixed support for the special &amp;quot;maps&amp;quot; EndGame? in MAPINFO lumps.&lt;br /&gt;
:* {{Class|TeleportDest2|Teleport destination (no gravity)}} now works as intended.&lt;br /&gt;
:* Hopefully fixed [[savegame]] problems.&lt;br /&gt;
:* [[Bots]] are restored from savegames.&lt;br /&gt;
:* Fixed keyboard turning speed when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* Network commands get executed only once when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* In sectors with [[damaging floor]]s and swimmable [[deep water]], the damage will also be applied while the player is swimming and not just when the player is on the ground.&lt;br /&gt;
;{{LE|1.18b}} (September 15): {{forum|t=48|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom118b.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom118b-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed crash when saving games with more than 1024 objects.&lt;br /&gt;
:* Fixed crash when loading a game without starting a new one first.&lt;br /&gt;
:* Reduced the size and frequency of pregame network packets, under the assumption that problems people were having using 1.18 on the Internet are a result of limited modem bandwidth.&lt;br /&gt;
;{{LE|1.19}} (November 24): {{forum|t=53|Release thread}} | {{forum|t=54|Source/Linux build release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom-1.19.tar.gz Source]}}&lt;br /&gt;
:First official Linux build.&lt;br /&gt;
:* [[DeHackEd]] patches that set an actor&#039;s {{Property|DeathSound|death sound}} to 0 without removing the [[A_Scream]] call no longer crash.&lt;br /&gt;
:* Fixed sync problems when playing with {{Class|BulletPuff|bullet puffs}} as [[particle]]s vs as sprites.&lt;br /&gt;
:* Fixed friction when walking on the bottom of swimmable water.&lt;br /&gt;
:* Added Jeffrey Cuenco&#039;s fixes to get {{c|{{param|-host}}}} and {{c|{{param|-join}}}} [[command line parameters]] to work properly.&lt;br /&gt;
:* Fixed [[Boom]] [[Generic_Door|generalized locked doors]] so that the open/close type will actually close.&lt;br /&gt;
:* Added pointer tracking and cleanup. This should fix the occasional crashes when saving games and various other anomalies.&lt;br /&gt;
;{{LE|1.20}} (November 25): {{forum|t=56|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed saving, reloading, and then resaving [[savegame|games]] when travelling between levels in a [[hub]].&lt;br /&gt;
:* Fixed saving of [[ACS]] scripts scheduled to occur on a future level.&lt;br /&gt;
;{{LE|1.21}} (November 26): {{forum|t=57|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom121.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom121-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed problems with thinkers removing themselves and causing other thinkers to not get a chance to think.&lt;br /&gt;
:* Added {{CVAR|R|hud_scale}} CVAR&lt;br /&gt;
;{{LE|1.22}} (November 12): {{forum|t=60|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom122.zip Windows build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22-i386.tar.gz Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom122-src.zip Windows source] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22.tar.gz Linux source]}}&lt;br /&gt;
:* [[Scroll_Texture_Both]] and [[TranslucentLine]] specials can now be used from [[ACS]].&lt;br /&gt;
:* Fixed compiler-dependent [[CVAR]] ordering during [[netgame]] arbitration.&lt;br /&gt;
:* Fixed certain [[polyobject]] movement combinations that would not stop even though they were supposed to.&lt;br /&gt;
:* Did some cleanup for Alpha processors.&lt;br /&gt;
&lt;br /&gt;
==2000==&lt;br /&gt;
June 20 of this year saw the public release of the [[Build]] source code.&lt;br /&gt;
;{{LE|1.23 Beta}} (May 10): {{forum|t=64|Release thread}}&lt;br /&gt;
:*Partial &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; support.&lt;br /&gt;
:*Windows build uses [[FMOD Ex|FMOD]] instead of [http://www.s2.org/midas/ MIDAS].&lt;br /&gt;
&lt;br /&gt;
==2001==&lt;br /&gt;
;{{LE|1.23 Beta 19}} (March 9): {{forum|t=74|Release thread}}&lt;br /&gt;
:Added new [[camera]] types.&lt;br /&gt;
:Added [[LANGUAGE|string localization]].&lt;br /&gt;
:Added [[decal]]s.&lt;br /&gt;
:Added [[slope]]s.&lt;br /&gt;
:Added [[skybox]]es.&lt;br /&gt;
;{{LE|1.23 Beta 20}} (March 11): {{forum|t=75|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 23}} (April 9): {{forum|t=76|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 24}} (April 12): {{forum|t=77|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 25}} (August 15): {{forum|t=81|Release thread}}&lt;br /&gt;
:Linux build now uses SDL&lt;br /&gt;
;{{LE|1.23 Beta 28}} (September 17): {{forum|t=83|Release thread}}&lt;br /&gt;
:Added a few [[decal]]-related [[CVARs]].&lt;br /&gt;
;{{LE|1.23 Beta 28a}} (December 13): {{forum|t=88|Release thread}}&lt;br /&gt;
&lt;br /&gt;
==2002==&lt;br /&gt;
;{{LE|1.23 Beta 33}} (February 5): {{Forum|t=90|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-linux.bz2 Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-src.tar.bz2 Source]}}&lt;br /&gt;
:Many fixes and rendering optimization.&lt;br /&gt;
:*Increased &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039; support&lt;br /&gt;
:*Improved [[decal]]s.&lt;br /&gt;
:*Added support for the [[Bloodbath announcer]]&lt;br /&gt;
:*Added [[underwater]] [[REVERBS|reverb]] effect.&lt;br /&gt;
:*Added [[Line_Horizon]] effect.&lt;br /&gt;
:*Added {{Class|ScriptedMarine|scripted marines}} and several [[ACS]] enhancements.&lt;br /&gt;
:*Added support for [[DeePsea]]&#039;s [[patch|tall patches]].&lt;br /&gt;
:*Added [[slope]] things.&lt;br /&gt;
:*Changed [[license]] for original ZDoom source code to a &amp;quot;BSD-ish one&amp;quot;.&lt;br /&gt;
;{{LE|2.0 Beta 13}} (August 27):&lt;br /&gt;
:*Further increased &#039;&#039;Heretic&#039;&#039;/&#039;&#039;Hexen&#039;&#039; support.&lt;br /&gt;
:*Added [[PNG]] support for screenshots. [[Savegame]]s are actually PNG files now.&lt;br /&gt;
:*Added [[ZDBSP|internal nodebuilder]], made it [[polyobject]]-aware.&lt;br /&gt;
:*Added SNES SPC music support.&lt;br /&gt;
:*Added a loader for [[Build]] maps.&lt;br /&gt;
:*Added support for double- and quadruple-resolution flats (128x128 and 256x256).&lt;br /&gt;
:*Added ACS [[libraries]].&lt;br /&gt;
:*Added support for up to 8 mouse buttons.&lt;br /&gt;
:*Added the very first version of [[DECORATE]].&lt;br /&gt;
:*Removed [[MBF]]&#039;s torque simulation because of the problems it caused.&lt;br /&gt;
;{{LE|2.0.21}} (December 10)&lt;br /&gt;
;{{LE|2.0.22}} (December 11)&lt;br /&gt;
;{{LE|2.0.23}} (December 12)&lt;br /&gt;
;{{LE|2.0.24}} (December 12)&lt;br /&gt;
;{{LE|2.0.25}} (December 13)&lt;br /&gt;
;{{LE|2.0.26}} (December 19)&lt;br /&gt;
;{{LE|2.0.27}} (December 19)&lt;br /&gt;
;{{LE|2.0.28}} (December 24)&lt;br /&gt;
;{{LE|2.0.29}} (December 28)&lt;br /&gt;
&lt;br /&gt;
==2003==&lt;br /&gt;
;{{LE|2.0.47}} (May 14): {{Forum|t=101|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/47.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47i}} (October 2): {{plainlink|[http://www.zdoom.org/files/lars/47i.cab Build]}}&lt;br /&gt;
;{{LE|2.0.48}} (October 23):&lt;br /&gt;
:*Interchangeability between [[flat]]s and [[texture]]s.&lt;br /&gt;
;{{LE|2.0.49}}, {{LE|2.0.50}} (October 26)&lt;br /&gt;
;{{LE|2.0.51}} (October 30)&lt;br /&gt;
;{{LE|2.0.52}} (October 31)&lt;br /&gt;
;{{LE|2.0.53}} (November 16)&lt;br /&gt;
;{{LE|2.0.54}}, {{LE|2.0.55}} (November 23)&lt;br /&gt;
;{{LE|2.0.56}} (November 25)&lt;br /&gt;
;{{LE|2.0.57}} (November 26)&lt;br /&gt;
;{{LE|2.0.58}}, {{LE|2.0.59}} (December 7)&lt;br /&gt;
;{{LE|2.0.60}} (December 8)&lt;br /&gt;
&lt;br /&gt;
==2004==&lt;br /&gt;
;{{LE|2.0.61}} (January 22) &lt;br /&gt;
;{{LE|2.0.62}} (February 7):&lt;br /&gt;
:*Added modern [[DECORATE]] support.&lt;br /&gt;
;{{LE|2.0.63}} (February 10): {{plainlink|[http://www.zdoom.org/files/lars/63.cab Build] {{!}} [http://www.zdoom.org/files/lars/63src.cab Source]}}&lt;br /&gt;
:*Added custom monsters to DECORATE.&lt;br /&gt;
;{{LE|2.0.64}} (June 8)&lt;br /&gt;
;{{LE|2.0.90}} (October 21):&lt;br /&gt;
:*Added &#039;&#039;[[Strife]]&#039;&#039; support and new inventory system&lt;br /&gt;
;{{LE|2.0.91}} (October 22)&lt;br /&gt;
;{{LE|2.0.92}} (October 31)&lt;br /&gt;
;{{LE|2.0.93}} (November 3)&lt;br /&gt;
;{{LE|2.0.94}} (November 19)&lt;br /&gt;
;{{LE|2.0.95}} (December 24): {{plainlink|[http://www.zdoom.org/files/lars/95changes.html Changelog]}}&lt;br /&gt;
:*Added [[camera]] textures to [[ANIMDEFS]] and [[SetCameraToTexture]]&lt;br /&gt;
:*Improved [[console]] tab completion, added Ctrl-X shortcut to clear the console&#039;s command line&lt;br /&gt;
:*Several &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039; fixes&lt;br /&gt;
:*Merged in Jim&#039;s [[ACS]] character array [[print]]ing support. &lt;br /&gt;
:*Added the [[polymost]] clipper.&lt;br /&gt;
:*Added support for 16:10 and 5:4 aspect ratios and letterboxing.&lt;br /&gt;
:*Added [[scope|static local variables]], [[Log]], [[SetAmmoCapacity]] and [[GetAmmoCapacity]] to [[ACS]].&lt;br /&gt;
;{{LE|2.0.96}} (December 25): {{plainlink|[http://www.zdoom.org/files/lars/96.cab Build] {{!}} [http://www.zdoom.org/files/lars/96src.cab Source] {{!}} [http://www.zdoom.org/files/lars/96changes.html Changelog]}}&lt;br /&gt;
:*Added [[TITLEMAP]]&lt;br /&gt;
&lt;br /&gt;
==2005==&lt;br /&gt;
;{{LE|2.0.97}} (September 28): {{forum|t=8060|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/97.cab Build] {{!}} [http://www.zdoom.org/files/lars/97src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*The [[LANGUAGE]] lump is now text-based.&lt;br /&gt;
:*Added IMF [[music format]] support.&lt;br /&gt;
:*Ported [[SetActorAngle]] and [[SetLineBlocking|BLOCK_RAILING]] from the [[ZDoom Community Build]].&lt;br /&gt;
:*Added [[Polymost]] visualization code from [[Build]].&lt;br /&gt;
:*Gave {{Flag|DONTMORPH}} flag to {{Class|Cyberdemon}}, {{Class|SpiderMastermind}}, {{Class|AlienSpectre1}}, {{Class|Crusader}}, {{Class|Programmer}}, and {{Class|Inquisitor}}.&lt;br /&gt;
:*Made {{Class|Puffy}} and projectiles spawned by [[A_LastZap]] deal no damage.&lt;br /&gt;
:*[[Teleport_NewMap]] can now be used within a [[TITLEMAP]] in order to make it possible to use different maps as the title map.&lt;br /&gt;
:*Merged in Graf Zahl&#039;s [[Caverns of Darkness]] patch.&lt;br /&gt;
:*Added [[Polymost]] wireframe mode.&lt;br /&gt;
:*Added {{CCMD|O|writeopl}} console command.&lt;br /&gt;
:*[[UsePuzzleItem]] can now be a [[thing]]&#039;s [[special]].&lt;br /&gt;
:*Missiles with negative damage now give you health.&lt;br /&gt;
;{{LE|2.0.98}} (November 3): {{forum|t=8460|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/98.cab Build] {{!}} [http://www.zdoom.org/files/lars/98src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
&lt;br /&gt;
==2006==&lt;br /&gt;
February 16 of this year saw the first commit to the [[SVN]] repository.&lt;br /&gt;
;{{LE|2.1.0}}{{rev|204}} (June 21): {{forum|t=10550|Release thread}} | {{plainlink|[http://zdoom.org/files/old/zdoom-2.1.0.zip Build] {{!}} [http://zdoom.org/files/old/zdoom-2.1.0-src.7z Source]}}&lt;br /&gt;
:*Added several things from [[ZDoom Community Build]] (unofficial 2.0.96x) and [[GZDoom]], including custom [[DECORATE]] [[weapon]]s.&lt;br /&gt;
;{{LE|2.1.1}}{{rev|226}} (June 25): {{forum|t=10630|Release thread}} | {{versionlinks|2|1|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|2.1.2}}{{rev|257}} (July 17): {{forum|t=10895|Release thread}} | {{versionlinks|2|1|2}}&lt;br /&gt;
:*Added custom [[player class]]es.&lt;br /&gt;
:*Added &amp;quot;replaces&amp;quot; keyword for [[DECORATE]].&lt;br /&gt;
:*[[IWAD selection box]] now remembers the last choice.&lt;br /&gt;
:*Added [[A_RadiusThrust]] to DECORATE.&lt;br /&gt;
:*Added [[ThingCountName]] and  [[SpawnSpotFacing]] to [[ACS]].&lt;br /&gt;
:*Changed additive scroller options into a [[compatibility options|compatibility flag]].&lt;br /&gt;
;{{LE|2.1.3}}{{rev|265}} (July 18): {{forum|t=10930|Release thread}} | {{versionlinks|2|1|3}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Sounds can be specified by full path now in [[SNDINFO]] and [[S_SKIN]].&lt;br /&gt;
:* [[DECORATE]] replacement is more universal.&lt;br /&gt;
:* Added NecroMage&#039;s submission for bitwise/shift assignment operators for [[ACS]]. (Requires [[ACC]] 1.42+.)&lt;br /&gt;
:* Changed PlayAttacking2 to always use the melee state instead of different implementations per player and hard coding it to MissileState+1. Also changed PlayAttacking for the {{Class|HereticPlayer}} to use the same animation as PlayAttacking2. Now the special handling for &#039;&#039;[[Heretic]]&#039;&#039; in the FireWeapon functions can be removed.&lt;br /&gt;
;{{LE|2.1.4}}{{rev|273}} (July 29): {{forum|t=11063|Release thread}} | {{versionlinks|2|1|4}}&lt;br /&gt;
:*Added partial emulation of [[Boom]]&#039;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.&lt;br /&gt;
:*Added a {{CVAR|C|queryiwad_key}} cvar to control which key can force the [[IWAD selection box]] to appear. It can be either &amp;quot;shift&amp;quot; or &amp;quot;control&amp;quot;. Any other value will disable its functionality.&lt;br /&gt;
;{{LE|2.1.5}}{{rev|321}} (September 2): {{forum|t=11466|Release thread}} | {{versionlinks|2|1|5}}&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInfo]], [[ChangeLevel]], [[SectorDamage]], [[ReplaceTextures]]&lt;br /&gt;
:*New [[DECORATE]] functions: [[A_PlaySoundEx]], [[A_StopSoundEx]]&lt;br /&gt;
:*The {{CVAR|C|vid_nowidescreen}} cvar can be used to disable widescreen aspect ratio correction.&lt;br /&gt;
:*[[A_SpawnDebris]] and [[A_SpawnItem]] can optionally transfer the caller&#039;s color translation to the newly spawned item.&lt;br /&gt;
:*New morphing artifacts can be created by subclassing the {{Class|MorphProjectile}} and {{Class|MorphedMonster}} classes.&lt;br /&gt;
:*[[A_FireCustomMissile]] has a new parameter: Previously it always aimed straight ahead and altered the projectile&#039;s angle according to the resulting direction. If the 6th parameter is 1 now it will aim at the specified angle directly.&lt;br /&gt;
:*Users can now define their own [[TEXTCOLO|text colors]], and there are several new standard ones.&lt;br /&gt;
:*The fourth parameter of [[Polyobj_StartLine]] and the fifth parameter of [[Polyobj_ExplicitLine]] now set the line&#039;s ID.&lt;br /&gt;
:*DECORATE explosion parameters are no longer considered deprecated.&lt;br /&gt;
:*Calling [[Radius_Quake]], [[Thing_Activate]], or [[Thing_Remove]] with a [[TID]] of 0 now operates the activator.&lt;br /&gt;
:*Strife&#039;s {{Class|PhosphorousFire}} now does completely thrustless damage.&lt;br /&gt;
:*An actor&#039;s damage in DECORATE can now be specified as an expression that is evaluated each time it needs to do damage. To do this, enclose it within parentheses, and the normal Doom damage calculation will be bypassed.&lt;br /&gt;
:*Passing a negative script number to the {{CCMD|D|puke}} [[console command]] now runs the script with [[ACS_ExecuteAlways]] instead of [[ACS_Execute]].&lt;br /&gt;
:*[[Polyobject]]s defined with [[Polyobj_ExplicitLine]] are no longer limited to 64 segs.&lt;br /&gt;
:*Starting a new game or reloading an old one no longer resets the [[chasecam]].&lt;br /&gt;
:*The [[automap]] background is now a regular texture.&lt;br /&gt;
:*Added support for many [[image format]]s for use as textures: [[PNG]], JPEG, PCX, TGA, DDS.&lt;br /&gt;
:*Numerous bugfixes.&lt;br /&gt;
;{{LE|2.1.6}}{{rev|346}} (October 2): {{forum|t=11758|Release thread}} | {{versionlinks|2|1|6}}&lt;br /&gt;
:*Scaled 2D images are supported.&lt;br /&gt;
:*Dehacked max health usage defaults to consistency with other ([[Boom]]) ports.&lt;br /&gt;
:*A &#039;&#039;font&#039;&#039; parameter was added to [[A_Print]].&lt;br /&gt;
:*Quoted strings in [[DECORATE]] can no longer span multiple lines without using the escape character (\) at the end of each line. This makes it easier to spot places where you unintentionally left off a closing quote and got an error several lines later.&lt;br /&gt;
:*A new {{CCMD|O|writeini}} console command can be used to save [[the ini]] at any time, with any file name.&lt;br /&gt;
:*If the ini is write-protected when you quit, an error dialog now opens to let you know your settings could not be saved and gives you the opportunity to unprotect it.&lt;br /&gt;
:*Multiple stat displays can be enabled at once.&lt;br /&gt;
:*Several bugfixes.&lt;br /&gt;
;{{LE|2.1.7}}{{rev|524}} (October 31): {{forum|t=12015|Release thread}} | {{versionlinks|2|1|7}}&lt;br /&gt;
:*Alias commands can now do parameter substitution. If you have %x, where x is some number, in an alias command, it will be replaced by the appropriately numbered parameter passed when the alias is used, with %0 being replaced by the name of the alias itself.&lt;br /&gt;
:*A new {{Class|MapMarker}} actor has been added that you can use to mark points of interest on the [[automap]]. If its first argument is zero, the map marker itself appears on the automap, otherwise it is drawn on top of any actor with a [[TID]] matching that argument. If the second argument is one, then the map marker will only be appear if the player has previously seen the sector it is in. You can use [[Thing_Activate]] and [[Thing_Deactivate]] on markers to turn them on and off. To make custom markers, all you need to do is subclass MapMarker with [[DECORATE]].&lt;br /&gt;
:*Added the [[SetActorPitch]] [[ACS]] command to set an actor&#039;s pitch.&lt;br /&gt;
:*You can pass multiple jump targets to the [[A_Jump]] [[DECORATE]] function, and it will choose one of them at random if it jumps.&lt;br /&gt;
:*Using a [[TID]] of 0 with [[Thing_Deactivate]], [[SetActorAngle]], [[Thing_Spawn]]*, [[Thing_Projectile]]*, and [[Thing_Move]] will now operate on the activator.&lt;br /&gt;
:*The fifth argument for [[Line_SetIdentification]] can be used to set the high byte of the line ID.&lt;br /&gt;
:*Added a {{Property|CameraHeight}} [[DECORATE]] property for actors.&lt;br /&gt;
:*Added special death states for [[projectile]]s hitting actors. If missiles hit a non-bleeding actor, they try the Crash state first. If that doesn&#039;t exist or the actor is bleeding, they try the XDeath state next. If they hit anything else or neither of the two states are defined, they use the normal death state.&lt;br /&gt;
:*Added a {{Flag|PIERCEARMOR}} [[DECORATE]] flag for projectiles.&lt;br /&gt;
:*The {{CCMD|D|morphme}} [[console command]] can be given an optional argument to specify which class to morph into.&lt;br /&gt;
:*Miscellaneous bugfixes.&lt;br /&gt;
&lt;br /&gt;
==2007==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
==2008==&lt;br /&gt;
;{{LE|2.2.0}}{{rev|748}} (February 15): {{forum|t=16272|Release thread}} | {{versionlinks|2|2|0}}&lt;br /&gt;
:*This is the final version of ZDoom to fully support Windows 95 since later versions switched to [[FMOD Ex]].&lt;br /&gt;
:*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 pain and death sounds.&lt;br /&gt;
:*Custom damage color for [[palette flash]]es per [[player class]].&lt;br /&gt;
:*Custom state labels. New states can be defined in [[DECORATE]].&lt;br /&gt;
:*The [[SBARINFO]] lump for creating status bar and other [[HUD]]s.&lt;br /&gt;
:*[[Skill definition]] in [[MAPINFO]], with many properties.&lt;br /&gt;
:*Most thing functions treat a [[TID]] of 0 as the activator now.&lt;br /&gt;
:*Support for [[ENDOOM]] screens and the graphical or semi-graphical [[startup lumps|screens]] from &#039;&#039;[[Heretic]]&#039;&#039;, &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;.&lt;br /&gt;
:*Several things backported from [[Skulltag]], including powerups and flags for increased port compatibility:&lt;br /&gt;
::*{{Class|PowerDrain|Drain}}, {{Class|PowerHighJump|HighJump}} and {{Class|PowerRegeneration|Regeneration}} runes as powerups and used specific player sounds for their sound effects.&lt;br /&gt;
::*PowerQuadDamage and PowerQuarterDamage as more customizable {{Class|PowerDamage}} and {{Class|PowerProtection}}. These new powerups allow free customization of the damage modification per damage type by inheriting from these classes and setting specific values. Such derived damage/protection powerups will be considered as separate powers so that for example a QuadDamage and a DoubleDamage item can be stacked which would result in 8x damage.&lt;br /&gt;
::*{{Property|Armor.MaxBonus}} and {{Property|Armor.MaxBonusMax}} properties to create armor bonuses that increases the max amount that can be given by other armor items.&lt;br /&gt;
::*Custom F1 help screen [[MAPINFO]] option&lt;br /&gt;
::*Added REDMAP and GREENMAP [[palette blend]]s.&lt;br /&gt;
::*Imported SAME_SPAWN_SPOT [[DM flag]]&lt;br /&gt;
::*Pickup sprite for the {{Class|pistol}}.&lt;br /&gt;
::*Imported {{CVAR|R|r_maxparticles}} CVAR.&lt;br /&gt;
:*New [[Direct3D]] code for better Vista support.&lt;br /&gt;
:*Autoload sections in [[the ini]].&lt;br /&gt;
:*[[GZDoom]]&#039;s [[alternate HUD]].&lt;br /&gt;
:*Custom blood on an actor-by-actor basis into [[DECORATE]].&lt;br /&gt;
:*Smart [[autoaim]] code to prevent the targeting of friendly monsters.&lt;br /&gt;
:*New {{Flag|NOBLOODDECALS}} flag that prevents bleeding actors from spawning blood [[decal]]s.&lt;br /&gt;
:*Customizable border textures. They are defined with the [[MAPINFO]] keyword &#039;bordertexture&#039; and are settable per map.&lt;br /&gt;
:*Custom label support for [[A_Chase]] and [[A_VileChase]]&lt;br /&gt;
:*{{Property|Player.RunHealth}} property to expose the {{Class|StrifePlayer}}&#039;s behavior of not being able to run when its [[health]] is below 10.&lt;br /&gt;
:*Customizable gravity per actor&lt;br /&gt;
:*New {{CCMD|D|summonfoe}} console command, which is analogous to {{CCMD|D|summonfriend}} but forces the summoned creature to be hostile instead.&lt;br /&gt;
:*Added two new [[MAPINFO]] flags to control what actor activates impact lines: {{c|MissileShootersActivateImpactLines}} (the current behavior) and {{c|MissilesActivateImpactLines}} (the original &#039;&#039;[[Hexen]]&#039;&#039; behavior).&lt;br /&gt;
:*More player water sounds: {{c|*dive}} (head goes below water), {{c|*surface}} (your head goes back above water), {{c|*gasp}} (getting air back after starting to drown)&lt;br /&gt;
:*Using &amp;quot;*&amp;quot; with [[ACS]]&#039;s music commands will play the level&#039;s default music set in [[MAPINFO]]&lt;br /&gt;
:*Two new CVARs ({{CVAR|C|win_x}} and {{CVAR|C|win_y}}) that keep track of the window position when not playing in fullscreen mode&lt;br /&gt;
:*Key bindings can now be [[print]]ed with [[ACS]]&lt;br /&gt;
:*{{Flag|INVENTORY.KEEPDEPLETED}} flag for inventory items to keep them in the player&#039;s inventory even when they have been used up. If the item also has an inventory bar icon, it will be drawn darkened while it is depleted.&lt;br /&gt;
:*{{Flag|INVENTORY.IGNORESKILL}} flag for ammo that prevents the given quantity from being modified by the skill level&lt;br /&gt;
:*{{Property|Player.AttackZOffset}} for {{Class|PlayerPawn}}. This is the offset from the center of the player at which their attacks are fired and scales according to their crouched height.&lt;br /&gt;
:*Added a new [[SetActorState]] [[ACS]] function.&lt;br /&gt;
:*{{Flag|CANUSEWALLS}} flag which allows a [[monster]] to activate &#039;use&#039; specials like doors. This flag is on by default for any monster, which was the previous behavior.&lt;br /&gt;
:*[[Thing_Stop]] action special.&lt;br /&gt;
:*New {{Flag|FORCERADIUSDMG}} flag that allows exploding items to hurt boss monsters.&lt;br /&gt;
:*New {{Flag|USESPECIAL}} flag that allows using things to execute their [[special]]s.&lt;br /&gt;
:*[[Compatibility option]] to restore the original behavior of the {{Class|PowerInvisibility|Invisibility}} powerup&lt;br /&gt;
:*Telefrag option added to [[A_SpawnItemEx]].&lt;br /&gt;
:*Added option to [[A_Chase]] that prevents the monster from moving.&lt;br /&gt;
:*New {{c|allowrespawn}} MAPINFO option.&lt;br /&gt;
:*New [[scoreboard]]s.&lt;br /&gt;
:*New [[A_LookEx]] function.&lt;br /&gt;
:*Customizable [[team]]s through the [[TEAMINFO]] lump.&lt;br /&gt;
:*New {{CCMD|D|take}} console command to do the opposite of {{CCMD|D|give}}.&lt;br /&gt;
:*[[UseInventory]]/[[UseActorInventory]] [[ACS]] functions.&lt;br /&gt;
:*New [[A_CustomBulletAttack]] &#039;&#039;aimfacing&#039;&#039; parameter&lt;br /&gt;
:*New [[A_PlaySoundEx]] attenuation parameter.&lt;br /&gt;
:*[[Automap]] markers are stored in [[savegame]]s now.&lt;br /&gt;
:*&#039;No respawn&#039; [[DM flag]] which prevents a [[player]] from respawning after they have died.&lt;br /&gt;
:*&#039;Keep frags gained&#039; [[DM flag]] which allows you to choose whether you want to reset the [[frag]]s of each player next level or not.&lt;br /&gt;
:*Sector_Outside [[sector type]] which forces outside [[fog]] regardless of ceiling texture.&lt;br /&gt;
:*User-defined [[crosshair]]s in the [[Display options]] menu. See xhairs.txt in zdoom.pk3.&lt;br /&gt;
:*Generic log display that can show &#039;&#039;[[Strife]]&#039;&#039;&#039;s log messages in all games regardless of the current game, active [[status bar]] and [[HUD]] mode.&lt;br /&gt;
:*Support for stenciling actors with {{Property|RenderStyle}} property.&lt;br /&gt;
:*.TXT files can now be loaded by simply dragging-and-dropping them on top of zdoom.exe.&lt;br /&gt;
:*&#039;Ice&#039; [[translation]] is accessible from [[DECORATE]].&lt;br /&gt;
:*[[Teamplay]] MAPINFO option.&lt;br /&gt;
:*[[ACS]] script type [[RETURN]]. These are executed by players who return to a map they&#039;ve previously been to.&lt;br /&gt;
&lt;br /&gt;
==2009==&lt;br /&gt;
;{{LE|2.3.0}}{{rev|1455}} (March 1): {{Forum|t=21116|Release thread}} | {{versionlinks|2|3|0}}&lt;br /&gt;
:*[[Universal Doom Map Format]] (UDMF) support.&lt;br /&gt;
:*New garbage collector to improve performances on resource-intensive maps.&lt;br /&gt;
:*Sound uses [[FMOD Ex]] instead of FMOD. Among the benefits, [[REVERBS|reverbs]] can now work on any sound card, not just those that support EAX.&lt;br /&gt;
:*SPC is now a first-class [[music format]] that no longer requires an external DLL to play.&lt;br /&gt;
:*Support for [[Vavoom]]&#039;s [[slope|vertex height things]] and [[Eternity Engine]]&#039;s [[3D middle texture]]s.&lt;br /&gt;
:*[[Linked sectors]], to ensure that multiple [[sector]]s can move consistently in sync.&lt;br /&gt;
:*[[TEXTURES]] lump for text-based texture definitions.&lt;br /&gt;
:*[[Automatic compatibility|MD5-based recognition of maps]] that require certain [[compatibility options]] to work (e.g., {{dw|Strain}} map 7 which relied on the {{dw|Spechits overflow}} bug) to apply these settings transparently.&lt;br /&gt;
:*[[Freedoom]], [[Chex Quest]], and [[Chex Quest 3]] are recognized as [[IWAD]]s and can be selected in the [[IWAD selection box]]. New aliases are available for IWADs, too.&lt;br /&gt;
:*New [[MAPINFO]] format (the old is still supported of course) with a more robust syntax.&lt;br /&gt;
:*Custom [[map translator]]s for Doom-format maps, which can be specified in MAPINFO.&lt;br /&gt;
:*[[Strife]] dialogues now work in multiplayer.&lt;br /&gt;
:*Setting up slots for custom weapons no longer requires a [[KEYCONF]] lump, the limit of 8 weapons per slot is removed.&lt;br /&gt;
:*Added the &amp;quot;{{Class|RandomSpawner|random spawner}}&amp;quot; actor, customizable {{Class|BossEye}}s, {{Class|CustomBridge}}, {{Class|FastProjectile}}.&lt;br /&gt;
:*Many new [[compatibility options]], including one to have [[projectile]]s pass through solid decorations.&lt;br /&gt;
:*More flexible use of [[lightning]] in a map.&lt;br /&gt;
:*The two different [[crushing mode]]s (Doom and Hexen) are now selectable per action.&lt;br /&gt;
:*Customizable pickup flash with {{Property|Inventory.PickupFlash}} property.&lt;br /&gt;
:*[[DeHackEd]] music name replacement has been restored.&lt;br /&gt;
:*Rewritten DECORATE parser, more robust and featuring better error reporting. All actors are defined in DECORATE now.&lt;br /&gt;
:*Functions to handle [[weapon]] reloading through DECORATE.&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInput]], [[GetActorProperty|Get]]/[[SetActorProperty]].&lt;br /&gt;
:*Many actions are now more flexible through optional parameters, for example [[A_Die]] can specify damage type to send to a custom Death state, [[A_KeenDie]] can affect tags other than 666, [[A_Fire]] can specify a vertical offset, and so on.&lt;br /&gt;
:*Many, many new [[DMFlags]] for [[cooperative]] plays, such as having to kill all [[monster]]s before leaving the map or seeing the other [[player]]s on the [[automap]].&lt;br /&gt;
:*Enhanced &#039;&#039;[[Strife]]&#039;&#039; support.&lt;br /&gt;
:*Various and sundry bug fixes.&lt;br /&gt;
;{{LE|2.3.1}}{{rev|1480}} (March 15): {{Forum|t=21296|Release thread}} | {{versionlinks|2|3|1}}&lt;br /&gt;
:Mostly a bugfix release.&lt;br /&gt;
:*Fixes the bug that prevented you from switching weapons after respawning in multiplayer.&lt;br /&gt;
:*Fixes a performance regression introduced in 2.3.0.&lt;br /&gt;
:*Adds support for zip/pk3 files with LZMA and BZip2 compression. (7-Zip is one program that can create such files.)&lt;br /&gt;
:*Addresses a few other niggles.&lt;br /&gt;
&lt;br /&gt;
==2010==&lt;br /&gt;
;{{LE|2.4.0}}{{rev|2075}} (January 1): {{Forum|t=24602|Release thread}} | {{versionlinks|2|4|0}}&lt;br /&gt;
:*Rewritten [[archive format|archive]] management code.&lt;br /&gt;
::*Added support for new [[archive format]]s: 7z, &#039;&#039;Quake&#039;&#039; PAK, &amp;quot;Shrink&amp;quot; and &amp;quot;Implode&amp;quot;.&lt;br /&gt;
::*Removed loading limit of 65 535 lumps. The archive manager can now handle up to 4 294 967 295 lumps.&lt;br /&gt;
:*Rewritten mouse and keyboard handling input under Windows.&lt;br /&gt;
:*Reimplemented and improved support for gamepads and joysticks.&lt;br /&gt;
:*Added truecolor display of the [[HUD]], [[menu]]s and other 2D elements outside the game world when using [[Direct3D]] on Windows.&lt;br /&gt;
:*Replaced SNES_SPC with Game Music Emu, greatly increasing the number of supported emulated [[music format]]s.&lt;br /&gt;
:*Added compiling support for {{wp|Macintosh}} systems.&lt;br /&gt;
:*Added [[IWAD]] recognition for Ultimate [[Freedoom]], [[Action Doom 2: Urban Brawl|Action Doom 2]], [[Blasphemer]] and [[Harmony]].&lt;br /&gt;
:*Added {{param|-noautoload}}, {{param|-norun}}, {{param|-stdout}}, and {{param|-warpwipe}} command line parameters.&lt;br /&gt;
:*Added {{CVAR|C|save_dir}} and {{CVAR|R|d3d_antilag}} console variables.&lt;br /&gt;
:*Added optional parameters to {{CCMD|D|summon}} commands, added {{CCMD|D|summonmbf}} command.&lt;br /&gt;
:*Added {{CCMD|D|info}} command to obtain very verbose debugging information on actors.&lt;br /&gt;
:*Buddha mode&lt;br /&gt;
:*Added [[score]] and {{Class|ScoreItem}}s.&lt;br /&gt;
:*Added [[GameInfo definition]]s to [[MAPINFO]].&lt;br /&gt;
:*Changed random seed initialization so that it uses the system&#039;s cryptographically secure random number generator, if available, instead of the current time. Also changed the random number generator from Lee Killough&#039;s algorithm to the SFMT607 variant of the {{wp|Mersenne twister}}.&lt;br /&gt;
:*Disabled custom [[DEHSUPP]] lumps.&lt;br /&gt;
:*Added &#039;damage&#039; to the actor variables exported to [[DECORATE expressions|DECORATE&#039;s expression evaluator]].&lt;br /&gt;
:*Added &#039;frandom&#039; DECORATE function to the expression evaluator, which is like &#039;random&#039; but for floating point values instead of integers.&lt;br /&gt;
:*Added Raven color set and dagger-like vector sprite to the [[automap]].&lt;br /&gt;
:*Added desatured [[translation]]s.&lt;br /&gt;
:*[[SBARINFO]]: Added the ability to center things with fullscreenoffsets enabled, added [[underwater]] stats.&lt;br /&gt;
:*[[MAPINFO]]: Added [no_]grinding_polyobj, resetinventory properties, added EndTitle option for {{c|nextmap}}.&lt;br /&gt;
:*Added actor replacement to [[skill definition]]s.&lt;br /&gt;
:*Exported many hardcoded values to [[GameInfo definition]]s.&lt;br /&gt;
:*Added [[Line_SetBlocking]] and [[Sector_SetPortal]] specials.&lt;br /&gt;
:*Added {{c|defaultterrain}} section to [[TERRAIN]].&lt;br /&gt;
:*Added new [[earthquake]] functions.&lt;br /&gt;
:*Added [[user variable]]s.&lt;br /&gt;
:*[[DECORATE]]: Added {{Property|Species}}, {{Property|Activation}}, {{Property|PainThreshold}}, {{Property|PushFactor}}, {{Property|WeaveIndexXY}}, {{Property|WeaveIndexZ}}, {{Property|Powerup.Strength}}, {{Property|Player.MugShotMaxHealth}}, {{Property|Inventory.InterHubAmount}} properties.&lt;br /&gt;
:*Turned old bounce flags into {{Property|BounceType}} property.&lt;br /&gt;
:*Added {{Property|DamageFactor}} handling to Armors.&lt;br /&gt;
:*Added &amp;quot;BLUEMAP&amp;quot; [[palette blend]] for {{Property|Powerup.Color}}, and added {{Property|Powerup.Colormap}} for custom colormaps.&lt;br /&gt;
:*Added {{Flag|MOVEWITHSECTOR}}, {{Flag|NOBOSSRIP}}, {{Flag|THRUACTORS}}, {{Flag|THRUSPECIES}}, {{Flag|DONTSEEKINVISIBLE}}, {{Flag|FORCEPAIN}}, {{Flag|NOFEAR}}, {{Flag|BUMPSPECIAL}}, {{Flag|STEPMISSILE}}, {{Flag|NOTELEPORT}}, {{Flag|NOTRIGGER}},  {{Flag|AVOIDMELEE}}, {{Flag|JUMPDOWN}}, {{Flag|SCREENSEEKER}}, {{Flag|INVENTORY.PERSISTENTPOWER}}, {{Flag|WEAPON.AMMO_CHECKBOTH}}, {{Flag|WEAPON.NOAUTOAIM}} flags.&lt;br /&gt;
:*Added [[A_CheckCeiling]], [[A_MonsterRefire]], [[A_Weave]], [[A_JumpIfTargetInSight]], [[A_ZoomFactor]], [[A_SetAngle]], [[A_SetPitch]], [[A_ScaleVelocity]], [[A_ChangeVelocity]], [[A_SetCrosshair]], [[A_RemoveSiblings]], [[A_RaiseMaster]]/[[A_RaiseChildren|Children]]/[[A_RaiseSiblings|Siblings]], [[A_Log]], [[A_PrintBold]], [[A_SetArg]], [[A_SetSpecial]], [[A_Blast]] codepointers.&lt;br /&gt;
:*Added parameters to [[A_PodPain]], [[A_MakePod]], [[A_MLightningAttack]], [[A_M_Saw]], [[A_FireCustomMissile]], [[A_FadeOut]], [[A_Explode]], [[A_WeaponReady]], [[A_VileAttack]], [[A_Mushroom]], [[A_SeekerMissile]], [[A_KillChildren]]/[[A_KillMaster|Master]]/[[A_KillSiblings|Siblings]], [[A_CustomRailgun]] and [[A_RailAttack]], added SXF_TRANSFERPOINTERS flag to [[A_SpawnItemEx]] and several flags to [[A_Respawn]].&lt;br /&gt;
:*Imported {{Class|PowerDoubleFiringSpeed}} from [[Skulltag]], added {{Class|PowerInfiniteAmmo}}.&lt;br /&gt;
:*{{Class|PowerProtection}} and {{Class|PowerInvisibility}} can now be used to give certain flags to the player. Other enhancements to PowerInvisibility, such as changing the player&#039;s {{Property|RenderStyle}}.&lt;br /&gt;
:*Customizable mage lightning, sapphire wand, and {{Class|SpawnShot}} spawn lists.&lt;br /&gt;
:*[[ACS]]: compatibility fix for vanilla Hexen map where script execution order is critical.&lt;br /&gt;
:*Added [[GetActorVelX]]/[[GetActorVelY|Y]]/[[GetActorVelZ|Z]], [[SetActorVelocity]], [[GetActorViewHeight]], [[SetActivator]], [[SetActivatorToTarget]], [[GetChar]], [[SetSkyScrollSpeed]], [[GetAirSupply|Get]]/[[SetAirSupply]], [[GetArmorType]], [[CheckActorProperty]], [[CheckActorClass]], [[SoundSequenceOnActor]]/[[SoundSequenceOnSector|Sector]]/[[SoundSequenceOnPolyobj|Polyobj]], [[SpawnSpotForced]] and [[SpawnSpotFacingForced]].&lt;br /&gt;
:*Added ML_BLOCKUSE line flag, accessible through [[UDMF]] and [[Line_SetBlocking]].&lt;br /&gt;
:*Improved [[automatic compatibility]] with {{dw|Hacx}}, {{dw|Suspended in Dusk}}, {{dw|Community Chest}}, {{dw|Doomsday of UAC}}, {{dw|Strain}}, and the {{dw|Astrostein}} series.&lt;br /&gt;
:*[[Compatibility options]]: added Minotaur footclipped floor fire setting, sprite sorting order, [[MBF]]-style [[A_Mushroom]], monster movements affected by terrain, and friendly monsters able to cross blocking lines.&lt;br /&gt;
:*Added arch-vile &amp;quot;ghost&amp;quot; bug emulation for selected maps only.&lt;br /&gt;
:*Added several other MBF features, including {{Class|BetaSkull}}, [[A_FireOldBFG]], and [[DeHackEd]] support of MBF codepointers and actors.&lt;br /&gt;
:*Repaired accuracy of player behavior in &#039;&#039;[[Hexen]]&#039;&#039; with regards to [[jumping]] and pushing enemies away with attacks.&lt;br /&gt;
:*Fixed compatibility issues arising with [[Action Doom]].&lt;br /&gt;
:*Puffs now set their angle to face the originator of the attack.&lt;br /&gt;
:*Added SoulPriestess&#039; patch to force aspect ratio with {{CVAR|R|vid_aspect}}.&lt;br /&gt;
:*Added Spleen&#039;s patch to customize [[railgun]] performances with {{CVAR|R|r_rail_smartspiral}}, {{CVAR|R|r_rail_spiralsparsity}}, and {{CVAR|R|r_rail_trailsparsity}}.&lt;br /&gt;
:*[[UDMF]]: Added per-tier texture scaling with new [[sidedef]] properties and sidedef versions of [[linedef]] flags {{c|wrapmidtex}} and {{c|clipmidtex}}.&lt;br /&gt;
:*Improved [[sky]] projection and [[sky stretching]].&lt;br /&gt;
:*Updated Italian [[LANGUAGE|language]] file.&lt;br /&gt;
:*A whole lot more.&lt;br /&gt;
;{{LE|2.4.1}}{{rev|2126}} (January 24): {{Forum|t=24895|Release thread}} | {{versionlinks|2|4|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*[[Floor_Waggle]] effects are smoother now.&lt;br /&gt;
:*Negative numbers in the [[alternate HUD]] have their minus sign at the right place now.&lt;br /&gt;
:*Menu option scales better in widescreen resolution.&lt;br /&gt;
:*[[Player setup]] menu looks better in non-Doom games.&lt;br /&gt;
:*Moving [[camera]]s work correctly again.&lt;br /&gt;
:*[[Polyobject]]s glitch a bit less now.&lt;br /&gt;
:*The internal nodebuilder works correctly now with certain troublesome maps.&lt;br /&gt;
:*&#039;&#039;[[Strife]]&#039;&#039; conversations fixed and improved.&lt;br /&gt;
:*Many nitpicky fixes in &#039;&#039;Strife&#039;&#039; (switch sounds, messages, etc.).&lt;br /&gt;
:*&#039;&#039;[[Action Doom 2]]&#039;&#039; and &#039;&#039;[[Harmony]]&#039;&#039; can now use idclev, and they have their Autoload section in [[the ini]].&lt;br /&gt;
:*[[MAPINFO]] {{c|ResetInventory}} keyword now works as expected.&lt;br /&gt;
:*The {{CVAR|C|norawinput}} console variable can be set to true to fix input problems while playing a Windows build through {{wp|Wine_(software)|Wine}}.&lt;br /&gt;
:*A [[character input grid]] is available to play ZDoom with a controller without having to use the keyboard.&lt;br /&gt;
:*Added [[GAMEINFO]] lump so that a mod can specify which [[IWAD]] and external resource files it uses.&lt;br /&gt;
;{{LE|2.5.0}}{{rev|2508}} (August 11): {{Forum|t=26755|Release thread}} | {{versionlinks|2|5|0}}&lt;br /&gt;
:*Enhanced [[polyobject]] system, allowing them to move anywhere in the map (like [[Eternity Engine|Eternity]]&#039;s &amp;quot;dynasegs&amp;quot;) and to give them any arbitrary shape. This is accompanied by new [[ACS]] polyobject movement functions.&lt;br /&gt;
:*Support for [[node|uncompressed extended nodes]], also supported by [[Eternity Engine]] and [[PrBoom+]], to create a new cross-port standard for node storage.&lt;br /&gt;
:*Support for using [[Byte Map Font]]s.&lt;br /&gt;
:*Ability to use metadata tags in audio formats to define custom loop points.&lt;br /&gt;
:*Added support for the [[MUSINFO]] lump (from [[Risen3D]] and [[PrBoom+]]).&lt;br /&gt;
:*Improved compatibility settings to allow optionally a greater faithfulness to the [[vanilla Doom]] and vanilla Heretic behaviors.&lt;br /&gt;
:*ZMAPINFO as an alias for [[MAPINFO]] to avoid compatibility problems with other ports parsing this lump.&lt;br /&gt;
:*Full rewrite of the [[SBARINFO]] system allowing many additional features and options.&lt;br /&gt;
:*Added support for multi-monitor display.&lt;br /&gt;
:*default reverbs environment setting in MAPINFO&lt;br /&gt;
:*Several generalized [[action functions|codepointers]] to emulate some very specific &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; action functions&lt;br /&gt;
:*New functions to refine actor behavior through&lt;br /&gt;
:*Enhanced [[poison]] damage system&lt;br /&gt;
:*Generalized [[railgun]] codepointers&lt;br /&gt;
:*New [[automap options]]&lt;br /&gt;
:*[[Hall of mirrors|HOM]] detection system&lt;br /&gt;
:*New [[console commands]]&lt;br /&gt;
:*The usual bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
==2011==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2012==&lt;br /&gt;
;{{LE|2.6.0}}{{rev|3730}} (July 2): {{Forum|t=33295|Release thread}} | {{versionlinks|2|6|0}}&lt;br /&gt;
:*Added [[Hacx]] IWAD support.&lt;br /&gt;
:*Added text-format Strife conversation system with [[USDF]] and [[ZSDF]].&lt;br /&gt;
:*A textured [[automap]] is now available; automap graphics are now [[map arrow|externalized]].&lt;br /&gt;
:*Rewritten [[menu]] system, which can now be defined with the [[MENUDEF]] lump.&lt;br /&gt;
:*Externalized intermissions to [[MAPINFO]].&lt;br /&gt;
:*Externalized [[IWAD]] detection and gave each IWAD its own independent config section.&lt;br /&gt;
:*Added [[FluidSynth]] and [[GUS|GUS emulator]] softsynths; fixed issues with [[TiMidity++]].&lt;br /&gt;
:*Added [[VOC]] support and enhanced [[MIDI]] playback with support for alternative formats such as [[XMI]] and [[HMI]].&lt;br /&gt;
:*[[Action specials]]: Added [[Ceiling_LowerAndCrushDist]] and [[Thing_SetConversation]]. Added [[console command]] to execute specials.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Increased maximum script number from 999 to 32767.&lt;br /&gt;
::*[[Named script]]s allow to avoid script number conflicts.&lt;br /&gt;
::*Added [[StrCpy]], [[CheckSight]], [[SetActivator]], [[SetPointer]] functions.&lt;br /&gt;
::*Added [[ACS actor properties|APROP_ScaleX/Y]] and APROP_Mass actor properties.&lt;br /&gt;
::*Added temporary dynamic strings variables with [[StrParam]].&lt;br /&gt;
::*Scripts can now have up to four parameters.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added [[A_CheckFlag]], [[A_FaceMaster]], [[A_FaceTracer]], [[A_RadiusGive]], [[A_SetMass]], [[A_SetScale]], [[A_Warp]] and [[A_WolfAttack]]...&lt;br /&gt;
::*Enhanced [[A_AlertMonsters]], [[A_BFGSpray]], [[A_Blast]], [[A_CustomBulletAttack]], [[A_FireBullets]], [[A_GunFlash]], [[A_PainAttack]], [[A_RadiusThrust]]...&lt;br /&gt;
::*Added an [[actor pointer]] manipulation system with several new codepointers...&lt;br /&gt;
::*Added {{Flag|DOHARMSPECIES}}, {{Flag|DONTCORPSE}}, {{Flag|SEEINVISIBLE}} and {{Flag|INVENTORY.UNTOSSABLE}}&lt;br /&gt;
::*Increased [[damage type]] flexibility in several ways with {{Property|DeathType}} and {{Property|PainType}}.&lt;br /&gt;
::*Added customizable {{Class|ArtiPoisonBag|fléchettes}}.&lt;br /&gt;
::*Made [[accuracy]] and [[stamina]] accessible through [[DECORATE expressions]].&lt;br /&gt;
::*Added {{Property|ProjectileKickback}}, {{Property|Inventory.RestrictedTo}} and {{Property|Inventory.ForbiddenTo}} class-based properties.&lt;br /&gt;
::*Backported {{Property|VisibleToTeam}}, {{Property|VisibleToPlayerClass}} and weapon {{Property|DropItem}} feature from [[Skulltag]], and enhanced them.&lt;br /&gt;
::*Added &amp;quot;Fast&amp;quot; keyword for states and deprecated the unreliable {{Flag|FASTER}} and {{Flag|FASTMELEE}} flags.&lt;br /&gt;
:*Added a [[SECRETS|secret hint system]].&lt;br /&gt;
:*[[3D floor]]s support.&lt;br /&gt;
:*[[FraggleScript]] support.&lt;br /&gt;
:*[[Voxel]] support.&lt;br /&gt;
:*[[SBARINFO]]: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.&lt;br /&gt;
:*[[SNDINFO]]: Added {{sndinfo|musicalias}} and {{sndinfo|attenuation}}.&lt;br /&gt;
:*Compatibility: fixed issues with {{dw|Eternal Doom}}, [[Happy Time Circus]], {{dw|Phobos_(WAD)|Phobos}}, vanilla compat, [[Boom]] compat, light levels higher than 255, [[Heretic]], [[Strife]], [[MUSINFO]], misnamed UDMF field.&lt;br /&gt;
:*Fixed loading of [[BMF]] palettes.&lt;br /&gt;
:*{{CCMD|O|restart}} console command.&lt;br /&gt;
:*Added [[PALVERS]] lump.&lt;br /&gt;
:*Custom [[IWAD]]s no longer need to include a [[COLORMAP]], as ZDoom will generate one automatically if it is missing.&lt;br /&gt;
:*Fixed vertical tiling of non-power-of-two textures.&lt;br /&gt;
:*Fixed blockmap overflows in huge maps with help from [[Mocha Doom|Maes]] and [[PrBoom+|Entryway]].&lt;br /&gt;
:*Joystick support for non-Windows platforms.&lt;br /&gt;
:*As always, a plethora of bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.6.1}}{{rev|3794}} (July 28): {{Forum|t=33547|Release thread}} | {{versionlinks|2|6|1}}&lt;br /&gt;
:*Added [[Hacx]] 2.0 IWAD support.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added [[ACS_NamedExecuteWait]] and [[NamedScriptWait]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{Flag|INVENTORY.RESTRICTABSOLUTELY}} and {{Flag|PLAYERPAWN.CANSUPERMORPH}}.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Added RandomPlayerStarts and UsePlayerStartZ flags for [[map definition]]s.&lt;br /&gt;
:*Solved compatibility issue with [[Massmouth 2]].&lt;br /&gt;
:*[[Voxel]]s are now rotated by 90° to match their orientation in Slab6 and [[Build]] games.&lt;br /&gt;
&lt;br /&gt;
==2013==&lt;br /&gt;
;{{LE|2.7.0}}{{rev|4342}} (June 8): {{Forum|t=36456|Release thread}} | {{versionlinks|2|7|0}}&lt;br /&gt;
:*Added [[Floor_RaiseAndCrushDoom]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Made dynamic strings persistent. ACS can now safely generate up to one million new strings.&lt;br /&gt;
::*Added [[CheckFont]], [[GetCVarString]], [[GetUserCVar]], [[GetUserCVarString]], [[IsTIDUsed]], [[LineAttack_(ACS)|LineAttack]], [[SetCVar]], [[SetCVarString]], [[SetUserCVar]], [[SetUserCVarString]], [[SpawnDecal]], and [[UniqueTID]].&lt;br /&gt;
::*Added HUD layers, visibility flags, additive blending, and alpha parameter to [[HudMessage]] and [[HudMessageBold]].&lt;br /&gt;
::*Also added HUD message wrapping and clipping with [[SetHudClipRect]] and [[SetHudWrapWidth]].&lt;br /&gt;
::*Added PLAYERINFO_FOV and _DESIREDFOV to [[GetPlayerInfo]].&lt;br /&gt;
::*Added support for desaturated [[translation]]s.&lt;br /&gt;
::*Added [[Sqrt]], [[FixedSqrt]], and [[VectorLength]] functions.&lt;br /&gt;
::*Support for advanced structures from non-ACC compilers.&lt;br /&gt;
::*Added the ability to retrieve the {{Property|ReactionTime}}, {{Property|Height}} and {{Property|Radius}} properties through [[GetActorProperty]].&lt;br /&gt;
::*Added CHANGELEVEL_PRERAISEWEAPON to [[ChangeLevel]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*{{Flag|FLOATBOB}} things are no longer moved physically when bobbing.&lt;br /&gt;
::*Added {{Property|Player.FallingScreamSpeed}}, {{Property|Player.GruntSpeed}}, {{Property|Weapon.MinSelectionAmmo1}}, and {{Property|Weapon.MinSelectionAmmo2}}.&lt;br /&gt;
::*Added random state duration and [[A_SetTics]].&lt;br /&gt;
::*[[A_Explode]]&#039;s &#039;&#039;affectsource&#039;&#039; parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to [[A_RadiusThrust]].&lt;br /&gt;
::*[[A_RadiusThrust]] can use negative &#039;&#039;force&#039;&#039; values.&lt;br /&gt;
::*Added [[A_JumpIfTargetInsideMeleeRange]], [[A_JumpIfTargetOutsideMeleeRange]], [[A_SetDamageType]], and [[A_CheckLOF]].&lt;br /&gt;
::*Added {{Flag|INVENTORY.NEVERRESPAWN}}, {{Flag|INVENTORY.NOSCREENFLASH}}, {{Flag|POWERSPEED.NOTRAIL}}, and {{Flag|PLAYERPAWN.CROUCHABLEMORPH}}.&lt;br /&gt;
::*Added JLOSF_NOAUTOAIM flag to [[A_JumpIfTargetInLOS]].&lt;br /&gt;
::*Added WRF_DISABLESWITCH to [[A_WeaponReady]].&lt;br /&gt;
::*[[A_Light]] can use negative values to darken the scene.&lt;br /&gt;
::*Added NORANDOMPUFFZ flag to [[A_CustomPunch]], [[A_FireBullets]], and [[A_CustomBulletAttack]].&lt;br /&gt;
::*Added SXF_USEBLOODCOLOR, SXF_CLEARCALLERTID, SXF_MULTIPLYSPEED, SXF_TRANSFERSCALE, SXF_TRANSFERSPECIAL, and SXF_CLEARCALLERSPECIAL flags to [[A_SpawnItemEx]].&lt;br /&gt;
::*Added the ability to adjust the vertical offset of a rail attack to [[A_RailAttack]] and [[A_CustomRailgun]].&lt;br /&gt;
::*Player-fired seeker [[Projectile|missiles]]&#039; range at which the missiles initially lock-on a [[Actor pointer|tracer]] can be set via {{Property|MaxTargetRange}} actor property.&lt;br /&gt;
::*{{Property|ReactionTime}} added to [[DECORATE expressions]].&lt;br /&gt;
::*Added [[Actor states#NoDelay|NoDelay]] state flag.&lt;br /&gt;
::*Added [[Actor_states#States|Bounce]] actor states.&lt;br /&gt;
::*Fixed few cases of DECORATE definitions inaccuracies for [[Doom]], [[Heretic]], [[Hexen]] and [[Strife]] actors.&lt;br /&gt;
:*[[FONTDEFS]]: Backported SPACEWIDTH from [[ECWolf]].&lt;br /&gt;
:*[[LANGUAGE]]: Brazilian Portuguese support.&lt;br /&gt;
:*[[MAPINFO]]: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for [[map definition]]s and NoRandomPlayerclass for [[GameInfo definition]]s.&lt;br /&gt;
:*[[MIDI]]: [[FluidSynth]] now recognize {{c|libfluidsynth.dll}} as a valid alias for {{c|fluidsynth.dll}}, various FluidSynth [http://forums.scummvm.org/viewtopic.php?p=72972#72972 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.&lt;br /&gt;
:*Updated [[foo_DUMB]].&lt;br /&gt;
:*Implemented additive rendering for [[3D floor]]s.&lt;br /&gt;
:*Added &#039;&#039;{{wp|Quake (video game)|Quake}}&#039;&#039;-like no-clipping with {{CCMD|D|noclip2}}.&lt;br /&gt;
:*Exported the [[scoreboard]] text to [[LANGUAGE]].&lt;br /&gt;
:*The sound system should now precache nearly all sounds used by actor properties and [[ambient sound]]s, and the [[MAPINFO/Map definition|MAPINFO]] command &amp;quot;PrecacheSounds&amp;quot; can be used to precache other sounds.&lt;br /&gt;
:*Arbitrary FPS cap with {{CVAR|R|vid_maxfps}}.&lt;br /&gt;
:*Increased maximum resolution to 5760&amp;amp;times;3600.&lt;br /&gt;
:*Added {{c|lightfog}} property for [[sidedef]]s.&lt;br /&gt;
:*Added support for {{dw|Doom 3: BFG Edition}}&#039;s modified [[IWAD]]s, including {{dw|No Rest for the Living}}.&lt;br /&gt;
:*Improved [[WAD]] archive code with support for big-endian format and LZSS compression used in several console ports.&lt;br /&gt;
:*Added ability in [[UDMF]] to specify things to spawn by [[:Category:Thing specials|thing specials]] and [[Hexen breakable items]] by names with {{c|arg1str}}, as well as the ability to set initial values to a thing&#039;s [[user variable]].&lt;br /&gt;
:*Added new [[node]] format for complex UDMF maps which need fractional precision on node splitters.&lt;br /&gt;
:*The [[alternate HUD]] now features a {{Class|Berserk}} indicator and a customizable time display.&lt;br /&gt;
:*Tweaked {{Class|ScriptedMarine|scripted marines}}.&lt;br /&gt;
:*Added {{c|{{CCMD|D|acsprofile}}}} [[CCMDs|console command]].&lt;br /&gt;
:*[[Weapon slots]] can be configured from the [[Customize controls]] menu.&lt;br /&gt;
:*Solved compatibility issues with [[Daedalus: Alien Defense]], {{dw|Community Chest 3}}, Nuke Mine, Khorus, [[Void]], the {{dw|Master Levels}}, and {{dw|Claustrophobia 1024}}.&lt;br /&gt;
:*{{Class|RandomSpawner}}s now respect {{param|nomonsters}}.&lt;br /&gt;
:*Added the ability to define mod-specific [[CVARs|console variables]] through the addition of the [[CVARINFO]] lump.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.7.1}}{{cs|21efe3b}} (July 3): {{Forum|t=36679|Release thread}} | {{versionlinks|2|7|1}}&lt;br /&gt;
&#039;&#039;Note: this is the first version based on the [[Git repository]]; 2.7.0 was the last version based on the SVN repository.&#039;&#039;&lt;br /&gt;
* Added new additive [[MAPINFO/GameInfo definition|GameInfo]] keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.&lt;br /&gt;
* Added a new {{Flag|DONTDRAIN}} flag to mark actors as ineligible for vampirism attacks.&lt;br /&gt;
* [[Automatic compatibility|Compatibility]] fixes for [[Ultimate Simplicity]] map07, [[Cheogsh]] map01, [[Super Sonic Doom]] map31&lt;br /&gt;
* [[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.&lt;br /&gt;
* The powered-up {{Class|GoldWand|Gold Wand}} was not puffing on actors.&lt;br /&gt;
* Disabled [[Heretic]]&#039;s punishment [[cheat]]s when in {{CVAR|C|allcheats}} mode.&lt;br /&gt;
* Objects that explode on death no longer deal the damage they were dealt instead of their own.&lt;br /&gt;
* Vampirism attacks now respect damage reduction.&lt;br /&gt;
* [[Demo]] recording now writes correct user info to demos.&lt;br /&gt;
* ACS&#039;s [[PlaySound]] for looping sounds now works properly when using channel flags.&lt;br /&gt;
&lt;br /&gt;
==2014==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2015==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2016==&lt;br /&gt;
;{{LE|2.8.0}}{{cs|56359b6}} (February 3): {{Forum|t=50712|Release thread}} | {{versionlinks|2|8|0}}&lt;br /&gt;
:*Frontend&lt;br /&gt;
:**GoG-installed IWADs are now detected automatically.  Steam-installed IWADs are detected on OS X and Linux.&lt;br /&gt;
:**Improved netcode and added [[network options]] menu to configure new features.&lt;br /&gt;
:**Two new cheats, god2 and buddha2. The player cannot die from telefrag damage with these.&lt;br /&gt;
:**Added WAD compatibility fixes for over a dozen maps, including &#039;&#039;[[Cheogsh 2]]&#039;&#039;, &#039;&#039;XtheaterIII&#039;&#039;, and the infamous missing yellow keycard on TNT MAP31.&lt;br /&gt;
:**+warp now works from the command line.&lt;br /&gt;
:**Added support for standard file paths on Windows.&lt;br /&gt;
:**Added a user-settable factor for [[earthquake]] intensity.&lt;br /&gt;
:*Automap&lt;br /&gt;
:**Non-countable monster actors can have their own separate automap color.&lt;br /&gt;
:**Extended {{c|{{CVAR|A|am_cheat}}}} with three modes to prevent lines flagged as &#039;&#039;hidden&#039;&#039; from being shown on the automap.&lt;br /&gt;
:**Added separate colors for the various types of 2-sided walls for the overlay automap, as well as colors missing from that mode.&lt;br /&gt;
:**Actors sprites can be shown on the automap instead of simple triangles when the second, third, fifth or sixth modes of {{c|am_cheat}} console variable are enabled.&lt;br /&gt;
:*Console&lt;br /&gt;
:**Added a {{c|{{CCMD|O|closemenu}}}} [[CCMDs|console command]], so that menu options that close the [[menu]] can be added.&lt;br /&gt;
:**The behavior of auto-loading external [[DEHACKED]] lumps can be controlled by setting the {{c|dehload}} [[CVARs|console variable]].&lt;br /&gt;
:**Results for console tab-completion are now color-coded; console commands appear blue, console variables green, and aliases red.&lt;br /&gt;
:**Fixed: the {{c|{{CVAR|R|wi_noautostartmap}}}} console variable was not sync-safe.&lt;br /&gt;
:**Added {{c|{{CVAR|C|sv_freelook}}}}, {{c|{{CVAR|C|sv_allowfreelook}}}} and {{c|{{CVAR|C|sv_nofreelook}}}}.&lt;br /&gt;
:*Building&lt;br /&gt;
:**Native Cocoa back end for OS X resulting in significant increases in performance over SDL in addition to better overall user experience.&lt;br /&gt;
:**Added optional support for the OpenAL sound library, allowing for compiling without FMOD.&lt;br /&gt;
:**Added a new [[software synthesizer]], [[WildMIDI]], and a new [[OPL]] core.&lt;br /&gt;
:**Added support for building with clang.&lt;br /&gt;
:**Nearly-complete support for ARM devices such as the Raspberry Pi.  (Some known bugs remain — in particular, you must set vid_forcesurface to true in zdoom.ini, or ZDoom will instantly segfault.)&lt;br /&gt;
:*Modding&lt;br /&gt;
:**Added [[Ceiling_CrushAndRaiseSilentDist]].&lt;br /&gt;
:**New type of [[earthquake]], can only be accessed with [[A_QuakeEx]] or its [[QuakeEx|ACS equivalent]], which can replicate the shaking effect seen in many recent games instead of random camera offsets using the QF_WAVE flag. Quakes can now be scaled in, out, or mixed up. Both wave and regular quakes work together.&lt;br /&gt;
:**Menu&#039;s back button and the pause sign can be animated.&lt;br /&gt;
:**The particle engine is now exposed to modders via the [[A_SpawnParticle]] action function and [[SpawnParticle]] ACS function.&lt;br /&gt;
:**Directory-structured archives now support [[lump filtering]], which loads different resources depending on the base game.&lt;br /&gt;
:**Friction and [[TERRAIN]]-based sector damage are now transferred to [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Fixed scaling of textures on [[Sector_Set3dFloor|3D floors]].&lt;br /&gt;
:**Overhauled [[sector type]]s and properties. Sectors have several new UDMF properties.&lt;br /&gt;
:**Lines and sectors may now have multiple ids/tags via the moreids UDMF property.&lt;br /&gt;
:**&amp;lt;code&amp;gt;checkswitchrange&amp;lt;/code&amp;gt; now correctly prevents players from pressing switches embedded in the floor or ceiling, and works correctly with switches that are part of 3D floors.&lt;br /&gt;
:**Added {{c|blockhitscan}} and {{c|transparent}} [[linedef|line]] properties, {{c|waterzone}} [[sector]] property, and {{c|alpha}}, {{c|fillcolor}}, {{c|gravity}}, {{c|health}}, {{c|pitch}}, {{c|renderstyle}}, {{c|roll}}, {{c|scale}}, {{c|scalex}}, {{c|scaley}} and {{c|score}} [[thing]] properties for [[Universal Doom Map Format|UDMF]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
:**Added {{c|[[DropItem]]}}, {{c|[[DropInventory]]}}, {{c|[[CheckFlag]]}}, {{c|[[GetLineActivation]]}}, {{c|[[GetMaxInventory]]}}, {{c|[[SetLineActivation]]}}, {{c|[[GetArmorInfo]]}}, {{c|[[GetActorPowerupTics]]}}, {{c|[[IsPointerEqual]]}}, {{c|[[ChangeActorAngle]]}}, {{c|[[ChangeActorPitch]]}}, {{c|[[PickActor]]}}, {{c|[[SetSectorDamage]]}}, {{c|[[QuakeEx]]}}, {{c|[[Warp]]}} and {{c|[[CanRaiseActor]]}}  functions.&lt;br /&gt;
:**Added FHF_NORANDOMPUFFZ flag for {{c|[[LineAttack_(ACS)|LineAttack]]}}.&lt;br /&gt;
:**Added BLOCKF_HITSCAN flag for {{c|[[Line_SetBlocking]]}}.&lt;br /&gt;
:**Added {{c|APROP_ViewHeight}}, {{c|APROP_AttackZOffset}} and {{c|APROP_StencilColor}} [[ACS actor properties]].&lt;br /&gt;
:**Fixed potential desync with {{c|[[CheckPlayerCamera]]}}.&lt;br /&gt;
:**Fixed: {{c|[[Thing_SetGoal]]}} could put an actor&#039;s target and goal out of sync.&lt;br /&gt;
:**{{c|[[GetSectorFloorZ]]}} and {{c|[[GetSectorCeilingZ]]}} now interpret 0-tag as &#039;any sector&#039; and return the z-height of whatever sector is at those coordinates.&lt;br /&gt;
:**[[Arrays]] are now supported at the script scope.&lt;br /&gt;
:*[[ANIMDEFS]]:&lt;br /&gt;
:**Added an optional {{c|worldpanning}} flag for camera textures definitions in order to make camera textures pan in world units instead of texture units.&lt;br /&gt;
:**Added {{c|allowdecals}} option to animated doors.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
:**Four new keybinds for DECORATE use with weapons (see {{c|[[A_WeaponReady]]}}&#039;s User states.)&lt;br /&gt;
:**Sprites now support mirroring via negative scales.&lt;br /&gt;
:**Added {{c|{{Property|Player.UseRange}}}} and {{c|{{Property|Player.AirCapacity}}}} [[player properties]].&lt;br /&gt;
:**Actors can now have extreme death/crash states that are damage type specific.&lt;br /&gt;
:**New &amp;lt;code&amp;gt;randompick&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;frandompick&amp;lt;/code&amp;gt; [[DECORATE expressions|non-action functions]].&lt;br /&gt;
:**[[A_Print]], [[A_PrintBold]], and [[A_Log]] can now use &amp;lt;code&amp;gt;$FOO&amp;lt;/code&amp;gt; [[LANGUAGE|translation strings]].&lt;br /&gt;
:**The following functions have been given additional functionalities: {{c|[[A_AlertMonsters]]}}, {{c|[[A_BFGSpray]]}}, {{c|[[A_ChangeVelocity|A_Change]]/[[A_ScaleVelocity|ScaleVelocity]]}}, {{c|[[A_CustomPunch]]}}, {{c|[[A_SetAngle]]}} and {{c|[[A_SetPitch]]}}, {{c|[[A_DamageMaster]]/[[A_DamageChildren|Children]]/[[A_DamageSiblings|Siblings]]}}, {{c|[[A_KillMaster]]/[[A_KillChildren|Children]]/[[A_KillSiblings|Siblings]]}}, {{c|[[A_Log]]}}, {{c|[[A_Print]]}}, {{c|[[A_PrintBold]]}}, {{c|[[A_RadiusGive]]}}, {{c|[[A_Saw]]}}, {{c|[[A_SetScale]]}}, {{c|[[A_SetTics]]}}, {{c|[[A_SpawnItemEx]]}}, {{c|[[A_Teleport]]}}, {{c|[[A_VileAttack]]}}, {{c|[[A_Warp]]}}, {{c|[[A_WeaponReady]]}}.&lt;br /&gt;
:**Added {{Flag|NOFORWARDFALL}}, {{Flag|NOTONAUTOMAP}}, {{Flag|RELATIVETOFLOOR}}, {{Flag|NEVERTARGET}}, {{Flag|NOTELESTOMP}}, {{Flag|ALWAYSTELEFRAG}}, {{Flag|ALLOWPAIN}}, {{Flag|CAUSEPAIN}}, {{Flag|DONTTHRUST}}, {{Flag|BUDDHA}}, {{Flag|FOILBUDDHA}}, {{Flag|MIRRORREFLECT}}, {{Flag|AIMREFLECT}}, {{Flag|THRUREFLECT}}, {{Flag|HARMFRIENDS}}, {{Flag|NOFORWARDFALL}}, {{Flag|HITTARGET}}, {{Flag|HITMASTER}}, {{Flag|HITTRACER}}, {{Flag|WEAPONSPAWN}}, {{Flag|INVENTORY.TOSSED}}, {{Flag|INVENTORY.ALWAYSRESPAWN}}, {{Flag|INVENTORY.TRANSFER}}, and {{Flag|INVENTORY.NOTELEPORTFREEZE}} [[actor flags]].&lt;br /&gt;
:**{{Flag|MTHRUSPECIES}} now works with [[A_BFGSpray]] and rail attacks.&lt;br /&gt;
:**Added {{c|[[A_DamageSelf]]/[[A_DamageTarget|Target]]/[[A_DamageTracer|Tracer]]}}, {{c|[[A_Remove]]/[[A_RemoveSiblings|Siblings]]/[[A_RemoveTarget|Target]]/[[A_RemoveTracer|Tracer]]}}, {{c|[[A_KillTarget]]/[[A_KillTracer|Tracer]]}}, {{c|[[A_DropItem]]}}, {{c|[[A_SetSpeed]]}}, {{c|[[A_SetHealth]]}}, {{c|[[A_ResetHealth]]}}, {{c|[[A_SetFloatBobPhase]]}}, {{c|[[A_SetRoll]]}}, {{c|[[A_SetTeleFog]]}}, {{c|[[A_GiveToChildren|A_GiveTo]]/[[A_TakeFromChildren|TakeFromChildren]]}}, {{c|[[A_GiveToSiblings|A_GiveTo]]/[[A_TakeFromSiblings|TakeFromSiblings]]}}, {{c|[[A_JumpIfHigherOrLower]]}},  {{c|[[A_SetFloatSpeed]]}}, {{c|[[A_SetSpecies]]}}, {{c|[[A_CheckBlock]]}}, {{c|[[A_CheckProximity]]}}, and {{c|[[A_QuakeEx]]}} [[action functions]].&lt;br /&gt;
:**Players with the NODAMAGE flag cannot be telefragged anymore, nor can they take any damage via voodoo dolls.&lt;br /&gt;
:**The amount of health regeneration gained from a {{c|{{Class|PowerRegeneration}}}} powerup can be controlled with the {{c|{{Property|Powerup.Strength}}}} property.&lt;br /&gt;
:**Improved the {{c|[[Actor states#NoDelay|NoDelay]]}} state flag reliability.&lt;br /&gt;
:**Added {{c|Subtract}} render style.&lt;br /&gt;
:**Different types of {{Class|HereticImp|gargoyles}} and {{Class|Mummy|golems}} could infight amongst themselves (original &#039;&#039;[[Heretic]]&#039;&#039; behavior).&lt;br /&gt;
:**Added {{c|[[Actor states#CanRaise|CanRaise]]}} and {{c|[[Actor states#Slow|Slow]]}} actor [[actor states#State keywords|state flags]].&lt;br /&gt;
:*[[LANGUAGE]]:&lt;br /&gt;
:**Externalized &amp;quot;New save game&amp;quot; line for save screen, and [[automap]] statistics display.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
:**Custom colors for both modes of the automap can be set on per-mod basis.&lt;br /&gt;
:**Added {{c|SlowMonsters}}, {{c|HealthFactor}}, {{c|NoInfighting}} and {{c|TotalInfighting}} [[skill definition]]s property.&lt;br /&gt;
:*[[SBARINFO]]:&lt;br /&gt;
:**Extended {{c|[[DrawImage]]}} command.&lt;br /&gt;
:*[[SNDINFO]]:&lt;br /&gt;
:**Fixed incorrect {{Class|Minotaur|Maulotaur}} melee attack sound.&lt;br /&gt;
:*Internals&lt;br /&gt;
:**Removed [[Polymost]] code.&lt;br /&gt;
:**Vast improvements to movement interpolation.&lt;br /&gt;
:**Fixed a lot of leaks and garbage collection issues.&lt;br /&gt;
:**Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.8.1}}{{cs|1a9bc53}} (February 23): {{Forum|t=50968|Release thread}} | {{versionlinks|2|8|1}}&lt;br /&gt;
* {{c|#region}}/{{c|#endregion}} is now supported for text lumps. ZDoom does not do anything with them but ignore them, but this allows editors to treat them however they like.&lt;br /&gt;
* Better [[LANGUAGE|localizability]] of the [[menus]].&lt;br /&gt;
* [[TERRAIN|Terrain]] definitions can now be optional.&lt;br /&gt;
* Walking into an area with a [[REVERBS|reverb effect]] no longer mutes all sound.&lt;br /&gt;
* &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{Class|ArtiTimeBomb|time bomb artifacts}} now spawn in the proper locations.&lt;br /&gt;
* &#039;&#039;Heretic&#039;&#039;&#039;s powered {{Class|Mace|firemace}} balls once again seek their targets.&lt;br /&gt;
* The {{Class|Whirlwind|whirlwind attack}} used by &#039;&#039;Heretic&#039;&#039;&#039;s {{Class|Ironlich}} sometimes fizzled out immediately.&lt;br /&gt;
* Instant [[sector]] movement actions are again instant.&lt;br /&gt;
* Various other minor fixes.&lt;br /&gt;
&lt;br /&gt;
==Next version==&lt;br /&gt;
The following additions are available in [[Git]] builds, but not yet in an official version.&lt;br /&gt;
&lt;br /&gt;
:* The scripting branch has been merged, laying some groundwork for DoomScript™.&lt;br /&gt;
:* [[DECORATE]]: &lt;br /&gt;
:** [[Actor_states|States]]: &lt;br /&gt;
:*** Can contain multiple action functions enclosed in braces&lt;br /&gt;
:*** &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt; blocks&lt;br /&gt;
:*** return; statement&lt;br /&gt;
:** Functions:&lt;br /&gt;
:*** Added the following non-action functions: [[CountInv]], [[GetDistance]]&lt;br /&gt;
:*** Added the following action functions: [[A_SetChaseThreshold]]&lt;br /&gt;
:* Portals via [[Line_SetPortal]] (visual only so far; {{Forum|t=46916|original forum thread}})&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://sourceforge.net/projects/zdoom/files/ Sourceforge archive] Unofficial mirror for ZDoom versions&lt;br /&gt;
* [https://github.com/doomtech/zdoom-old GitHub archive] Unofficial repository of pre-SVN source code&lt;br /&gt;
[[Category:Nostalgia]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Talk:Compile_ZDoom_on_Linux&amp;diff=43391</id>
		<title>Talk:Compile ZDoom on Linux</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Talk:Compile_ZDoom_on_Linux&amp;diff=43391"/>
		<updated>2016-11-19T02:46:56Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Keep it simple ==&lt;br /&gt;
I&#039;ve removed some of the verbosity in the guide since while Skyrimguy has good intentions, I think there is a point where it starts to make compiling look more difficult than it actually is. I propose the following standards be kept in mind.&lt;br /&gt;
* After the out of tree build directory is created early in the process, assume the user is executing from that directory.&lt;br /&gt;
* Only guide the user for building one copy of ZDoom.  Dealing with multiple copies is in my opinion out of scope for this wiki and hopefully one can figure out for themselves that they can have multiple build directories.  (So switching from Release to Debug instead of a second build directory.)&lt;br /&gt;
* Stick to the basics.  The goal of this guide is to get the user to the finish line the first time, not to teach how to use bash.&lt;br /&gt;
There may be some things that should be added back and the non-Ubuntu package lists should be updated.  But hopefully what I left alone should give a good indication of what I believe is a good middle ground. [[User:Blzut3|Blzut3]] ([[User talk:Blzut3|talk]]) 20:46, 18 November 2016 (CST)&lt;br /&gt;
&lt;br /&gt;
== Create deb and rpm packages ==&lt;br /&gt;
&lt;br /&gt;
I would like to download a deb package, install it, and then all the dependences including timidity and the others in the post.&lt;br /&gt;
&lt;br /&gt;
I would do it myself but i have errors compiling even i installed all as the instructions says.&lt;br /&gt;
&lt;br /&gt;
Also it can be posted to GETDEB repository almost every Linux gamer has to keep it on date.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== cmake line with FMOD lib/inc location ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;grete&amp;quot; suggested at http://forum.zdoom.org/viewtopic.php?f=7&amp;amp;t=24640 to change the cmake line to reference the fmod dir directly from the trunk like&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=/trunk/fmodapi42805linux64/api/lib/libfmodex64-4.28.05.so -DFMOD_INCLUDE_DIR=/trunk/fmodapi42805linux64/api/inc/&lt;br /&gt;
however this broke compiling for me. There is also no &amp;quot;trunk&amp;quot; directory if one downloads source directly from the website, which may confuse new users.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve changed the line back to the installed library location, and kept the includes part. If someone believes /usr/local/lib/ is not the correct place for FMOD to be installed, take it up with the FMOD team. I think ZDoom should honour the default upstream behavior of its&#039; libraries.&lt;br /&gt;
&lt;br /&gt;
--[[User:Super Jamie|Super Jamie]] 23:20, 24 January 2010 (UTC)&lt;br /&gt;
: Substitute &amp;lt;path to the ZDoom source&amp;gt; for /trunk. I doubt anybody would actually download it to a directory called trunk in the root of their filesystem. [[User:Randy Heit|Randy Heit]] 23:08, 17 February 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=43390</id>
		<title>Compile ZDoom on Linux</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=43390"/>
		<updated>2016-11-19T02:36:09Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will guide you on the compilation of [[ZDoom]] on Linux.&lt;br /&gt;
Commands are shown in the tutorial that should be entered into a terminal. Commands beginning with `&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;` or `&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;` will require temporary root/superuser privileges, as will most likely any package installation.&lt;br /&gt;
&lt;br /&gt;
==Install dependencies==&lt;br /&gt;
ZDoom needs certain dependencies in order to compile. These versions are known to work with recent ZDoom versions:&lt;br /&gt;
* &#039;&#039;&#039;Required&#039;&#039;&#039;&lt;br /&gt;
** gcc 4.8 or later&lt;br /&gt;
** make&lt;br /&gt;
** cmake 2.8.7 or later&lt;br /&gt;
** SDL 2.0.2 or later&lt;br /&gt;
** Mesa &#039;&#039;(if compiling [[GZDoom]])&#039;&#039;; or any other GL implementation provider. [[Compile GZDoom on Linux]]&lt;br /&gt;
** [http://zdoom.org/files/fmod/ FMOD Ex] or [http://www.fmod.org/download/ FMOD Studio]&lt;br /&gt;
* &#039;&#039;&#039;Recommended&#039;&#039;&#039;&lt;br /&gt;
** GTK3 or GTK2&lt;br /&gt;
** git &#039;&#039;(needed in order to [[Git repository|download the source]] and compile in commit meta data)&#039;&#039;&lt;br /&gt;
** nasm 0.98.39 or later &#039;&#039;(x86-32 only)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Optional&#039;&#039;&#039;&lt;br /&gt;
** zlib &#039;&#039;(ZDoom has a copy of it and will be statically compiled in if not found)&#039;&#039;&lt;br /&gt;
** libbzip2 &#039;&#039;(possibly static)&#039;&#039;&lt;br /&gt;
** libjpeg &#039;&#039;(possibly static)&#039;&#039;&lt;br /&gt;
** libgme or game-music-emu &#039;&#039;(possibly static)&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Runtime&#039;&#039;&#039;&lt;br /&gt;
** gxmessage &#039;&#039;(optional - needed to show the crash log in a window)&#039;&#039;&lt;br /&gt;
** kdialog &#039;&#039;(optional - for KDE users)&#039;&#039;&lt;br /&gt;
** fluidsynth or timidity &#039;&#039;(optional - for MIDI playback)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In addition to or instead of FMOD, OpenAL can be used for sound in which case the following are required:&lt;br /&gt;
* [http://kcat.strangesoft.net/openal.html libopenal]&lt;br /&gt;
* libmpg123&lt;br /&gt;
* libsndfile&lt;br /&gt;
&lt;br /&gt;
You can presumably use any &#039;&#039;higher&#039;&#039; versions of these programs, however that might not be the case.&lt;br /&gt;
&lt;br /&gt;
=== Debian/Ubuntu ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \&lt;br /&gt;
nasm tar libbz2-dev libgtk-3-dev cmake git libfluidsynth-dev libgme-dev \&lt;br /&gt;
libopenal-dev libmpg123-dev libsndfile1-dev timidity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install gcc-c++ make zlib-devel SDL2-devel libjpeg-turbo-devel \&lt;br /&gt;
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emu-devel \&lt;br /&gt;
openal-soft-devel timidity++ wildmidi-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zypper install gcc-c++ make zlib-devel libSDL2-devel libjpeg-devel \&lt;br /&gt;
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel \&lt;br /&gt;
openal-soft-devel timidity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mageia ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a=&#039;&#039; &amp;amp;&amp;amp; [ &amp;quot;$(uname -m)&amp;quot; = x86_64 ] &amp;amp;&amp;amp; a=64&lt;br /&gt;
urpmi gcc-c++ make lib${a}zlib-devel lib${a}sdl2.0-devel \&lt;br /&gt;
lib${a}jpeg-devel nasm tar lib${a}bzip2-devel lib${a}gtk+2.0-devel \&lt;br /&gt;
cmake git lib${a}fluidsynth-devel lib${a}gme-devel lib${a}openal-devel \&lt;br /&gt;
TiMidity++ lib${a}wildmidi-devel lib${a}cairo-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
ZDoom is available in Arch User Repository at http://aur.archlinux.org/packages.php?ID=16403&lt;br /&gt;
&lt;br /&gt;
Install [https://wiki.archlinux.org/index.php/Arch_User_Repository as per usual for AUR packages].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pacman -S --needed gcc make zlib sdl2 libjpeg-turbo nasm tar bzip2 gtk2 cmake git \&lt;br /&gt;
fluidsynth libgme fmodex openal timidity++ wildmidi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl2 media-libs/libjpeg-turbo \&lt;br /&gt;
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake dev-vcs/git media-sound/fluidsynth \&lt;br /&gt;
media-libs/game-music-emu media-libs/openal media-sound/timidity++ media-sound/wildmidi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLinuxOS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a=&#039;&#039; &amp;amp;&amp;amp; [ &amp;quot;$(uname -m)&amp;quot; = x86_64 ] &amp;amp;&amp;amp; a=64&lt;br /&gt;
apt-get install gcc-c++ make zlib1-devel lib${a}sdl2.0-devel \&lt;br /&gt;
lib${a}jpeg62-devel nasm tar lib${a}bzip2-devel lib${a}gtk+2.0_0-devel \&lt;br /&gt;
cmake git lib${a}fluidsynth1-devel lib${a}openal-devel TiMidity++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do the following steps as normal user.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Download and prepare the source ==&lt;br /&gt;
Download the ZDoom source and make an out of tree build directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://github.com/rheit/zdoom.git &amp;amp;&amp;amp;&lt;br /&gt;
mkdir -pv zdoom/build&lt;br /&gt;
cd zdoom/build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The rest of the guide will assume execution from the build directory created here.&lt;br /&gt;
&lt;br /&gt;
== Download FMOD ==&lt;br /&gt;
Download FMOD and extract files to zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
curl http://zdoom.org/files/fmod/fmodapi44462linux.tar.gz | tar -xvz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Since FMOD is not ABI or API stable it not generally a good idea to install it system wide (although one can).&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
To compile the development version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a=&#039;&#039; &amp;amp;&amp;amp; [ &amp;quot;$(uname -m)&amp;quot; = x86_64 ] &amp;amp;&amp;amp; a=64&lt;br /&gt;
cmake .. -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=&amp;quot;fmodapi44462linux/api/lib/libfmodex${a}-4.44.62.so&amp;quot; \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=&amp;quot;fmodapi44462linux${a}/api/inc&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Assuming all goes well, a &amp;lt;tt&amp;gt;zdoom&amp;lt;/tt&amp;gt; binary should be produced. To start ZDoom, the following command should work:&lt;br /&gt;
 ./zdoom&lt;br /&gt;
If ZDoom complains you do not have any IWADs set up, make sure that you have your [[IWAD]] files placed in the same directory as ZDoom, in &amp;lt;tt&amp;gt;~/.config/zdoom&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$DOOMWADDIR&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;/usr/local/share&amp;lt;/tt&amp;gt;. Alternatively, you can edit &amp;lt;tt&amp;gt;~/.config/zdoom/zdoom.ini&amp;lt;/tt&amp;gt; to set the path for your IWADs.&lt;br /&gt;
&lt;br /&gt;
=== Current release version ===&lt;br /&gt;
If you want to compile the current release version, run:&lt;br /&gt;
&lt;br /&gt;
  git checkout {{latest}}&lt;br /&gt;
&lt;br /&gt;
and [[#Compiling|compile]].&lt;br /&gt;
&lt;br /&gt;
After compiling, [[#Backup|backing up]] and optionally [[#Installation|installing]] the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
Follow this step if you want or manually copy (backup) zdoom, zdoom.pk3 and liboutput_sdl.so.&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the corresponding ZDoom version/revision and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BACKUPZDOOM=&amp;quot;$(sed -n &#039;s/.*#define GIT_DESCRIPTION &amp;quot;\(.*\)&amp;quot;.*/\1/p&#039; \&lt;br /&gt;
../src/gitinfo.h)&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZDOOM&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
cp -v zdoom zdoom.pk3 \&lt;br /&gt;
output_sdl/liboutput_sdl.so &amp;quot;$BACKUPZDOOM&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
When you wish to update ZDoom, copy and paste the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the update finish, go to [[#Compiling]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&#039;&#039;&#039;The following steps have commands that require to be run as superuser with the sudo command.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to install ZDoom, do the following:&lt;br /&gt;
&lt;br /&gt;
Make /usr/games/zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mkdir -pv /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy zdoom, zdoom.pk3, liboutput_sdl.so and FMOD to /usr/games/zdoom:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a=&#039;&#039; &amp;amp;&amp;amp; [ &amp;quot;$(uname -m)&amp;quot; = x86_64 ] &amp;amp;&amp;amp; a=64&lt;br /&gt;
chrpath -r &#039;$ORIGIN&#039; zdoom&lt;br /&gt;
sudo cp -v zdoom zdoom.pk3 output_sdl/liboutput_sdl.so \&lt;br /&gt;
fmodapi44462linux${a}/api/lib/libfmodex${a}-4.44.62.so \&lt;br /&gt;
/usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make launch script &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;lt;&amp;lt;&#039;EOF&#039; &amp;gt; zdoom.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
exec /usr/games/zdoom/zdoom &amp;quot;$@&amp;quot;&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x zdoom.sh&lt;br /&gt;
sudo mv zdoom.sh /usr/bin/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now from a terminal you should be able to execute &#039;&#039;&#039;zdoom&#039;&#039;&#039; or &#039;&#039;&#039;zdoom-alpha&#039;&#039;&#039; from any user account.&lt;br /&gt;
&lt;br /&gt;
=== Uninstallation ===&lt;br /&gt;
To remove the previous installation steps:&lt;br /&gt;
&lt;br /&gt;
Remove /usr/games/zdoom directory and all its files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rm -rfv /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove zdoom script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rm -fv /usr/bin/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Developing ==&lt;br /&gt;
This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or submitting code changes or fixes for inclusion. This section is intended for more advanced users who may be unfamiliar to CMake or debugging on Linux systems.&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&#039;&#039;&#039;Prerequisite:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [http://www.gnu.org/software/gdb/ gdb]&lt;br /&gt;
&lt;br /&gt;
Maybe you have found a way to make ZDoom crash, and are interested in debugging it. First, you need to compile a debug build of ZDoom.  Invoke CMake to set up for compiling, but this time, the build type is set to Debug. After CMake is done, run &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; as usual:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake .. -DCMAKE_BUILD_TYPE=Debug&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run ZDoom under a debugger such as gdb, use the following command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gdb zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now gdb should have you in its own command prompt. You probably want to log the output, so lets output to a file &amp;lt;tt&amp;gt;zdoomdebug.log&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) set logging on zdoomdebug.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now start ZDoom by typing in &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt;, and pressing enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or put any [[Command line parameters]] to zdoom after &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) run &amp;lt;command line parameters&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If ZDoom crashes, gdb may be able to tell you the source file and line number it crashed in.&amp;lt;br /&amp;gt;&lt;br /&gt;
Typing in the command &amp;lt;tt&amp;gt;bt&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;backtrace&amp;lt;/tt&amp;gt; will produce information telling the last function calls, showing how execution got to the point where it crashed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
All output will be copied into the &amp;lt;tt&amp;gt;zdoomdebug.log&amp;lt;/tt&amp;gt;, which can then be scrutinized later, or perhaps posted to the {{forum|Bugs forum|view=forum|f=2}} for other developers to look at.&lt;br /&gt;
&lt;br /&gt;
To get out of gdb&#039;s command prompt, use &amp;lt;tt&amp;gt;quit&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;q&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;Ctrl-D&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Build Options ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;72%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Options&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Options!!width=&amp;quot;35%&amp;quot;|Description!!width=&amp;quot;55%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|NO_GTK=ON||Disable GTK+ dialogs.||cmake -DNO_GTK=ON ..&lt;br /&gt;
|-&lt;br /&gt;
|NO_FMOD=ON||Disable FMOD support.||cmake -DNO_FMOD=ON ..&lt;br /&gt;
|-&lt;br /&gt;
|NO_OPENAL=ON||Disable OpenAL support.||cmake -DNO_OPENAL=ON ..&lt;br /&gt;
|-&lt;br /&gt;
|FMOD_LIBRARY||Set path for FMOD library.||cmake -DFMOD_LIBRARY=/path/to/libfmodex(64)-X.Y.Z.so ..&lt;br /&gt;
|-&lt;br /&gt;
|FMOD_INCLUDE_DIR||Set path for FMOD include directory.||cmake -DFMOD_INCLUDE_DIR=/path/to/include/dir ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;72%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Types&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Types!!width=&amp;quot;45%&amp;quot;|Description!!width=&amp;quot;45%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|Debug||Debug information, -O1 optimization.||cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
|-&lt;br /&gt;
|Release||No debug information, -O3 optimization.||cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
|-&lt;br /&gt;
|RelWithDebInfo||Debug information, -O2 optimization. Useful for finding optimization bugs that only show up in Release.||cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..&lt;br /&gt;
|-&lt;br /&gt;
|MinSizeRel||Similar to Release but with less optimizations in order to save space.||cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Sound ===&lt;br /&gt;
If ZDoom starts but immediately closes with the following messages in the terminal:&lt;br /&gt;
 ...&lt;br /&gt;
 Init Playloop state.&lt;br /&gt;
 Setting up sound.&lt;br /&gt;
 S_Init&lt;br /&gt;
 Checking network game status.&lt;br /&gt;
 player 1 of 1 (1 nodes)&lt;br /&gt;
&lt;br /&gt;
This usually indicates that [[FMOD Ex]] is not loading correctly (and ZDoom is configured to use FMOD by default). There are then two solutions. &lt;br /&gt;
&lt;br /&gt;
You could start ZDoom without music:&lt;br /&gt;
 zdoom -nomusic&lt;br /&gt;
&lt;br /&gt;
or you could select (in the ZDoom settings) a [[MIDI device]] other than FMOD. To change MIDI device, go to the [[sound options]] menu.&lt;br /&gt;
* [[OPL synth emulation]] can work out of the box without further configuration.&lt;br /&gt;
* To install [[TiMidity++]]:&lt;br /&gt;
:*... on any Debian/Ubuntu-based distribution, run:&lt;br /&gt;
 sudo apt-get install timidity timidity-interfaces-extra&lt;br /&gt;
:*... on openSUSE:&lt;br /&gt;
 yast2 -i timidity &#039;&#039;&#039;or&#039;&#039;&#039; zypper in timidity&lt;br /&gt;
:*... on Gentoo, run:&lt;br /&gt;
 sudo emerge -avn timidity++&lt;br /&gt;
&lt;br /&gt;
See the [[software synthesizer]] article for further information about ZDoom&#039;s MIDI devices.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://github.com/rheit/zdoom Git Repository]&lt;br /&gt;
* [https://github.com/doomtech/zdoom Git svn mirror of the now dead ZDoom SVN repository]&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=43143</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=43143"/>
		<updated>2016-09-14T01:12:14Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Required downloads for both Visual C++ and MinGW */ Updated FMOD links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual Studio Community 2015&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8.7 or later&lt;br /&gt;
* [http://zdoom.org/files/fmod/ FMOD Ex] or [http://www.fmod.org/download/ FMOD Studio]&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Optional downloads for both Visual C++ and MinGW ==&lt;br /&gt;
Currently OpenAL is only supported when building with CMake.&lt;br /&gt;
You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check &#039;NO_OPENAL&#039; in CMake and ignore these dependencies and the instructions to set them up.&lt;br /&gt;
* [https://www.openal.org/downloads/#download OPENAL SDK]&lt;br /&gt;
** libsndfile [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w32-setup.exe 32-bit] or [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w64-setup.exe 64-bit]&lt;br /&gt;
** libmpg123 [http://www.mpg123.de/download/win32/mpg123-1.20.1-x86.zip 32-bit] or [http://www.mpg123.de/download/win64/mpg123-1.20.1-x86-64.zip 64-bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Visual C++ ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.&lt;br /&gt;
&lt;br /&gt;
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The 2.8.x stable release and maint branch can be compiled with 2005-2013.}}&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2015 ===&lt;br /&gt;
* [https://www.visualstudio.com/downloads/download-visual-studio-vs Visual Studio Community 2015]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)]&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above. For Visual Studio make sure that you install the Visual C++ and XP support components as they are not installed by default.&lt;br /&gt;
&lt;br /&gt;
=== Preparing library ===&lt;br /&gt;
&#039;&#039;&#039;Note: You only need to do this step if you want to build with OpenAL support!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libmpg123 doesn&#039;t come with a library file, so you will need to build one.&lt;br /&gt;
&lt;br /&gt;
1. Open the developer command prompt&lt;br /&gt;
* Open the start menu and browse to the &amp;quot;Visual Studio&amp;quot; folder.&lt;br /&gt;
* Open the &amp;quot;Visual Studio Tools&amp;quot; folder.&lt;br /&gt;
* Run the &amp;quot;Visual Studio command prompt&amp;quot; or &amp;quot;developer command prompt&amp;quot; depending on your Visual Studio installation.&lt;br /&gt;
&lt;br /&gt;
2. Browse to libmpg123 directory&lt;br /&gt;
* Manually type the directory where you installed mpg123 into the command prompt. For example:&lt;br /&gt;
  cd C:\Program Files (x86)\mpg123&lt;br /&gt;
&lt;br /&gt;
3. Rename export definition file&lt;br /&gt;
* Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def&lt;br /&gt;
* You can do this in the command prompt or in windows explorer. For the former:&lt;br /&gt;
  rename libmpg123-0.dll.def libmpg123-0.def&lt;br /&gt;
&lt;br /&gt;
4. Build library&lt;br /&gt;
* 32-bit&lt;br /&gt;
  lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
* 64-bit&lt;br /&gt;
  lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 14 2015&amp;quot; or &amp;quot;Visual Studio 14 2015 Win64&amp;quot; for the generator based on the FMOD version you installed.&lt;br /&gt;
* Enter &amp;quot;v140_xp&amp;quot; (without the quotes) in the optional toolset box.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
&lt;br /&gt;
3. Add the OpenAL requirements. The following is an example:&lt;br /&gt;
  OPENAL_INCLUDE_DIR  C:/Program Files (x86)/OpenAL 1.1 SDK/include&lt;br /&gt;
  OPENAL_LIBRARY      C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib&lt;br /&gt;
  SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include&lt;br /&gt;
  SNDFILE_LIBRARY     C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib&lt;br /&gt;
  MPG123_INCLUDE_DIR  C:/Program Files (x86)/mpg123&lt;br /&gt;
  MPG123_LIBRARIES    C:/Program Files (x86)/mpg123/libmpg123-0.lib&lt;br /&gt;
Be sure to use the right library from the OpenAL SDK.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
5. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
6. Close cmake&lt;br /&gt;
 &lt;br /&gt;
7. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
8. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
9. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
* copy &#039;libmpg123-0.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
* copy &#039;libsndfile-1.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
&lt;br /&gt;
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
{{warning|The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated.}}&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://tdm-gcc.tdragon.net/ TDM-GCC] (Use [http://mingw-w64.org/doku.php mingw-w64] when prompted by the installer.)&lt;br /&gt;
&lt;br /&gt;
It is possible to build using vanilla MinGW, however it requires extensive hand modification to the header files as well as the [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro]. This is route one would need to take if a build targeting pre-XP is desired.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** Select MinGW Makefiles as the project generator.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=43142</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=43142"/>
		<updated>2016-09-14T01:06:43Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Visual C++ */ The toolset can be set using the GUI with the latest CMake.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual Studio Community 2015&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8.7 or later&lt;br /&gt;
* [http://www.fmod.org/download-previous-products/ FMOD Ex] You must register to download the appropriate version (Use only the &amp;quot;Windows&amp;quot; option)&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Optional downloads for both Visual C++ and MinGW ==&lt;br /&gt;
Currently OpenAL is only supported when building with CMake.&lt;br /&gt;
You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check &#039;NO_OPENAL&#039; in CMake and ignore these dependencies and the instructions to set them up.&lt;br /&gt;
* [https://www.openal.org/downloads/#download OPENAL SDK]&lt;br /&gt;
** libsndfile [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w32-setup.exe 32-bit] or [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w64-setup.exe 64-bit]&lt;br /&gt;
** libmpg123 [http://www.mpg123.de/download/win32/mpg123-1.20.1-x86.zip 32-bit] or [http://www.mpg123.de/download/win64/mpg123-1.20.1-x86-64.zip 64-bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Visual C++ ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.&lt;br /&gt;
&lt;br /&gt;
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The 2.8.x stable release and maint branch can be compiled with 2005-2013.}}&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2015 ===&lt;br /&gt;
* [https://www.visualstudio.com/downloads/download-visual-studio-vs Visual Studio Community 2015]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)]&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above. For Visual Studio make sure that you install the Visual C++ and XP support components as they are not installed by default.&lt;br /&gt;
&lt;br /&gt;
=== Preparing library ===&lt;br /&gt;
&#039;&#039;&#039;Note: You only need to do this step if you want to build with OpenAL support!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libmpg123 doesn&#039;t come with a library file, so you will need to build one.&lt;br /&gt;
&lt;br /&gt;
1. Open the developer command prompt&lt;br /&gt;
* Open the start menu and browse to the &amp;quot;Visual Studio&amp;quot; folder.&lt;br /&gt;
* Open the &amp;quot;Visual Studio Tools&amp;quot; folder.&lt;br /&gt;
* Run the &amp;quot;Visual Studio command prompt&amp;quot; or &amp;quot;developer command prompt&amp;quot; depending on your Visual Studio installation.&lt;br /&gt;
&lt;br /&gt;
2. Browse to libmpg123 directory&lt;br /&gt;
* Manually type the directory where you installed mpg123 into the command prompt. For example:&lt;br /&gt;
  cd C:\Program Files (x86)\mpg123&lt;br /&gt;
&lt;br /&gt;
3. Rename export definition file&lt;br /&gt;
* Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def&lt;br /&gt;
* You can do this in the command prompt or in windows explorer. For the former:&lt;br /&gt;
  rename libmpg123-0.dll.def libmpg123-0.def&lt;br /&gt;
&lt;br /&gt;
4. Build library&lt;br /&gt;
* 32-bit&lt;br /&gt;
  lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
* 64-bit&lt;br /&gt;
  lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 14 2015&amp;quot; or &amp;quot;Visual Studio 14 2015 Win64&amp;quot; for the generator based on the FMOD version you installed.&lt;br /&gt;
* Enter &amp;quot;v140_xp&amp;quot; (without the quotes) in the optional toolset box.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
&lt;br /&gt;
3. Add the OpenAL requirements. The following is an example:&lt;br /&gt;
  OPENAL_INCLUDE_DIR  C:/Program Files (x86)/OpenAL 1.1 SDK/include&lt;br /&gt;
  OPENAL_LIBRARY      C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib&lt;br /&gt;
  SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include&lt;br /&gt;
  SNDFILE_LIBRARY     C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib&lt;br /&gt;
  MPG123_INCLUDE_DIR  C:/Program Files (x86)/mpg123&lt;br /&gt;
  MPG123_LIBRARIES    C:/Program Files (x86)/mpg123/libmpg123-0.lib&lt;br /&gt;
Be sure to use the right library from the OpenAL SDK.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
5. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
6. Close cmake&lt;br /&gt;
 &lt;br /&gt;
7. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
8. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
9. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
* copy &#039;libmpg123-0.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
* copy &#039;libsndfile-1.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
&lt;br /&gt;
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
{{warning|The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated.}}&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://tdm-gcc.tdragon.net/ TDM-GCC] (Use [http://mingw-w64.org/doku.php mingw-w64] when prompted by the installer.)&lt;br /&gt;
&lt;br /&gt;
It is possible to build using vanilla MinGW, however it requires extensive hand modification to the header files as well as the [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro]. This is route one would need to take if a build targeting pre-XP is desired.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** Select MinGW Makefiles as the project generator.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=43141</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=43141"/>
		<updated>2016-09-14T01:02:53Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Undo revision 43112 by Graf Zahl (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual Studio Community 2015&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8.7 or later&lt;br /&gt;
* [http://www.fmod.org/download-previous-products/ FMOD Ex] You must register to download the appropriate version (Use only the &amp;quot;Windows&amp;quot; option)&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Optional downloads for both Visual C++ and MinGW ==&lt;br /&gt;
Currently OpenAL is only supported when building with CMake.&lt;br /&gt;
You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check &#039;NO_OPENAL&#039; in CMake and ignore these dependencies and the instructions to set them up.&lt;br /&gt;
* [https://www.openal.org/downloads/#download OPENAL SDK]&lt;br /&gt;
** libsndfile [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w32-setup.exe 32-bit] or [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w64-setup.exe 64-bit]&lt;br /&gt;
** libmpg123 [http://www.mpg123.de/download/win32/mpg123-1.20.1-x86.zip 32-bit] or [http://www.mpg123.de/download/win64/mpg123-1.20.1-x86-64.zip 64-bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Visual C++ ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.&lt;br /&gt;
&lt;br /&gt;
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The 2.8.x stable release and maint branch can be compiled with 2005-2013.}}&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2015 ===&lt;br /&gt;
* [https://www.visualstudio.com/downloads/download-visual-studio-vs Visual Studio Community 2015]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)]&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above. For Visual Studio make sure that you install the Visual C++ component as it is not installed by default.&lt;br /&gt;
&lt;br /&gt;
=== Preparing library ===&lt;br /&gt;
&#039;&#039;&#039;Note: You only need to do this step if you want to build with OpenAL support!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libmpg123 doesn&#039;t come with a library file, so you will need to build one.&lt;br /&gt;
&lt;br /&gt;
1. Open the developer command prompt&lt;br /&gt;
* Open the start menu and browse to the &amp;quot;Visual Studio&amp;quot; folder.&lt;br /&gt;
* Open the &amp;quot;Visual Studio Tools&amp;quot; folder.&lt;br /&gt;
* Run the &amp;quot;Visual Studio command prompt&amp;quot; or &amp;quot;developer command prompt&amp;quot; depending on your Visual Studio installation.&lt;br /&gt;
&lt;br /&gt;
2. Browse to libmpg123 directory&lt;br /&gt;
* Manually type the directory where you installed mpg123 into the command prompt. For example:&lt;br /&gt;
  cd C:\Program Files (x86)\mpg123&lt;br /&gt;
&lt;br /&gt;
3. Rename export definition file&lt;br /&gt;
* Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def&lt;br /&gt;
* You can do this in the command prompt or in windows explorer. For the former:&lt;br /&gt;
  rename libmpg123-0.dll.def libmpg123-0.def&lt;br /&gt;
&lt;br /&gt;
4. Build library&lt;br /&gt;
* 32-bit&lt;br /&gt;
  lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
* 64-bit&lt;br /&gt;
  lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
{{note|For compiling with VS 2015 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing &amp;lt;path&amp;gt; as appropriate:&lt;br /&gt;
 cmake &amp;lt;path&amp;gt; -G &amp;quot;Visual Studio 14 2015&amp;quot; -T &amp;quot;v140_xp&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 14 2015&amp;quot; or &amp;quot;Visual Studio 14 2015 Win64&amp;quot; based on the FMOD version you installed.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
&lt;br /&gt;
3. Add the OpenAL requirements. The following is an example:&lt;br /&gt;
  OPENAL_INCLUDE_DIR  C:/Program Files (x86)/OpenAL 1.1 SDK/include&lt;br /&gt;
  OPENAL_LIBRARY      C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib&lt;br /&gt;
  SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include&lt;br /&gt;
  SNDFILE_LIBRARY     C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib&lt;br /&gt;
  MPG123_INCLUDE_DIR  C:/Program Files (x86)/mpg123&lt;br /&gt;
  MPG123_LIBRARIES    C:/Program Files (x86)/mpg123/libmpg123-0.lib&lt;br /&gt;
Be sure to use the right library from the OpenAL SDK.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
5. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
6. Close cmake&lt;br /&gt;
 &lt;br /&gt;
7. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
8. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
9. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
* copy &#039;libmpg123-0.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
* copy &#039;libsndfile-1.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
&lt;br /&gt;
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
{{warning|The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated.}}&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://tdm-gcc.tdragon.net/ TDM-GCC] (Use [http://mingw-w64.org/doku.php mingw-w64] when prompted by the installer.)&lt;br /&gt;
&lt;br /&gt;
It is possible to build using vanilla MinGW, however it requires extensive hand modification to the header files as well as the [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro]. This is route one would need to take if a build targeting pre-XP is desired.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** Select MinGW Makefiles as the project generator.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=DECORATE_format_specifications&amp;diff=42607</id>
		<title>DECORATE format specifications</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=DECORATE_format_specifications&amp;diff=42607"/>
		<updated>2016-04-10T01:42:29Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: If scripting is going to require valid identifiers, we should probably document that actor names should be identifiers.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the format to create a new [[actor]] in the [[DECORATE]] lump:&lt;br /&gt;
&lt;br /&gt;
 actor &#039;&#039;classname&#039;&#039; [ : &#039;&#039;parentclassname&#039;&#039;] [replaces &#039;&#039;replaceclassname&#039;&#039;] [&#039;&#039;doomednum&#039;&#039;]&lt;br /&gt;
 {&lt;br /&gt;
   &#039;&#039;properties&#039;&#039;&lt;br /&gt;
   &#039;&#039;flags&#039;&#039;&lt;br /&gt;
   ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;classname&#039;&#039;&lt;br /&gt;
** The name this new actor is referenced by in the game. While ZDoom will accept a much larger range of values for the name, this should for best compatibility be a valid identifier (alphanumeric plus underscores, but not starting with a digit).&lt;br /&gt;
* &#039;&#039;parentclassname&#039;&#039;&lt;br /&gt;
** The name of a parent class this new actor inherits its attributes from (optional). If none is specified, the parent class is {{Class|Actor}}.&lt;br /&gt;
* &#039;&#039;replaceclassname&#039;&#039;&lt;br /&gt;
** The name of the class this class replaces (optional). This works at a higher level than using duplicate &#039;&#039;doomednum&#039;&#039;s and will affect all attempts to spawn the replaced actor in the map. However, this does not affect effect that create the actor through other means, such as giving an [[Creating new inventory items|inventory item]] directly to a player. Player actors are handled differently from other actors, so this method also does not work for [[Creating new player classes|custom player classes]]. Skill definitions may specify other replacement for an actor, and occurs prior to Decorate replacement.&lt;br /&gt;
* &#039;&#039;doomednum&#039;&#039;&lt;br /&gt;
** [[Editor number]] for this actor (optional). This is the number used to distinguish the actor from other [[thing]]s in map. If the actor is intended to be placed in a map editor, it should have an editor number. The actual number value is generally arbitrary but should avoid conflicting with [[standard editor numbers|already used numbers]].&lt;br /&gt;
&lt;br /&gt;
An actor definition consists of [[Actor properties|properties]], [[Actor flags|flags]] and [[Actor states|state definitions]]. In the state definitions you can call [[Action functions]].&lt;br /&gt;
&lt;br /&gt;
Actor properties and flags define the general behavior of an actor.&lt;br /&gt;
&lt;br /&gt;
States define the various sprite animations of an actor.&lt;br /&gt;
&lt;br /&gt;
Action functions (also known as &amp;quot;code pointers&amp;quot;) cause the actor to perform some particular action when the frame that calls them is shown. They form the basis of almost all enemy and weapon behavior in the game. Instead of using one of the special action functions you can also use almost any [[action special]] that is available in [[ACS]].&lt;br /&gt;
&lt;br /&gt;
Comments are supported. Both types of C-style comments ({{c|//}} to end of line, and {{c|/*}} to {{c|*/}}) are allowed. While not part of the specification, certain [[editing tools]], such as [[Doom Builder]] and [[SLADE 3]], make use of specific comments for special purposes, these usually start with {{c|//$}}.&lt;br /&gt;
&lt;br /&gt;
== Including Decorate scripts into others ==&lt;br /&gt;
Using the {{c|#include &amp;quot;&amp;lt;full_path_and_lump_name&amp;gt;&amp;quot;}} directive, you can include other Decorate scripts, for example, if you wanted to organize your data into subfolders; a common practice is to place Decorate lumps into {{c|actors/}} subfolder of a {{c|[[PK3]]}}-file, leaving only the main {{c|decorate.txt}} in the root directory, that includes them. That also allows to precisely set the loading order of lumps, in case of some actors used in several places, in order to avoid loading errors. The directive may appear in any place other than actor definition.&lt;br /&gt;
&lt;br /&gt;
[[Category:DECORATE guides| ]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=42448</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=42448"/>
		<updated>2016-02-28T06:02:56Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* MinGW */ Unless its just my system being polluted with compilers, mingw-w64 pretty much just works. Source modifications are needed though so not removing the warning yet.  Removed MSYS instructions since that path is very much untested.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual Studio Community 2015&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8.7 or later&lt;br /&gt;
* [http://www.fmod.org/download/fmodex/api/Win/fmodapi44461win-installer.exe FMOD Ex]&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Optional downloads for both Visual C++ and MinGW ==&lt;br /&gt;
Currently OpenAL is only supported when building with CMake.&lt;br /&gt;
You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check &#039;NO_OPENAL&#039; in CMake and ignore these dependencies and the instructions to set them up.&lt;br /&gt;
* [https://www.openal.org/downloads/#download OPENAL SDK]&lt;br /&gt;
** libsndfile [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w32-setup.exe 32-bit] or [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w64-setup.exe 64-bit]&lt;br /&gt;
** libmpg123 [http://www.mpg123.de/download/win32/mpg123-1.20.1-x86.zip 32-bit] or [http://www.mpg123.de/download/win64/mpg123-1.20.1-x86-64.zip 64-bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Visual C++ ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.&lt;br /&gt;
&lt;br /&gt;
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The 2.8.x stable release and maint branch can be compiled with 2005-2013.}}&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2015 ===&lt;br /&gt;
* [https://www.visualstudio.com/downloads/download-visual-studio-vs Visual Studio Community 2015]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)]&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above. For Visual Studio make sure that you install the Visual C++ component as it is not installed by default.&lt;br /&gt;
&lt;br /&gt;
=== Preparing library ===&lt;br /&gt;
&#039;&#039;&#039;Note: You only need to do this step if you want to build with OpenAL support!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libmpg123 doesn&#039;t come with a library file, so you will need to build one.&lt;br /&gt;
&lt;br /&gt;
1. Open the developer command prompt&lt;br /&gt;
* Open the start menu and browse to the &amp;quot;Visual Studio&amp;quot; folder.&lt;br /&gt;
* Open the &amp;quot;Visual Studio Tools&amp;quot; folder.&lt;br /&gt;
* Run the &amp;quot;Visual Studio command prompt&amp;quot; or &amp;quot;developer command prompt&amp;quot; depending on your Visual Studio installation.&lt;br /&gt;
&lt;br /&gt;
2. Browse to libmpg123 directory&lt;br /&gt;
* Manually type the directory where you installed mpg123 into the command prompt. For example:&lt;br /&gt;
  cd C:\Program Files (x86)\mpg123&lt;br /&gt;
&lt;br /&gt;
3. Rename export definition file&lt;br /&gt;
* Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def&lt;br /&gt;
* You can do this in the command prompt or in windows explorer. For the former:&lt;br /&gt;
  rename libmpg123-0.dll.def libmpg123-0.def&lt;br /&gt;
&lt;br /&gt;
4. Build library&lt;br /&gt;
* 32-bit&lt;br /&gt;
  lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
* 64-bit&lt;br /&gt;
  lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
{{note|For compiling with VS 2015 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing &amp;lt;path&amp;gt; as appropriate:&lt;br /&gt;
 cmake &amp;lt;path&amp;gt; -G &amp;quot;Visual Studio 14 2015&amp;quot; -T &amp;quot;v140_xp&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 14 2015&amp;quot; or &amp;quot;Visual Studio 14 2015 Win64&amp;quot; based on the FMOD version you installed.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
&lt;br /&gt;
3. Add the OpenAL requirements. The following is an example:&lt;br /&gt;
  OPENAL_INCLUDE_DIR  C:/Program Files (x86)/OpenAL 1.1 SDK/include&lt;br /&gt;
  OPENAL_LIBRARY      C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib&lt;br /&gt;
  SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include&lt;br /&gt;
  SNDFILE_LIBRARY     C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib&lt;br /&gt;
  MPG123_INCLUDE_DIR  C:/Program Files (x86)/mpg123&lt;br /&gt;
  MPG123_LIBRARIES    C:/Program Files (x86)/mpg123/libmpg123-0.lib&lt;br /&gt;
Be sure to use the right library from the OpenAL SDK.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
5. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
6. Close cmake&lt;br /&gt;
 &lt;br /&gt;
7. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
8. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
9. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
* copy &#039;libmpg123-0.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
* copy &#039;libsndfile-1.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
&lt;br /&gt;
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
{{warning|The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated.}}&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://tdm-gcc.tdragon.net/ TDM-GCC] (Use [http://mingw-w64.org/doku.php mingw-w64] when prompted by the installer.)&lt;br /&gt;
&lt;br /&gt;
It is possible to build using vanilla MinGW, however it requires extensive hand modification to the header files as well as the [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro]. This is route one would need to take if a build targeting pre-XP is desired.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** Select MinGW Makefiles as the project generator.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Template:LatestFMOD/Version&amp;diff=42444</id>
		<title>Template:LatestFMOD/Version</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Template:LatestFMOD/Version&amp;diff=42444"/>
		<updated>2016-02-27T20:55:48Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Should probably update this now.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;Latest stable FMOD version number: &amp;lt;/noinclude&amp;gt;4{{{1|}}}&amp;lt;noinclude&amp;gt;.&amp;lt;/noinclude&amp;gt;44{{{1|}}}&amp;lt;noinclude&amp;gt;.&amp;lt;/noinclude&amp;gt;61&amp;lt;noinclude&amp;gt;[[Category:External link templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=42443</id>
		<title>Compile ZDoom on Linux</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=42443"/>
		<updated>2016-02-27T20:54:10Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Install dependencies */ Update some version numbers. GCC version requirement is still TBD, but less than 4.6 isn&amp;#039;t worth the trouble.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will guide you on the compilation of [[ZDoom]] on Linux.&lt;br /&gt;
Commands are shown in the tutorial that should be entered into a terminal. Commands beginning with `&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;` and `&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;` will require temporary root/admin privileges, as will most likely any package installation.&lt;br /&gt;
&lt;br /&gt;
==Install dependencies==&lt;br /&gt;
ZDoom needs certain dependencies in order to compile. These versions are known to work with recent ZDoom versions:&lt;br /&gt;
* gcc 4.6 or later&lt;br /&gt;
* make&lt;br /&gt;
* cmake 2.8.7 or later&lt;br /&gt;
* fmodex {{LatestFMOD/Version|.}}&lt;br /&gt;
* SDL 2.0.3&lt;br /&gt;
* zlib &#039;&#039;(optional - ZDoom has a copy of it and will be statically compiled in if not found)&#039;&#039;&lt;br /&gt;
* libbzip2 &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* libjpeg &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* nasm 2.03.90–2.05.01 or 0.98.39 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* GTK2 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* Mesa &#039;&#039;(if compiling [[GZDoom]])&#039;&#039;; or any other GL implementation provider. [[Compile GZDoom on Linux|Compile GZDoom on Linux]]&lt;br /&gt;
* gxmessage &#039;&#039;(needed to show the crash log in a window)&#039;&#039;&lt;br /&gt;
* git &#039;&#039;(needed in order to clone repository)&#039;&#039;&lt;br /&gt;
* fluidsynth &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* libgme or game-music-emu &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* libopenal &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* timidity &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can presumably use any &#039;&#039;higher&#039;&#039; versions of these programs, however that might not be the case. [[FMOD Ex]], notably, does not have a constant API and using a version newer than the one listed above can prevent the successful compilation or execution of ZDoom.&lt;br /&gt;
&lt;br /&gt;
=== Debian/Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \&lt;br /&gt;
nasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev \&lt;br /&gt;
libopenal-dev timidity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install gcc-c++ make zlib-devel SDL2-devel libjpeg-turbo-devel \&lt;br /&gt;
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emu-devel \&lt;br /&gt;
openal-soft-devel timidity++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
ZDoom is available in Arch User Repository at http://aur.archlinux.org/packages.php?ID=16403&lt;br /&gt;
&lt;br /&gt;
Install [https://wiki.archlinux.org/index.php/Arch_User_Repository as per usual for AUR packages].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pacman -S --needed gcc make zlib sdl2 libjpeg-turbo nasm tar bzip2 gtk2 cmake git \&lt;br /&gt;
fluidsynth libgme fmodex openal timidity++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zypper install gcc-c++ make zlib-devel libSDL2-devel libjpeg-devel \&lt;br /&gt;
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel \&lt;br /&gt;
openal-soft-devel timidity&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(FMOD available in RPM format from [http://packages.opensuse-community.org/index.jsp?searchTerm=libfmodex third-party repositories]. At your option, you can also use yast2 instead of zypper.)&lt;br /&gt;
&lt;br /&gt;
=== Mageia ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
urpmi gcc-c++ make lib&amp;quot;$a&amp;quot;zlib-devel lib&amp;quot;$a&amp;quot;sdl2.0-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel lib&amp;quot;$a&amp;quot;gtk+2.0-devel \&lt;br /&gt;
cmake git lib&amp;quot;$a&amp;quot;fluidsynth-devel lib&amp;quot;$a&amp;quot;gme-devel lib&amp;quot;$a&amp;quot;openal-devel \&lt;br /&gt;
TiMidity++ lib&amp;quot;$a&amp;quot;cairo-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl2 media-libs/libjpeg-turbo \&lt;br /&gt;
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake dev-vcs/git media-sound/fluidsynth \&lt;br /&gt;
media-libs/game-music-emu media-libs/openal media-sound/timidity++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLinuxOS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
apt-get install gcc-c++ make zlib1-devel lib&amp;quot;$a&amp;quot;sdl2.0-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg62-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel lib&amp;quot;$a&amp;quot;gtk+2.0_0-devel \&lt;br /&gt;
cmake git lib&amp;quot;$a&amp;quot;fluidsynth1-devel lib&amp;quot;$a&amp;quot;openal-devel TiMidity++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the versions of these packages are equal to or greater than one of the versions listed above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Continue to [[#Make zdoom_build directory|Make zdoom_build directory]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Get the ZDoom sources ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
Since a git clone is recommended, this guide will be referring to the root directory of the source code (not the src directory) as the &amp;quot;clone directory.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Get the [http://www.fmod.org/ FMOD] package ==&lt;br /&gt;
ZDoom uses the [[FMOD Ex]] library for audio. In many distributions, this will need to be installed manually. Check your system&#039;s package manager first to see if FMOD Ex is supported, and install it from there if it is and skip this section.&lt;br /&gt;
Otherwise, run the following commands to install FMOD Ex:&lt;br /&gt;
 wget http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux.tar.gz&lt;br /&gt;
Note that if you are on a 64-bit system, you will want the 64-bit version; use the following commands to get that instead. (You can have both the 32- and 64-bit versions installed concurrently, and this may be desirable if you wish to be able to use FMOD Ex with both 32- and 64-bit applications.)&lt;br /&gt;
 # to get the 64-bit version&lt;br /&gt;
 wget http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux64.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux64.tar.gz&lt;br /&gt;
Now that the library has been downloaded and extracted, you may choose to install it or place it in the ZDoom directory tree. &lt;br /&gt;
&lt;br /&gt;
If you will not be installing ZDoom but running directly from the location where it is compiled, installing FMOD Ex is not strictly required, and you can place it in the clone directory or build directory. (**As installing ZDoom is not officially supported, you should probably choose this option**.) This has the advantage that you can easily have multiple versions of FMOD on your system with no conflicts between each other:&lt;br /&gt;
 mv fmodapi{{LatestFMOD/Version}}linux /path/to/zdoom&lt;br /&gt;
If instead, you would like to install FMOD Ex to /usr/local, you can do so:&lt;br /&gt;
 cd fmodapi{{LatestFMOD/Version}}linux # or fmodapi{{LatestFMOD/Version}}linux64 for the 64-bit version&lt;br /&gt;
 sudo make install&lt;br /&gt;
You will be prompted for your password, and assuming you have correct administrator privileges, FMOD Ex will be installed.&lt;br /&gt;
&lt;br /&gt;
== Compile ==&lt;br /&gt;
&lt;br /&gt;
ZDoom uses [http://www.cmake.org/ CMake] to handle makefile generation on Linux, so simply running &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; will not build ZDoom until you have used CMake first.&lt;br /&gt;
&lt;br /&gt;
First make sure that the zdoom directory looks something like this :-&lt;br /&gt;
&lt;br /&gt;
   /games/zdoom/$ ls&lt;br /&gt;
   bzip2 dumb fmodapi42636linux64.tar.gz jpeg-6b specs tools  &lt;br /&gt;
   zdoom.vcproj CMakeLists.txt FindFluidSynth.cmake &lt;br /&gt;
   game-music-emu lzma src wadsrc zlib docs&lt;br /&gt;
   fmodapi42636linux64 gdtoa output_sdl  strifehelp.acs  zdoom.sln&lt;br /&gt;
&lt;br /&gt;
Then make sure that the git master is upto date. This can be seen by doing :-&lt;br /&gt;
&lt;br /&gt;
   ~/games/zdoom$ git pull origin master&lt;br /&gt;
   From https://github.com/rheit/zdoom.git/&lt;br /&gt;
   * branch            master      -&amp;gt; FETCH_HEAD&lt;br /&gt;
   Already up-to-date.&lt;br /&gt;
&lt;br /&gt;
This means that we are with the latest development version. &lt;br /&gt;
&lt;br /&gt;
Next, we need to make a directory for CMake to work from, and compile to.&lt;br /&gt;
 mkdir release&lt;br /&gt;
 cd release&lt;br /&gt;
Invoke CMake to parse the ZDoom source and get ready for compiling:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
It may be necessary to tell it where the FMOD files and includes are located, for example use this command if you installed version {{LatestFMOD/Version|.}} of FMOD:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=/usr/local/lib/libfmodex-{{LatestFMOD/Version|.}}.so -DFMOD_INCLUDE_DIR=/usr/local/include/fmodex/ ..&lt;br /&gt;
In case 64-bit FMOD is used, it of course needs to point to that instead.&lt;br /&gt;
 -DFMOD_LIBRARY=/usr/local/lib64/libfmodex64-{{LatestFMOD/Version|.}}.so&lt;br /&gt;
Compile the code from inside the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Compile with FMOD in the clone directory (AMD64) ==&lt;br /&gt;
&lt;br /&gt;
This is the recommended method, especially for 64 bit systems, I&#039;ve noticed that the installation does not usually put the file in lib64, and it was quite a hunt to find it. &lt;br /&gt;
&lt;br /&gt;
This portion is for x64 machines, but it should work with i386 systems as well, if you remove the 64 in fmodapi42416linux64/ and libfmodex64-{{LatestFMOD/Version|.}}.so it should work.&lt;br /&gt;
&lt;br /&gt;
Follow the above steps, but the CMake commands will be different.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the -DFMOD_LIBRARY parameter needs to point to a specific .so file (e.g., fmodapi42416linux64/api/lib/libfmodex-{{LatestFMOD/Version|.}}.so) and -DFMOD_INCLUDE_DIR needs to point to a DIRECTORY (e.g., fmodapi42416linux64/api/inc). If you&#039;re in doubt about the locations of a file, you can open these directories up to be sure that your library is there. Your inc/ directory should include .h and .hpp files. &lt;br /&gt;
&lt;br /&gt;
That is basically what these three parameters for CMake do, they tell CMake where the libraries and include files are, both libraries and includes are needed to compile ZDoom.&lt;br /&gt;
&lt;br /&gt;
Your command would look like this, replace &amp;lt;path to clone&amp;gt; with the directory which the clone was created in, e.g., /home/yourname/zdoom/ and replace fmodapi&amp;lt;VERSION&amp;gt;linux64 with the version you&#039;re using. Right now I&#039;m using the AMD64 version of FMOD 4.24.16, so my folder is fmodapi42416linux64.&lt;br /&gt;
&lt;br /&gt;
(this command should be a single line, shown on two lines so it&#039;s easier to read)&lt;br /&gt;
&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/lib/libfmodex64-{{LatestFMOD/Version|.}}.so &lt;br /&gt;
 -DFMOD_INCLUDE_DIR=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/inc ..&lt;br /&gt;
&lt;br /&gt;
== Start playing ZDoom ==&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well, an executable &amp;lt;tt&amp;gt;zdoom&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;zdoom.pk3&amp;lt;/tt&amp;gt; file will be generated in the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory. To start ZDoom, the following command should work:&lt;br /&gt;
 ./zdoom&lt;br /&gt;
If ZDoom complains you do not have any IWADs set up, make sure that you have your [[IWAD]] files placed in the same directory as ZDoom, in &amp;lt;tt&amp;gt;$HOME/.config/zdoom&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$DOOMWADDIR&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;/usr/local/share&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Sound ===&lt;br /&gt;
If ZDoom starts but immediately closes with the following messages in the terminal:&lt;br /&gt;
 ...&lt;br /&gt;
 Init Playloop state.&lt;br /&gt;
 Setting up sound.&lt;br /&gt;
 S_Init&lt;br /&gt;
 Checking network game status.&lt;br /&gt;
 player 1 of 1 (1 nodes)&lt;br /&gt;
&lt;br /&gt;
This usually indicates that [[FMOD Ex]] is not loading correctly (and ZDoom is configured to use FMOD by default). There are then two solutions. &lt;br /&gt;
&lt;br /&gt;
You could start ZDoom without music:&lt;br /&gt;
 zdoom -nomusic&lt;br /&gt;
&lt;br /&gt;
or you could select (in the ZDoom settings) a [[MIDI device]] other than FMOD. To change MIDI device, go to the [[sound options]] menu.&lt;br /&gt;
* [[OPL synth emulation]] can work out of the box without further configuration.&lt;br /&gt;
* To install [[TiMidity++]]:&lt;br /&gt;
:*... on any Debian/Ubuntu-based distribution, run:&lt;br /&gt;
 sudo apt-get install timidity timidity-interfaces-extra&lt;br /&gt;
:*... on openSUSE:&lt;br /&gt;
 yast2 -i timidity &#039;&#039;&#039;or&#039;&#039;&#039; zypper in timidity&lt;br /&gt;
:*... on Gentoo, run:&lt;br /&gt;
 sudo emerge -avn timidity++&lt;br /&gt;
&lt;br /&gt;
See the [[software synthesizer]] article for further information about ZDoom&#039;s MIDI devices.&lt;br /&gt;
&lt;br /&gt;
== Developing ==&lt;br /&gt;
&lt;br /&gt;
This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or submitting code changes or fixes for inclusion. This section is intended for more advanced users who may be unfamiliar to CMake or debugging on Linux systems.&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
Maybe you have found a way to make ZDoom crash, and are interested in debugging it. First, you need to compile a debug build of ZDoom.&lt;br /&gt;
Inside the &amp;lt;tt&amp;gt;clone&amp;lt;/tt&amp;gt; directory, create a new directory &amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 mkdir debug&lt;br /&gt;
 cd debug&lt;br /&gt;
Invoke CMake to set up for compiling, but this time, the build type is set to Debug.&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
After CMake is done, run &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; as usual.&lt;br /&gt;
&lt;br /&gt;
To run ZDoom under a debugger such as [http://www.gnu.org/software/gdb/ gdb], use the following command:&lt;br /&gt;
 gdb zdoom&lt;br /&gt;
Now gdb should have you in its own prompt. You probably want to log the output, so lets output to a file &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;: &lt;br /&gt;
 set logging on log.txt&lt;br /&gt;
Now start ZDoom by typing in &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt;, and pressing enter. (Put any arguments to zdoom after &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt; .)&lt;br /&gt;
If ZDoom crashes, gdb may be able to tell you the source file and line number it crashed in. Typing in the command &amp;lt;tt&amp;gt;backtrace&amp;lt;/tt&amp;gt; will produce information telling the last function calls, showing how execution got to the point where it crashed. All output will be copied into the &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;, which can then be scrutinized later, or perhaps posted to the {{forum|Bugs forum|view=forum|f=2}} for other developers to look at.&lt;br /&gt;
&lt;br /&gt;
To get out of gdb&#039;s prompt, type &amp;lt;tt&amp;gt;quit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Build Options ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;72%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Options&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Options!!width=&amp;quot;35%&amp;quot;|Description!!width=&amp;quot;55%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|NO_GTK=ON||Disable GTK+ dialogs.||cmake -DNO_GTK=ON ..&lt;br /&gt;
|-&lt;br /&gt;
|NO_FMOD=ON||Disable FMOD support.||cmake -DNO_FMOD=ON ..&lt;br /&gt;
|-&lt;br /&gt;
|NO_OPENAL=ON||Disable OpenAL support.||cmake -DNO_OPENAL=ON ..&lt;br /&gt;
|-&lt;br /&gt;
|FMOD_LIBRARY||Set path for FMOD library.||cmake -DFMOD_LIBRARY=/path/to/libfmodex(64)-X.Y.Z.so ..&lt;br /&gt;
|-&lt;br /&gt;
|FMOD_INCLUDE_DIR||Set path for FMOD include directory.||cmake -DFMOD_INCLUDE_DIR=/path/to/include/dir ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;72%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Types&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Types!!width=&amp;quot;45%&amp;quot;|Description!!width=&amp;quot;45%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|Debug||Debug information, -O1 optimization.||cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
|-&lt;br /&gt;
|Release||No debug information, -O3 optimization.||cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
|-&lt;br /&gt;
|RelWithDebInfo||Debug information, -O3 optimization. Useful for finding optimization bugs that only show up in Release.||cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..&lt;br /&gt;
|-&lt;br /&gt;
|MinSizeRel||Similar to Release but with less optimizations in order to save space.||cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Make zdoom_build directory ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open a terminal and copy and paste the whole code box for each step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -pv $HOME/zdoom_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Source ==&lt;br /&gt;
&lt;br /&gt;
Download the ZDoom source and make build directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
git clone git://github.com/rheit/zdoom.git &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv zdoom/build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd zdoom&lt;br /&gt;
git config --local --add remote.origin.fetch +refs/tags/*:refs/tags/*&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download FMOD ==&lt;br /&gt;
&lt;br /&gt;
Download FMOD 4.26.36 32-bit or 64-bit and extract files to zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
wget -nc http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/$FMODFOLDER.tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
tar -xvzf $FMODFOLDER.tar.gz -C zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FMOD Links ===&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 32-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux.tar.gz&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 64-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux64.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom/build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
make clean ; \&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/lib/$FMODFILE.so \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/inc .. &amp;amp;&amp;amp; \&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Current release version ===&lt;br /&gt;
Show the current release version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git describe --tags $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to compile the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and [[#Compiling|compile]].&lt;br /&gt;
&lt;br /&gt;
After compiling and backing up the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
&lt;br /&gt;
Follow this step if you want or manually copy (backup) zdoom, zdoom.pk3 and liboutput_sdl.so.&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the corresponding ZDoom version/revision and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZDOOM=&amp;quot;$(sed -n &#039;s/.*#define GIT_DESCRIPTION &amp;quot;\(.*\)&amp;quot;.*/\1/p&#039; \&lt;br /&gt;
zdoom/src/gitinfo.h)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZDOOM&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZDOOM&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup (Optional) ===&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the current year, month, day, hour and minute and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZD=&amp;quot;$(date +%Y%m%d%H%M)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZD&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZD&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Backup&amp;quot; or &amp;quot;Backup (Optional)&amp;quot;, the previous files should be located at:&lt;br /&gt;
: &#039;&#039;&#039;/home/&amp;lt;your username&amp;gt;/zdoom_build/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
When you wish to update ZDoom, copy and paste the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the update finish, go to [[#Compiling|Compiling]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following steps contain commands that require to be run as superuser with the sudo command.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to install ZDoom, do the following:&lt;br /&gt;
&lt;br /&gt;
Make /usr/games/zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mkdir -pv /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy zdoom, zdoom.pk3, liboutput_sdl.so and libfmodex64-4.26.36.so or libfmodex-4.26.36.so to /usr/games/zdoom:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v /home/$USER/zdoom_build/zdoom/{build/{zdoom,\&lt;br /&gt;
zdoom.pk3,output_sdl/liboutput_sdl.so},\&lt;br /&gt;
$FMODFOLDER/api/lib/$FMODFILE.so} /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make zdoom script, add executable permission and copy it to /usr/bin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;#!/bin/sh&#039; &amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;export LD_LIBRARY_PATH=/usr/games/zdoom&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;exec /usr/games/zdoom/zdoom &amp;quot;$@&amp;quot;&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
chmod 755 zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v zdoom /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now from a terminal you should be able to execute &#039;&#039;&#039;zdoom&#039;&#039;&#039; from any user account.&lt;br /&gt;
&lt;br /&gt;
=== Uninstallation ===&lt;br /&gt;
&lt;br /&gt;
To remove the previous installation steps:&lt;br /&gt;
&lt;br /&gt;
Remove /usr/games/zdoom directory and all its files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/games &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -rfv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove zdoom script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://github.com/rheit/zdoom Git Repository]&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=42442</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=42442"/>
		<updated>2016-02-27T20:45:26Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Required Downloads for Visual C++ 2015 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual Studio Community 2015&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8.7 or later&lt;br /&gt;
* [http://www.fmod.org/download/fmodex/api/Win/fmodapi44461win-installer.exe FMOD Ex]&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Optional downloads for both Visual C++ and MinGW ==&lt;br /&gt;
Currently OpenAL is only supported when building with CMake.&lt;br /&gt;
You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check &#039;NO_OPENAL&#039; in CMake and ignore these dependencies and the instructions to set them up.&lt;br /&gt;
* [https://www.openal.org/downloads/#download OPENAL SDK]&lt;br /&gt;
** libsndfile [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w32-setup.exe 32-bit] or [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w64-setup.exe 64-bit]&lt;br /&gt;
** libmpg123 [http://www.mpg123.de/download/win32/mpg123-1.20.1-x86.zip 32-bit] or [http://www.mpg123.de/download/win64/mpg123-1.20.1-x86-64.zip 64-bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Visual C++ ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.&lt;br /&gt;
&lt;br /&gt;
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The 2.8.x stable release and maint branch can be compiled with 2005-2013.}}&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2015 ===&lt;br /&gt;
* [https://www.visualstudio.com/downloads/download-visual-studio-vs Visual Studio Community 2015]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)]&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above. For Visual Studio make sure that you install the Visual C++ component as it is not installed by default.&lt;br /&gt;
&lt;br /&gt;
=== Preparing library ===&lt;br /&gt;
&#039;&#039;&#039;Note: You only need to do this step if you want to build with OpenAL support!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libmpg123 doesn&#039;t come with a library file, so you will need to build one.&lt;br /&gt;
&lt;br /&gt;
1. Open the developer command prompt&lt;br /&gt;
* Open the start menu and browse to the &amp;quot;Visual Studio&amp;quot; folder.&lt;br /&gt;
* Open the &amp;quot;Visual Studio Tools&amp;quot; folder.&lt;br /&gt;
* Run the &amp;quot;Visual Studio command prompt&amp;quot; or &amp;quot;developer command prompt&amp;quot; depending on your Visual Studio installation.&lt;br /&gt;
&lt;br /&gt;
2. Browse to libmpg123 directory&lt;br /&gt;
* Manually type the directory where you installed mpg123 into the command prompt. For example:&lt;br /&gt;
  cd C:\Program Files (x86)\mpg123&lt;br /&gt;
&lt;br /&gt;
3. Rename export definition file&lt;br /&gt;
* Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def&lt;br /&gt;
* You can do this in the command prompt or in windows explorer. For the former:&lt;br /&gt;
  rename libmpg123-0.dll.def libmpg123-0.def&lt;br /&gt;
&lt;br /&gt;
4. Build library&lt;br /&gt;
* 32-bit&lt;br /&gt;
  lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
* 64-bit&lt;br /&gt;
  lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
{{note|For compiling with VS 2015 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing &amp;lt;path&amp;gt; as appropriate:&lt;br /&gt;
 cmake &amp;lt;path&amp;gt; -G &amp;quot;Visual Studio 14 2015&amp;quot; -T &amp;quot;v140_xp&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 14 2015&amp;quot; or &amp;quot;Visual Studio 14 2015 Win64&amp;quot; based on the FMOD version you installed.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
&lt;br /&gt;
3. Add the OpenAL requirements. The following is an example:&lt;br /&gt;
  OPENAL_INCLUDE_DIR  C:/Program Files (x86)/OpenAL 1.1 SDK/include&lt;br /&gt;
  OPENAL_LIBRARY      C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib&lt;br /&gt;
  SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include&lt;br /&gt;
  SNDFILE_LIBRARY     C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib&lt;br /&gt;
  MPG123_INCLUDE_DIR  C:/Program Files (x86)/mpg123&lt;br /&gt;
  MPG123_LIBRARIES    C:/Program Files (x86)/mpg123/libmpg123-0.lib&lt;br /&gt;
Be sure to use the right library from the OpenAL SDK.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
5. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
6. Close cmake&lt;br /&gt;
 &lt;br /&gt;
7. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
8. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
9. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
* copy &#039;libmpg123-0.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
* copy &#039;libsndfile-1.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
&lt;br /&gt;
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
{{warning|The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated.}}&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780 The MinGW installer]&lt;br /&gt;
* [http://www.tdragon.net/recentgcc/ TDM&#039;s updated build of MinGW with GCC]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=24963 The MSYS installer] (optional for Windows 2000 or better)&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=11550 The GCC win32api files]&lt;br /&gt;
* [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro]&lt;br /&gt;
&lt;br /&gt;
=== Installing everything ===&lt;br /&gt;
&lt;br /&gt;
* Run the MinGW installer. When it asks which MinGW package you wish to install, you can choose either &amp;quot;Current&amp;quot; or &amp;quot;Candidate&amp;quot;. &amp;quot;Candidate&amp;quot; is recommended because it is newer. When you need to choose the components, you must install at least the &amp;quot;MinGW base tools&amp;quot; and &amp;quot;g++ compiler.&amp;quot; If you are not using MSYS, then you must also install &amp;quot;MinGW Make.&amp;quot; Then unpack the 4.3.0 alpha binaries on top of your MinGW directory.&lt;br /&gt;
* If you downloaded the MSYS installer, run it now.&lt;br /&gt;
* Unpack the win32api files on top of your MinGW directory. If you didn&#039;t change it when you installed, this will be c:\mingw. The win32api headers are missing some definitions that ZDoom needs. Open mingw\include\commctrl.h and search for PBS_VERTICAL. Add these lines just underneath its definition:&lt;br /&gt;
 #if (_WIN32_WINNT &amp;gt;= 0x0501)&lt;br /&gt;
 #define PBS_MARQUEE     0x08&lt;br /&gt;
 #define PBM_SETMARQUEE  (WM_USER+10)&lt;br /&gt;
 #endif&lt;br /&gt;
* Unzip the DirectX 8 headers on top of your MinGW directory as well.&lt;br /&gt;
* You can unzip NASM anywhere you want. To keep everything in one place, a good place to put nasmw.exe and ndisasmw.exe is inside your MinGW directory at c:\mingw\bin.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** You will be asked which generator to use. If you are using Windows 9x, then you &#039;&#039;must&#039;&#039; select MSYS Makefiles. If are are using Windows 2000 or later, then you may select either MSYS Makefiles or MinGW Makefiles. Make sure Use default native compilers is selected and click Finish.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** DYN_FLUIDSYNTH: If you want support for fluidsynth.dll, check this.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling with MSYS ===&lt;br /&gt;
&lt;br /&gt;
If you selected MSYS Makefiles as the generator above, then you must compile using MSYS.&lt;br /&gt;
&lt;br /&gt;
* Run MSYS. The installer should have created a start menu shortcut for you.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:/zdoom/trunk/release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory. &amp;lt;pre&amp;gt;make&amp;lt;/pre&amp;gt;&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling without MSYS ===&lt;br /&gt;
&lt;br /&gt;
If you selected MinGW Makefiles as the generator above, the process for compiling is as essentially the same as for MSYS Makefiles, except that you use a regular command prompt window instead of MSYS.&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=FMOD_Ex&amp;diff=42441</id>
		<title>FMOD Ex</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=FMOD_Ex&amp;diff=42441"/>
		<updated>2016-02-27T20:40:11Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Version information here contained outdated information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{wikipedia}}&lt;br /&gt;
&#039;&#039;&#039;FMOD&#039;&#039;&#039; is a commercial audio library made by Firelight Technologies that plays music files of diverse formats on many different platforms. It is used in games and software applications to provide audio functionality. FMOD supports a range of audio formats and numerous different operating system platforms. &lt;br /&gt;
&lt;br /&gt;
FMOD comes in two versions, FMOD and FMOD Ex. FMOD Ex is the designation given to the 4.x series of the library, whilst FMOD alone refers to version 3.75 of the library, which lacks much of format/platform support added in FMOD Ex. [[ZDoom]] used FMOD since the 1.23-beta development versions (which would actually become 2.0.0), and updated to FMOD Ex with v2.3.0.&lt;br /&gt;
&lt;br /&gt;
FMOD is available under multiple license schemes. It is available free of charge for non-commercial applications. FMOD may be used commercially under a number of different license types, such as &amp;quot;Commercial License&amp;quot; for standard commercial development, &amp;quot;Shareware/Hobbyist License&amp;quot; for single hobbyist programmers, and &amp;quot;eDistributed Console Games&amp;quot;. for budget console game. Each license contains different restrictions, conditions and costs.&lt;br /&gt;
&lt;br /&gt;
Successful compilation and execution of ZDoom is possible with all versions from 4.22 to 4.28 and 4.34 or later.  The 4.26 series was recommended for a long time due to issues the newer reverb engine and changes to 3D positional sound handling.  These issues were fixed for ZDoom 2.8.  The following versions of FMOD Ex are notable:&lt;br /&gt;
* 4.24.16 - Last version to support the G3 processor. This is used for PowerPC builds of ZDoom.&lt;br /&gt;
* 4.28.07 - Last version built for Solaris.&lt;br /&gt;
* 4.36.23 - Due to a change in compiler, this is the final version to support Windows 98, Me, NT4, or 2000. This is used for the 2.8 Windows builds.&lt;br /&gt;
* 4.44.58 - Last version to support G4/G5 PowerPC Macintoshes.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.fmod.org/ FMOD homepage]&lt;br /&gt;
[[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=42427</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=42427"/>
		<updated>2016-02-27T04:12:37Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: ZDoom is now using C++11/14 so VS2015 is now required for the latest development branch which this guide should more or less assume people want to compile.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual Studio Community 2015&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
{| align=right border=0 cellpadding=4 cellspacing=4 style=&amp;quot;border: solid 1px #a3bfb1; background-color: #cef2e0; padding: 0.4em 1em; width: 50%; margin: 1em auto; text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Graficon.gif|link=]]&lt;br /&gt;
| &#039;&#039;&#039;Note:&#039;&#039;&#039; To solve compilation problems of gl_clock.cpp with {{c|_interlockedbittestandset}} and {{c|_interlockedbittestandreset}}, see {{DRDForum|p=43104|this thread}}. To compile GZDoom you must use CMake with a compatible compiler, it is recommended to use Visual C++ 2015. The prebuilt VC++ 2005 solution is no longer provided for compiling GZDoom!&lt;br /&gt;
|}&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8.7 or later&lt;br /&gt;
* [http://www.fmod.org/download/fmodex/api/Win/fmodapi44461win-installer.exe FMOD Ex]&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Optional downloads for both Visual C++ and MinGW ==&lt;br /&gt;
Currently OpenAL is only supported when building with CMake.&lt;br /&gt;
You only need these if you want to build ZDoom with OpenAL support. If you just want to use FMod Ex, downloading these is not necessary. In this case you can just check &#039;NO_OPENAL&#039; in CMake and ignore these dependencies and the instructions to set them up.&lt;br /&gt;
* [https://www.openal.org/downloads/#download OPENAL SDK]&lt;br /&gt;
** libsndfile [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w32-setup.exe 32-bit] or [http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.25-w64-setup.exe 64-bit]&lt;br /&gt;
** libmpg123 [http://www.mpg123.de/download/win32/mpg123-1.20.1-x86.zip 32-bit] or [http://www.mpg123.de/download/win64/mpg123-1.20.1-x86-64.zip 64-bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Visual C++ ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake to generate Visual Studio projects.&lt;br /&gt;
&lt;br /&gt;
{{note|Visual Studio 2015 is only required for the development versions of ZDoom. The latest stable release and maint branch can be compiled with 2005-2013.}}&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2015 ===&lt;br /&gt;
* [https://www.visualstudio.com/downloads/download-visual-studio-vs Visual Studio Community 2015]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX Software Development Kit (February 2010)]&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above.&lt;br /&gt;
&lt;br /&gt;
=== Preparing library ===&lt;br /&gt;
&#039;&#039;&#039;Note: You only need to do this step if you want to build with OpenAL support!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libmpg123 doesn&#039;t come with a library file, so you will need to build one.&lt;br /&gt;
&lt;br /&gt;
1. Open the developer command prompt&lt;br /&gt;
* Open the start menu and browse to the &amp;quot;Visual Studio&amp;quot; folder.&lt;br /&gt;
* Open the &amp;quot;Visual Studio Tools&amp;quot; folder.&lt;br /&gt;
* Run the &amp;quot;Visual Studio command prompt&amp;quot; or &amp;quot;developer command prompt&amp;quot; depending on your Visual Studio installation.&lt;br /&gt;
&lt;br /&gt;
2. Browse to libmpg123 directory&lt;br /&gt;
* Manually type the directory where you installed mpg123 into the command prompt. For example:&lt;br /&gt;
  cd C:\Program Files (x86)\mpg123&lt;br /&gt;
&lt;br /&gt;
3. Rename export definition file&lt;br /&gt;
* Due to an error in one of the file names included with mpg123, ZDoom will fail to load on startup. To fix this, rename libmpg123-0.dll.def to libmpg123-0.def&lt;br /&gt;
* You can do this in the command prompt or in windows explorer. For the former:&lt;br /&gt;
  rename libmpg123-0.dll.def libmpg123-0.def&lt;br /&gt;
&lt;br /&gt;
4. Build library&lt;br /&gt;
* 32-bit&lt;br /&gt;
  lib /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
* 64-bit&lt;br /&gt;
  lib /MACHINE:X64 /DEF:libmpg123-0.def /OUT:libmpg123-0.lib&lt;br /&gt;
If done correctly, libmpg123-0.lib and libmpg123-0.exp should have been created in the directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
{{note|For compiling with VS 2015 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing &amp;lt;path&amp;gt; as appropriate:&lt;br /&gt;
 cmake &amp;lt;path&amp;gt; -G &amp;quot;Visual Studio 14 2015&amp;quot; -T &amp;quot;v140_xp&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 14 2015&amp;quot; or &amp;quot;Visual Studio 14 2015 Win64&amp;quot; based on the FMOD version you installed.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
&lt;br /&gt;
3. Add the OpenAL requirements. The following is an example:&lt;br /&gt;
  OPENAL_INCLUDE_DIR  C:/Program Files (x86)/OpenAL 1.1 SDK/include&lt;br /&gt;
  OPENAL_LIBRARY      C:/Program Files (x86)/OpenAL 1.1 SDK/libs/Win64/OpenAL32.lib&lt;br /&gt;
  SNDFILE_INCLUDE_DIR C:/Program Files/Mega-Nerd/libsndfile/include&lt;br /&gt;
  SNDFILE_LIBRARY     C:/Program Files/Mega-Nerd/libsndfile/lib/libsndfile-1.lib&lt;br /&gt;
  MPG123_INCLUDE_DIR  C:/Program Files (x86)/mpg123&lt;br /&gt;
  MPG123_LIBRARIES    C:/Program Files (x86)/mpg123/libmpg123-0.lib&lt;br /&gt;
Be sure to use the right library from the OpenAL SDK.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
5. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
6. Close cmake&lt;br /&gt;
 &lt;br /&gt;
7. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
8. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
9. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
* copy &#039;libmpg123-0.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
* copy &#039;libsndfile-1.dll&#039; to zdoom/Debug folder.&lt;br /&gt;
&lt;br /&gt;
10. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
{{warning|The following information is severely outdated and will probably no longer work! Help in updating this section would be appreciated.}}&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780 The MinGW installer]&lt;br /&gt;
* [http://www.tdragon.net/recentgcc/ TDM&#039;s updated build of MinGW with GCC]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=24963 The MSYS installer] (optional for Windows 2000 or better)&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=11550 The GCC win32api files]&lt;br /&gt;
* [https://web.archive.org/web/20150616002909/http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [https://web.archive.org/web/20150812045125/http://alleg.sourceforge.net/wip.html Allegro]&lt;br /&gt;
&lt;br /&gt;
=== Installing everything ===&lt;br /&gt;
&lt;br /&gt;
* Run the MinGW installer. When it asks which MinGW package you wish to install, you can choose either &amp;quot;Current&amp;quot; or &amp;quot;Candidate&amp;quot;. &amp;quot;Candidate&amp;quot; is recommended because it is newer. When you need to choose the components, you must install at least the &amp;quot;MinGW base tools&amp;quot; and &amp;quot;g++ compiler.&amp;quot; If you are not using MSYS, then you must also install &amp;quot;MinGW Make.&amp;quot; Then unpack the 4.3.0 alpha binaries on top of your MinGW directory.&lt;br /&gt;
* If you downloaded the MSYS installer, run it now.&lt;br /&gt;
* Unpack the win32api files on top of your MinGW directory. If you didn&#039;t change it when you installed, this will be c:\mingw. The win32api headers are missing some definitions that ZDoom needs. Open mingw\include\commctrl.h and search for PBS_VERTICAL. Add these lines just underneath its definition:&lt;br /&gt;
 #if (_WIN32_WINNT &amp;gt;= 0x0501)&lt;br /&gt;
 #define PBS_MARQUEE     0x08&lt;br /&gt;
 #define PBM_SETMARQUEE  (WM_USER+10)&lt;br /&gt;
 #endif&lt;br /&gt;
* Unzip the DirectX 8 headers on top of your MinGW directory as well.&lt;br /&gt;
* You can unzip NASM anywhere you want. To keep everything in one place, a good place to put nasmw.exe and ndisasmw.exe is inside your MinGW directory at c:\mingw\bin.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** You will be asked which generator to use. If you are using Windows 9x, then you &#039;&#039;must&#039;&#039; select MSYS Makefiles. If are are using Windows 2000 or later, then you may select either MSYS Makefiles or MinGW Makefiles. Make sure Use default native compilers is selected and click Finish.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** DYN_FLUIDSYNTH: If you want support for fluidsynth.dll, check this.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling with MSYS ===&lt;br /&gt;
&lt;br /&gt;
If you selected MSYS Makefiles as the generator above, then you must compile using MSYS.&lt;br /&gt;
&lt;br /&gt;
* Run MSYS. The installer should have created a start menu shortcut for you.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:/zdoom/trunk/release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory. &amp;lt;pre&amp;gt;make&amp;lt;/pre&amp;gt;&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling without MSYS ===&lt;br /&gt;
&lt;br /&gt;
If you selected MinGW Makefiles as the generator above, the process for compiling is as essentially the same as for MSYS Makefiles, except that you use a regular command prompt window instead of MSYS.&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Doomseeker&amp;diff=40600</id>
		<title>Doomseeker</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Doomseeker&amp;diff=40600"/>
		<updated>2015-12-28T03:04:40Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Updated some links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Doomwiki}}&#039;&#039;&#039;Doomseeker&#039;&#039;&#039; is server browser for client/server [[source port]]s, available for Windows, Linux and MacOS X. It supports [[Skulltag]]/[[Zandronum]], [[Odamex]], [[ZDaemon]], [[Vavoom]] and {{dw|Chocolate Doom}} through individual plugins.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://doomseeker.drdteam.org/ Official homepage]&lt;br /&gt;
* [https://bitbucket.org/Doomseeker/doomseeker Mercurial repository]&lt;br /&gt;
* [http://devbuilds.drdteam.org/doomseeker/ HG builds] hosted by DRD Team&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Getaspectratio&amp;diff=40549</id>
		<title>Getaspectratio</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Getaspectratio&amp;diff=40549"/>
		<updated>2015-12-07T07:11:48Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Optimize away all the FixedMul and FixedDiv. Not sure where the double abs came from (CheckRatio doesn&amp;#039;t do it), but can&amp;#039;t be bothered to test enough to remove them.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:getaspectratio}}&lt;br /&gt;
Returns the aspect ratio of the user&#039;s resolution by using nearly the same method ZDoom uses internally.  Requires the [[abs]] function.&lt;br /&gt;
&lt;br /&gt;
 #define ASPECT_4_3 (4.0 / 3)&lt;br /&gt;
 #define ASPECT_5_4 1.25&lt;br /&gt;
 #define ASPECT_16_9 (16.0 / 9)&lt;br /&gt;
 #define ASPECT_16_10 1.6&lt;br /&gt;
 #define ASPECT_17_10 1.7&lt;br /&gt;
 &lt;br /&gt;
 function int getaspectratio(void)&lt;br /&gt;
 {&lt;br /&gt;
 	int width = [[GetCVar]](&amp;quot;vid_defwidth&amp;quot;);&lt;br /&gt;
 	int height = [[GetCVar]](&amp;quot;vid_defheight&amp;quot;);&lt;br /&gt;
 	int nowidescreen = [[GetCVar]](&amp;quot;vid_nowidescreen&amp;quot;);&lt;br /&gt;
 	int tft = [[GetCVar]](&amp;quot;vid_tft&amp;quot;);&lt;br /&gt;
 	int aspect = [[GetCVar]](&amp;quot;vid_aspect&amp;quot;);&lt;br /&gt;
 	switch(aspect)&lt;br /&gt;
 	{&lt;br /&gt;
 		case 1:	return ASPECT_16_9;&lt;br /&gt;
 		case 2:	return ASPECT_16_10;&lt;br /&gt;
 		case 3:	return ASPECT_4_3;&lt;br /&gt;
 		case 4:	return ASPECT_5_4;&lt;br /&gt;
 		case 5: return ASPECT_17_10;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(nowidescreen)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(!tft)&lt;br /&gt;
 			return ASPECT_4_3;&lt;br /&gt;
 		if(height * ASPECT_5_4 == width&amp;lt;&amp;lt;16)&lt;br /&gt;
 			return ASPECT_5_4;&lt;br /&gt;
 		else&lt;br /&gt;
 			return ASPECT_4_3;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(abs((abs(height * ASPECT_16_9)&amp;gt;&amp;gt;16) - width) &amp;lt; 10)&lt;br /&gt;
 	{&lt;br /&gt;
 		return ASPECT_16_9;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(abs((abs(height * ASPECT_17_10)&amp;gt;&amp;gt;16) - width) &amp;lt; 10)&lt;br /&gt;
 	{&lt;br /&gt;
 		return ASPECT_17_10;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(abs((abs(height * ASPECT_16_10)&amp;gt;&amp;gt;16) - width) &amp;lt; 60)&lt;br /&gt;
 	{&lt;br /&gt;
 		if((width == 320 &amp;amp;&amp;amp; height == 200) || (width == 640 &amp;amp;&amp;amp; height == 400))&lt;br /&gt;
 			return ASPECT_4_3;&lt;br /&gt;
 		return ASPECT_16_10;&lt;br /&gt;
 	}&lt;br /&gt;
 	if((height * ASPECT_5_4)&amp;gt;&amp;gt;16 == width &amp;amp;&amp;amp; tft)&lt;br /&gt;
 	{&lt;br /&gt;
 		return ASPECT_5_4;&lt;br /&gt;
 	}&lt;br /&gt;
 	return ASPECT_4_3;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Getaspectratio&amp;diff=40547</id>
		<title>Getaspectratio</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Getaspectratio&amp;diff=40547"/>
		<updated>2015-12-07T06:58:44Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Add 17:10 support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:getaspectratio}}&lt;br /&gt;
Returns the aspect ratio of the user&#039;s resolution by using nearly the same method ZDoom uses internally.  Requires the [[abs]] function.&lt;br /&gt;
&lt;br /&gt;
 #define ASPECT_4_3 (4.0 / 3)&lt;br /&gt;
 #define ASPECT_5_4 1.25&lt;br /&gt;
 #define ASPECT_16_9 (16.0 / 9)&lt;br /&gt;
 #define ASPECT_16_10 1.6&lt;br /&gt;
 #define ASPECT_17_10 1.7&lt;br /&gt;
 &lt;br /&gt;
 function int getaspectratio(void)&lt;br /&gt;
 {&lt;br /&gt;
 	int width = [[GetCVar]](&amp;quot;vid_defwidth&amp;quot;);&lt;br /&gt;
 	int height = [[GetCVar]](&amp;quot;vid_defheight&amp;quot;);&lt;br /&gt;
 	int nowidescreen = [[GetCVar]](&amp;quot;vid_nowidescreen&amp;quot;);&lt;br /&gt;
 	int tft = [[GetCVar]](&amp;quot;vid_tft&amp;quot;);&lt;br /&gt;
 	int aspect = [[GetCVar]](&amp;quot;vid_aspect&amp;quot;);&lt;br /&gt;
 	switch(aspect)&lt;br /&gt;
 	{&lt;br /&gt;
 		case 1:	return ASPECT_16_9;&lt;br /&gt;
 		case 2:	return ASPECT_16_10;&lt;br /&gt;
 		case 3:	return ASPECT_4_3;&lt;br /&gt;
 		case 4:	return ASPECT_5_4;&lt;br /&gt;
 		case 5: return ASPECT_17_10;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(nowidescreen)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(!tft)&lt;br /&gt;
 			return ASPECT_4_3;&lt;br /&gt;
 		if([[FixedMul]](height&amp;lt;&amp;lt;16, [[FixedDiv]](5.0, 4.0)) == width&amp;lt;&amp;lt;16)&lt;br /&gt;
 			return ASPECT_5_4;&lt;br /&gt;
 		else&lt;br /&gt;
 			return ASPECT_4_3;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(abs((abs([[FixedMul]](height&amp;lt;&amp;lt;16, [[FixedDiv]](16.0, 9.0)))&amp;gt;&amp;gt;16) - width) &amp;lt; 10)&lt;br /&gt;
 	{&lt;br /&gt;
 		return ASPECT_16_9;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(abs((abs([[FixedMul]](height&amp;lt;&amp;lt;16, [[FixedDiv]](17.0, 10.0)))&amp;gt;&amp;gt;16) - width) &amp;lt; 10)&lt;br /&gt;
 	{&lt;br /&gt;
 		return ASPECT_17_10;&lt;br /&gt;
 	}&lt;br /&gt;
 	if(abs((abs([[FixedMul]](height&amp;lt;&amp;lt;16, [[FixedDiv]](16.0, 10.0)))&amp;gt;&amp;gt;16) - width) &amp;lt; 60)&lt;br /&gt;
 	{&lt;br /&gt;
 		if((width == 320 &amp;amp;&amp;amp; height == 200) || (width == 640 &amp;amp;&amp;amp; height == 400))&lt;br /&gt;
 			return ASPECT_4_3;&lt;br /&gt;
 		return ASPECT_16_10;&lt;br /&gt;
 	}&lt;br /&gt;
 	if([[FixedMul]](height&amp;lt;&amp;lt;16, [[FixedDiv]](5.0, 4.0))&amp;gt;&amp;gt;16 == width &amp;amp;&amp;amp; tft)&lt;br /&gt;
 	{&lt;br /&gt;
 		return ASPECT_5_4;&lt;br /&gt;
 	}&lt;br /&gt;
 	return ASPECT_4_3;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Scope&amp;diff=40398</id>
		<title>Scope</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Scope&amp;diff=40398"/>
		<updated>2015-09-19T03:00:42Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Provided SVCT is working, you can have more than 20 script variables.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Variable scope is necessary for editing ACS, and it&#039;s also a fundamental thing you should know if you plan on programming in pretty much any language (including ACS) at some point.  There are four kinds of variables in ACS, and thus four kinds of scope.&lt;br /&gt;
&lt;br /&gt;
;Script scope:Any (non-static) variables declared within the body of a script have script scope.  That is they cannot be accessed by any scripts or functions outside of the script in which they are defined. Example:&lt;br /&gt;
 Script &amp;quot;Example&amp;quot; (void)&lt;br /&gt;
 {&lt;br /&gt;
     int script_scope_variable;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
;Map scope:These variables are declared outside of scripts and can be accessed or modified by any script or function defined within the same [[BEHAVIOR]] lump or in any currently imported library.  Alternatively, they can be declared as static variables in a script. You can have maximum of 128 map-scope variables in a script. Examples:&lt;br /&gt;
 int map_scope_variable_1;&lt;br /&gt;
 &lt;br /&gt;
 Script &amp;quot;Example&amp;quot; (void)&lt;br /&gt;
 {&lt;br /&gt;
     static int map_scope_variable_2;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
;World scope:These variables have scope within a [[hub]] of maps (à la &#039;&#039;[[Hexen]]&#039;&#039;), so that two or more maps within the same hub can access and alter these variables. They are reset to 0 when entering a new hub. They are given an index number with which they are identified: they have to be redeclared in each map&#039;s source code, and it is the index, not the name, which defines their common identity. The index limit is 1 through 256, thus you can have maximum of 256 world-scope variables at any given time. Example:&lt;br /&gt;
 world int 1:world_scope_var_1;&lt;br /&gt;
:You could technically have &amp;quot;int 1:MyVar&amp;quot; in one script and &amp;quot;int 1:YourVar&amp;quot; in another script and they would actually be the same variable.  This practice is not recommended, however, as it could easily lead to confusion when reading the script&#039;s source.&lt;br /&gt;
&lt;br /&gt;
;Global scope:This type of variable is accessible to all scripts and functions from any map or [[library]] and are only reset when exiting or starting a new game. They are similar to world scope variable, and likewise need to be given an index number, however they are not reset to 0 when entering a new hub, and the index limit is 64. Example:&lt;br /&gt;
 global int 1:global_scope_var_1;&lt;br /&gt;
:Note that global and world scope variables are stored separately, so a global variable and a world variable can share the same index number without risk of confusion.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
These are three map scripts from an imaginary pwad which has three maps, E1M1, E1M2 and E2M1.  E1M1 and E1M2 are hubbed together, but E2M1 is a stand alone map.&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//scripts for E1M1 of imaginary pwad&lt;br /&gt;
#include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
world int 1:gotkey; //world scope&lt;br /&gt;
global int 2:dooropen; //global scope&lt;br /&gt;
int counter = 0; //map scope&lt;br /&gt;
&lt;br /&gt;
script 1 (void)&lt;br /&gt;
{&lt;br /&gt;
   int q = 0; //script scope&lt;br /&gt;
   while(q &amp;lt;= 10)&lt;br /&gt;
   {&lt;br /&gt;
      print(d:q);&lt;br /&gt;
      delay(35);&lt;br /&gt;
      counter = addTen(counter);&lt;br /&gt;
      q++;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   counter++;&lt;br /&gt;
&lt;br /&gt;
   if(gotkey == 1)&lt;br /&gt;
      counter = addTen(counter);&lt;br /&gt;
&lt;br /&gt;
   if(dooropen == 1)&lt;br /&gt;
      gotkey = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function int addTen(int z)&lt;br /&gt;
{&lt;br /&gt;
   int q = 10 + counter;&lt;br /&gt;
   return z + q;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//scripts for E1M2 of imaginary pwad&lt;br /&gt;
#include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
world int 1:gotkey; //world scope&lt;br /&gt;
global int 2:dooropen; //global scope&lt;br /&gt;
int keycheck = 0; //map scope&lt;br /&gt;
&lt;br /&gt;
script 100 (void)&lt;br /&gt;
{&lt;br /&gt;
   if(gotkey == 0)&lt;br /&gt;
   {&lt;br /&gt;
      keycheck = checkinventory(&amp;quot;RedSkull&amp;quot;);&lt;br /&gt;
      if(keycheck == 1)&lt;br /&gt;
         gotkey = 1;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//scripts for E2M1 of imaginary pwad&lt;br /&gt;
#include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
world int 2:shotgun; //world scope&lt;br /&gt;
global int 2:dooropen; //global scope&lt;br /&gt;
&lt;br /&gt;
script 200 (void)&lt;br /&gt;
{&lt;br /&gt;
   if(dooropen == 1)&lt;br /&gt;
   {&lt;br /&gt;
      shotgun = 1;&lt;br /&gt;
      giveinventory(&amp;quot;Shotgun&amp;quot;, 1);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Note that &#039;dooropen&#039; can be accessed by all three maps (though it needs to be defined so [[ACC]] knows about it), whereas gotkey can be accessed by E1M1 and E1M2 but not E2M1.  Also note that in E1M1 there are two different variables named q, but what happens to q in one script has no effect on q in the other. When function addTen is called and it makes q into 10 + the value of counter, the q in script 1 remains unchanged.&lt;br /&gt;
[[Category:ACS guides]][[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=A_SetTeleFog&amp;diff=38998</id>
		<title>A SetTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=A_SetTeleFog&amp;diff=38998"/>
		<updated>2015-03-31T02:25:06Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Preserving the actor with &amp;quot;&amp;quot; didn&amp;#039;t even work here.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:A_SetTeleFog}}&lt;br /&gt;
{{git|30acb72}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A_SetTeleFog&#039;&#039;&#039; (class &#039;&#039;telefogsourcetype&#039;&#039;, class &#039;&#039;telefogdesttype&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
Changes the calling actor&#039;s [[Actor_properties#TeleFogSourceType|TeleFogSourceType]] and [[Actor_properties#TeleFogSourceType|TeleFogDestType]].&lt;br /&gt;
&lt;br /&gt;
If the actor classes for the function are set to &amp;quot;none&amp;quot; or they don&#039;t exist, the actor will spawn nothing for those fields when they teleport.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:SetTeleFog}}[[category:Decorate Status change functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SetActorTeleFog&amp;diff=38997</id>
		<title>SetActorTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SetActorTeleFog&amp;diff=38997"/>
		<updated>2015-03-31T02:01:00Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Refined behavior.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;SetActorTeleFog&#039;&#039;&#039; (int &#039;&#039;tid&#039;&#039;, classname &#039;&#039;telefogsrc&#039;&#039;, classname &#039;&#039;telefogdest&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
{{git|93ca850}}&lt;br /&gt;
&lt;br /&gt;
Sets the corresponding actors with the given tid [[Actor_properties#TeleFogSourceType|TeleFogSourceType]] and [[Actor_properties#TeleFogSourceType|TeleFogDestType]].&lt;br /&gt;
&lt;br /&gt;
If tid is 0, the calling actor is considered the activator. Setting the fog to &amp;quot;none&amp;quot; will cause nothing to be spawned for the respective field. Using an empty string will preserve the current fog for that field.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
[[category:ACS Actor functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Built-in_ACS_functions&amp;diff=38934</id>
		<title>Built-in ACS functions</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Built-in_ACS_functions&amp;diff=38934"/>
		<updated>2015-03-02T22:32:02Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the functions that [[ACS]] has built-in.  Note that these can only be used in scripts and not on linedefs or assigned to things.  In those contexts, only [[Action Specials]] may be used, though action specials may also be used in scripts as if they were ACS functions.&lt;br /&gt;
&lt;br /&gt;
When adding to or updating the definition of these functions, please update the [[Doom Builder ACS configuration]] as well. Thank you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;For [[Skulltag]]&#039;s additional built-in ACS functions see [[Skulltag features]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Script control==&lt;br /&gt;
* [[Break]]&lt;br /&gt;
* [[Continue]]&lt;br /&gt;
* [[Restart]]&lt;br /&gt;
* [[Suspend]]&lt;br /&gt;
* [[Terminate]]&lt;br /&gt;
&lt;br /&gt;
===Named scripts===&lt;br /&gt;
* [[ACS_NamedExecute]]&lt;br /&gt;
* [[ACS_NamedSuspend]]&lt;br /&gt;
* [[ACS_NamedTerminate]]&lt;br /&gt;
* [[ACS_NamedLockedExecute]]&lt;br /&gt;
* [[ACS_NamedLockedExecuteDoor]]&lt;br /&gt;
* [[ACS_NamedExecuteWithResult]]&lt;br /&gt;
* [[ACS_NamedExecuteAlways]]&lt;br /&gt;
&lt;br /&gt;
==Waiting==&lt;br /&gt;
* [[ACS_ExecuteWait]]&lt;br /&gt;
* [[ACS_NamedExecuteWait]]&lt;br /&gt;
* [[Delay]]&lt;br /&gt;
* [[NamedScriptWait]]&lt;br /&gt;
* [[PolyWait]]&lt;br /&gt;
* [[ScriptWait]]&lt;br /&gt;
* [[TagWait]]&lt;br /&gt;
&lt;br /&gt;
==Math==&lt;br /&gt;
* [[cos]]&lt;br /&gt;
* [[FixedDiv]]&lt;br /&gt;
* [[FixedMul]]&lt;br /&gt;
* [[FixedSqrt]] {{new}}&lt;br /&gt;
* [[Random]]&lt;br /&gt;
* [[sin]]&lt;br /&gt;
* [[Sqrt]] {{new}}&lt;br /&gt;
* [[StrLen]]&lt;br /&gt;
* [[VectorAngle]]&lt;br /&gt;
* [[VectorLength]] {{new}}&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
* [[ActivatorTID]]&lt;br /&gt;
* [[CanRaiseActor]] {{git|bb3d2fa}}&lt;br /&gt;
* [[CheckActorCeilingTexture]]&lt;br /&gt;
* [[CheckActorClass]]&lt;br /&gt;
* [[CheckActorFloorTexture]]&lt;br /&gt;
* [[CheckActorProperty]]&lt;br /&gt;
* [[CheckFlag]] {{git|61c9464}}&lt;br /&gt;
* [[CheckFont]] {{new}}&lt;br /&gt;
* [[CheckPlayerCamera]]&lt;br /&gt;
* [[CheckSight]]&lt;br /&gt;
* [[ClassifyActor]]&lt;br /&gt;
* [[GameSkill]]&lt;br /&gt;
* [[GameType]]&lt;br /&gt;
* [[GetActorAngle]]&lt;br /&gt;
* [[GetActorCeilingZ]]&lt;br /&gt;
* [[GetActorClass]] {{new}}&lt;br /&gt;
* [[GetActorFloorZ]]&lt;br /&gt;
* [[GetActorLightLevel]]&lt;br /&gt;
* [[GetActorPitch]]&lt;br /&gt;
* [[GetActorPowerupTics]] {{git|ca93e04}}&lt;br /&gt;
* [[GetActorProperty]]&lt;br /&gt;
* [[GetActorRoll]] {{git|2b12db1}}&lt;br /&gt;
* [[GetActorVelX]]&lt;br /&gt;
* [[GetActorVelY]]&lt;br /&gt;
* [[GetActorVelZ]]&lt;br /&gt;
* [[GetActorViewHeight]]&lt;br /&gt;
* [[GetActorX]]&lt;br /&gt;
* [[GetActorY]]&lt;br /&gt;
* [[GetActorZ]]&lt;br /&gt;
* [[GetAirSupply]]&lt;br /&gt;
* [[GetAmmoCapacity]]&lt;br /&gt;
* [[GetArmorInfo]] {{git|1fcde91}}&lt;br /&gt;
* [[GetArmorType]]&lt;br /&gt;
* [[GetChar]]&lt;br /&gt;
* [[GetCVar]]&lt;br /&gt;
* [[GetCVarString]] {{new}}&lt;br /&gt;
* [[GetLevelInfo]]&lt;br /&gt;
* [[GetLineActivation]] {{git|3cff307}}&lt;br /&gt;
* [[GetLineRowOffset]]&lt;br /&gt;
* [[GetPlayerInfo]]&lt;br /&gt;
* [[GetPlayerInput]]&lt;br /&gt;
* [[GetPolyobjX]]&lt;br /&gt;
* [[GetPolyobjY]]&lt;br /&gt;
* [[GetScreenHeight]]&lt;br /&gt;
* [[GetScreenWidth]]&lt;br /&gt;
* [[GetSectorCeilingZ]]&lt;br /&gt;
* [[GetSectorFloorZ]]&lt;br /&gt;
* [[GetSectorLightLevel]]&lt;br /&gt;
* [[GetSigilPieces]]&lt;br /&gt;
* [[GetUserArray]]&lt;br /&gt;
* [[GetUserCVar]] {{new}}&lt;br /&gt;
* [[GetUserCVarString]] {{new}}&lt;br /&gt;
* [[GetUserVariable]]&lt;br /&gt;
* [[GetWeapon]] {{new}}&lt;br /&gt;
* [[IsPointerEqual]] {{git|a2f7b86}}&lt;br /&gt;
* [[IsTIDUsed]] {{new}}&lt;br /&gt;
* [[LineSide]]&lt;br /&gt;
* [[PlayerClass]]&lt;br /&gt;
* [[PlayerCount]]&lt;br /&gt;
* [[PlayerFrags]]&lt;br /&gt;
* [[PlayerInGame]]&lt;br /&gt;
* [[PlayerIsBot]]&lt;br /&gt;
* [[PlayerNumber]]&lt;br /&gt;
* [[SetResultValue]]&lt;br /&gt;
* [[StrCmp]] {{new}}&lt;br /&gt;
* [[StrIcmp]] {{new}}&lt;br /&gt;
* [[ThingCount]]&lt;br /&gt;
* [[ThingCountName]]&lt;br /&gt;
* [[ThingCountNameSector]]&lt;br /&gt;
* [[ThingCountSector]]&lt;br /&gt;
* [[Timer]]&lt;br /&gt;
* [[UniqueTID]] {{new}}&lt;br /&gt;
===UDMF===&lt;br /&gt;
* [[GetLineUDMFInt]]&lt;br /&gt;
* [[GetLineUDMFFixed]]&lt;br /&gt;
* [[GetSectorUDMFInt]]&lt;br /&gt;
* [[GetSectorUDMFFixed]]&lt;br /&gt;
* [[GetSideUDMFInt]]&lt;br /&gt;
* [[GetSideUDMFFixed]]&lt;br /&gt;
* [[GetThingUDMFInt]]&lt;br /&gt;
* [[GetThingUDMFFixed]]&lt;br /&gt;
&lt;br /&gt;
==Sounds==&lt;br /&gt;
* [[ActivatorSound]]&lt;br /&gt;
* [[AmbientSound]]&lt;br /&gt;
* [[LocalAmbientSound]]&lt;br /&gt;
* [[LocalSetMusic]]&lt;br /&gt;
* [[PlayActorSound]] {{new}}&lt;br /&gt;
* [[PlaySound]] {{new}}&lt;br /&gt;
* [[SectorSound]]&lt;br /&gt;
* [[SetMusic]]&lt;br /&gt;
* [[SoundSequence]]&lt;br /&gt;
* [[SoundSequenceOnActor]]&lt;br /&gt;
* [[SoundSequenceOnSector]]&lt;br /&gt;
* [[SoundSequenceOnPolyobj]]&lt;br /&gt;
* [[SoundVolume]] {{new}}&lt;br /&gt;
* [[StopSound]] {{new}}&lt;br /&gt;
* [[ThingSound]]&lt;br /&gt;
&lt;br /&gt;
==Inventory==&lt;br /&gt;
* [[CheckActorInventory]]&lt;br /&gt;
* [[CheckInventory]]&lt;br /&gt;
* [[CheckWeapon]]&lt;br /&gt;
* [[ClearActorInventory]]&lt;br /&gt;
* [[ClearInventory]]&lt;br /&gt;
* [[DropInventory]] {{git|16a380f}}&lt;br /&gt;
* [[DropItem]] {{git|1b2d842}}&lt;br /&gt;
* [[GiveActorInventory]]&lt;br /&gt;
* [[GiveInventory]]&lt;br /&gt;
* [[SetWeapon]]&lt;br /&gt;
* [[TakeActorInventory]]&lt;br /&gt;
* [[TakeInventory]]&lt;br /&gt;
* [[UseActorInventory]]&lt;br /&gt;
* [[UseInventory]]&lt;br /&gt;
&lt;br /&gt;
==Display==&lt;br /&gt;
* [[HudMessage]]&lt;br /&gt;
* [[HudMessageBold]]&lt;br /&gt;
* [[Log]]&lt;br /&gt;
* [[Print]]&lt;br /&gt;
* [[PrintBold]]&lt;br /&gt;
* [[SetFont]]&lt;br /&gt;
* [[SetHudClipRect]] {{new}}&lt;br /&gt;
* [[SetHudSize]]&lt;br /&gt;
* [[SetHudWrapWidth]] {{new}}&lt;br /&gt;
* [[SetMugShotState]]&lt;br /&gt;
* [[StrLeft]] {{new}}&lt;br /&gt;
* [[StrMid]] {{new}}&lt;br /&gt;
* [[StrParam]]&lt;br /&gt;
* [[StrRight]] {{new}}&lt;br /&gt;
* [[StrCpy]]&lt;br /&gt;
&lt;br /&gt;
==Level alteration==&lt;br /&gt;
* [[ChangeCeiling]]&lt;br /&gt;
* [[ChangeFloor]]&lt;br /&gt;
* [[ChangeLevel]]&lt;br /&gt;
* [[ChangeSky]]&lt;br /&gt;
* [[ClearLineSpecial]]&lt;br /&gt;
* [[Radius_Quake2]]&lt;br /&gt;
* [[ReplaceTextures]]&lt;br /&gt;
* [[SectorDamage]]&lt;br /&gt;
* [[SetAirControl]]&lt;br /&gt;
* [[SetCameraToTexture]]&lt;br /&gt;
* [[SetCeilingTrigger]]&lt;br /&gt;
* [[SetCVar]] {{new}}&lt;br /&gt;
* [[SetCVarString]] {{new}}&lt;br /&gt;
* [[SetFloorTrigger]]&lt;br /&gt;
* [[SetGravity]]&lt;br /&gt;
* [[SetLineActivation]] {{git|3cff307}}&lt;br /&gt;
* [[SetLineBlocking]]&lt;br /&gt;
* [[SetLineMonsterBlocking]]&lt;br /&gt;
* [[SetLineSpecial]]&lt;br /&gt;
* [[SetLineTexture]]&lt;br /&gt;
* [[SetSkyScrollSpeed]]&lt;br /&gt;
* [[SetUserCVar]] {{new}}&lt;br /&gt;
* [[SetUserCVarString]] {{new}}&lt;br /&gt;
&lt;br /&gt;
==Actor control==&lt;br /&gt;
* [[CancelFade]]&lt;br /&gt;
* [[ChangeActorAngle]] {{git|2223c12}}&lt;br /&gt;
* [[ChangeActorPitch]] {{git|2223c12}}&lt;br /&gt;
* [[ChangeActorRoll]] {{git|2b12db1}} {{Gzdoomfeaturesmall}}&lt;br /&gt;
* [[CreateTranslation]]&lt;br /&gt;
* [[FadeRange]]&lt;br /&gt;
* [[FadeTo]]&lt;br /&gt;
* [[LineAttack]] {{new}}&lt;br /&gt;
* [[MorphActor]]&lt;br /&gt;
* [[PickActor]] {{git|0b44b51}}&lt;br /&gt;
* [[SetActivator]]&lt;br /&gt;
* [[SetActivatorToTarget]]&lt;br /&gt;
* [[SetActorAngle]]&lt;br /&gt;
* [[SetActorPitch]]&lt;br /&gt;
* [[SetActorPosition]]&lt;br /&gt;
* [[SetActorProperty]]&lt;br /&gt;
* [[SetActorRoll]] {{git|2b12db1}} {{Gzdoomfeaturesmall}}&lt;br /&gt;
* [[SetActorState]]&lt;br /&gt;
* [[SetActorVelocity]]&lt;br /&gt;
* [[SetAirSupply]]&lt;br /&gt;
* [[SetAmmoCapacity]]&lt;br /&gt;
* [[SetMarineSprite]]&lt;br /&gt;
* [[SetMarineWeapon]]&lt;br /&gt;
* [[SetPointer]]&lt;br /&gt;
* [[SetActorTeleFog]] {{git|93ca850}}&lt;br /&gt;
* [[SetThingSpecial]]&lt;br /&gt;
* [[SetUserArray]]&lt;br /&gt;
* [[SetUserVariable]]&lt;br /&gt;
* [[Spawn]]&lt;br /&gt;
* [[SpawnDecal]] {{new}}&lt;br /&gt;
* [[SpawnForced]]&lt;br /&gt;
* [[SpawnProjectile]]&lt;br /&gt;
* [[SpawnSpot]]&lt;br /&gt;
* [[SpawnSpotFacing]]&lt;br /&gt;
* [[SpawnSpotFacingForced]]&lt;br /&gt;
* [[SpawnSpotForced]]&lt;br /&gt;
* [[SwapActorTeleFog]] {{git|93ca850}}&lt;br /&gt;
* [[Thing_Damage2]]&lt;br /&gt;
* [[Thing_Projectile2]]&lt;br /&gt;
* [[UnMorphActor]]&lt;br /&gt;
&lt;br /&gt;
[[category:Editing concepts]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SetActorTeleFog&amp;diff=38933</id>
		<title>SetActorTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SetActorTeleFog&amp;diff=38933"/>
		<updated>2015-03-02T22:31:41Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;SetActorTeleFog&#039;&#039;&#039; (int &#039;&#039;tid&#039;&#039;, classname &#039;&#039;telefogsrc&#039;&#039;, classname &#039;&#039;telefogdest&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
{{git|93ca850}}&lt;br /&gt;
&lt;br /&gt;
Sets the corresponding actors with the given tid [[Actor_properties#TeleFogSourceType|TeleFogSourceType]] and [[Actor_properties#TeleFogSourceType|TeleFogDestType]].&lt;br /&gt;
&lt;br /&gt;
If tid is 0, the calling actor is considered the activator. If the actor classes for the function are non-existent, set to 0, &amp;quot;none&amp;quot;, or &amp;quot;null&amp;quot;, the actor will spawn nothing for those fields when they teleport.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
[[category:ACS Actor functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SetTeleFog&amp;diff=38932</id>
		<title>SetTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SetTeleFog&amp;diff=38932"/>
		<updated>2015-03-02T22:31:23Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Blzut3 moved page SetTeleFog to SetActorTeleFog: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SetActorTeleFog]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SetActorTeleFog&amp;diff=38931</id>
		<title>SetActorTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SetActorTeleFog&amp;diff=38931"/>
		<updated>2015-03-02T22:31:22Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Blzut3 moved page SetTeleFog to SetActorTeleFog: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;void &#039;&#039;&#039;SetTeleFog&#039;&#039;&#039; (int &#039;&#039;tid&#039;&#039;, classname &#039;&#039;telefogsrc&#039;&#039;, classname &#039;&#039;telefogdest&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
{{git|93ca850}}&lt;br /&gt;
&lt;br /&gt;
Sets the corresponding actors with the given tid [[Actor_properties#TeleFogSourceType|TeleFogSourceType]] and [[Actor_properties#TeleFogSourceType|TeleFogDestType]].&lt;br /&gt;
&lt;br /&gt;
If tid is 0, the calling actor is considered the activator. If the actor classes for the function are non-existent, set to 0, &amp;quot;none&amp;quot;, or &amp;quot;null&amp;quot;, the actor will spawn nothing for those fields when they teleport.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
[[category:ACS Actor functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SwapActorTeleFog&amp;diff=38930</id>
		<title>SwapActorTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SwapActorTeleFog&amp;diff=38930"/>
		<updated>2015-03-02T22:30:49Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;int &#039;&#039;&#039;SwapActorTeleFog&#039;&#039;&#039; (int &#039;&#039;tid&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
{{git|93ca850}}&lt;br /&gt;
&lt;br /&gt;
Swaps the [[Actor_properties#TeleFogSourceType|TeleFogSourceType]] and [[Actor_properties#TeleFogSourceType|TeleFogDestType]] fields of the corresponding actors with the given tid.&lt;br /&gt;
&lt;br /&gt;
If tid is 0, the calling actor is considered the activator. This function does nothing to those who have the same source and destination fogs.&lt;br /&gt;
&lt;br /&gt;
Returns the number of how many actors were successfully modified, not including those unaffected from same types.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
[[category:ACS Actor functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SwapTeleFog&amp;diff=38929</id>
		<title>SwapTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SwapTeleFog&amp;diff=38929"/>
		<updated>2015-03-02T22:30:19Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Blzut3 moved page SwapTeleFog to SwapActorTeleFog: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SwapActorTeleFog]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=SwapActorTeleFog&amp;diff=38928</id>
		<title>SwapActorTeleFog</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=SwapActorTeleFog&amp;diff=38928"/>
		<updated>2015-03-02T22:30:19Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Blzut3 moved page SwapTeleFog to SwapActorTeleFog: Function name was just plain wrong.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;int &#039;&#039;&#039;SwapTeleFog&#039;&#039;&#039; (int &#039;&#039;tid&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
{{git|93ca850}}&lt;br /&gt;
&lt;br /&gt;
Swaps the [[Actor_properties#TeleFogSourceType|TeleFogSourceType]] and [[Actor_properties#TeleFogSourceType|TeleFogDestType]] fields of the corresponding actors with the given tid.&lt;br /&gt;
&lt;br /&gt;
If tid is 0, the calling actor is considered the activator. This function does nothing to those who have the same source and destination fogs.&lt;br /&gt;
&lt;br /&gt;
Returns the number of how many actors were successfully modified, not including those unaffected from same types.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
{{noexamples}}&lt;br /&gt;
[[category:ACS Actor functions]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=38759</id>
		<title>Compile ZDoom on Linux</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=38759"/>
		<updated>2015-02-02T17:24:01Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Start playing ZDoom */ Config directory was moved to the now standard location a long time ago.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will guide you on the compilation of [[ZDoom]] on Linux.&lt;br /&gt;
Commands are shown in the tutorial that should be entered into a terminal. Commands beginning with `&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;` and `&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;` will require temporary root/admin privileges, as will most likely any package installation.&lt;br /&gt;
&lt;br /&gt;
==Install dependencies==&lt;br /&gt;
ZDoom needs certain dependencies in order to compile. These versions are known to work with recent ZDoom versions:&lt;br /&gt;
* gcc 4.0 or later&lt;br /&gt;
* make&lt;br /&gt;
* cmake 2.4 or later (2.8+ recommended)&lt;br /&gt;
* fmodex {{LatestFMOD/Version|.}}&lt;br /&gt;
* SDL 2.0.3&lt;br /&gt;
* zlib &#039;&#039;(optional - ZDoom has a copy of it and will be statically compiled in if not found)&#039;&#039;&lt;br /&gt;
* libbzip2 &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* libjpeg &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* nasm 2.03.90–2.05.01 or 0.98.39 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* GTK2 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* Mesa &#039;&#039;(if compiling [[GZDoom]])&#039;&#039;; or any other GL implementation provider. [[Compile GZDoom on Linux|Compile GZDoom on Linux]]&lt;br /&gt;
* gxmessage &#039;&#039;(needed to show the crash log in a window)&#039;&#039;&lt;br /&gt;
* git &#039;&#039;(needed in order to clone repository)&#039;&#039;&lt;br /&gt;
* fluidsynth &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* libgme or game-music-emu &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can presumably use any &#039;&#039;higher&#039;&#039; versions of these programs, however that might not be the case. [[FMOD Ex]], notably, does not have a constant API and using a version newer than the one listed above can prevent the successful compilation or execution of ZDoom.&lt;br /&gt;
&lt;br /&gt;
=== Debian/Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \&lt;br /&gt;
nasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install gcc-c++ make zlib-devel SDL2-devel libjpeg-turbo-devel \&lt;br /&gt;
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emu-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
ZDoom is available in Arch User Repository at http://aur.archlinux.org/packages.php?ID=16403&lt;br /&gt;
&lt;br /&gt;
Install [https://wiki.archlinux.org/index.php/Arch_User_Repository as per usual for AUR packages].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pacman -S --needed gcc make zlib sdl2 libjpeg-turbo nasm tar bzip2 gtk2 cmake git fluidsynth libgme fmodex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zypper install gcc-c++ make zlib-devel libSDL2-devel libjpeg-devel \&lt;br /&gt;
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(FMOD available in RPM format from [http://packages.opensuse-community.org/index.jsp?searchTerm=libfmodex third-party repositories]. At your option, you can also use yast2 instead of zypper.)&lt;br /&gt;
&lt;br /&gt;
=== Mageia ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
urpmi gcc-c++ make lib&amp;quot;$a&amp;quot;zlib-devel lib&amp;quot;$a&amp;quot;sdl2.0-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gtk+2.0-devel cmake git lib&amp;quot;$a&amp;quot;fluidsynth-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gme-devel lib&amp;quot;$a&amp;quot;cairo-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl2 media-libs/libjpeg-turbo \&lt;br /&gt;
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake dev-vcs/git media-sound/fluidsynth \&lt;br /&gt;
media-libs/game-music-emu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLinuxOS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
apt-get install gcc-c++ make zlib1-devel lib&amp;quot;$a&amp;quot;sdl2.0-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg62-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gtk+2.0_0-devel cmake git lib&amp;quot;$a&amp;quot;fluidsynth1-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the versions of these packages are equal to or greater than one of the versions listed above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Continue to [[#Make zdoom_build directory|Make zdoom_build directory]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Get the ZDoom sources ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
Since a git clone is recommended, this guide will be referring to the root directory of the source code (not the src directory) as the &amp;quot;clone directory.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Get the [http://www.fmod.org/ FMOD] package ==&lt;br /&gt;
ZDoom uses the [[FMOD Ex]] library for audio. In many distributions, this will need to be installed manually. Check your system&#039;s package manager first to see if FMOD Ex is supported, and install it from there if it is and skip this section.&lt;br /&gt;
Otherwise, run the following commands to install FMOD Ex:&lt;br /&gt;
 wget http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux.tar.gz&lt;br /&gt;
Note that if you are on a 64-bit system, you will want the 64-bit version; use the following commands to get that instead. (You can have both the 32- and 64-bit versions installed concurrently, and this may be desirable if you wish to be able to use FMOD Ex with both 32- and 64-bit applications.)&lt;br /&gt;
 # to get the 64-bit version&lt;br /&gt;
 wget http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux64.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux64.tar.gz&lt;br /&gt;
Now that the library has been downloaded and extracted, you may choose to install it or place it in the ZDoom directory tree. &lt;br /&gt;
&lt;br /&gt;
If you will not be installing ZDoom but running directly from the location where it is compiled, installing FMOD Ex is not strictly required, and you can place it in the clone directory or build directory. (**As installing ZDoom is not officially supported, you should probably choose this option**.) This has the advantage that you can easily have multiple versions of FMOD on your system with no conflicts between each other:&lt;br /&gt;
 mv fmodapi{{LatestFMOD/Version}}linux /path/to/zdoom&lt;br /&gt;
If instead, you would like to install FMOD Ex to /usr/local, you can do so:&lt;br /&gt;
 cd fmodapi{{LatestFMOD/Version}}linux # or fmodapi{{LatestFMOD/Version}}linux64 for the 64-bit version&lt;br /&gt;
 sudo make install&lt;br /&gt;
You will be prompted for your password, and assuming you have correct administrator privileges, FMOD Ex will be installed.&lt;br /&gt;
&lt;br /&gt;
== Compile ==&lt;br /&gt;
&lt;br /&gt;
ZDoom uses [http://www.cmake.org/ CMake] to handle makefile generation on Linux, so simply running &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; will not build ZDoom until you have used CMake first.&lt;br /&gt;
&lt;br /&gt;
First make sure that the zdoom directory looks something like this :-&lt;br /&gt;
&lt;br /&gt;
   /games/zdoom/$ ls&lt;br /&gt;
   bzip2 dumb fmodapi42636linux64.tar.gz jpeg-6b specs tools  &lt;br /&gt;
   zdoom.vcproj CMakeLists.txt FindFluidSynth.cmake &lt;br /&gt;
   game-music-emu lzma src wadsrc zlib docs&lt;br /&gt;
   fmodapi42636linux64 gdtoa output_sdl  strifehelp.acs  zdoom.sln&lt;br /&gt;
&lt;br /&gt;
Then make sure that the git master is upto date. This can be seen by doing :-&lt;br /&gt;
&lt;br /&gt;
   ~/games/zdoom$ git pull origin master&lt;br /&gt;
   From https://github.com/rheit/zdoom.git/&lt;br /&gt;
   * branch            master      -&amp;gt; FETCH_HEAD&lt;br /&gt;
   Already up-to-date.&lt;br /&gt;
&lt;br /&gt;
This means that we are with the latest development version. &lt;br /&gt;
&lt;br /&gt;
Next, we need to make a directory for CMake to work from, and compile to.&lt;br /&gt;
 mkdir release&lt;br /&gt;
 cd release&lt;br /&gt;
Invoke CMake to parse the ZDoom source and get ready for compiling:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
It may be necessary to tell it where the FMOD files and includes are located, for example use this command if you installed version {{LatestFMOD/Version|.}} of FMOD:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=/usr/local/lib/libfmodex-{{LatestFMOD/Version|.}}.so -DFMOD_INCLUDE_DIR=/usr/local/include/fmodex/ ..&lt;br /&gt;
In case 64-bit FMOD is used, it of course needs to point to that instead.&lt;br /&gt;
 -DFMOD_LIBRARY=/usr/local/lib64/libfmodex64-{{LatestFMOD/Version|.}}.so&lt;br /&gt;
Compile the code from inside the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Compile with FMOD in the clone directory (AMD64) ==&lt;br /&gt;
&lt;br /&gt;
This is the recommended method, especially for 64 bit systems, I&#039;ve noticed that the installation does not usually put the file in lib64, and it was quite a hunt to find it. &lt;br /&gt;
&lt;br /&gt;
This portion is for x64 machines, but it should work with i386 systems as well, if you remove the 64 in fmodapi42416linux64/ and libfmodex64-{{LatestFMOD/Version|.}}.so it should work.&lt;br /&gt;
&lt;br /&gt;
Follow the above steps, but the CMake commands will be different.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the -DFMOD_LIBRARY parameter needs to point to a specific .so file (e.g., fmodapi42416linux64/api/lib/libfmodex-{{LatestFMOD/Version|.}}.so) and -DFMOD_INCLUDE_DIR needs to point to a DIRECTORY (e.g., fmodapi42416linux64/api/inc). If you&#039;re in doubt about the locations of a file, you can open these directories up to be sure that your library is there. Your inc/ directory should include .h and .hpp files. &lt;br /&gt;
&lt;br /&gt;
That is basically what these three parameters for CMake do, they tell CMake where the libraries and include files are, both libraries and includes are needed to compile ZDoom.&lt;br /&gt;
&lt;br /&gt;
Your command would look like this, replace &amp;lt;path to clone&amp;gt; with the directory which the clone was created in, e.g., /home/yourname/zdoom/ and replace fmodapi&amp;lt;VERSION&amp;gt;linux64 with the version you&#039;re using. Right now I&#039;m using the AMD64 version of FMOD 4.24.16, so my folder is fmodapi42416linux64.&lt;br /&gt;
&lt;br /&gt;
(this command should be a single line, shown on two lines so it&#039;s easier to read)&lt;br /&gt;
&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/lib/libfmodex64-{{LatestFMOD/Version|.}}.so &lt;br /&gt;
 -DFMOD_INCLUDE_DIR=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/inc ..&lt;br /&gt;
&lt;br /&gt;
== Start playing ZDoom ==&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well, an executable &amp;lt;tt&amp;gt;zdoom&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;zdoom.pk3&amp;lt;/tt&amp;gt; file will be generated in the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory. To start ZDoom, the following command should work:&lt;br /&gt;
 ./zdoom&lt;br /&gt;
If ZDoom complains you do not have any IWADs set up, make sure that you have your [[IWAD]] files placed in the same directory as ZDoom, in &amp;lt;tt&amp;gt;$HOME/.config/zdoom&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$DOOMWADDIR&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;/usr/local/share&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Sound ===&lt;br /&gt;
If ZDoom starts but immediately closes with the following messages in the terminal:&lt;br /&gt;
 ...&lt;br /&gt;
 Init Playloop state.&lt;br /&gt;
 Setting up sound.&lt;br /&gt;
 S_Init&lt;br /&gt;
 Checking network game status.&lt;br /&gt;
 player 1 of 1 (1 nodes)&lt;br /&gt;
&lt;br /&gt;
This usually indicates that [[FMOD Ex]] is not loading correctly (and ZDoom is configured to use FMOD by default). There are then two solutions. &lt;br /&gt;
&lt;br /&gt;
You could start ZDoom without music:&lt;br /&gt;
 zdoom -nomusic&lt;br /&gt;
&lt;br /&gt;
or you could select (in the ZDoom settings) a [[MIDI device]] other than FMOD. To change MIDI device, go to the [[sound options]] menu.&lt;br /&gt;
* [[OPL synth emulation]] can work out of the box without further configuration.&lt;br /&gt;
* To install [[TiMidity++]]:&lt;br /&gt;
:*... on any Debian/Ubuntu-based distribution, run:&lt;br /&gt;
 sudo apt-get install timidity timidity-interfaces-extra&lt;br /&gt;
:*... on openSUSE:&lt;br /&gt;
 yast2 -i timidity &#039;&#039;&#039;or&#039;&#039;&#039; zypper in timidity&lt;br /&gt;
:*... on Gentoo, run:&lt;br /&gt;
 sudo emerge -avn timidity++&lt;br /&gt;
&lt;br /&gt;
See the [[software synthesizer]] article for further information about ZDoom&#039;s MIDI devices.&lt;br /&gt;
&lt;br /&gt;
== Developing ==&lt;br /&gt;
&lt;br /&gt;
This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or submitting code changes or fixes for inclusion. This section is intended for more advanced users who may be unfamiliar to CMake or debugging on Linux systems.&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
Maybe you have found a way to make ZDoom crash, and are interested in debugging it. First, you need to compile a debug build of ZDoom.&lt;br /&gt;
Inside the &amp;lt;tt&amp;gt;clone&amp;lt;/tt&amp;gt; directory, create a new directory &amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 mkdir debug&lt;br /&gt;
 cd debug&lt;br /&gt;
Invoke CMake to set up for compiling, but this time, the build type is set to Debug.&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
After CMake is done, run &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; as usual.&lt;br /&gt;
&lt;br /&gt;
To run ZDoom under a debugger such as [http://www.gnu.org/software/gdb/ gdb], use the following command:&lt;br /&gt;
 gdb zdoom&lt;br /&gt;
Now gdb should have you in its own prompt. You probably want to log the output, so lets output to a file &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;: &lt;br /&gt;
 set logging on log.txt&lt;br /&gt;
Now start ZDoom by typing in &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt;, and pressing enter. (Put any arguments to zdoom after &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt; .)&lt;br /&gt;
If ZDoom crashes, gdb may be able to tell you the source file and line number it crashed in. Typing in the command &amp;lt;tt&amp;gt;backtrace&amp;lt;/tt&amp;gt; will produce information telling the last function calls, showing how execution got to the point where it crashed. All output will be copied into the &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;, which can then be scrutinized later, or perhaps posted to the {{forum|Bugs forum|view=forum|f=2}} for other developers to look at.&lt;br /&gt;
&lt;br /&gt;
To get out of gdb&#039;s prompt, type &amp;lt;tt&amp;gt;quit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Build Options ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;65%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Types&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Types!!width=&amp;quot;45%&amp;quot;|Description!!width=&amp;quot;45%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|Debug||Debug information, -O1 optimization.||cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
|-&lt;br /&gt;
|Release||No debug information, -O3 optimization.||cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
|-&lt;br /&gt;
|RelWithDebInfo||Debug information, -O3 optimization. Useful for finding optimization bugs that only show up in Release.||cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..&lt;br /&gt;
|-&lt;br /&gt;
|MinSizeRel||Similar to Release but with less optimizations in order to save space.||cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Make zdoom_build directory ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open a terminal and copy and paste the whole code box for each step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -pv $HOME/zdoom_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Source ==&lt;br /&gt;
&lt;br /&gt;
Download the ZDoom source and make build directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
git clone git://github.com/rheit/zdoom.git &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv zdoom/build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd zdoom&lt;br /&gt;
git config --local --add remote.origin.fetch +refs/tags/*:refs/tags/*&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download FMOD ==&lt;br /&gt;
&lt;br /&gt;
Download FMOD 4.26.36 32-bit or 64-bit and extract files to zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
wget -nc http://www.fmod.org/download/fmodex/api/Linux/$FMODFOLDER.tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
tar -xvzf $FMODFOLDER.tar.gz -C zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FMOD Links ===&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 32-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux.tar.gz&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 64-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux64.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom/build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
make clean ; \&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/lib/$FMODFILE.so \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/inc .. &amp;amp;&amp;amp; \&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Current release version ===&lt;br /&gt;
Show the current release version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git describe --tags $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to compile the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and [[#Compiling|compile]].&lt;br /&gt;
&lt;br /&gt;
After compiling and backing up the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
&lt;br /&gt;
Follow this step if you want or manually copy (backup) zdoom, zdoom.pk3 and liboutput_sdl.so.&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the corresponding ZDoom version/revision and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZDOOM=&amp;quot;$(sed -n &#039;s/.*#define GIT_DESCRIPTION &amp;quot;\(.*\)&amp;quot;.*/\1/p&#039; \&lt;br /&gt;
zdoom/src/gitinfo.h)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZDOOM&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZDOOM&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup (Optional) ===&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the current year, month, day, hour and minute and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZD=&amp;quot;$(date +%Y%m%d%H%M)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZD&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZD&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Backup&amp;quot; or &amp;quot;Backup (Optional)&amp;quot;, the previous files should be located at:&lt;br /&gt;
: &#039;&#039;&#039;/home/&amp;lt;your username&amp;gt;/zdoom_build/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
When you wish to update ZDoom, copy and paste the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the update finish, go to [[#Compiling|Compiling]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following steps contain commands that require to be run as superuser with the sudo command.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to install ZDoom, do the following:&lt;br /&gt;
&lt;br /&gt;
Make /usr/games/zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mkdir -pv /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy zdoom, zdoom.pk3, liboutput_sdl.so and libfmodex64-4.26.36.so or libfmodex-4.26.36.so to /usr/games/zdoom:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v /home/$USER/zdoom_build/zdoom/{build/{zdoom,\&lt;br /&gt;
zdoom.pk3,output_sdl/liboutput_sdl.so},\&lt;br /&gt;
$FMODFOLDER/api/lib/$FMODFILE.so} /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make zdoom script, add executable permission and copy it to /usr/bin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;#!/bin/sh&#039; &amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;export LD_LIBRARY_PATH=/usr/games/zdoom&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;exec /usr/games/zdoom/zdoom &amp;quot;$@&amp;quot;&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
chmod 755 zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v zdoom /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now from a terminal you should be able to execute &#039;&#039;&#039;zdoom&#039;&#039;&#039; from any user account.&lt;br /&gt;
&lt;br /&gt;
=== Uninstallation ===&lt;br /&gt;
&lt;br /&gt;
To remove the previous installation steps:&lt;br /&gt;
&lt;br /&gt;
Remove /usr/games/zdoom directory and all its files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/games &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -rfv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove zdoom script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://github.com/rheit/zdoom Git Repository]&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=38626</id>
		<title>Compile ZDoom on Linux</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=38626"/>
		<updated>2014-12-22T20:37:12Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Install dependencies */ SDL2 now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will guide you on the compilation of [[ZDoom]] on Linux.&lt;br /&gt;
Commands are shown in the tutorial that should be entered into a terminal. Commands beginning with `&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;` and `&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;` will require temporary root/admin privileges, as will most likely any package installation.&lt;br /&gt;
&lt;br /&gt;
==Install dependencies==&lt;br /&gt;
ZDoom needs certain dependencies in order to compile. These versions are known to work with recent ZDoom versions:&lt;br /&gt;
* gcc 4.0 or later&lt;br /&gt;
* make&lt;br /&gt;
* cmake 2.4 or later (2.8+ recommended)&lt;br /&gt;
* fmodex {{LatestFMOD/Version|.}}&lt;br /&gt;
* SDL 2.0.3&lt;br /&gt;
* zlib &#039;&#039;(optional - ZDoom has a copy of it and will be statically compiled in if not found)&#039;&#039;&lt;br /&gt;
* libbzip2 &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* libjpeg &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* nasm 2.03.90–2.05.01 or 0.98.39 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* GTK2 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* Mesa &#039;&#039;(if compiling [[GZDoom]])&#039;&#039;; or any other GL implementation provider. [[Compile GZDoom on Linux|Compile GZDoom on Linux]]&lt;br /&gt;
* gxmessage &#039;&#039;(needed to show the crash log in a window)&#039;&#039;&lt;br /&gt;
* git &#039;&#039;(needed in order to clone repository)&#039;&#039;&lt;br /&gt;
* fluidsynth &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* libgme or game-music-emu &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can presumably use any &#039;&#039;higher&#039;&#039; versions of these programs, however that might not be the case. [[FMOD Ex]], notably, does not have a constant API and using a version newer than the one listed above can prevent the successful compilation or execution of ZDoom.&lt;br /&gt;
&lt;br /&gt;
=== Debian/Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \&lt;br /&gt;
nasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install gcc-c++ make zlib-devel SDL2-devel libjpeg-turbo-devel \&lt;br /&gt;
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emu-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
ZDoom is available in Arch User Repository at http://aur.archlinux.org/packages.php?ID=16403&lt;br /&gt;
&lt;br /&gt;
Install [https://wiki.archlinux.org/index.php/Arch_User_Repository as per usual for AUR packages].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pacman -S --needed gcc make zlib sdl2 libjpeg-turbo nasm tar bzip2 gtk2 cmake git fluidsynth libgme fmodex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zypper install gcc-c++ make zlib-devel libSDL2-devel libjpeg-devel \&lt;br /&gt;
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(FMOD available in RPM format from [http://packages.opensuse-community.org/index.jsp?searchTerm=libfmodex third-party repositories]. At your option, you can also use yast2 instead of zypper.)&lt;br /&gt;
&lt;br /&gt;
=== Mageia ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
urpmi gcc-c++ make lib&amp;quot;$a&amp;quot;zlib-devel lib&amp;quot;$a&amp;quot;SDL2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gtk+2.0-devel cmake git lib&amp;quot;$a&amp;quot;fluidsynth-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gme-devel lib&amp;quot;$a&amp;quot;cairo-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl2 media-libs/libjpeg-turbo \&lt;br /&gt;
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake dev-vcs/git media-sound/fluidsynth \&lt;br /&gt;
media-libs/game-music-emu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLinuxOS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
apt-get install gcc-c++ make zlib1-devel lib&amp;quot;$a&amp;quot;SDL2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg62-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gtk+2.0_0-devel cmake git lib&amp;quot;$a&amp;quot;fluidsynth1-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the versions of these packages are equal to or greater than one of the versions listed above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Continue to [[#Make zdoom_build directory|Make zdoom_build directory]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Get the ZDoom sources ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
Since a git clone is recommended, this guide will be referring to the root directory of the source code (not the src directory) as the &amp;quot;clone directory.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Get the [http://www.fmod.org/ FMOD] package ==&lt;br /&gt;
ZDoom uses the [[FMOD Ex]] library for audio. In many distributions, this will need to be installed manually. Check your system&#039;s package manager first to see if FMOD Ex is supported, and install it from there if it is and skip this section.&lt;br /&gt;
Otherwise, run the following commands to install FMOD Ex:&lt;br /&gt;
 wget http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux.tar.gz&lt;br /&gt;
Note that if you are on a 64-bit system, you will want the 64-bit version; use the following commands to get that instead. (You can have both the 32- and 64-bit versions installed concurrently, and this may be desirable if you wish to be able to use FMOD Ex with both 32- and 64-bit applications.)&lt;br /&gt;
 # to get the 64-bit version&lt;br /&gt;
 wget http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux64.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux64.tar.gz&lt;br /&gt;
Now that the library has been downloaded and extracted, you may choose to install it or place it in the ZDoom directory tree. &lt;br /&gt;
&lt;br /&gt;
If you will not be installing ZDoom but running directly from the location where it is compiled, installing FMOD Ex is not strictly required, and you can place it in the clone directory or build directory. (**As installing ZDoom is not officially supported, you should probably choose this option**.) This has the advantage that you can easily have multiple versions of FMOD on your system with no conflicts between each other:&lt;br /&gt;
 mv fmodapi{{LatestFMOD/Version}}linux /path/to/zdoom&lt;br /&gt;
If instead, you would like to install FMOD Ex to /usr/local, you can do so:&lt;br /&gt;
 cd fmodapi{{LatestFMOD/Version}}linux # or fmodapi{{LatestFMOD/Version}}linux64 for the 64-bit version&lt;br /&gt;
 sudo make install&lt;br /&gt;
You will be prompted for your password, and assuming you have correct administrator privileges, FMOD Ex will be installed.&lt;br /&gt;
&lt;br /&gt;
== Compile ==&lt;br /&gt;
&lt;br /&gt;
ZDoom uses [http://www.cmake.org/ CMake] to handle makefile generation on Linux, so simply running &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; will not build ZDoom until you have used CMake first.&lt;br /&gt;
&lt;br /&gt;
First make sure that the zdoom directory looks something like this :-&lt;br /&gt;
&lt;br /&gt;
   /games/zdoom/$ ls&lt;br /&gt;
   bzip2 dumb fmodapi42636linux64.tar.gz jpeg-6b specs tools  &lt;br /&gt;
   zdoom.vcproj CMakeLists.txt FindFluidSynth.cmake &lt;br /&gt;
   game-music-emu lzma src wadsrc zlib docs&lt;br /&gt;
   fmodapi42636linux64 gdtoa output_sdl  strifehelp.acs  zdoom.sln&lt;br /&gt;
&lt;br /&gt;
Then make sure that the git master is upto date. This can be seen by doing :-&lt;br /&gt;
&lt;br /&gt;
   ~/games/zdoom$ git pull origin master&lt;br /&gt;
   From https://github.com/rheit/zdoom.git/&lt;br /&gt;
   * branch            master      -&amp;gt; FETCH_HEAD&lt;br /&gt;
   Already up-to-date.&lt;br /&gt;
&lt;br /&gt;
This means that we are with the latest development version. &lt;br /&gt;
&lt;br /&gt;
Next, we need to make a directory for CMake to work from, and compile to.&lt;br /&gt;
 mkdir release&lt;br /&gt;
 cd release&lt;br /&gt;
Invoke CMake to parse the ZDoom source and get ready for compiling:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
It may be necessary to tell it where the FMOD files and includes are located, for example use this command if you installed version {{LatestFMOD/Version|.}} of FMOD:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=/usr/local/lib/libfmodex-{{LatestFMOD/Version|.}}.so -DFMOD_INCLUDE_DIR=/usr/local/include/fmodex/ ..&lt;br /&gt;
In case 64-bit FMOD is used, it of course needs to point to that instead.&lt;br /&gt;
 -DFMOD_LIBRARY=/usr/local/lib64/libfmodex64-{{LatestFMOD/Version|.}}.so&lt;br /&gt;
Compile the code from inside the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Compile with FMOD in the clone directory (AMD64) ==&lt;br /&gt;
&lt;br /&gt;
This is the recommended method, especially for 64 bit systems, I&#039;ve noticed that the installation does not usually put the file in lib64, and it was quite a hunt to find it. &lt;br /&gt;
&lt;br /&gt;
This portion is for x64 machines, but it should work with i386 systems as well, if you remove the 64 in fmodapi42416linux64/ and libfmodex64-{{LatestFMOD/Version|.}}.so it should work.&lt;br /&gt;
&lt;br /&gt;
Follow the above steps, but the CMake commands will be different.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the -DFMOD_LIBRARY parameter needs to point to a specific .so file (e.g., fmodapi42416linux64/api/lib/libfmodex-{{LatestFMOD/Version|.}}.so) and -DFMOD_INCLUDE_DIR needs to point to a DIRECTORY (e.g., fmodapi42416linux64/api/inc). If you&#039;re in doubt about the locations of a file, you can open these directories up to be sure that your library is there. Your inc/ directory should include .h and .hpp files. &lt;br /&gt;
&lt;br /&gt;
That is basically what these three parameters for CMake do, they tell CMake where the libraries and include files are, both libraries and includes are needed to compile ZDoom.&lt;br /&gt;
&lt;br /&gt;
Your command would look like this, replace &amp;lt;path to clone&amp;gt; with the directory which the clone was created in, e.g., /home/yourname/zdoom/ and replace fmodapi&amp;lt;VERSION&amp;gt;linux64 with the version you&#039;re using. Right now I&#039;m using the AMD64 version of FMOD 4.24.16, so my folder is fmodapi42416linux64.&lt;br /&gt;
&lt;br /&gt;
(this command should be a single line, shown on two lines so it&#039;s easier to read)&lt;br /&gt;
&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/lib/libfmodex64-{{LatestFMOD/Version|.}}.so &lt;br /&gt;
 -DFMOD_INCLUDE_DIR=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/inc ..&lt;br /&gt;
&lt;br /&gt;
== Start playing ZDoom ==&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well, an executable &amp;lt;tt&amp;gt;zdoom&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;zdoom.pk3&amp;lt;/tt&amp;gt; file will be generated in the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory. To start ZDoom, the following command should work:&lt;br /&gt;
 ./zdoom&lt;br /&gt;
If ZDoom complains you do not have any IWADs set up, make sure that you have your [[IWAD]] files placed in the same directory as ZDoom, in &amp;lt;tt&amp;gt;$HOME/.zdoom&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$DOOMWADDIR&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;/usr/local/share&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Sound ===&lt;br /&gt;
If ZDoom starts but immediately closes with the following messages in the terminal:&lt;br /&gt;
 ...&lt;br /&gt;
 Init Playloop state.&lt;br /&gt;
 Setting up sound.&lt;br /&gt;
 S_Init&lt;br /&gt;
 Checking network game status.&lt;br /&gt;
 player 1 of 1 (1 nodes)&lt;br /&gt;
&lt;br /&gt;
This usually indicates that [[FMOD Ex]] is not loading correctly (and ZDoom is configured to use FMOD by default). There are then two solutions. &lt;br /&gt;
&lt;br /&gt;
You could start ZDoom without music:&lt;br /&gt;
 zdoom -nomusic&lt;br /&gt;
&lt;br /&gt;
or you could select (in the ZDoom settings) a [[MIDI device]] other than FMOD. To change MIDI device, go to the [[sound options]] menu.&lt;br /&gt;
* [[OPL synth emulation]] can work out of the box without further configuration.&lt;br /&gt;
* To install [[TiMidity++]]:&lt;br /&gt;
:*... on any Debian/Ubuntu-based distribution, run:&lt;br /&gt;
 sudo apt-get install timidity timidity-interfaces-extra&lt;br /&gt;
:*... on openSUSE:&lt;br /&gt;
 yast2 -i timidity &#039;&#039;&#039;or&#039;&#039;&#039; zypper in timidity&lt;br /&gt;
:*... on Gentoo, run:&lt;br /&gt;
 sudo emerge -avn timidity++&lt;br /&gt;
&lt;br /&gt;
See the [[software synthesizer]] article for further information about ZDoom&#039;s MIDI devices.&lt;br /&gt;
&lt;br /&gt;
== Developing ==&lt;br /&gt;
&lt;br /&gt;
This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or submitting code changes or fixes for inclusion. This section is intended for more advanced users who may be unfamiliar to CMake or debugging on Linux systems.&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
Maybe you have found a way to make ZDoom crash, and are interested in debugging it. First, you need to compile a debug build of ZDoom.&lt;br /&gt;
Inside the &amp;lt;tt&amp;gt;clone&amp;lt;/tt&amp;gt; directory, create a new directory &amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 mkdir debug&lt;br /&gt;
 cd debug&lt;br /&gt;
Invoke CMake to set up for compiling, but this time, the build type is set to Debug.&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
After CMake is done, run &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; as usual.&lt;br /&gt;
&lt;br /&gt;
To run ZDoom under a debugger such as [http://www.gnu.org/software/gdb/ gdb], use the following command:&lt;br /&gt;
 gdb zdoom&lt;br /&gt;
Now gdb should have you in its own prompt. You probably want to log the output, so lets output to a file &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;: &lt;br /&gt;
 set logging on log.txt&lt;br /&gt;
Now start ZDoom by typing in &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt;, and pressing enter. (Put any arguments to zdoom after &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt; .)&lt;br /&gt;
If ZDoom crashes, gdb may be able to tell you the source file and line number it crashed in. Typing in the command &amp;lt;tt&amp;gt;backtrace&amp;lt;/tt&amp;gt; will produce information telling the last function calls, showing how execution got to the point where it crashed. All output will be copied into the &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;, which can then be scrutinized later, or perhaps posted to the {{forum|Bugs forum|view=forum|f=2}} for other developers to look at.&lt;br /&gt;
&lt;br /&gt;
To get out of gdb&#039;s prompt, type &amp;lt;tt&amp;gt;quit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Build Options ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;65%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Types&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Types!!width=&amp;quot;45%&amp;quot;|Description!!width=&amp;quot;45%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|Debug||Debug information, -O1 optimization.||cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
|-&lt;br /&gt;
|Release||No debug information, -O3 optimization.||cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
|-&lt;br /&gt;
|RelWithDebInfo||Debug information, -O3 optimization. Useful for finding optimization bugs that only show up in Release.||cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..&lt;br /&gt;
|-&lt;br /&gt;
|MinSizeRel||Similar to Release but with less optimizations in order to save space.||cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Make zdoom_build directory ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open a terminal and copy and paste the whole code box for each step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -pv $HOME/zdoom_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Source ==&lt;br /&gt;
&lt;br /&gt;
Download the ZDoom source and make build directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
git clone git://github.com/rheit/zdoom.git &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv zdoom/build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd zdoom&lt;br /&gt;
git config --local --add remote.origin.fetch +refs/tags/*:refs/tags/*&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download FMOD ==&lt;br /&gt;
&lt;br /&gt;
Download FMOD 4.26.36 32-bit or 64-bit and extract files to zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
wget -nc http://www.fmod.org/download/fmodex/api/Linux/$FMODFOLDER.tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
tar -xvzf $FMODFOLDER.tar.gz -C zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FMOD Links ===&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 32-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux.tar.gz&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 64-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux64.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom/build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
make clean ; \&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/lib/$FMODFILE.so \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/inc .. &amp;amp;&amp;amp; \&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Current release version ===&lt;br /&gt;
Show the current release version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git describe --tags $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to compile the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and [[#Compiling|compile]].&lt;br /&gt;
&lt;br /&gt;
After compiling and backing up the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
&lt;br /&gt;
Follow this step if you want or manually copy (backup) zdoom, zdoom.pk3 and liboutput_sdl.so.&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the corresponding ZDoom version/revision and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZDOOM=&amp;quot;$(sed -n &#039;s/.*#define GIT_DESCRIPTION &amp;quot;\(.*\)&amp;quot;.*/\1/p&#039; \&lt;br /&gt;
zdoom/src/gitinfo.h)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZDOOM&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZDOOM&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup (Optional) ===&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the current year, month, day, hour and minute and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZD=&amp;quot;$(date +%Y%m%d%H%M)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZD&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZD&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Backup&amp;quot; or &amp;quot;Backup (Optional)&amp;quot;, the previous files should be located at:&lt;br /&gt;
: &#039;&#039;&#039;/home/&amp;lt;your username&amp;gt;/zdoom_build/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
When you wish to update ZDoom, copy and paste the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the update finish, go to [[#Compiling|Compiling]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following steps contain commands that require to be run as superuser with the sudo command.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to install ZDoom, do the following:&lt;br /&gt;
&lt;br /&gt;
Make /usr/games/zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mkdir -pv /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy zdoom, zdoom.pk3, liboutput_sdl.so and libfmodex64-4.26.36.so or libfmodex-4.26.36.so to /usr/games/zdoom:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v /home/$USER/zdoom_build/zdoom/{build/{zdoom,\&lt;br /&gt;
zdoom.pk3,output_sdl/liboutput_sdl.so},\&lt;br /&gt;
$FMODFOLDER/api/lib/$FMODFILE.so} /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make zdoom script, add executable permission and copy it to /usr/bin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;#!/bin/sh&#039; &amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;export LD_LIBRARY_PATH=/usr/games/zdoom&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;exec /usr/games/zdoom/zdoom &amp;quot;$@&amp;quot;&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
chmod 755 zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v zdoom /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now from a terminal you should be able to execute &#039;&#039;&#039;zdoom&#039;&#039;&#039; from any user account.&lt;br /&gt;
&lt;br /&gt;
=== Uninstallation ===&lt;br /&gt;
&lt;br /&gt;
To remove the previous installation steps:&lt;br /&gt;
&lt;br /&gt;
Remove /usr/games/zdoom directory and all its files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/games &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -rfv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove zdoom script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://github.com/rheit/zdoom Git Repository]&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Y-shearing&amp;diff=38602</id>
		<title>Y-shearing</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Y-shearing&amp;diff=38602"/>
		<updated>2014-12-17T06:24:48Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Y-shearing.png|right|thumb|230px|Two &amp;quot;windows&amp;quot;.]]&lt;br /&gt;
&#039;&#039;&#039;Y-shearing&#039;&#039;&#039; is a technique to create the illusion of looking up and down in a 3D engine where column drawing depends on the view pitch remaining horizontal. In the Doom engine, it was introduced by &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
This illusion is created simply by modifying the boundaries of the selection. One can imagine the scene being rendered as a very tall image, in which a sliding window represents the player&#039;s view window. Sliding upwards corresponds to looking upwards, and sliding downwards correspond to looking downwards.&lt;br /&gt;
&lt;br /&gt;
Of course, only the pixels within the window are rendered; but it is possible to create screenshot montages such as the illustration provided here, showing how a scene would look like if it was rendered as high and as low as the engine permits.&lt;br /&gt;
&lt;br /&gt;
The red and green rectangles correspond to two different 4:3 &amp;quot;windows&amp;quot;. The overlapping areas are rendered almost exactly identically in both the source screenshots (the only differences corresponding to sub-texel precision issues in the projection), which is what allows such a montage to be possible.&lt;br /&gt;
&lt;br /&gt;
This is also the source of the perspective distortion experienced when using [[free look]] in the software renderer. Since the scene is actually always rendered horizontally, the perspective does not correspond to what the player instinctively expects from a change in view pitch.&lt;br /&gt;
&lt;br /&gt;
Another drawback of this method is that since the projection remains horizontal, a 90° pitch from the horizontal is technically impossible. The sliding window position follows a tangent curve, thus increasingly more lines are needed for each new degree. This can be seen on this article&#039;s illustration, as the pixels on the floor texture becomes increasingly stretched the lower you look. The maximum upward angle in ZDoom is 32°, and the maximum downward angle is 56°. A 90° angle would require an infinite number of lines to be rendered.&lt;br /&gt;
&lt;br /&gt;
The [[OpenGL]] renderer featured in [[GZDoom]] and [[Zandronum]] performs true 3D projection and does not use Y-shearing.&lt;br /&gt;
&lt;br /&gt;
The unfinished [[Polymost]] implementation would have provided true 3D projection, without Y-shearing.&lt;br /&gt;
[[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=IWAD&amp;diff=38594</id>
		<title>IWAD</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=IWAD&amp;diff=38594"/>
		<updated>2014-12-13T02:48:57Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Strife is sold now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{doomwiki}}An &#039;&#039;&#039;IWAD&#039;&#039;&#039; - short for &#039;&#039;Internal WAD&#039;&#039; - is the main resource file for a [[Doom]]-engine game, containing all the game&#039;s original sounds, levels, and graphics. [[ZDoom]] needs an IWAD file in order to play; without one the ZDoom engine has no game data to use.&lt;br /&gt;
&lt;br /&gt;
==Supported IWADs==&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
* Some file names are links to a page on the {{dwicon|nolink=|Entryway|Doom Wiki}} where you will find checksums for known versions of the concerned file.&lt;br /&gt;
* Some files have conflicting names; ZDoom provides you with possible aliases. Note that an IWAD is actually identified by its content rather than its name. Also, any [[archive format]] supported by ZDoom can technically be an IWAD.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!Game!!Name!!File name!!File aliases!!Notes and download links&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;5&amp;quot; valign=&amp;quot;top&amp;quot;|[[File:MiniDoomLogoIcon.png|link=]]&lt;br /&gt;
| [[Doom]] (Shareware) || {{c|{{dwicon|nolink=|DOOM1.WAD|doom1.wad}}}} || || Free download: {{idgames|id=7043|Doom shareware}}&lt;br /&gt;
|-&lt;br /&gt;
| Doom (Registered) || {{c|{{dwicon|nolink=|DOOM.WAD|doom.wad}}}} || || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| Ultimate Doom || {{c|{{dwicon|nolink=|DOOM.WAD|doom.wad}}}} || {{c|doomu.wad}} || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| Doom &amp;quot;BFG Edition&amp;quot; || {{c|{{dwicon|nolink=|DOOM.WAD|doom.wad}}}} || {{c|bfgdoom.wad}}, {{c|doombfg.wad}} || Commercial game included with {{dw|Doom 3: BFG Edition}} {{new}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Freedoom]]: Phase 1 || {{c|freedoom1.wad}} || {{c|freedoomu.wad}} || Free download: [http://www.nongnu.org/freedoom/download.html official site]&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;7&amp;quot; valign=&amp;quot;top&amp;quot;|[[File:MiniDoom2LogoIcon.png|link=]]&lt;br /&gt;
| [[Doom II]] || {{c|{{dwicon|nolink=|DOOM2.WAD|doom2.wad}}}} || || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| Doom II &amp;quot;BFG Edition&amp;quot; || {{c|{{dwicon|nolink=|DOOM2.WAD|doom2.wad}}}} || {{c|bfgdoom2.wad}}, {{c|doom2bfg.wad}} || Commercial game included with {{dw|Doom 3: BFG Edition}}, also loads {{c|{{dwicon|nolink=|NERVE.WAD|nerve.wad}}}} {{new}}&lt;br /&gt;
|-&lt;br /&gt;
| [[Final Doom]] &amp;amp;mdash; TNT: Evilution || {{c|{{dwicon|nolink=|TNT.WAD|tnt.wad}}}} || || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| Final Doom &amp;amp;mdash; The Plutonia Experiment || {{c|{{dwicon|nolink=|PLUTONIA.WAD|plutonia.wad}}}} || || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| FreeDM || {{c|freedm.wad}} ||  || Free download: [http://www.nongnu.org/freedoom/download.html official site]&lt;br /&gt;
|-&lt;br /&gt;
| [[Freedoom]]: Phase 2 || {{c|freedoom2.wad}} || {{c|freedoom.wad}} || Free download: [http://www.nongnu.org/freedoom/download.html official site] {{git|2490324}}&amp;amp;dagger;&lt;br /&gt;
|-&lt;br /&gt;
| French Doom II || &amp;lt;tt&amp;gt;doom2f.wad&amp;lt;/tt&amp;gt; || || Commercial game, {{idgames|id=16030||patch available}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; valign=&amp;quot;top&amp;quot;|[[File:MiniHereticLogoIcon.png|link=]]&lt;br /&gt;
| [[Heretic]] (Shareware) || {{c|{{dwicon|nolink=|HERETIC1.WAD|heretic1.wad}}}} || || Free download: {{idgames|id=7044|Heretic shareware}}&lt;br /&gt;
|-&lt;br /&gt;
| Heretic (Registered or Commercial) || {{c|{{dwicon|nolink=|HERETIC.WAD|heretic.wad}}}} || || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| [[Blasphemer]] || {{c|heretic.wad}} || {{c|blasphem.wad}}, {{c|blasphemer.wad}} || Free download: [https://code.google.com/p/blasphemer/ official site]&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot; valign=&amp;quot;top&amp;quot;|[[File:MiniHexenLogoIcon.png|link=]]&lt;br /&gt;
| [[Hexen]] (Demo) || {{c|{{dwicon|nolink=|HEXEN.WAD|hexen.wad}}}} || &amp;lt;tt&amp;gt;hexdemo.wad&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;hexendemo.wad&amp;lt;/tt&amp;gt; || Free download: {{idgames|id=7045|Hexen demo}}&lt;br /&gt;
|-&lt;br /&gt;
| Hexen (Full) || {{c|{{dwicon|nolink=|HEXEN.WAD|hexen.wad}}}} || || Commercial game&lt;br /&gt;
|-&lt;br /&gt;
| Hexen: Deathkings of the Dark Citadel || {{c|{{dwicon|nolink=|HEXDD.WAD|hexdd.wad}}}} ||  || Commercial game, requires Hexen&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot;|[[File:MiniStrifeLogoIcon.png|link=]]&lt;br /&gt;
| [[Strife]] (Teaser) || {{c|{{dwicon|nolink=|STRIFE0.WAD|strife0.wad}}}} || || Free download: {{idgames|id=5205|Strife teaser}}&lt;br /&gt;
|-&lt;br /&gt;
| Strife (Full) || {{c|{{dwicon|nolink=|STRIFE1.WAD|strife1.wad}}}} || {{c|strife.wad}} || Commercial game, also loads {{dwicon|nolink=|VOICES.WAD|&amp;lt;tt&amp;gt;voices.wad&amp;lt;/tt&amp;gt;}}&lt;br /&gt;
|-&lt;br /&gt;
|[[File:MiniChexLogoIcon.png|link=]] || [[Chex Quest]] || {{c|{{dwicon|nolink=|CHEX.WAD|chex.wad}}}} || || Commercial game no longer sold&lt;br /&gt;
|-&lt;br /&gt;
|[[File:MiniChex3LogoIcon.png|link=]] || [[Chex Quest 3]] || {{c|{{dwicon|nolink=|CHEX3.WAD|chex3.wad}}}} ||  || Free download: [http://www.chucktropolis.com/gamers.htm official site]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:MiniAction2LogoIcon.png|link=]] || [[Action Doom 2: Urban Brawl]] || {{c|{{dwicon|nolink=|ACTION2|action2.wad}}}} ||  || Free download: [http://action.mancubus.net/index.htm official site]&lt;br /&gt;
|-&lt;br /&gt;
| [[File:MiniHarmonyLogoIcon.png|link=]] || [[Harmony]] v1.1 || {{c|{{dwicon|nolink=|HARM1.WAD|harm1.wad}}}} ||  || Free download: [http://rabotik.nl/harmony.htm official site]&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot;| [[File:MiniHacxLogoIcon.png|link=]] || [[Hacx]] v1.2 || {{c|{{dwicon|nolink=|HACX.WAD|hacx.wad}}}} || || Free download: [http://drnostromo.com/hacx/page.php?content=download official site]&lt;br /&gt;
|-&lt;br /&gt;
|Hacx v2.0 || {{c|hacx.wad}} || {{c|hacx2.wad}} || Free download: {{DRDForum|t=5771|WIP download thread}}&lt;br /&gt;
|-&lt;br /&gt;
| [[File:MiniSquareLogoIcon.png|link=]] || [[The  Adventures of Square]] || {{c|square1.pk3}} ||  || Free download: [http://adventuresofsquare.com/ official site] {{git|49382a2}}&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5|&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5|&amp;amp;dagger; Freedoom up to v8.0 used to be distributed with the same IWAD names as Doom and Doom II ({{c|doom.wad}} and {{c|doom2.wad}}), and it also used to come with a limited version emulating the shareware version of Doom, using IWAD name {{c|doom1.wad}}. ZDoom already supported non-conflicting aliases {{c|freedoom}}, {{c|freedoom1}}, and {{c|freedoomu}}. In January 2014, the Freedoom team decided to officially use distinct IWAD names as an effort to move away from &amp;quot;IWAD replacement&amp;quot; and into &amp;quot;separate game with its own identity&amp;quot;, settling on the IWAD names {{c|freedoom1}} and {{c|freedoom2}}. ZDoom only required the addition of the {{c|freedoom2}} alias to fully support newer versions of Freedoom.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
ZDoom will detect any of those present in its search path and let you choose at startup which game to play (if it doesn&#039;t, [[Frequently Asked Questions#Q. I accidently checked the box which prevents Zdoom from letting me pick my IWAD.21 How do I get it back.3F|see the FAQ]]). In addition to them, some &amp;quot;total conversion&amp;quot;-type mods, such as [[Wolfenstein 3D TC]], can be played as their own IWAD; however since they are not detected as such by ZDoom, you need to use the -iwad [[command line parameter]].&lt;br /&gt;
&lt;br /&gt;
In order to play a custom level designed for any of the above games you have to have that particular game&#039;s full IWAD (loading PWAD with shareware, demo or teaser versions is disabled). If you do not have the necessary IWAD, or if you have an old, [[IWAD Patching|unpatched]] version of the IWAD in question, you will get an error message on startup. (But often old versions are accepted too.)&lt;br /&gt;
&lt;br /&gt;
The IWAD file(s) should be placed into the same directory as the ZDoom executable. You may also configure other directories for ZDoom to search in the zdoom.ini file. On Linux, the directories &amp;lt;tt&amp;gt;$HOME/.zdoom&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;/usr/local/share&amp;lt;/tt&amp;gt; are checked by default. Finally, if you have bought Ultimate Doom, Doom II, Final Doom, Heretic, or Hexen from Steam, ZDoom is able to find the IWADs directly in the Steam folder and you do not need to move or copy them to ZDoom&#039;s folder.&lt;br /&gt;
&lt;br /&gt;
==Obtaining IWADs==&lt;br /&gt;
As noted aboved, some IWADs can be downloaded freely; however most &amp;quot;full&amp;quot; games are not and must be bought from one of the following sources:&lt;br /&gt;
;[http://store.steampowered.com/search/?sort_by=Name&amp;amp;sort_order=ASC&amp;amp;publisher=id+Software&amp;amp;category2=2&amp;amp;price=0%2C10&amp;amp;genre=Action Steam]&lt;br /&gt;
:This store offers downloadable versions of &#039;&#039;Ultimate Doom&#039;&#039;, &#039;&#039;Doom II: Hell on Earth&#039;&#039;, &#039;&#039;Final Doom&#039;&#039;, &#039;&#039;Heretic: Shadow of the Serpent Riders&#039;&#039;, &#039;&#039;Hexen: Beyond Heretic&#039;&#039;, &#039;&#039;Hexen: Deathkings of the Dark Citadel&#039;&#039;, and &#039;&#039;Strife&#039;&#039;; as well as the &#039;&#039;Master Levels for Doom II&#039;&#039; which is a set of PWAD, not an IWAD.&lt;br /&gt;
:Warning: following the release of &#039;&#039;{{dw|Doom 3: BFG Edition}}&#039;&#039;, the &#039;&#039;Master Levels&#039;&#039; are no longer available to purchase individually but can be bought as part of the Doom Classic Complete Pack.&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; The version of &#039;&#039;Hexen: Death Kings&#039;&#039; available on Steam is not patched. You need to download and apply the [http://www.doomworld.com/idgames/index.php?id=7022 Death Kings 1.1 patch] first. (The &amp;quot;readme.txt&amp;quot; file it tries to patch has been renamed readme-dk.txt by Steam, but is not important.) All other IWADs from Steam are fully patched.&lt;br /&gt;
;[http://www.amazon.com/ Amazon.com], [http://www.ebay.com/ eBay.com], etc.&lt;br /&gt;
:Second-hand copies of the original games can be found on such sites. While less reliable than the official Id Software and Steam stores, they are the only remaining sources for legitimate copies of &#039;&#039;Strife: Quest for the Sigil&#039;&#039; and the original &#039;&#039;Chex Quest&#039;&#039;.&lt;br /&gt;
;Flea markets, used-games bins in brick-and-mortar stores, etc.&lt;br /&gt;
:It&#039;s mostly a matter of luck, but they can still sometimes be found this way.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[WAD]]&lt;br /&gt;
*[[PWAD]]&lt;br /&gt;
[[Category:Glossary]][[Category:Supported games|*]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=38558</id>
		<title>Compile ZDoom on Windows</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Windows&amp;diff=38558"/>
		<updated>2014-12-02T17:10:43Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Graf accidentally reverted a change.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
To build ZDoom on Windows, you have a few options:&lt;br /&gt;
* Use Visual C++ 2005 ([http://msdn2.microsoft.com/en-us/library/60k1461a(VS.80).aspx Visual C++ General Information])&lt;br /&gt;
* Use Visual Studio Express 2013 for Windows Desktop&lt;br /&gt;
* Use MinGW&lt;br /&gt;
&lt;br /&gt;
Although Visual C++ 2008-2013 are supported for building, release versions of ZDoom are built with Visual C++ 2005. GZDoom releases are built with Visual C++ 2013.&lt;br /&gt;
&lt;br /&gt;
If you only have Windows 98 or ME, then you &#039;&#039;must&#039;&#039; use MinGW.&lt;br /&gt;
{{clear}}&lt;br /&gt;
== Required downloads for both Visual C++ and MinGW ==&lt;br /&gt;
{| align=right border=0 cellpadding=4 cellspacing=4 style=&amp;quot;border: solid 1px #a3bfb1; background-color: #cef2e0; padding: 0.4em 1em; width: 50%; margin: 1em auto; text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Graficon.gif|link=]]&lt;br /&gt;
| &#039;&#039;&#039;Note:&#039;&#039;&#039; To solve compilation problems of gl_clock.cpp with {{c|_interlockedbittestandset}} and {{c|_interlockedbittestandreset}}, see {{DRDForum|p=43104|this thread}}. To compile GZDoom you must use CMake with a compatible compiler, it is recommended to use Visual C++ 2013, but older compilers will of course still work. The prebuilt VC++ 2005 solution is no longer provided for compiling GZDoom!&lt;br /&gt;
|}&lt;br /&gt;
* [http://nasm.sourceforge.net/ NASM] Version 2.0+ required&lt;br /&gt;
** [http://yasm.tortall.net/ YASM] is required instead if building for Win64.&lt;br /&gt;
* FMOD Ex [http://www.fmod.org/download/fmodex/api/Win/fmodapi42631win32-installer.exe 32-bit] or [http://www.fmod.org/download/fmodex/api/Win/fmodapi42631win64-installer.exe 64-bit]&lt;br /&gt;
* The ZDoom source code, either from an &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://zdoom.org/download.html official release]&amp;lt;/span&amp;gt; or from the [[Git repository]].&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Visual C++ 2005-2013 ==&lt;br /&gt;
The easiest way to compile ZDoom on Windows is to use CMake. This has the added advantage of working with newer versions of Visual C++.  The instructions are the same for each, so to avoid redundancy this guide only provides instructions for the latest.&lt;br /&gt;
&lt;br /&gt;
=== Required Downloads for Visual C++ 2013 ===&lt;br /&gt;
* [http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs#d-community Visual Studio Express 2013 for Windows Desktop] (Community Edition will probably work as well.)&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx Windows Software Development Kit (SDK) for Windows 8.1]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX Software Development Kit (June 2010)]&lt;br /&gt;
* [http://www.cmake.org CMake] Version 2.8+ recommended&lt;br /&gt;
&lt;br /&gt;
Download and install each of the above.&lt;br /&gt;
&lt;br /&gt;
=== Compiling ===&lt;br /&gt;
{{note|For compiling with VS 2013 builds compatible with Windows XP, you need to run the following command line first (or after deleting the CMake cache), replacing &amp;lt;path&amp;gt; as appropriate:&lt;br /&gt;
 cmake &amp;lt;path&amp;gt; -G &amp;quot;Visual Studio 12&amp;quot; -T &amp;quot;v120_xp&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
1. Run cmake-gui.exe&lt;br /&gt;
* In &amp;quot;Where is the source code:&amp;quot; browse to the zdoom folder from above&lt;br /&gt;
* In &amp;quot;Where to build the binaries:&amp;quot; create a build directory in the zdoom folder above&lt;br /&gt;
* Click configure&lt;br /&gt;
* Select &amp;quot;Visual Studio 12&amp;quot; or &amp;quot;Visual Studio 12 Win64&amp;quot; based on the FMOD version you installed.&lt;br /&gt;
* Click Finish&lt;br /&gt;
 &lt;br /&gt;
2. After cmake configure finishes, it will likely fail because it couldn&#039;t find some things:&lt;br /&gt;
* set NASM_PATH browsing to folder where you installed nasm earlier and select &#039;nasm.exe&#039; (e.g. C:\Program Files (x86)\nasm\nasm.exe)&lt;br /&gt;
* set FMOD_INCLUDE_DIR to &#039;api/inc&#039; folder inside folder where you installed fmod earlier (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\inc)&lt;br /&gt;
* set FMOD_LIBRARY to &#039;api/lib/fmodex_vc.lib&#039; inside fmod folder (e.g. C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\lib\fmodex_vc.lib). If you are compiling for 64-bit systems set FMOD_LIBRARY to fmodex64_vc.lib instead.&lt;br /&gt;
 &lt;br /&gt;
3. Click &#039;Configure&#039;&lt;br /&gt;
* If this fails with the message &#039;Could not find DirectX 9 libraries&#039;, you likely have an older DirectX SDK or installed the SDK into a non-standard location.  To workaround this, you&#039;ll likely have to set the following cmake variables manually in the cmake GUI dialog (following is only an example):&lt;br /&gt;
  D3D_INCLUDE_DIR    C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include&lt;br /&gt;
  DX_dinput8_LIBRARY C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dinput8.lib&lt;br /&gt;
  DX_dxguid_LIBRARY  C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib&lt;br /&gt;
 &lt;br /&gt;
4. Click &#039;Generate&#039;. After this, cmake should have successfully created &#039;zdoom.sln&#039;, and &#039;ALL_BUILD.vcxproj.user&#039; files in the directory given for &amp;quot;Where to build the binaries:&amp;quot; (look at timestamp on the files as a sanity check).  If not, something&#039;s gone wrong.&lt;br /&gt;
 &lt;br /&gt;
5. Close cmake&lt;br /&gt;
 &lt;br /&gt;
6. Open &#039;zdoom.sln&#039; file in the build folder created earlier (double-clicking or within VS makes no difference)&lt;br /&gt;
 &lt;br /&gt;
7. Click Build -&amp;gt; Build Solution (NOTE: The build will fail if you have the Debug or Release folder inside the zdoom folder open due to one of the post-build steps.)&lt;br /&gt;
 &lt;br /&gt;
8. When the build successfully completes (there should be no failures):&lt;br /&gt;
* copy the &#039;fmodex.dll&#039; or &#039;fmodex64.dll&#039; to the zdoom/Debug folder (e.g. cp C:\Program Files (x86)\FMOD SoundSystem\FMOD Programmers API Windows\api\fmodex.dll C:\Users\Shawn\Devel\zdoom\Debug)&lt;br /&gt;
&lt;br /&gt;
9. Now zdoom.exe can be opened from the zdoom/Debug folder, or from within Visual Studio using Debug -&amp;gt; Start Debugging (F5) when the solution is selected.  Assuming it found your copy of installed Doom (which if you&#039;ve installed The Ultimate Doom from Steam, it will automatically), the game should launch after a few moments and go to the main menu.&lt;br /&gt;
&lt;br /&gt;
== Visual C++ 2005 (Alternative) ==&lt;br /&gt;
&lt;br /&gt;
Compiling ZDoom on Windows is essentially easier than compiling it on Linux. All it takes is a few simple downloads and changing settings on Visual C++ 2005. Remember, this is directed to someone who never used Visual C++ 2005 before.&lt;br /&gt;
&lt;br /&gt;
=== Downloads for Visual C++ 2005 ===&lt;br /&gt;
First off, you must download some utilities to get started. These utilities are all free.&lt;br /&gt;
&lt;br /&gt;
* [http://go.microsoft.com/fwlink/?linkid=57034 Visual C++ 2005 Express Edition] -- This is the ISO download for Visual C++ Express Edition, and offers many of the same features as the paid version.&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/windows/bb980924 Windows Platform SDK] -- The Express Edition of Visual C++ does not come with support for building native Windows applications out-of-the-box. As such, you must also download and install the [http://download.microsoft.com/download/2/3/f/23f86204-39ee-4cd7-9a51-db19c9a8f8c4/Setup.exe Platform SDK] before you can build ZDoom with it.&lt;br /&gt;
* [http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe DirectX SDK] -- You will need the Feb 2010 Microsoft DirectX SDK package as well. Starting with the June 2010 package, DirectDraw is no longer supported, preventing compilation of ZDoom.&lt;br /&gt;
&lt;br /&gt;
=== After the downloads ===&lt;br /&gt;
After you&#039;ve downloaded everything, you must install all of them. You must remember the directories you&#039;ve installed NASM and the Subversion tools into. CMake, DirectX and FMOD Ex install by default into the Program Files directory.&lt;br /&gt;
&lt;br /&gt;
glew must be extracted to your general development folder where you placed the zdoom source folder.&lt;br /&gt;
&lt;br /&gt;
=== Set up directories ===&lt;br /&gt;
When you&#039;re done installing, open Visual C++ 2005. (Start -&amp;gt; All Programs -&amp;gt; Visual C++ 2005 Express Edition -&amp;gt; Microsoft Visual C++ 2005 Express Edition)&lt;br /&gt;
&lt;br /&gt;
When opened, go to Tools -&amp;gt; Options in the menu bar, you should get a dialog box that says &amp;quot;Options&amp;quot; in the title bar. Click the plus sign that&#039;s next to &amp;quot;Projects and Solutions&amp;quot; and click &amp;quot;VC++ Directories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the drop-down box under the label that says &amp;quot;Show Directories For&amp;quot; says &amp;quot;Executable Files&amp;quot;, you have to set up NASM here (if not, select it now). Click the button that has a picture of a folder on it and select the new line it creates, and press the button that says &amp;quot;...&amp;quot; on it. In the Open Folder Dialog, select the directory where you unzipped NASM (such as, perhaps, C:\nasm-2.00), and another entry for the Subversion tools (in case you installed them). Make sure it points to the location of the executables (i.e. &#039;nasm.exe&#039;, &#039;svnversion.exe&#039;), and not the root directory (unless the executables are there).&lt;br /&gt;
&lt;br /&gt;
Then select drop-down box under the label that says &amp;quot;Show Directories For&amp;quot; and select &amp;quot;Include Files&amp;quot;. Check to see that &amp;quot;$(DXSDK_DIR)Include&amp;quot; and &amp;quot;C:\Program Files\FMOD SoundSystem\FMOD Programmers API Win32\api\inc&amp;quot; are there. If they aren&#039;t, add them. Next, go to &amp;quot;Library Files&amp;quot; in the drop-down box and make two more new lines. Enter &amp;quot;$(DXSDK_DIR)Lib\x86&amp;quot; for one and &amp;quot;C:\Program Files\FMOD SoundSystem\FMOD Programmers API Win32\api\lib&amp;quot; for the other.&lt;br /&gt;
&lt;br /&gt;
If you installed the FMOD SDK somewhere else, change &amp;quot;C:\Program Files\FMOD SoundSystem\FMOD Programmers API Win32&amp;quot; for the include and library files lists to the appropriate directory. %DXSDK_DIR% is an environment variable that is created when you install the DirectX SDK that points to the directory where you installed it. By using this variable (you must type it in by hand; you cannot use the open folder dialog), you can easily upgrade your DirectX SDK at anytime without having to change these directories again.&lt;br /&gt;
&lt;br /&gt;
Select &amp;quot;OK&amp;quot; on the dialog box, then try to compile ZDoom (&#039;&#039;&#039;Build&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;Build Solution&#039;&#039;&#039; or F7). If successful, it should compile error-less.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
Note: If it doesn&#039;t build correctly, try adding the Windows SDK library and include files to the directories as well. &lt;br /&gt;
&lt;br /&gt;
Also, if your sound/music does not work, try putting fmodex.dll in your ZDoom directory&lt;br /&gt;
&lt;br /&gt;
== MinGW ==&lt;br /&gt;
&lt;br /&gt;
=== Downloads for MinGW ===&lt;br /&gt;
&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=240780 The MinGW installer]&lt;br /&gt;
* [http://www.tdragon.net/recentgcc/ TDM&#039;s updated build of MinGW with GCC]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=24963 The MSYS installer] (optional for Windows 2000 or better)&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=2435&amp;amp;package_id=11550 The GCC win32api files]&lt;br /&gt;
* [http://alleg.sourceforge.net/files/dx80_mgw.zip Minimal DirectX 8 headers] from [http://alleg.sourceforge.net/wip.html Allegro]&lt;br /&gt;
* [http://www.cmake.org/ CMake]&lt;br /&gt;
&lt;br /&gt;
=== Installing everything ===&lt;br /&gt;
&lt;br /&gt;
* Run the MinGW installer. When it asks which MinGW package you wish to install, you can choose either &amp;quot;Current&amp;quot; or &amp;quot;Candidate&amp;quot;. &amp;quot;Candidate&amp;quot; is recommended because it is newer. When you need to choose the components, you must install at least the &amp;quot;MinGW base tools&amp;quot; and &amp;quot;g++ compiler.&amp;quot; If you are not using MSYS, then you must also install &amp;quot;MinGW Make.&amp;quot; Then unpack the 4.3.0 alpha binaries on top of your MinGW directory.&lt;br /&gt;
* If you downloaded the MSYS installer, run it now.&lt;br /&gt;
* Unpack the win32api files on top of your MinGW directory. If you didn&#039;t change it when you installed, this will be c:\mingw. The win32api headers are missing some definitions that ZDoom needs. Open mingw\include\commctrl.h and search for PBS_VERTICAL. Add these lines just underneath its definition:&lt;br /&gt;
 #if (_WIN32_WINNT &amp;gt;= 0x0501)&lt;br /&gt;
 #define PBS_MARQUEE     0x08&lt;br /&gt;
 #define PBM_SETMARQUEE  (WM_USER+10)&lt;br /&gt;
 #endif&lt;br /&gt;
* Unzip the DirectX 8 headers on top of your MinGW directory as well.&lt;br /&gt;
* You can unzip NASM anywhere you want. To keep everything in one place, a good place to put nasmw.exe and ndisasmw.exe is inside your MinGW directory at c:\mingw\bin.&lt;br /&gt;
&lt;br /&gt;
=== Preparing for compiling ===&lt;br /&gt;
&lt;br /&gt;
* Unpack the ZDoom source code wherever you like.&lt;br /&gt;
* Run cmake-gui. You can find it in the start menu after installing [http://www.cmake.org/ CMake].&lt;br /&gt;
** In the box labeled &amp;quot;Where is the source code:&amp;quot; point it to the directory where you put the source code. (e.g. E:/zdoom/trunk)&lt;br /&gt;
** In the box labeled &amp;quot;Where to build the binaries:&amp;quot; create a subdirectory in the path to the source code to contain the build files (e.g. E:/zdoom/trunk/release).&lt;br /&gt;
** Click the Configure button at the bottom of the window. If the build directory does not exist, it will ask to create it. Let it.&lt;br /&gt;
** You will be asked which generator to use. If you are using Windows 9x, then you &#039;&#039;must&#039;&#039; select MSYS Makefiles. If are are using Windows 2000 or later, then you may select either MSYS Makefiles or MinGW Makefiles. Make sure Use default native compilers is selected and click Finish.&lt;br /&gt;
** Check the configuration options to make sure they are to your liking. In particular, pay attention to:&lt;br /&gt;
*** CMAKE_BUILD_TYPE: This defaults to Debug. You probably want to change it to Release.&lt;br /&gt;
*** DYN_FLUIDSYNTH: If you want support for fluidsynth.dll, check this.&lt;br /&gt;
*** FMOD_INCLUDE_DIR: Make sure this points to *Where you installed FMOD*/api/inc&lt;br /&gt;
*** FMOD_LIBRARY: Make sure this points to *Where you installed FMOD*/api/lib/libfmodex.a&lt;br /&gt;
** If you made any changes, press Configure again.&lt;br /&gt;
** Now press Generate. This will create a Makefile in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling with MSYS ===&lt;br /&gt;
&lt;br /&gt;
If you selected MSYS Makefiles as the generator above, then you must compile using MSYS.&lt;br /&gt;
&lt;br /&gt;
* Run MSYS. The installer should have created a start menu shortcut for you.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:/zdoom/trunk/release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory. &amp;lt;pre&amp;gt;make&amp;lt;/pre&amp;gt;&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
=== Compiling without MSYS ===&lt;br /&gt;
&lt;br /&gt;
If you selected MinGW Makefiles as the generator above, the process for compiling is as essentially the same as for MSYS Makefiles, except that you use a regular command prompt window instead of MSYS.&lt;br /&gt;
&lt;br /&gt;
* Open a Command Prompt window. You can either use Start -&amp;gt; Run... and type &amp;quot;cmd&amp;quot; or you can find it in Start -&amp;gt; All Programs -&amp;gt; Accessories -&amp;gt; Command Prompt.&lt;br /&gt;
* C:\mingw\bin should be in your path. To set this for just the current command prompt, use the command &amp;lt;pre&amp;gt;set PATH=c:\mingw\bin;%PATH%&amp;lt;/pre&amp;gt; To make this automatic for all command prompts, you need to edit the Environment Variables on the Advanced tab of the System Properties control panel.&lt;br /&gt;
* Change to the directory you chose as the build directory. e.g. For the example above &amp;lt;pre&amp;gt;cd e:\zdoom\trunk\release&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code from inside the build directory&amp;lt;pre&amp;gt;mingw32-make&amp;lt;/pre&amp;gt; You can also use a multithreaded make to speed up compilation:&amp;lt;pre&amp;gt;mingw32-make -j2&amp;lt;/pre&amp;gt; Just replace the 2 with however many threads you want to use.&lt;br /&gt;
* This will leave a &amp;lt;tt&amp;gt;zdoom.exe&amp;lt;/tt&amp;gt; in the build directory.&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Mac_OS_X&amp;diff=38551</id>
		<title>Compile ZDoom on Mac OS X</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Mac_OS_X&amp;diff=38551"/>
		<updated>2014-11-28T02:34:48Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Requirements */ I don&amp;#039;t see a reason to link to a specific version of libSDL.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compiling ZDoom on Mac OS X may seem like a daunting task, but it&#039;s actually pretty similar to [[Compile ZDoom on Linux|the process for Linux]].&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A Mac computer with an Intel or PowerPC processor.&lt;br /&gt;
* Mac OS X 10.4 Tiger and above&lt;br /&gt;
* Latest version of Xcode, available [http://developer.apple.com/tools/xcode/ here] (requires free registration)&lt;br /&gt;
** Make sure you install GCC 4.2 and the Mac OS X 10.4u SDK, which should both be included in the Xcode package.&lt;br /&gt;
* [http://www.cmake.org/cmake/resources/software.html CMake 2.4 or later]&lt;br /&gt;
* &amp;lt;!-- broken dead link {{LatestFMOD|m|msg=FMOD Ex v{{LatestFMOD/Version|.}}}} --&amp;gt; [http://www.fmod.org/download/fmodex/api/Mac/fmodapi43600mac-installer.dmg FMOD Ex]&lt;br /&gt;
* [http://libsdl.org/download-1.2.php libSDL 1.2] (Only needed for header files.)&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
== Configuring with CMake ==&lt;br /&gt;
&lt;br /&gt;
When you run the CMake application, you will be greeted with a window asking for a source code path and a build directory. The directions for CMake on Linux apply here, except with a GUI.&lt;br /&gt;
&lt;br /&gt;
After you click Configure, you will end up having to tell CMake where the FMOD library is located.  This should be &amp;quot;/Developer/FMOD Programmers API Mac/api/libfmodex.dylib&amp;quot;.  In addition set CMAKE_BUILD_TYPE to &amp;quot;Release&amp;quot;.  As of this writing you will also want to remove -O3 from CMAKE_CXX_FLAGS_RELEASE, set CMAKE_OSX_ARCHITECTURES to &amp;quot;i386&amp;quot; or &amp;quot;ppc&amp;quot; depending on your processor, and check the option for NO_ASM (you may need to switch to advanced view to see these options).&lt;br /&gt;
&lt;br /&gt;
After this, click &amp;quot;Configure&amp;quot; one more time and you should be good. When you click &amp;quot;Generate&amp;quot;, select the &amp;lt;tt&amp;gt;Unix Makefiles&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
=== MacPorts ===&lt;br /&gt;
If you are using {{wp|MacPorts}} to compile ZDoom, use the following command line to create the makefiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=&amp;quot;/Developer/FMOD Programmers API Mac/api/lib/libfmodex.dylib&amp;quot; \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=&amp;quot;/Developer/FMOD Programmers API Mac/api/inc/&amp;quot; \&lt;br /&gt;
-DNO_ASM=true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring for cross compiling ==&lt;br /&gt;
{{warning|ZDoom does not support building universal binaries directly. Attempting to do so will likely succeed, but the resulting binary will not run on all architectures.}}&lt;br /&gt;
Skip this step if you are doing a native build. Since ZDoom uses some tools to generate files during the build and sets architecture specific optimizations for some files, there may be additional steps required to build for a non-native architecture.&lt;br /&gt;
&lt;br /&gt;
=== Cross compiling with Rosetta ===&lt;br /&gt;
If you are running OS X 10.4-10.6 on an Intel system, you can build PowerPC binaries natively. Simply set CMAKE_OSX_ARCHITECTURES to ppc and everything should build fine.&lt;br /&gt;
&lt;br /&gt;
=== Cross compiling without Rosetta ===&lt;br /&gt;
If your system does not have Rosetta, a universal binary can still be built. First you must create a native build directory following the directions without this step. This will create an ImportExecutables.cmake in your build directory. This file tells CMake where to find a pre-existing build of the tools needed.&lt;br /&gt;
&lt;br /&gt;
First enable FORCE_CROSSCOMPILE and then feed the ImportExecutables.cmake into IMPORT_EXECUTABLES variable. Finally set CMAKE_OSX_ARCHITECTURES to the desired target arch along with CMAKE_OSX_SYSROOT/CMAKE_OSX_DEPLOYMENT_TARGET.&lt;br /&gt;
&lt;br /&gt;
=== Making a universal binary ===&lt;br /&gt;
Once you&#039;ve built ZDoom for each architecture, you can combine the resulting binaries using the lipo tool.&lt;br /&gt;
 lipo -arch i386 /path/to/zdoom.i386 -arch x86_64 /path/to/zdoom.x86_64 -arch ppc /path/to/zdoom.ppc -create -output zdoom&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
Open a terminal and cd to the trunk directory.  Type &amp;quot;make&amp;quot; to compile.  Assuming everything was done correctly you should have a working ZDoom application bundle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Mac_OS_X&amp;diff=38550</id>
		<title>Compile ZDoom on Mac OS X</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Mac_OS_X&amp;diff=38550"/>
		<updated>2014-11-26T19:51:43Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Instruction updates for Cocoa.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compiling ZDoom on Mac OS X may seem like a daunting task, but it&#039;s actually pretty similar to [[Compile ZDoom on Linux|the process for Linux]].&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A Mac computer with an Intel or PowerPC processor.&lt;br /&gt;
* Mac OS X 10.4 Tiger and above&lt;br /&gt;
* Latest version of Xcode, available [http://developer.apple.com/tools/xcode/ here] (requires free registration)&lt;br /&gt;
** Make sure you install GCC 4.2 and the Mac OS X 10.4u SDK, which should both be included in the Xcode package.&lt;br /&gt;
* [http://www.cmake.org/cmake/resources/software.html CMake 2.4 or later]&lt;br /&gt;
* &amp;lt;!-- broken dead link {{LatestFMOD|m|msg=FMOD Ex v{{LatestFMOD/Version|.}}}} --&amp;gt; [http://www.fmod.org/download/fmodex/api/Mac/fmodapi43600mac-installer.dmg FMOD Ex]&lt;br /&gt;
* [http://www.libsdl.org/release/SDL-1.2.14.dmg libSDL 1.2.14] (Only needed for header files.)&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
== Configuring with CMake ==&lt;br /&gt;
&lt;br /&gt;
When you run the CMake application, you will be greeted with a window asking for a source code path and a build directory. The directions for CMake on Linux apply here, except with a GUI.&lt;br /&gt;
&lt;br /&gt;
After you click Configure, you will end up having to tell CMake where the FMOD library is located.  This should be &amp;quot;/Developer/FMOD Programmers API Mac/api/libfmodex.dylib&amp;quot;.  In addition set CMAKE_BUILD_TYPE to &amp;quot;Release&amp;quot;.  As of this writing you will also want to remove -O3 from CMAKE_CXX_FLAGS_RELEASE, set CMAKE_OSX_ARCHITECTURES to &amp;quot;i386&amp;quot; or &amp;quot;ppc&amp;quot; depending on your processor, and check the option for NO_ASM (you may need to switch to advanced view to see these options).&lt;br /&gt;
&lt;br /&gt;
After this, click &amp;quot;Configure&amp;quot; one more time and you should be good. When you click &amp;quot;Generate&amp;quot;, select the &amp;lt;tt&amp;gt;Unix Makefiles&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
=== MacPorts ===&lt;br /&gt;
If you are using {{wp|MacPorts}} to compile ZDoom, use the following command line to create the makefiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=&amp;quot;/Developer/FMOD Programmers API Mac/api/lib/libfmodex.dylib&amp;quot; \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=&amp;quot;/Developer/FMOD Programmers API Mac/api/inc/&amp;quot; \&lt;br /&gt;
-DNO_ASM=true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring for cross compiling ==&lt;br /&gt;
{{warning|ZDoom does not support building universal binaries directly. Attempting to do so will likely succeed, but the resulting binary will not run on all architectures.}}&lt;br /&gt;
Skip this step if you are doing a native build. Since ZDoom uses some tools to generate files during the build and sets architecture specific optimizations for some files, there may be additional steps required to build for a non-native architecture.&lt;br /&gt;
&lt;br /&gt;
=== Cross compiling with Rosetta ===&lt;br /&gt;
If you are running OS X 10.4-10.6 on an Intel system, you can build PowerPC binaries natively. Simply set CMAKE_OSX_ARCHITECTURES to ppc and everything should build fine.&lt;br /&gt;
&lt;br /&gt;
=== Cross compiling without Rosetta ===&lt;br /&gt;
If your system does not have Rosetta, a universal binary can still be built. First you must create a native build directory following the directions without this step. This will create an ImportExecutables.cmake in your build directory. This file tells CMake where to find a pre-existing build of the tools needed.&lt;br /&gt;
&lt;br /&gt;
First enable FORCE_CROSSCOMPILE and then feed the ImportExecutables.cmake into IMPORT_EXECUTABLES variable. Finally set CMAKE_OSX_ARCHITECTURES to the desired target arch along with CMAKE_OSX_SYSROOT/CMAKE_OSX_DEPLOYMENT_TARGET.&lt;br /&gt;
&lt;br /&gt;
=== Making a universal binary ===&lt;br /&gt;
Once you&#039;ve built ZDoom for each architecture, you can combine the resulting binaries using the lipo tool.&lt;br /&gt;
 lipo -arch i386 /path/to/zdoom.i386 -arch x86_64 /path/to/zdoom.x86_64 -arch ppc /path/to/zdoom.ppc -create -output zdoom&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
Open a terminal and cd to the trunk directory.  Type &amp;quot;make&amp;quot; to compile.  Assuming everything was done correctly you should have a working ZDoom application bundle.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=CVARs:Display&amp;diff=38542</id>
		<title>CVARs:Display</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=CVARs:Display&amp;diff=38542"/>
		<updated>2014-11-25T15:01:06Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Video adapter */ Cocoa back end supports vsync.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These CVARs control various aspects of ZDoom&#039;s renderer and options relating to the in-game display.&lt;br /&gt;
&lt;br /&gt;
See the [[CVARs]] article for general information on how to access and edit variables.&lt;br /&gt;
__TOC__&lt;br /&gt;
==Game options==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|addrocketexplosion}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:When false, {{class|rocket}} explosions are drawn with normal translucency. When true, rocket explosions use additive translucency instead, producing a brighter effect. This affects the death state sequence of any {{class|actor}} with the {{Flag|DEHEXPLOSION}} flag.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|crosshair}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:If this cvar is non-zero, it draws a [[crosshair]]. If this cvar is negative, the crosshair is translucent, otherwise it is opaque. The specific crosshair drawn depends on the value of this cvar.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|crosshaircolor}}&#039;&#039;&#039; ([[CVARs#color|color]])&lt;br /&gt;
:Default: &amp;quot;ff 00 00&amp;quot; {{color|#ff0000}}&lt;br /&gt;
:This is the crosshair&#039;s color if crosshairhealth is false. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|crosshairforce}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:By defaults mods may use [[A_SetCrosshair]] in a weapon definition to designate a [[crosshair]] to use for that weapon.  If you want to override this and force the game to use your own selected crosshair, set this CVAR to true.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|crosshairgrow}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Set this to true if you want the [[crosshair]] to temporarily enlarge each time you pick up an item. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|crosshairhealth}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:When true, the [[crosshair]]&#039;s color reflects your current health. Green is healthy, red is near death, and intermediate colors are somewhere in between. Set this to false, if you want the crosshair to have a constant color (specified by the crosshaircolor cvar) instead.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|crosshairscale}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Set this to true if you want the [crosshair]] to always appear the same size at all resolutions. Leaving it at false causes the crosshair to be drawn normally.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|paletteflash}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Affects the [[palette flash]]es that happen in certain circumstances, notably in &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;. The value is combined from several palette flash flags.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|pf_hazard}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If true, ZDoom uses accurate palette flashes for delayed poisoning from &#039;&#039;Strife&#039;&#039;&#039;s [[damaging floor]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|pf_hexenweaps}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If true, ZDoom uses accurate palette flashes for the {{Class|MWeapBloodscourge|Bloodscourge}} and {{Class|CWeapWraithverge|Wraithverge}} [[weapon]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|pf_ice}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If true, ZDoom uses accurate palette flashes for [[frozen death]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|pf_poison}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If true, ZDoom uses accurate palette flashes for [[poison]] damage.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|nomonsterinterpolation}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
: Default: false&lt;br /&gt;
: Because [[ZDoom]] allows the framerate to go above 35 FPS, [[monster]] movement is interpolated by default so they move more smoothly and take advantage of the additional frames. However, the actual AI that moves them is still limited to the normal 35 [[tic]]s per second rate. In some situations, this may cause jerky or inaccurate movement when ZDoom attempts to interpolate. This option can be enabled so that monsters will only visibly move at the 35 FPS rate.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|transsouls}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0.75&lt;br /&gt;
:Defines the level of alpha transparency for [[Classes:LostSoul|lost souls]] and other actors with the SoulTrans {{Property|RenderStyle}}. Values are clamped to stay between 0.25 and 1.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|telezoom}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:When true, teleporters will create an &#039;&#039;{{wp|Unreal}}&#039;&#039;-like zooming effect when you use them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|wipetype}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Selects the type of [[screen wipe]] to use. There are currently four possible settings for this cvar:&lt;br /&gt;
:*0:No wipe&lt;br /&gt;
:*1:Melt&lt;br /&gt;
:*2:Burn&lt;br /&gt;
:*3:Crossfade&lt;br /&gt;
&lt;br /&gt;
==Chase camera==&lt;br /&gt;
* &#039;&#039;&#039;{{LE|chase_dist}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 90.0&lt;br /&gt;
:This is how far away from the player the [[chasecam]] likes to be, but it will get closer as necessary to avoid going inside walls.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|chase_height}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: -8.0&lt;br /&gt;
:This is the base height above the top of the player&#039;s head at which the [[chasecam]] will be positioned. Looking up and down will move the camera in the opposite direction so that the player stays at approximately the same height on the screen. Large values of this CVAR (either positive or negative) will produce strange output.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|chasedemo}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If this CVAR is true, then [[demo]]s will automatically start with the [[chasecam]] active.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_deathcamera}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If this CVAR is true, the player automatically goes into chasecam mode when dying. This use of the chasecam is not considered a cheat.&lt;br /&gt;
&lt;br /&gt;
==Decals==&lt;br /&gt;
These CVARs affect [[decal]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_bloodsplats}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:When true, whenever something bleeds, it has a chance of leaving blood spots on nearby walls. Setting this to false might help performance on low-end machines.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_maxdecals}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1024&lt;br /&gt;
:This is the maximum number of decals that can exist in the game at one time. Decals are graphics that are placed on walls in response to blood splatter and projectile impacts.  Setting this to 0 will disable decals entirely.  This CVAR can be set to a maximum value of 2,147,483,647 which would allow an infinite number of decals for all intents and purposes.  Be aware, however, that hundreds of decals visible on the screen at one time can cause lag even on fast computers.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_missiledecals}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Set this to false if you don&#039;t want exploding missiles to leave scorch marks.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_spreaddecals}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:ZDoom clips decals to sidedefs. In order to hide this, the game will create as many duplicate decals on adjoining sidedefs as needed to make it appear that there is only one unbroken decal on the wall. Set this cvar to false if you don&#039;t want this. &lt;br /&gt;
&lt;br /&gt;
==Heads-Up Display (HUD)==&lt;br /&gt;
* &#039;&#039;&#039;{{LE|displaynametags}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Determines whether [[inventory]] and [[weapon]] {{property|Tag|tags}} are shown when using {{CCMD|P|invnext}}, {{CCMD|P|invprev}}, {{CCMD|P|weapnext}}, and {{CCMD|P|weapprev}}. Possible values are:&lt;br /&gt;
:*0: Don&#039;t show anything&lt;br /&gt;
:*1: Show inventory tags&lt;br /&gt;
:*2: Show weapon tags&lt;br /&gt;
:*3: Show both inventory and weapon tags&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|con_alpha}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0.75&lt;br /&gt;
:Controls how transparent the [[console]] is when it is lowered. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_scale}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Controls scaling of the fullscreen hud. At resolutions of 640x400 or above, setting this cvar to true will cause the icons to be scaled to approximately the same size they would be at 320x200. If this cvar is false, the icons will always be drawn without any scaling.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|nametagcolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 5 ({{color|#FFCC00}} gold)&lt;br /&gt;
:The color used to display weapon and inventory {{Property|Tag|tags}} when scrolling through them.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|screenblocks}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 10&lt;br /&gt;
:This CVAR determines the size of the view window. Valid values are in the range 3-12 inclusive. Attempts to set this cvar to values outside this range will be truncated. 10 shows the normal [[status bar]] at the bottom of the screen. 3 is the smallest view window, and 12 is full screen. 11 is also full screen, but includes a small overlaid heads-up display (which can be changed to the [[alternate HUD]] with [[#hud_althud|hud_althud]]).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|st_oldouch}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If this CVAR is true, the [[mugshot]] will show the infamous &amp;quot;ouch face&amp;quot; when the player is healed by at least 20 points while taking damage, reestablishing the bogus behavior found in [[vanilla Doom]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|st_scale}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:When this CVAR is true, the status bar will be scaled so that it covers the entire width of the screen in higher resolutions. At low resolutions this may look ugly, but at high resolutions it should look good enough.&lt;br /&gt;
&lt;br /&gt;
=== Alternate HUD ===&lt;br /&gt;
The following variables all affect the [[alternate HUD]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_althud}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Controls whether the [[alternate HUD]] is used in full-screen HUD mode ([[#screenblocks|screenblocks]] 11).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_althudscale}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 2&lt;br /&gt;
:Scale of the [[alternate HUD]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_ammo_red}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 25&lt;br /&gt;
:The percent value of the maximum below which the current ammo count will be displayed in red ({{color|#FF5566}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_ammo_yellow}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 50&lt;br /&gt;
:The percent value below which the current armor rating will be displayed in yellow ({{color|#FFCC00}}). Greater values are displayed in green ({{color|#00CC00}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_armor_green}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 100&lt;br /&gt;
:The percent value of the maximum below which the current ammo count will be displayed in green ({{color|#00CC00}}). Greater values are displayed in blue ({{color|#9999FF}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_armor_red}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 25&lt;br /&gt;
:The value below which the current armor rating will be displayed in red ({{color|#FF5566}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_armor_yellow}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 50&lt;br /&gt;
:The value below which the current armor rating will be displayed in yellow ({{color|#FFCC00}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_berserk_health}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) {{new}}&lt;br /&gt;
:Default: true&lt;br /&gt;
:If true, the {{Class|berserk}} icon is shown instead of the health icon when the player has a {{Class|PowerStrength}} active. If false, the health icon is displayed regardless. This also requires a berserk icon to be defined and valid ({{c|PSTRA0}} by default in Doom games).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_health_green}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 100&lt;br /&gt;
:The value below which the current health total will be displayed in green ({{color|#00CC00}}). Greater values are displayed in blue ({{color|#9999FF}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_health_red}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 25&lt;br /&gt;
:The value below which the current health total will be displayed in red ({{color|#FF5566}}).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_health_yellow}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 50&lt;br /&gt;
:The value below which the current health total will be displayed in yellow ({{color|#FFCC00}}).&lt;br /&gt;
&lt;br /&gt;
==== HUD statistics ====&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showitems}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Toggles whether the player&#039;s tally of found [[item]]s is displayed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showmonsters}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Toggles whether the player&#039;s tally of killed [[monster]]s is displayed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showscore}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Toggles whether the player&#039;s [[score]] is displayed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showsecrets}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Toggles whether the player&#039;s tally of found [[secret]]s is displayed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showstats}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Toggles whether the player&#039;s [[accuracy]] and [[stamina]] are displayed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showtime}}&#039;&#039;&#039; ([[CVARs#integer|integer]]) {{new}}&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Selects whether a timer is shown in the upper-right corner of the screen. The time can show the level time, hub time, total game time, or system time; and the precision can go from hours and minutes only to also showing seconds. When set to level time, the precision can even go to milliseconds.&lt;br /&gt;
:*0: Off&lt;br /&gt;
:*1: Level time, down to milliseconds&lt;br /&gt;
:*2: Level time, down to seconds&lt;br /&gt;
:*3: Level time, down to minutes&lt;br /&gt;
:*4: Hub time, down to seconds&lt;br /&gt;
:*5: Hub time, down to minutes&lt;br /&gt;
:*6: Game time, down to seconds&lt;br /&gt;
:*7: Game time, down to minutes&lt;br /&gt;
:*8: System time, down to seconds&lt;br /&gt;
:*9: System time, down to minutes&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_showweapons}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) {{git|9716a61}}&lt;br /&gt;
:Default: true&lt;br /&gt;
:Toggles whether the weapons in the player&#039;s inventory are displayed.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|map_point_coordinates}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:While the [[automap]] is active, the coordinates displayed correspond to the position of the cursor at the center of the map. If false, the coordinates remain set to the player&#039;s position. &lt;br /&gt;
:When follow mode is on, the coordinates of the cursor and of the player should be the same except potentially for the Z coordinate. The cursor&#039;s Z position will always be that of the sector floor at this point; whereas a player might be flying, jumping, walking on things, or present above a [[3D floor]] or [[3D middle texture]].&lt;br /&gt;
&lt;br /&gt;
==== HUD colors ====&lt;br /&gt;
The various hudcolor_* variables use [[TEXTCOLO]] color values:&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color&lt;br /&gt;
|-&lt;br /&gt;
|0||reddish brick||{{color|#CC3333}}||1||tan||{{color|#D2B48C}}||2||gray||{{color|#CCCCCC}}||3||green||{{color|#00CC00}}||4||brown||{{color|#996633}}||5||gold||{{color|#FFCC00}}||6||red||{{color|#FF5566}}&lt;br /&gt;
|-&lt;br /&gt;
|7||blue||{{color|#9999FF}}||8||orange||{{color|#FFAA00}}||9||white||{{color|#DFDFDF}}||10||yellow||{{color|#EEEE33}}||12||black||{{color|#000000}}||13||light blue||{{color|#33EEFF}}||14||cream||{{color|#FFCC99}}&lt;br /&gt;
|-&lt;br /&gt;
|15||olive||{{color|#D1D8A8}}||16||dark green||{{color|#008C00}}||17||dark red||{{color|#800000}}||18||dark brown||{{color|#663333}}||19||purple||{{color|#9966CC}}||20||dark gray||{{color|#808080}}||21||cyan||{{color|#00DDDD}}&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_ltim}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 8 ({{color|#FFAA00}} orange)&lt;br /&gt;
:The color used to display on the [[automap]] the time spent in the current visit of a level in a [[hub]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_statnames}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 6 ({{color|#FF5566}} red)&lt;br /&gt;
:The color used to display the labels for the various statistics optionally shown as determined by the [[#HUD Statistics|hud_show*]] variables.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_stats}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 3 ({{color|#00CC00}} green)&lt;br /&gt;
:The color used to display the values for the various statistics optionally shown as determined by the [[#HUD Statistics|hud_show*]] variables.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_time}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 6 ({{color|#FF5566}} red)&lt;br /&gt;
:The color used to display on the [[automap]] the hub spent in the current [[hub]], or in the current level outside of a hub.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_titl}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 10 ({{color|#EEEE33}} yellow)&lt;br /&gt;
:The color used to display on the [[automap]] the level name.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_ttim}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 5 ({{color|#FFCC00}} gold)&lt;br /&gt;
:The color used to display on the [[automap]] the total time spent in the current game.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hudcolor_xyco}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 3 ({{color|#00CC00}} green)&lt;br /&gt;
:The color used to display on the [[automap]] the player coordinates.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|hud_timecolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]]) {{new}}&lt;br /&gt;
:Default: 5 ({{color|#FFCC00}} gold)&lt;br /&gt;
:The color used to display the optional timer on the normal view of the alternate HUD.&lt;br /&gt;
&lt;br /&gt;
=== Scoreboard ===&lt;br /&gt;
These variables affect the [[scoreboard]] in [[multiplayer]].&lt;br /&gt;
The various *color variables use [[TEXTCOLO]] color values:&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color!!code!!colspan=&amp;quot;2&amp;quot;|color&lt;br /&gt;
|-&lt;br /&gt;
|0||reddish brick||{{color|#CC3333}}||1||tan||{{color|#D2B48C}}||2||gray||{{color|#CCCCCC}}||3||green||{{color|#00CC00}}||4||brown||{{color|#996633}}||5||gold||{{color|#FFCC00}}||6||red||{{color|#FF5566}}&lt;br /&gt;
|-&lt;br /&gt;
|7||blue||{{color|#9999FF}}||8||orange||{{color|#FFAA00}}||9||white||{{color|#DFDFDF}}||10||yellow||{{color|#EEEE33}}||12||black||{{color|#000000}}||13||light blue||{{color|#33EEFF}}||14||cream||{{color|#FFCC99}}&lt;br /&gt;
|-&lt;br /&gt;
|15||olive||{{color|#D1D8A8}}||16||dark green||{{color|#008C00}}||17||dark red||{{color|#800000}}||18||dark brown||{{color|#663333}}||19||purple||{{color|#9966CC}}||20||dark gray||{{color|#808080}}||21||cyan||{{color|#00DDDD}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_cooperative_enable}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Controls whether the scoreboard is shown in [[cooperative]] mode.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_cooperative_headingcolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 6 ({{color|#FF5566}} red)&lt;br /&gt;
:The color used for headings on the cooperative scoreboard.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_cooperative_otherplayercolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 2 ({{color|#CCCCCC}} gray)&lt;br /&gt;
:The color used to display other players&#039; names on the cooperative scoreboard.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_cooperative_yourplayercolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 3 ({{color|#00CC00}} green)&lt;br /&gt;
:The color used to display your own name on the cooperative scoreboard.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_deathmatch_enable}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Controls whether the scoreboard is shown in [[deathmatch]] mode.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_deathmatch_headingcolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 6 ({{color|#FF5566}} red)&lt;br /&gt;
:The color used for headings on the deathmatch scoreboard.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_deathmatch_otherplayercolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 2 ({{color|#CCCCCC}} gray)&lt;br /&gt;
:The color used to display other players&#039; names on the deathmatch scoreboard.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_deathmatch_yourplayercolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 3 ({{color|#00CC00}} green)&lt;br /&gt;
:The color used to display your own name on the deathmatch scoreboard.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_teamdeathmatch_enable}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Controls whether the scoreboard is shown in [[team deathmatch]] mode.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|sb_teamdeathmatch_headingcolor}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 6 ({{color|#FF5566}} red)&lt;br /&gt;
:The color used for headings on the team deathmatch scoreboard.&lt;br /&gt;
&lt;br /&gt;
==Intermission screens==&lt;br /&gt;
* &#039;&#039;&#039;{{LE|wi_noautostartmap}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If this CVAR is true, the user has to manually end the &#039;entering level&#039; page with the {{CCMD|P|+use}} command. By default, this screen is automatically left after 140 [[tic]]s (four seconds). In a network game, this effect is enabled if any player switches this on. Note that custom [[intermission script]]s can use the {{c|noautostartmap}} keyword to achieve the same effect; this CVAR being false will not override the presence of this keyword.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|wi_percents}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false for &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, true for other games&lt;br /&gt;
:When false, [[intermission]] statistics are printed as absolute values such as &amp;quot;7 of 9&amp;quot; as in &#039;&#039;[[Heretic]]&#039;&#039;. When true, intermission stats are printed as percentages such as &amp;quot;50%&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|wi_showtotaltime}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:If true, show the total time spent on the current game during the intermission tally screen, in addition to the time spent on the completed level. If false, only the time spent on the completed level is shown.&lt;br /&gt;
&lt;br /&gt;
==Renderer==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_bloodtype}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Controls how blood is drawn. Supported values are:&lt;br /&gt;
:0: Blood is drawn as sprites&lt;br /&gt;
:1: Blood is drawn as both sprites and [[particles]]&lt;br /&gt;
:2: Blood is drawn as particles only&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_capfps}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:When true, the game is limited to 35 FPS, as it was originally in Doom. When false, the game frame rate will be as high as your machine is capable of (within the limits of {{CVAR|R|vid_maxfps}}, if set). You can use this in conjunction with {{CVAR|R|vid_vsync}} to control whether or not the maximum frame rate is restricted to your monitor&#039;s refresh rate.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_pufftype}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Controls how {{Class|BulletPuff|bullet puffs}} are drawn. Supported values are:&lt;br /&gt;
:0: Puffs are drawn as sprites&lt;br /&gt;
:1: Puffs are drawn as [[particles]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|cl_rockettrails }}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Controls whether or not {{Class|rocket}}s and {{class|grenade}}s leave trails of smoke behind them, as determined by the {{Flag|ROCKETTRAIL}} and {{Flag|GRENADETRAIL}} flags. Supported values are:&lt;br /&gt;
:0: No rocket trail&lt;br /&gt;
:1: [[Particle]] trail&lt;br /&gt;
:2: Sprite trail (spawning {{Class|RocketSmokeTrail}} or {{Class|GrenadeSmokeTrail}} in the wake of the projectile)&lt;br /&gt;
:3: Both particles and sprites&lt;br /&gt;
:If an actor has both the ROCKETTRAIL and GRENADETRAIL flags, it can have both particle types trailing it, but only the rocket smoke sprites.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|fullscreen}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:If this CVAR is true, the game will be displayed fullscreen. Otherwise, it will be drawn in a window. Some video cards may require that you have fullscreen false in order to run [[ZDoom]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gamma}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 1.0&lt;br /&gt;
:Controls the amount of gamma correction applied to the display. 1.0 is equivalent to no correction, while larger numbers translate into a brighter display, and smaller numbers translate into a darker display. 0.0 is invalid and will be rejected. Negative numbers are technically invalid but will be accepted solely for the novelty value doing so provides. &lt;br /&gt;
:* &#039;&#039;&#039;{{LE|bgamma}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
::Default: 1.0&lt;br /&gt;
::Controls the blue component of gamma correction. A value of 0 is ignored, otherwise it is used as a multiplier to the gamma value.&lt;br /&gt;
:* &#039;&#039;&#039;{{LE|ggamma}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
::Default: 1.0&lt;br /&gt;
::Controls the green component of gamma correction. A value of 0 is ignored, otherwise it is used as a multiplier to the gamma value.&lt;br /&gt;
:* &#039;&#039;&#039;{{LE|rgamma}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
::Default: 1.0&lt;br /&gt;
::Controls the red component of gamma correction. A value of 0 is ignored, otherwise it is used as a multiplier to the gamma value.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_3dfloors}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Setting this false will disable the display of [[3D floor]]s. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_clearbuffer}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Clears the framebuffer between each frame. Several values are possible:&lt;br /&gt;
:*0: By default, do not clear the buffer. This allows the {{dwicon|nolink=|hall_of_mirrors_effect|hall of mirrors effect}} to happen in certain conditions. Since the variable is not archived, it is reset to this value whenever ZDoom is run.&lt;br /&gt;
:*1: Fill with black. This prevents HOMs and will generally make the affected area less noticeable.&lt;br /&gt;
:*2: Fill with white. As with black, though the areas will generally be more noticeable.&lt;br /&gt;
:*3: Fill in alternation with black and white, making the areas flash and helping them be more noticeable. This is roughly similar to [[Boom]]&#039;s TNTHOM &amp;quot;cheat&amp;quot;.&lt;br /&gt;
:*4: Fill with each color of the [[palette]] in sequence, creating a pulsing effect.&lt;br /&gt;
:*5: Fill with a random color. Seizure warning!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_columnmethod}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Selects which of two algorithms to use to draw sprites and masked textures. Method 0 is the original algorithm used by DOOM. Method 1 is a new algorithm optimized for Pentium IIs and can perform significantly better with that or comparable processors. Ironically, method 0 is slightly faster than method 1 on Pentium III and Athlon processors (though not significantly so).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_drawflat}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:When set to true, segs will be drawn as solid colors instead of textures. This is useful if you want to see how a node builder split a level&#039;s linedefs. Otherwise, it just looks ugly. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_drawfuzz}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:When set to 0, the &amp;quot;[[fuzz]]&amp;quot; effect on {{Class|spectre}}s and partially invisible players will be replaced with translucency. If set to 1, normal fuzz effect is used.&lt;br /&gt;
:If set to 2, the &amp;quot;shadow&amp;quot; {{Property|RenderStyle}} is used. This emulates the rendering of fuzz in [[GZDoom]] when not using one of the pixel shaders.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_drawmirrors}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Setting this false will disable the display of mirrors. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_drawplayersprites}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:When false, the game will not draw the player&#039;s weapon or muzzle flash, which can be nice for screenshots. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_drawtrans}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Setting this to false will disable all translucency effects in the game.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_drawvoxels}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Setting this to false will disable [[voxel]] display.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_fakecontrast}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:This variable affects how [[fake contrast]] (the difference between sector light and wall light to make angles more contrasted) is handled. 0 disables it altogether (&amp;quot;even lighting&amp;quot;). The default value of 1 uses the vanilla fake contrast (only linedefs perfectly aligned with the X or Y axis are affected). A value of 2 (&amp;quot;smooth lighting&amp;quot;) generalizes fake contrast to all angles, with values proportional to the angle.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_fogboundary}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Setting this to false will disable the display of fog boundaries. Fog boundaries are sections where two areas with different fog colors meet. If the boundary is not drawn, then it will look like there is no fog at all in front of the boundary. Some old levels may look bad with fog boundary drawing enabled, which is why this cvar is available. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_maxparticles}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 4000&lt;br /&gt;
:The maximum number of particles that will be rendered at once.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_np2}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:If this CVAR is true, [[ZDoom]] uses special code to handle non-power-of-two textures tiling vertically. Setting it to false uses the old behavior where the texture is artificially increased in height to a power of two, each column being prolonged by the data from the next column and the last being prolonged by a {{dw|tutti-frutti effect}}.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_particles}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:If set to true, particles are drawn. Otherwise, they aren&#039;t.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_quakeintensity}}&#039;&#039;&#039; ([[CVARs#float|float]]) {{git|cbed462}}&lt;br /&gt;
:Default: 1.0&lt;br /&gt;
:Factor which scales the camera-shaking effects of &#039;&#039;Hexen&#039;&#039;-style [[earthquake]]s. Value can be between 0 (no shaking) and 1 (normal shaking).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_skyboxes}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Set this to false to disable the drawing of [[skybox]]es. Then every sky will be drawn as a standard sky instead of as a skybox.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_rail_smartspiral}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If true, disable railgun spiral if the inner trail color is -1.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_rail_spiralsparsity}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Sets the sparsity of spiral [[particle]]s in railgun shots. The normal amount of particles is divided by this value; a value of 0 disable the spiral entirely.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_rail_trailsparsity}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Sets the sparsity of trail [[particle]]s in railgun shots. The normal amount of particles is divided by this value; a value of 0 disable the trail entirely.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_shadercolormaps}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Set it to false to disable shaders for fixed colormap effects (e.g. invulnerability). This should only be necessary for SM1.4 cards with buggy drivers.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_smoothlighting}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) {{deprecated}}&lt;br /&gt;
:Default: false&lt;br /&gt;
:Forces smoothlighting to the walls in maps.&lt;br /&gt;
:Replaced by r_fakecontrast in development versions.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_stretchsky}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Controls whether or not short sky textures are [[sky stretching|stretched]] so that you do not see them wrap when you look up or down. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_viewsize}}&#039;&#039;&#039; ([[CVARs#string|string]])&lt;br /&gt;
:This cvar contains the width and height of the current view window. This cvar is read only. &lt;br /&gt;
&lt;br /&gt;
===Direct3D===&lt;br /&gt;
These variables affect [[ZDoom]]&#039;s [[Direct3D]] renderer.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|d3d_antilag}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Enables a technique meant to minimize input lag with [[#vid_vsync|vsync]] enabled: Two surfaces are alternately locked for read-only access each frame, forcing the driver to stop buffering more than one frame at a time. See [http://www.xyzw.de/c120.html xyzw.de/c120.html] for more details.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|d3d_showpacks}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:?&lt;br /&gt;
&lt;br /&gt;
===OpenGL===&lt;br /&gt;
{{openGLsmall}}&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_aalines}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Choose whether to enable OpenGL-based anti-aliasing in the [[automap]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_attachedlights}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Dead code, declared but not referenced anywhere.&lt;br /&gt;
&lt;br /&gt;
[[Image:BillboardAxes.png|right|thumb|160px|Y and XY billboarding.]]&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_billboard_mode}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Sets the default billboarding mode for sprites. The default value of 0 means to use Y-billboarding (sprites become paper-thin when looked at steep angles from above or below); a value of 1 means to use XY-billboarding (sprites are always facing the camera, which might make them appear at odd angles to the geometry). This is overridden by actors having the {{Flag|FORCEYBILLBOARD}} or {{Flag|FORCEXYBILLBOARD}} flags.&lt;br /&gt;
:Note that some minor graphical glitches should be expected when XY-billboarded sprites are present near [[3D floor]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_billboard_particles}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:This is similar to gl_billboard_mode, but only applies to [[particle]]s. If true, XY-billboarding is always used for them; if false it depends on the gl_billboard_mode setting.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_brightfog}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Choose whether fog is rendered based on full brightness. In the software renderer, light level in colored fog is effectively used for fog density. This option looks good for bright, white fogs, and less so for dark, black fogs.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_brightmap_shader}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Chooses whether OpenGL shaders are used to handle brightmaps. This CVAR is only used with hardware limited to {{wp|GLSL|shader model 3}}. If shader model 4 is supported, shaders are always used for brightmaps; if support is limited to shader model 2, they are never used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_clamp_per_texture}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Dead code, declared but not referenced anywhere.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_colormap_shader}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Chooses whether OpenGL shaders are used to handle colormaps. This CVAR is only used with hardware limited to {{wp|GLSL|shader model 3}}. If shader model 4 is supported, shaders are always used for colormaps; if support is limited to shader model 2, they are never used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_debug}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If this CVAR is true, the OpenGL context is created in debug mode. This variable is only relevant during initialization and is not archived; if you want to see its effect you have to set it from the command line: {{c|gzdoom +{{CCMD|C|set}} gl_debug 1}} for example.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_direct_state_change}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_distfog}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 70&lt;br /&gt;
:This value is used to compute the distance fog table.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_draw_sync}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_dynlight_shader}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Chooses whether OpenGL shaders are used to handle [[dynamic light]]s. This variable can only be set to true if the GLSL implementation available supports at least 1024 uniform variables and provides shader model 4 features.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_enhanced_nightvision}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Enables or disables the enhanced nightvision effect which changes how the {{Class|PowerLightAmp}} and {{Class|PowerTorch}} effects work. If false, they behave like the software renderer and merely give full brightness to everything. If true, however, the light amplification visor shows the world geometry in green and the sprites of monsters and items are in inverted colors; while everything illuminated by the torch lies in a flickering golden light. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_enhanced_nv_stealth}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 3&lt;br /&gt;
:If enhanced night vision is on, [[stealth monster]]s and other actors with the {{Flag|STEALTH}} flag or the {{c|Shadow}} {{Property|RenderStyle}} can be seen while an effect altering vision with a fixed colormap is active. Possible values are:&lt;br /&gt;
:*0: Enhanced night vision has no effect.&lt;br /&gt;
:*1: Infrared night vision makes stealth monsters visible and shadowed actors easier to see.&lt;br /&gt;
:*2: Both infrared and torch have this effect of making such actors easier to see.&lt;br /&gt;
:*3: Any sort of fixed colormap have this effect.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_fog_shader}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Chooses whether OpenGL shaders are used to handle fog. This CVAR is only used with hardware limited to {{wp|GLSL|shader model 3}}. If shader model 4 is supported, shaders are always used for fog; if support is limited to shader model 2, they are never used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_fogmode}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Chooses how distance fog is generated. Possible values are:&lt;br /&gt;
:*0:No fog&lt;br /&gt;
:*1:Standard fog&lt;br /&gt;
:*2:Radial fog&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_forcemultipass}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_fuzztype}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Defines how the {{Class|spectre}} [[fuzz]] effect ({{Property|RenderStyle}} {{c|Fuzzy}} or {{c|OptFuzzy}}) is handled. Possible values include:&lt;br /&gt;
:*0: Shadow (equivalent to RenderStyle Shadow)&lt;br /&gt;
:*1: Pixel fuzz&lt;br /&gt;
:*2: Smooth fuzz&lt;br /&gt;
:*3: Swirly fuzz&lt;br /&gt;
:*4: Translucent fuzz&lt;br /&gt;
:*6: Noise&lt;br /&gt;
:*7: Smooth Noise&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_glow_shader}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Chooses whether OpenGL shaders are used to handle glowing flats. This CVAR is only used with hardware limited to {{wp|GLSL|shader model 3}}. If shader model 4 is supported, shaders are always used for glowing flats; if support is limited to shader model 2, they are never used.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_interpolate_model_frames}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:When this CVAR is true, [[model]] frames are interpolated, smoothing up their movement. This also concerns [[voxel]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_light_ambient}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 20&lt;br /&gt;
:The minimum ambient light level.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_light_models}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:Unused. Only referenced in a disabled part of the code.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_light_particles}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:If true, [[particle]]s are affected by [[dynamic light]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_light_sprites}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:If true, [[sprite]]s are affected by [[dynamic light]]s.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_lightmode}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 3&lt;br /&gt;
:Sets the default lighting model to use in maps. Note that the choice made here can be overridden by the {{c|lightmode}} property in a [[MAPINFO]] [[map definition]].&lt;br /&gt;
:*0: Uses a standard OpenGL formula.&lt;br /&gt;
:*1: Uses a weak fading keeping sectors relatively bright.&lt;br /&gt;
:*2: A close approximation to the software renderer&#039;s display. Uses {{wp|GLSL}} to handle the increased brightness around the player&#039;s viewpoint; otherwise identical to 3.&lt;br /&gt;
:*3: Close approximation of the software renderer, but without the brightening of nearby areas.&lt;br /&gt;
:*4: Emulates the lighting model of the [[Doom Legacy]] 1.42 OpenGL renderer.&lt;br /&gt;
:*8: A {{wp|GLSL}} implementation of the equations used by Id to generate the colormaps, and to brighten the area around the player&#039;s viewpoint. Falls back to 3 if shaders are unavailable.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_lights}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_lights_additive}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_lights_checkside}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_lights_intensity}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 1.0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_lights_size}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 1.0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_mask_sprite_threshold}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0.5&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_mask_threshold}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0.5&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_mirror_envmap}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_mirrors}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_no_skyclear}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_nocoloredspritelighting}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_noquery}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_noskyboxes}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_notexturefill}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_particles_style}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 2&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_plane_reflection}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_portals}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_precache}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_render_flats}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_render_precise}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_render_segs}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_render_things}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_render_walls}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_sclipfactor}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 1.8&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_sclipthreshold}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 10&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_seamless}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_sky_detail}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 16&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_sort_textures}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_sprite_blend}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_spritebrightfog}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_spriteclip}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_filter}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 4&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_filter_anisotropic}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 8&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_format}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_hqresize}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_hqresize_fonts}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_hqresize_maxinputsize}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 512&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_hqresize_sprites}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_hqresize_targets}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 7&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_hqresize_textures}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_usehires}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_texture_useshaders}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_trimsprites}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_usecolorblending}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: true&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_usefb}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_usevbo}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 2&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_vid_compatibility}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_vid_multisample}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_warp_shader}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gl_weaponlight}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 8&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gltest_slopeopt}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|maxviewpitch}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 90.0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_mirror_recursions}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 4&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|skyoffset}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0.0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_brightness}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_contrast}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_renderer}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 1&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
===Polymost===&lt;br /&gt;
{{deprecated|bbc3b69}}&lt;br /&gt;
* &#039;&#039;&#039;{{LE|gtang}}&#039;&#039;&#039; ([[CVARs#float|float]])&lt;br /&gt;
:Default: 0.0&lt;br /&gt;
:The global tilt angle. This is only used by the incomplete and mostly-abandoned [[Polymost]] renderer.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_polymost}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:This cvar controls ZDoom&#039;s [[Polymost]] rendering.&lt;br /&gt;
:*0 - No polymost rendering.&lt;br /&gt;
:*1 - Draw polymost wall edges over normal render display. This mode is interesting as it allows to see, when looking up or down, how the normal software renderer distorts the view.&lt;br /&gt;
:*2 - Draw polymost walls with wireframe instead of normal render display. Since the polymost renderer doesn&#039;t render textures, this mode is the second least usable of the three.&lt;br /&gt;
:*3 - Draw polymost walls without wireframe intead of normal render display. Since the polymost renderer doesn&#039;t render textures, this mode is the least usable of the three.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|r_nopolytilt}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:If this CVAR is true, the [[polymost]] render is done in a small section of the viewscreen, instead of a full overlay. (If r_polymost is 2, the rest of the screen is not updated at all and gets filled with [[HOM]]s., so this should only be used with r_polymost 1.) Within that window, [[Y-shearing]] is applied when looking up and down. The window itself moves up and down the screen and its borders are more and more broadened the farther away they are from the center.&lt;br /&gt;
&lt;br /&gt;
==Video adapter==&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_adapter}}&#039;&#039;&#039; ([[CVARs#integer|integer]]) (&#039;&#039;&#039;OpenGL or Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: 1&lt;br /&gt;
:Defines which screen is used if multiple monitors are available. A list of available video adapters can be obtained by using the {{CCMD|I|vid_listadapters}} [[console command]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_aspect}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Which aspect ratio is used.&lt;br /&gt;
:*0: Autodetect appropriate aspect ratio.&lt;br /&gt;
:*1: 16:9&lt;br /&gt;
:*2: 16:10&lt;br /&gt;
:*3: 4:3&lt;br /&gt;
:*4: 5:4&lt;br /&gt;
:*5: 17:10&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_attachedsurfaces}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: false&lt;br /&gt;
:Controls how the game allocates video memory. False is the standard setting and will always produce a usable display. If you find that there are patches of pure black and pure white on the screen (especially noticeable when a demon is right in your face), try setting this to true. Certain old Windows 95 video drivers are said to need this fix, and it is also necessary under NT 4. Unfortunately, many new video drivers (including those under NT 4) will produce a scrambled display if the screen width is not 512 or 1024 pixels and this is set to true.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_cursor}}&#039;&#039;&#039; ([[CVARs#string|string]])&lt;br /&gt;
:Default: &amp;quot;None&amp;quot;&lt;br /&gt;
:Which mouse cursor to use. This overrides the [[MAPINFO/GameInfo_definition|GameInfo]] {{c|cursorpic}} value. Default is &amp;quot;None&amp;quot; to use the GameInfo cursor, possible values include &amp;quot;-&amp;quot; (system cursor), or one of the graphics provided by [[ZDoom]]: &amp;quot;cursor&amp;quot;, &amp;quot;chexcurs&amp;quot; (a waffle), &amp;quot;doomcurs&amp;quot; (the endgame bunny head), &amp;quot;herecurs&amp;quot; (the {{Class|GoldWand|elven wand}}), &amp;quot;hexncurs&amp;quot; (the Hexen logo&#039;s red X), or &amp;quot;strfcurs&amp;quot; (a sigil logo). It is possible to use custom cursors, as long as they fit the requirements (no more than 32x32).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_defbits}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 8&lt;br /&gt;
:This cvar is meant to specify the default screen depth, but the setting is currently ignored because only 256-color (8-bit) display modes are supported.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_defheight}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 480&lt;br /&gt;
:Specifies the default screen height to use if not overridden at the command line by the -height switch. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_defwidth}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 640&lt;br /&gt;
:Specifies the default screen width to use if not overridden at the command line with the -width switch. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_displaybits}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 8&lt;br /&gt;
:Controls how many bits per pixel the fullscreen display gets created with. The game is still rendered in 8-bit, but this is for the benefit of cards that don&#039;t support that or work better with non-8-bit displays.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_forceddraw}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: false&lt;br /&gt;
:Forces the use of {{wp|DirectDraw}} instead of [[Direct3D]] for blitting graphics to the screen or render window. Direct3D is generally preferable as it allows truecolor rendering for [[HUD]] graphics, but forcing the use of DirectDraw routines may solve problems caused by faulty drivers or aged hardware.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_hw2d}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: true&lt;br /&gt;
:If false, this disables hardware assistance for the 2D layer when using the [[Direct3D]] renderer. However, hardware rendering is still used to get the data to the screen, contrarily to [[#vid_forceddraw|vid_forceddraw]].&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_hwaalines}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: true&lt;br /&gt;
:Controls whether Direct3D can use antialiased lines. Drivers tend to misreport that they cannot handle antialiasing even when they can, forcing ZDoom to take the issue out of their hands. If the [[automap]] displays thick and blurry lines, set this value to false.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_maxfps}}&#039;&#039;&#039; ([[CVARs#integer|integer]]) (&#039;&#039;&#039;Not Mac OS X&#039;&#039;&#039;) {{new}}&lt;br /&gt;
:Default: 200&lt;br /&gt;
:If non-zero, this variable limits the frame rate to some arbitrary rate between 35 and 1000 FPS. Note that vid_maxfps 35 is &#039;&#039;not&#039;&#039; the same as {{CVAR|R|cl_capfps}} 1: cl_capfps caps the frame rate by tying the video update directly to the game timer. With vid_maxfps 35, the video update and game timer are running on separate timers, and results will not be as good as with cl_capfps 1, which uses only one timer. You can use this in conjunction with {{CVAR|R|vid_vsync}} to control whether or not the maximum frame rate is restricted to your monitor&#039;s refresh rate.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_noblitter}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: true&lt;br /&gt;
:Setting this to false will allow the use of the hardware to assist moving image data to video memory. When Randy initially wrote the code to use the blitter, it was faster than not using it. Now the blitter is slower, so the default is true. {{verification}}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_nopalsubstitutions}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Setting this to true will disable [[PALVERS]]-based graphics substitution in the 8-bit software renderer.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_nowidescreen}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:Use this cvar to disable widescreen aspect ratio correction. When it is set to true, the only display ratio available is 4:3 (and 5:4 if [[#vid_tft|vid_tft]] is set).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_palettehack}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: false&lt;br /&gt;
:When this cvar is true, the game will refresh the palette every time the screen is redrawn. This can be useful with some buggy video drivers. If the display is fine without it, leave it that way because this can slightly slow things down. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_refreshrate}}&#039;&#039;&#039; ([[CVARs#integer|integer]]) (&#039;&#039;&#039;Win32 Only&#039;&#039;&#039;)&lt;br /&gt;
:Default: 0&lt;br /&gt;
:If non-zero, specifies a custom refresh rate which overrides Windows&#039; automatic refresh rate selection. This is useful if your video card is trying to run your monitor at a refresh rate it doesn&#039;t actually support for the given resolution. Normally this will not be needed, however. This is only meaningful in fullscreen mode.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_showpalette}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: 0&lt;br /&gt;
:Set this to a value between 1 and 9 inclusive to display in the upper left corner of the screen the current [[palette]] with a preset [[translation]]. This is a debugging tool used to detect interference with the system palette from other programs. 1 is the untranslated palette, 2 is translation 0, 3 is translation 1, etc. up to 8 for translation 6. 9 corresponds to the ice translation.&lt;br /&gt;
:If a translation is not defined (for example, values 6 to 8 in &#039;&#039;[[Doom]]&#039;&#039; and &#039;&#039;[[Heretic]]&#039;&#039;), the palette is left untranslated.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_tft}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]])&lt;br /&gt;
:Default: false&lt;br /&gt;
:When this CVAR is true, the 5:4 aspect ratio is available.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|vid_vsync}}&#039;&#039;&#039; ([[CVARs#boolean|boolean]]) (&#039;&#039;&#039;Not Linux&#039;&#039;&#039;)&lt;br /&gt;
:Default: false&lt;br /&gt;
:Set this to false to disable syncing the frame rate to the vertical refresh rate. Not all video cards support disabling vsync, in which case this CVAR will be ignored. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;{{LE|win_x}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
* &#039;&#039;&#039;{{LE|win_y}}&#039;&#039;&#039; ([[CVARs#integer|integer]])&lt;br /&gt;
:Default: -1&lt;br /&gt;
:The horizontal (x) and vertical (y) location of the window when in windowed mode. If either value is such that the window would be placed off the screen, it will be forced into a position that keeps as much of the window onscreen as possible. (It will not choose a position less than 0.) This CVAR is only evaluated on startup, and changing it after the window is created will have no effect until ZDoom is restarted.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[CVARs]]&lt;br /&gt;
*[[CCMDs]]&lt;br /&gt;
&lt;br /&gt;
[[category:ZDoom console]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=38541</id>
		<title>ZDoom version history</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom_version_history&amp;diff=38541"/>
		<updated>2014-11-25T14:53:03Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Next version */ Cocoa back end.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tracks the evolution of [[ZDoom]] by listing the main features of each version.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!By year&lt;br /&gt;
|[[#1998|1998]] &amp;amp;middot; [[#1999|1999]] &amp;amp;middot; [[#2000|2000]] &amp;amp;middot; [[#2001|2001]] &amp;amp;middot; [[#2002|2002]] &amp;amp;middot; [[#2003|2003]] &amp;amp;middot; [[#2004|2004]] &amp;amp;middot; [[#2005|2005]] &amp;amp;middot; [[#2006|2006]] &amp;amp;middot; [[#2007|2007]] &amp;amp;middot; [[#2008|2008]] &amp;amp;middot; [[#2009|2009]] &amp;amp;middot; [[#2010|2010]] &amp;amp;middot; [[#2011|2011]] &amp;amp;middot; [[#2012|2012]] &amp;amp;middot; [[#2013|2013]]&lt;br /&gt;
|-&lt;br /&gt;
!1.x Branch&lt;br /&gt;
|[[#1.11|1.11]] &amp;amp;middot; [[#1.12|1.12]] &amp;amp;middot; [[#1.13|1.13]] &amp;amp;middot; [[#1.14|1.14]] &amp;amp;middot; [[#1.14a|1.14a]] &amp;amp;middot; [[#1.16|1.16]] &amp;amp;middot; [[#1.17|1.17]] &amp;amp;middot; [[#1.17a|1.17a]] &amp;amp;middot; [[#1.17b|1.17b]] &amp;amp;middot; [[#1.17b1|1.17b1]] &amp;amp;middot; [[#1.17c|1.17c]] &amp;amp;middot; [[#1.18|1.18]] &amp;amp;middot; [[#1.18a|1.18a]] &amp;amp;middot; [[#1.18b|1.18b]] &amp;amp;middot; [[#1.19|1.19]] &amp;amp;middot; [[#1.20|1.20]] &amp;amp;middot; [[#1.21|1.21]] &amp;amp;middot; [[#1.22|1.22]] &amp;amp;middot; [[#1.23 Beta|1.23 Beta]] &amp;amp;middot; [[#1.23 Beta 19|1.23 Beta 19]] &amp;amp;middot; [[#1.23 Beta 20|1.23 Beta 20]] &amp;amp;middot; [[#1.23 Beta 23|1.23 Beta 23]] &amp;amp;middot; [[#1.23 Beta 24|1.23 Beta 24]] &amp;amp;middot; [[#1.23 Beta 25|1.23 Beta 25]] &amp;amp;middot; [[#1.23 Beta 33|1.23 Beta 33]]&lt;br /&gt;
|-&lt;br /&gt;
!2.0 Branch&lt;br /&gt;
|[[#2.0 Beta 13|2.0 Beta 13]] &amp;amp;middot; [[#2.0.47|2.0.47]] &amp;amp;middot; [[#2.0.47i|2.0.47i]] &amp;amp;middot; [[#2.0.48|2.0.48]] &amp;amp;middot; [[#2.0.49|2.0.49]] &amp;amp;middot; [[#2.0.50|2.0.50]] &amp;amp;middot; [[#2.0.51|2.0.51]] &amp;amp;middot; [[#2.0.52|2.0.52]] &amp;amp;middot; [[#2.0.53|2.0.53]] &amp;amp;middot; [[#2.0.54|2.0.54]] &amp;amp;middot; [[#2.0.55|2.0.55]] &amp;amp;middot; [[#2.0.56|2.0.56]] &amp;amp;middot; [[#2.0.57|2.0.57]] &amp;amp;middot; [[#2.0.58|2.0.58]] &amp;amp;middot; [[#2.0.59|2.0.59]] &amp;amp;middot; [[#2.0.60|2.0.60]] &amp;amp;middot; [[#2.0.61|2.0.61]] &amp;amp;middot; [[#2.0.62|2.0.62]] &amp;amp;middot; [[#2.0.63|2.0.63]] &amp;amp;middot; [[#2.0.64|2.0.64]] &amp;amp;middot; [[#2.0.90|2.0.90]] &amp;amp;middot; [[#2.0.91|2.0.91]] &amp;amp;middot; [[#2.0.92|2.0.92]] &amp;amp;middot; [[#2.0.93|2.0.93]] &amp;amp;middot; [[#2.0.94|2.0.94]] &amp;amp;middot; [[#2.0.95|2.0.95]] &amp;amp;middot; [[#2.0.96|2.0.96]] &amp;amp;middot; [[#2.0.97|2.0.97]] &amp;amp;middot; [[#2.0.98|2.0.98]]&lt;br /&gt;
|-&lt;br /&gt;
!2.1 Branch&lt;br /&gt;
|[[#2.1.0|2.1.0]] &amp;amp;middot; [[#2.1.1|2.1.1]] &amp;amp;middot; [[#2.1.2|2.1.2]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.3|2.1.3]] &amp;amp;middot; [[#2.1.4|2.1.4]] &amp;amp;middot; [[#2.1.5|2.1.5]] &amp;amp;middot; [[#2.1.6|2.1.6]] &amp;amp;middot; [[#2.1.7|2.1.7]]&lt;br /&gt;
|-&lt;br /&gt;
!Modern&lt;br /&gt;
|[[#2.2.0|2.2.0]] &amp;amp;middot; [[#2.3.0|2.3.0]] &amp;amp;middot; [[#2.3.1|2.3.1]] &amp;amp;middot; [[#2.4.0|2.4.0]] &amp;amp;middot; [[#2.4.1|2.4.1]] &amp;amp;middot; [[#2.5.0|2.5.0]] &amp;amp;middot; [[#2.6.0|2.6.0]] &amp;amp;middot; [[#2.6.1|2.6.1]] &amp;amp;middot; [[#2.7.0|2.7.0]] &amp;amp;middot; [[#2.7.1|2.7.1]] &amp;amp;middot; [[#Next version|Next version]]&lt;br /&gt;
|}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
==1998==&lt;br /&gt;
;{{LE|1.11}} (March 6): {{Plainlink|[http://www.zdoom.org/files/old/zdoom111.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom111s.zip Source]}}&lt;br /&gt;
:Initial release, based on the [[NTDoom]] and [[ATB Doom]]. The version numbering follows from the Doom source code version numbering of 1.10.&lt;br /&gt;
:* Works under both Windows 95 and NT 4.0, although it works best under Win95.&lt;br /&gt;
:* Limited support for the Pause key. It works with some keyboards on some machines.&lt;br /&gt;
:* Supports any resolution compatible with your DirectDraw drivers.&lt;br /&gt;
:* Look up/down à la &#039;&#039;[[Heretic]]&#039;&#039;.&lt;br /&gt;
:* Translucency for selected objects.&lt;br /&gt;
:* Has a [[console]] with most of the functionality of &#039;&#039;Quake&#039;&#039;&#039;s. The only significant missing feature is Tab-completion.&lt;br /&gt;
:* Notarget [[cheat]].&lt;br /&gt;
:* Command to {{CCMD|D|kill}} all [[monster]]s in a level or yourself.&lt;br /&gt;
:* Can play [[MUS]], [[MIDI]], and MOD music.&lt;br /&gt;
:* Selected sounds are played in surround sound.&lt;br /&gt;
:* Doors that need keys to open are highlighted on the [[automap]].&lt;br /&gt;
:* Automap now shows various statistics in addition to the level name.&lt;br /&gt;
:* True keybindings. Bind any key to any command or sequence of commands.&lt;br /&gt;
:* [[Intermission]] screen can now display your stats using absolute values rather than percentages.&lt;br /&gt;
:* A new more general [[demo]] format.&lt;br /&gt;
;{{LE|1.12}} (April 7): {{Plainlink|[http://www.zdoom.org/files/old/zdoom112.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom112s.zip Source]}}&lt;br /&gt;
:* Some visual enhancements were made such as centering the menus and drawing borders around the status bar in higher resolutions.&lt;br /&gt;
:* [[Console command]]s can now be specified on the [[command line parameters|command line]].&lt;br /&gt;
:* Removed some of [[Doom]]&#039;s limits such as VisPlanes, VisSprites, and 2S [[HOM]].&lt;br /&gt;
:* Rewrote some of the inner loops in assembly. (There was some assembly in 1.11, but it never got used.)&lt;br /&gt;
:* New [[CVAR]]s relating to mouse movement. ({{CVAR|C|invertmouse}}, {{CVAR|C|m_pitch}}, {{CVAR|C|m_yaw}}, etc.)&lt;br /&gt;
:* Mouse movement doesn&#039;t get sluggish in high resolutions.&lt;br /&gt;
:* [[Automap]] colors are customizable.&lt;br /&gt;
:* Automap overlay and rotation are available.&lt;br /&gt;
:* Eight [[crosshair]]s.&lt;br /&gt;
:* Shoot up/down.&lt;br /&gt;
:* Alt-Tab and Pause work properly on all machines now.&lt;br /&gt;
:* The {{CCMD|P|+jump}} command now works.&lt;br /&gt;
:* 25% and 75% translucency levels in addition to 50%. The translucency tables now get saved to disk, too, so they only need to be calculated once instead of every time the game is run.&lt;br /&gt;
:* The [[console]] [[font]] is now editable.&lt;br /&gt;
:* Near complete support for [[DeHackEd]] patches. (Only monster infighting and changing a few minor text strings are not supported.)&lt;br /&gt;
:* Sky height and position is now fixed for high resolutions. (It still wraps if you look up, but at least now if you look straight ahead, it never will.)&lt;br /&gt;
:* Weapon sprite is always drawn at the correct location. (It was being drawn too low in some resolutions like 400x300.)&lt;br /&gt;
:* New [[options menu]], which includes a key configuration screen.&lt;br /&gt;
:* [[Stealth monster]]s.&lt;br /&gt;
:* New full-screen [[HUD]].&lt;br /&gt;
:* And a few other things not worth mentioning separately.&lt;br /&gt;
;{{LE|1.13}} (May 26):{{forum|t=4|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom113.zip Build]}}&lt;br /&gt;
:* Fixed some major bugs (that crashed the game) and other lesser bugs that were just annoying.&lt;br /&gt;
:* 3-D collisions for walking under and standing on other things.&lt;br /&gt;
:* The status bar can be scaled to the full width of the screen.&lt;br /&gt;
:* The screen mode can be selected from a menu inside the game.&lt;br /&gt;
:* ZDoom can run in a window on the desktop.&lt;br /&gt;
:* Better [[DeHackEd]] support. Only a few text replacements are not supported. Everything else works (including monster infighting which I haven&#039;t seen in any other port).&lt;br /&gt;
:* New features for level designers (see editing.txt for details):&lt;br /&gt;
::*Specification of next and secret maps on a per-map basis.&lt;br /&gt;
::*Specify sky texture on a per-map basis.&lt;br /&gt;
::*Use any lump in a wad as music for a map.&lt;br /&gt;
::*Give maps a custom name without using a DeHackEd patch.&lt;br /&gt;
::*Maps can be named anything (not just E?M? or MAP??).&lt;br /&gt;
::*Place any messages of any length between any two maps.&lt;br /&gt;
::*&#039;&#039;[[Hexen]]&#039;&#039;-style fog (of any color).&lt;br /&gt;
::*[[Ambient sound]]s &amp;amp;mdash; either point like &#039;&#039;Quake&#039;&#039; or global like &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;Hexen&#039;&#039;.&lt;br /&gt;
::*Automatic use of [[DeHackEd]] patches in PWADs.&lt;br /&gt;
::*No more {{dw|tutti-frutti}} for short textures of certain heights.&lt;br /&gt;
::*zdoom.wcf file for use with [[WadAuthor]].&lt;br /&gt;
:* Rocket jumping. (One very important note about this: You need to be *in the air* when your rocket explodes for rocket jumping to work. This is different from &#039;&#039;Quake&#039;&#039;, and I will probably rewrite it for the next release.)&lt;br /&gt;
:* Dynamic [[palette flash]]es.&lt;br /&gt;
:* Supports stretching skies for [[freelook]].&lt;br /&gt;
:* Larger freelook range.&lt;br /&gt;
:* Added tab-completion to the [[console]].&lt;br /&gt;
:* zdoom.cfg is now the name of the default [[configuration file]] since [[Doom Legacy]] decided to start using config.cfg.&lt;br /&gt;
:* French language support. (Set {{CVAR|C|language}} CVAR to &amp;quot;french&amp;quot;.)&lt;br /&gt;
:* Player obituaries.&lt;br /&gt;
:* Unlimited ammo cheat (use g_unlimitedammo cvar).&lt;br /&gt;
;{{LE|1.14}} (July 22): {{forum|t=5|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom114-src.zip Source]}}&lt;br /&gt;
:Bugs fixed:&lt;br /&gt;
:* The bunny scroller at the end of E3M8 no longer crashes the game.&lt;br /&gt;
:* The IDKFA [[cheat]] gives the proper amount of armor again.&lt;br /&gt;
:* Demo recording works again.&lt;br /&gt;
:* Telefragging works again.&lt;br /&gt;
:* Picking up the {{Class|InvulnerabilitySphere|invulnerability sphere}} displays the correct colors now.&lt;br /&gt;
:* [[DeHackEd]] patches containing text replacements no longer crash the game.&lt;br /&gt;
:* Printing a string containing &amp;quot;%s&amp;quot; to the console and then changing the video mode will no longer crash the game.&lt;br /&gt;
:* Chat mode finally works again.&lt;br /&gt;
:* If MIDAS can&#039;t initialize, you can still play the game but without sound.&lt;br /&gt;
:* {{Class|Pistol}} and {{Class|chaingun}} sounds no longer cut out when there are lots of {{Class|ZombieMan|zombie men}} shooting their pistols at you.&lt;br /&gt;
:* Mouse input should no longer be so jerky under Windows NT.&lt;br /&gt;
:* The [[crosshair]] is finally accurate for aiming.&lt;br /&gt;
:* [[Autoaim]] is properly remembered each time you start ZDoom.&lt;br /&gt;
:* Switches in &#039;&#039;[[the Ultimate Doom]]&#039;&#039; that aren&#039;t also in the shareware Doom properly change their appearance when switched.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Players can choose their own colors and names. ([[Player setup]] menu is included).&lt;br /&gt;
:* 8-player support (untested but should work).&lt;br /&gt;
:* Miscellaneous internal code changes have been borrowed from the [[Boom]] source. (This does *not* mean that ZDoom supports Boom levels yet.)&lt;br /&gt;
:* [[Cheat]]s, chat messages, and gamestate changes are now recorded in demos.&lt;br /&gt;
:* Single-player demos recorded with ZDoom are generally smaller than before.&lt;br /&gt;
:* &#039;&#039;Quake 2&#039;&#039;-style deathmatch flags.&lt;br /&gt;
:* Cheats (optionally) work in multiplayer games.&lt;br /&gt;
:* Mode X is now supported under Win95, so all the machines that couldn&#039;t run ZDoom in 320x200 before should be able to now.&lt;br /&gt;
:* Fewer conditions result in error messages that quit the game. (If you have &#039;&#039;[[Heretic]]&#039;&#039;, try this: Start ZDoom with -file heretic and go to the console and type &amp;quot;{{CCMD|D|map}} E1M1&amp;quot;.)&lt;br /&gt;
:* Keys can repeat in the [[console]].&lt;br /&gt;
:* The console and chat mode now use the localized keymap set with the Keyboard control panel.&lt;br /&gt;
:* Messages at the top of the screen now break along between words instead of in the middle of them.&lt;br /&gt;
:* Added {{c|-config}} [[command line parameter]].&lt;br /&gt;
:* Added {{c|-fastdemo}} command line parameter.&lt;br /&gt;
:* Added new {{CCMD|D|screenshot}} command. (bound to &amp;quot;Print Screen&amp;quot; key by default)&lt;br /&gt;
:* Added &#039;&#039;Quake&#039;&#039;-like {{CCMD|P|+showscores}} command. (bound to &amp;quot;\&amp;quot; key by default)&lt;br /&gt;
:* [[Alias]]es are now saved in the config file.&lt;br /&gt;
:* Added support for multiple pitched sounds like in very old version of Doom. (Use the snd_pitched cvar to turn it on and off.)&lt;br /&gt;
;{{LE|1.14a}} (July 27): {{forum|t=6|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom114a.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoomsrc114-114a.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:Bugs fixed are:&lt;br /&gt;
:* No more crashing about freeing a pointer without ZONEID when changing levels.&lt;br /&gt;
:* Skies wider than 256 pixels are drawn correctly.&lt;br /&gt;
:* [[Monster]]s&#039; heights are once again the same as they were in id&#039;s original &#039;&#039;[[Doom]]&#039;&#039;, so certain areas work properly again.&lt;br /&gt;
:* Monsters shouldn&#039;t teleport into each other anymore.&lt;br /&gt;
:* Improved support for international keyboards.&lt;br /&gt;
:* The skill level chosen for a new game is no longer ignored if the new game is started while a demo is playing.&lt;br /&gt;
:Cosmetic changes:&lt;br /&gt;
:* No more &amp;quot;sv_gravity changed to...&amp;quot;, &amp;quot;skill changed to...&amp;quot;, etc. messages in single player games.&lt;br /&gt;
:* Activating the [[player setup]] [[menu]] automatically stops any playing [[demo]]s, since it doesn&#039;t work properly while they play.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} don&#039;t go flying away when exploding anymore.&lt;br /&gt;
:* Added def_patch cvar to automatically load a DeHackEd patch each time the game is started.&lt;br /&gt;
:* ZDoom [[savegame]]s now use the name zdoomsv?.dsg instead of doomsav?.dsg.&lt;br /&gt;
:This version also includes some preliminary [[Boom]] support as I started integrating some of the Boom source code with ZDoom:&lt;br /&gt;
:* Medusa fix.&lt;br /&gt;
:* Openings limit removed.&lt;br /&gt;
:* Removed limit on switches and animations.&lt;br /&gt;
:* Added support for Boom-like [[ANIMATED]] and [[SWITCHES]] lumps in PWADs.&lt;br /&gt;
:* Added support for Boom-style scrollers (including conveyors).&lt;br /&gt;
:* Added partial [[deep water]] support.&lt;br /&gt;
;{{LE|1.16}} (December 22): {{forum|t=13|Release thread}} | {{Plainlink|[http://www.zdoom.org/files/old/zdoom116.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom116-src.zip Source]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* No more limit on size of [[savegame]]s or [[demo]]s.&lt;br /&gt;
:* Screen resolutions above 320x200 are now the proper brightness (they were too bright before.)&lt;br /&gt;
:* Improved the brightness of the [[console]] [[font]].&lt;br /&gt;
:* {{Class|BulletPuff|Bullet puffs}} can show up on the floor and ceiling and not just walls.&lt;br /&gt;
:* Missile weapons can trigger gun activation lines.&lt;br /&gt;
:* {{Class|ExplosiveBarrel|Barrels}} now bounce around as much as they did in original &#039;&#039;[[Doom]]&#039;&#039;. (They were too &amp;quot;inert&amp;quot; in 1.14.)&lt;br /&gt;
:* If a demo is being recorded, quitting the game normally will save the demo to disk. (Previously, you had to use the stop command to do this.)&lt;br /&gt;
:New features for players:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* Mouse wheel support and {{CCMD|P|weapnext}}/{{CCMD|P|weapprev}} commands.&lt;br /&gt;
:* Doublebindings.&lt;br /&gt;
:* Better analog joystick support.&lt;br /&gt;
:* 180 degree turn command for keyboarders.&lt;br /&gt;
:* Damage done by a rocket to its shooter is {{CVAR|C|splashfator|configurable}} and defaults to the original Doom behavior.&lt;br /&gt;
:* User-configurable gender. (Even though I don&#039;t have any new player sounds, at least the [[obituaries]] are gender-aware. :-)&lt;br /&gt;
:* [[Teamplay]] mode.&lt;br /&gt;
:* {{CVAR|C|sv_nobfgaim|New CVAR}} to disable manual aiming of the BFG to prevent someone from shooting it at the floor and quickly triggering tracer damage before.&lt;br /&gt;
:* Maps no longer need to have as many deathmatch starts as there are players in a deathmatch game.&lt;br /&gt;
:* Support for [[Doom Legacy]] [[skin]]s.&lt;br /&gt;
:* Rewrote the [[MIDI]]/[[MUS]] code so that it has a working volume control.&lt;br /&gt;
:* Many more [[console command]]s and [[CVARs]].&lt;br /&gt;
:New features for editors:&lt;br /&gt;
:* Proper support for [[Boom]] maps.&lt;br /&gt;
:* [[Obituaries]] are configurable with a .bex patch.&lt;br /&gt;
:* [[Monster path]]s&lt;br /&gt;
:* [[Colored lighting]]&lt;br /&gt;
:* [[Fog]] can be applied to only part of a level instead of all of it.&lt;br /&gt;
:* Per-sector [[gravity]] settings.&lt;br /&gt;
:* Support for up to 256 [[ambient sound]]s (as opposed to the limit of 64 in earlier versions).&lt;br /&gt;
:* [[Sector damage]] adjustable from between 0-255 points of damage.&lt;br /&gt;
:* Changeable [[camera]] views.&lt;br /&gt;
:* The following editing features that were introduced in &#039;&#039;[[Hexen]]&#039;&#039; are also available in ZDoom:&lt;br /&gt;
::*Most line specials take arguments that modify their behavior.&lt;br /&gt;
::*[[ACS]] scripting.&lt;br /&gt;
::*[[Hub]]s.&lt;br /&gt;
::*[[Earthquake]]s.&lt;br /&gt;
::*[[Dormant]] monsters.&lt;br /&gt;
::*Trigger events to happen on monster deaths.&lt;br /&gt;
::*[[Floor_Waggle|&amp;quot;Waggling&amp;quot; floors]].&lt;br /&gt;
::*[[Pillar_Build|Pillar builders]].&lt;br /&gt;
::*Push activation lines (walking into a wall can trigger an event).&lt;br /&gt;
::*[[Thing_Spawn|Thing spawning]] (e.g. for traps/gifts).&lt;br /&gt;
&lt;br /&gt;
==1999==&lt;br /&gt;
January 6 of this year saw the first release of the [[Raven Software]] source code.&lt;br /&gt;
;{{LE|1.17}} (February 17): {{forum|t=15|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/zdos117c.zip DOS build]}}&lt;br /&gt;
:Bug fixes:&lt;br /&gt;
:* [[Multiplayer]] games with [[monster]]s do not crash.&lt;br /&gt;
:* Player corpses do not levitate and then fall down when a player respawns in multiplayer games.&lt;br /&gt;
:* Using {{CCMD|P|togglemap}} outside of a game will not crash.&lt;br /&gt;
:* Monsters stop attacking their target once it is dead.&lt;br /&gt;
:* EV_StopPlat() does not get stuck in an infinite loop if there are [[moving platform]]s.&lt;br /&gt;
:* Partially invisible players are drawn the proper colors (instead of green) if {{CVAR|R|r_drawfuzz}} is 0.&lt;br /&gt;
:* If you are invisible, so are your muzzle flashes.&lt;br /&gt;
:* Trying to execute a non-existent [[ACS|script]] will not crash.&lt;br /&gt;
:* Using a [[ChangeCamera]] special from an open script will not crash.&lt;br /&gt;
:* The [[FloorAndCeiling_RaiseByValue]] and [[FloorAndCeiling_LowerByValue]] now behave like &#039;&#039;[[Hexen]]&#039;&#039;&#039;s.&lt;br /&gt;
:* Using {{c|{{param|-loadgame}}}} from the [[command line]] works.&lt;br /&gt;
:* Fixed a memory leak during generation of the translucency tables.&lt;br /&gt;
:* In high resolutions, weapon sprites meet the bottom of the screen.&lt;br /&gt;
:* Sounds will not cut out mysteriously when there is no reason for them to do so.&lt;br /&gt;
:* Sounds will also not be stopped immediately when a thing is removed, so explosion sounds will play to their full length.&lt;br /&gt;
:* Things can make more than one sound at once.&lt;br /&gt;
:* The [[deathmatch]] [[scoreboard]] is aligned properly at high resolutions.&lt;br /&gt;
:* {{CCMD|P|Spynext}} and {{CCMD|P|spyprev}} work properly instead of leaving the [[status bar]] &amp;quot;lagging behind&amp;quot; the player being viewed.&lt;br /&gt;
:* The {{Class|Infrared|light-amp}} does not disable colored lighting.&lt;br /&gt;
:* The [[sky]] gets {{dw|invulnerability colormap bug|inverted}} when using the invulnerability powerup.&lt;br /&gt;
:* Implemented better z-checking code (from &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039;).&lt;br /&gt;
:* {{Class|PainElemental|Pain elementals}} will spawn one {{Class|LostSoul|lost soul}} at a time instead of two inside of each other.&lt;br /&gt;
:* Bex patches that use thing mnemonics really do work now, and unknown bit messages aren&#039;t generated for regular [[DeHackEd]]  patches.&lt;br /&gt;
:* Linedef type 134 for regular &#039;&#039;[[Doom]]&#039;&#039;/[[Boom]] maps requires a red key for activation (it was being improperly translated to require a blue one).&lt;br /&gt;
:* Monsters can activate secret lines when they cross them. (See &#039;&#039;[[Doom II]]&#039;&#039; MAP08).&lt;br /&gt;
:* The player extreme death sound is used.&lt;br /&gt;
:* When a player leaves a network game, their body is removed instead of being left empty.&lt;br /&gt;
:* 0-length sounds are treated as empty sounds instead of sounds 4 gigs long.&lt;br /&gt;
:* [[Skin]]s that replaced player sounds with sounds in the [[IWAD]] work.&lt;br /&gt;
:* Muzzle flashes do not light up foggy areas, and fullbright sprites stay shrouded in fog.&lt;br /&gt;
:* Alphanumeric keys no longer automatically repeat on the console.&lt;br /&gt;
:* Wads such as gothicdm2 that used new flats in addition to the ones in the IWAD with the regular doom.exe work.&lt;br /&gt;
:New features:&lt;br /&gt;
:* Significant speed improvements on modern processors.&lt;br /&gt;
:* [[Armor]] and [[key]]s are shown on the fullscreen HUD.&lt;br /&gt;
:* Colored text.&lt;br /&gt;
:* A {{CCMD|P|playdemo}} console command.&lt;br /&gt;
:* A [[chasecam]].&lt;br /&gt;
:* A [[particle]] system.&lt;br /&gt;
:* An optional [[railgun]] to show off the particle system. (Start the game with {{c|{{param|-deh}} [[railgun.bex]]}} if you want to use it.)&lt;br /&gt;
:New features interesting for wad authors:&lt;br /&gt;
:* [[Polyobject]]s.&lt;br /&gt;
:* [[Sound sequence]]s.&lt;br /&gt;
:* WAVE files can be used as sound lumps without converting them to DMX&#039;s format first.&lt;br /&gt;
:* A sky can be specified to not be stretched even if it is shorter than 200 pixels.&lt;br /&gt;
:* {{Class|Spark}}s.&lt;br /&gt;
:* {{Class|ParticleFountain|Particle fountain}}s.&lt;br /&gt;
:* Parallax skies.&lt;br /&gt;
:* Some new [[DeHackEd]] thing flags from &#039;&#039;[[Hexen]]&#039;&#039; (bobbing, reflective, etc.).&lt;br /&gt;
;{{LE|1.17a}} (February 21): {{forum|t=16|Release thread}}&lt;br /&gt;
:Mostly minor bug fixes, released because [[Herian 2]] needed some of those fixes. There are a few new features, however:&lt;br /&gt;
:* If you have a skins/ directory in the same directory as zdoom.exe, every wad file in it will be automatically loaded when the game starts. This way, you don&#039;t have to load your [[skin]]s by hand to use them.&lt;br /&gt;
:* New formatting options for text [[print]]ed using [[ACS]].&lt;br /&gt;
:* A [[A_MonsterRail|code pointer]] to make monsters fire a railgun.&lt;br /&gt;
;{{LE|1.17b}} (March 17): {{forum|t=21|Release thread}}&lt;br /&gt;
:Some minor bug fixes over 1.17 and 1.17a. It also loads faster because the sprite dimensions are not cached until they are actually needed. There are also some other internal changes in preparation for supporting &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039;, but those don&#039;t affect the user yet.&lt;br /&gt;
;{{LE|1.17b1}} (March 19): {{forum|t=22|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|1.17c}} (May 5): {{forum|t=28|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom117c.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom117c-src.zip Source]}}&lt;br /&gt;
:* Fixed game saving crashes on maps with [[wind]]/[[current]] effects.&lt;br /&gt;
:* In [[Boom]] [[deep water]] sectors, the underwater light and fog colors can now be set independently of the area above water.&lt;br /&gt;
:* Added nojump, allowjump, nofreelook, and allowfreelook keywords for use in [[MAPINFO]] lumps to control [[jumping]] and [[free look]].&lt;br /&gt;
:* The random number seed now changes each time you run the program.&lt;br /&gt;
;{{LE|1.18 test 1}} (June 30): {{forum|t=33|Release thread}}&lt;br /&gt;
:* Tweaked the optimized renderer for fifth-generation processors.&lt;br /&gt;
:* Added the following specials:&lt;br /&gt;
::*[[Line_AlignFloor]]&lt;br /&gt;
::*[[Line_AlignCeiling]]&lt;br /&gt;
::*[[Sector_SetRotation]]&lt;br /&gt;
::*[[Sector_SetCeilingPanning]]&lt;br /&gt;
::*[[Sector_SetFloorPanning]]&lt;br /&gt;
::*[[Sector_SetCeilingScale]]&lt;br /&gt;
::*[[Sector_SetFloorScale]]&lt;br /&gt;
:* Added an additional parameter to the [[Transfer_Heights]] special.&lt;br /&gt;
:* Switched to the [http://sourceforge.net/projects/openptc/ OpenPTC] library for display.&lt;br /&gt;
:* Converted lots of code to an object-oriented C++ architecture.&lt;br /&gt;
;{{LE|1.18 test 2}} (July 1): {{forum|t=36|Release thread}}&lt;br /&gt;
:* Fixed vertical aim clipping ({{Class|BFG9000|BFG}} works again).&lt;br /&gt;
:* Fixed [[monster]] wandering.&lt;br /&gt;
:* Maps with mapthings of type 0 no longer generate warning messages.&lt;br /&gt;
:* [[Crusher]]s that do no damage no longer act as if they inflict pain to actors.&lt;br /&gt;
:* The [[alias]] command lists aliases again.&lt;br /&gt;
:* Aliases are saved to the [[config file]] again.&lt;br /&gt;
;{{LE|1.18 test 3}} (July 2): {{forum|t=37|Release thread}}&lt;br /&gt;
:* Removed unnecessary display mode switches.&lt;br /&gt;
:* Created a DCanvas class to encapsulate most 2D rendering.&lt;br /&gt;
;{{LE|1.18 test 4}} (July 3): {{forum|t=39|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;Bad DCanvas::CopyRect&amp;quot; problem introduced in test3.&lt;br /&gt;
:* Fixed [[sound sequence]]s that should not be cut off when stopped (such as the standard doors).&lt;br /&gt;
;{{LE|1.18 test 5}} (July 6): {{forum|t=40|Release thread}}&lt;br /&gt;
:* Fixed a potential infinite loop that was introduced in [[#1.18 test 1|118test1]].&lt;br /&gt;
:* Delayed the initial execution of [[CVAR]] callbacks.&lt;br /&gt;
:* Added &#039;&#039;[[Heretic]]&#039;&#039;&#039;s {{wp|Xiaolin Wu&#039;s line algorithm|anti-aliased Wu line drawer}} to the [[automap]].&lt;br /&gt;
;{{LE|1.18 test 6}} (July 10): {{forum|t=41|Release thread}}&lt;br /&gt;
:* Rewrote the {{wp|Xiaolin Wu&#039;s line algorithm|Wu line drawer}} to look better (especially in overlay mode).&lt;br /&gt;
:* [[Sky stretching|Stretched skies]] now get stretched horizontally as well as vertically.&lt;br /&gt;
:* Did an initial integration of the [[Cajun Bot]] 0.71 code.&lt;br /&gt;
;{{LE|1.18 test 7}} (July 12):&lt;br /&gt;
:* Fixed handling of maps with scrolling walls.&lt;br /&gt;
:* Single player works again. In test 6, all games were considered either [[coop]] or [[deathmatch]].&lt;br /&gt;
:* Disabled the [[bot]] thinking code in single player games, so you don&#039;t suffer a performance hit when not using bots.&lt;br /&gt;
:* Added some performance counters accessible through the {{CCMD|D|stat}} command.&lt;br /&gt;
;{{LE|1.18 test 8}} (July 20): {{forum|t=43|Release thread}}&lt;br /&gt;
:* Fixed a crash problem with the &amp;quot;burn&amp;quot; [[screen wipe]].&lt;br /&gt;
:* Fixed a crash problem with playing non-assigned [[sound sequence]]s.&lt;br /&gt;
:* Fixed a crash problem related to trying to shutdown the music subsystem twice.&lt;br /&gt;
:* If you try to add more coop [[bot]]s than there are coop starts, the extra bot leaves quietly instead of ending the game.&lt;br /&gt;
:* {{CVAR|C|sv_weapondrop|Weapondrop}} is now a &amp;quot;server&amp;quot; CVAR, which it should have been in the first place.&lt;br /&gt;
:* Changed the nodetable file format to be more compact.&lt;br /&gt;
:* Bots can now be recorded in demos.&lt;br /&gt;
:* Bots work in [[multiplayer]] games. Still buggy. Spawning bots can cause consistency failures, and they can start spinning wildly.&lt;br /&gt;
;{{LE|1.18 test 9}} (August 9): {{forum|t=44|Release thread}}&lt;br /&gt;
:* Fixed the &amp;quot;wild&amp;quot; [[bot]] spinning problem.&lt;br /&gt;
:* Commands like {{CCMD|D|changemap}} that could make network games go out of sync should work properly now. The reason they would do that is closely related to the reason that the bots would start spinning.&lt;br /&gt;
:* Finished the serializer. Now savegames work. [[Hub]]s don&#039;t, because I haven&#039;t written the player travelling code yet.&lt;br /&gt;
:* Various other code cleanup.&lt;br /&gt;
;{{LE|1.18 test 10}} (August 14):&lt;br /&gt;
:* Reimplemented [[hub]] travel.&lt;br /&gt;
:* Optimized R_MapPlane slightly.&lt;br /&gt;
:* Added {{CCMD|D|fov}} command.&lt;br /&gt;
:* Added vertical sub-pixel accuracy to the renderer.&lt;br /&gt;
:* Added searches for an [[IWAD]] in the current directory, $DOOMWADDIR, and $HOME.&lt;br /&gt;
;{{LE|1.18}} (September 5): {{forum|t=46|Release thread}}&lt;br /&gt;
:* Replaced the older [[Bots|Cajun]] 0.71 with Cajun 0.97.&lt;br /&gt;
:* Fixed handling of [[status bar]] [[mugshot|faces]] with [[skin]]s that provide them.&lt;br /&gt;
:* Added [[swimmable water]].&lt;br /&gt;
:* Messages printed to the middle of the screen also print to the [[console]].&lt;br /&gt;
:* Skill and other server [[CVARs]] get saved in [[savegame]]s again.&lt;br /&gt;
:* Added liquid [[texture warping]].&lt;br /&gt;
:* Bad [[MAPINFO]] lumps generate error messages instead of hanging.&lt;br /&gt;
:* Realized that it&#039;s impossible to guarantee that all object pointers will be valid without some effort, so FArchive saves DObject objects as NULL objects now instead of aborting with an error.&lt;br /&gt;
:* Added the [[built-in ACS functions]] [[LocalAmbientSound]], [[ActivatorSound]], and [[SetLineMonsterBlocking]].&lt;br /&gt;
:* Added a {{Class|SecretTrigger|thing}} that does nothing but count toward the number of [[secret]]s.&lt;br /&gt;
:* Added a {{CCMD|D|fly}} mode.&lt;br /&gt;
:* Finally implemented the {{CCMD|P|+moveup}} and {{CCMD|P|+movedown}} commands.&lt;br /&gt;
;{{LE|1.18a}} (September 12): {{forum|t=47|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed [[liquid warping]] temporarily stopping when changing levels.&lt;br /&gt;
:* {{CCMD|P|+mlook|+/-mlook}} commands do not generate unknown command messages.&lt;br /&gt;
:* Fixed support for maps with &amp;gt;10 deathmatch starts. Thanks to Roman Hatsiev.&lt;br /&gt;
:* Fixed support for the special &amp;quot;maps&amp;quot; EndGame? in MAPINFO lumps.&lt;br /&gt;
:* {{Class|TeleportDest2|Teleport destination (no gravity)}} now works as intended.&lt;br /&gt;
:* Hopefully fixed [[savegame]] problems.&lt;br /&gt;
:* [[Bots]] are restored from savegames.&lt;br /&gt;
:* Fixed keyboard turning speed when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* Network commands get executed only once when {{c|{{param|-dup}}}} is used.&lt;br /&gt;
:* In sectors with [[damaging floor]]s and swimmable [[deep water]], the damage will also be applied while the player is swimming and not just when the player is on the ground.&lt;br /&gt;
;{{LE|1.18b}} (September 15): {{forum|t=48|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom118b.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom118b-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed crash when saving games with more than 1024 objects.&lt;br /&gt;
:* Fixed crash when loading a game without starting a new one first.&lt;br /&gt;
:* Reduced the size and frequency of pregame network packets, under the assumption that problems people were having using 1.18 on the Internet are a result of limited modem bandwidth.&lt;br /&gt;
;{{LE|1.19}} (November 24): {{forum|t=53|Release thread}} | {{forum|t=54|Source/Linux build release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom-1.19.tar.gz Source]}}&lt;br /&gt;
:First official Linux build.&lt;br /&gt;
:* [[DeHackEd]] patches that set an actor&#039;s {{Property|DeathSound|death sound}} to 0 without removing the [[A_Scream]] call no longer crash.&lt;br /&gt;
:* Fixed sync problems when playing with {{Class|BulletPuff|bullet puffs}} as [[particle]]s vs as sprites.&lt;br /&gt;
:* Fixed friction when walking on the bottom of swimmable water.&lt;br /&gt;
:* Added Jeffrey Cuenco&#039;s fixes to get {{c|{{param|-host}}}} and {{c|{{param|-join}}}} [[command line parameters]] to work properly.&lt;br /&gt;
:* Fixed [[Boom]] [[Generic_Door|generalized locked doors]] so that the open/close type will actually close.&lt;br /&gt;
:* Added pointer tracking and cleanup. This should fix the occasional crashes when saving games and various other anomalies.&lt;br /&gt;
;{{LE|1.20}} (November 25): {{forum|t=56|Release thread}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed saving, reloading, and then resaving [[savegame|games]] when travelling between levels in a [[hub]].&lt;br /&gt;
:* Fixed saving of [[ACS]] scripts scheduled to occur on a future level.&lt;br /&gt;
;{{LE|1.21}} (November 26): {{forum|t=57|Release thread}} | {{plainlink|[http://www.zdoom.org/files/old/zdoom121.zip Build] {{!}} [http://www.zdoom.org/files/old/zdoom121-src.zip Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Fixed problems with thinkers removing themselves and causing other thinkers to not get a chance to think.&lt;br /&gt;
:* Added {{CVAR|R|hud_scale}} CVAR&lt;br /&gt;
;{{LE|1.22}} (November 12): {{forum|t=60|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom122.zip Windows build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22-i386.tar.gz Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom122-src.zip Windows source] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.22.tar.gz Linux source]}}&lt;br /&gt;
:* [[Scroll_Texture_Both]] and [[TranslucentLine]] specials can now be used from [[ACS]].&lt;br /&gt;
:* Fixed compiler-dependent [[CVAR]] ordering during [[netgame]] arbitration.&lt;br /&gt;
:* Fixed certain [[polyobject]] movement combinations that would not stop even though they were supposed to.&lt;br /&gt;
:* Did some cleanup for Alpha processors.&lt;br /&gt;
&lt;br /&gt;
==2000==&lt;br /&gt;
June 20 of this year saw the public release of the [[Build]] source code.&lt;br /&gt;
;{{LE|1.23 Beta}} (May 10): {{forum|t=64|Release thread}}&lt;br /&gt;
:*Partial &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; support.&lt;br /&gt;
:*Windows build uses [[FMOD Ex|FMOD]] instead of [http://www.s2.org/midas/ MIDAS].&lt;br /&gt;
&lt;br /&gt;
==2001==&lt;br /&gt;
;{{LE|1.23 Beta 19}} (March 9): {{forum|t=74|Release thread}}&lt;br /&gt;
:Added new [[camera]] types.&lt;br /&gt;
:Added [[LANGUAGE|string localization]].&lt;br /&gt;
:Added [[decal]]s.&lt;br /&gt;
:Added [[slope]]s.&lt;br /&gt;
:Added [[skybox]]es.&lt;br /&gt;
;{{LE|1.23 Beta 20}} (March 11): {{forum|t=75|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 23}} (April 9): {{forum|t=76|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 24}} (April 12): {{forum|t=77|Release thread}}&lt;br /&gt;
;{{LE|1.23 Beta 25}} (August 15): {{forum|t=81|Release thread}}&lt;br /&gt;
:Linux build now uses SDL&lt;br /&gt;
;{{LE|1.23 Beta 28}} (September 17): {{forum|t=83|Release thread}}&lt;br /&gt;
:Added a few [[decal]]-related [[CVARs]].&lt;br /&gt;
;{{LE|1.23 Beta 28a}} (December 13): {{forum|t=88|Release thread}}&lt;br /&gt;
&lt;br /&gt;
==2002==&lt;br /&gt;
;{{LE|1.23 Beta 33}} (February 5): {{Forum|t=90|Release thread}} | {{plainlink|[http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-linux.bz2 Linux build] {{!}} [http://www.zdoom.org/files/zdoom/1.x/zdoom-1.23beta33-src.tar.bz2 Source]}}&lt;br /&gt;
:Many fixes and rendering optimization.&lt;br /&gt;
:*Increased &#039;&#039;[[Heretic]]&#039;&#039;/&#039;&#039;[[Hexen]]&#039;&#039; support&lt;br /&gt;
:*Improved [[decal]]s.&lt;br /&gt;
:*Added support for the [[Bloodbath announcer]]&lt;br /&gt;
:*Added [[underwater]] [[REVERBS|reverb]] effect.&lt;br /&gt;
:*Added [[Line_Horizon]] effect.&lt;br /&gt;
:*Added {{Class|ScriptedMarine|scripted marines}} and several [[ACS]] enhancements.&lt;br /&gt;
:*Added support for [[DeePsea]]&#039;s [[patch|tall patches]].&lt;br /&gt;
:*Added [[slope]] things.&lt;br /&gt;
:*Changed [[license]] for original ZDoom source code to a &amp;quot;BSD-ish one&amp;quot;.&lt;br /&gt;
;{{LE|2.0 Beta 13}} (August 27):&lt;br /&gt;
:*Further increased &#039;&#039;Heretic&#039;&#039;/&#039;&#039;Hexen&#039;&#039; support.&lt;br /&gt;
:*Added [[PNG]] support for screenshots. [[Savegame]]s are actually PNG files now.&lt;br /&gt;
:*Added [[ZDBSP|internal nodebuilder]], made it [[polyobject]]-aware.&lt;br /&gt;
:*Added SNES SPC music support.&lt;br /&gt;
:*Added a loader for [[Build]] maps.&lt;br /&gt;
:*Added support for double- and quadruple-resolution flats (128x128 and 256x256).&lt;br /&gt;
:*Added ACS [[libraries]].&lt;br /&gt;
:*Added support for up to 8 mouse buttons.&lt;br /&gt;
:*Added the very first version of [[DECORATE]].&lt;br /&gt;
:*Removed [[MBF]]&#039;s torque simulation because of the problems it caused.&lt;br /&gt;
&lt;br /&gt;
==2003==&lt;br /&gt;
;{{LE|2.0.47}} (May 14): {{Forum|t=101|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/47.cab Build]}}&lt;br /&gt;
;{{LE|2.0.47i}} (October 2): {{plainlink|[http://www.zdoom.org/files/lars/47i.cab Build]}}&lt;br /&gt;
;{{LE|2.0.48}} (October 23):&lt;br /&gt;
:*Interchangeability between [[flat]]s and [[texture]]s.&lt;br /&gt;
;{{LE|2.0.49}}, {{LE|2.0.50}} (October 26)&lt;br /&gt;
;{{LE|2.0.51}} (October 30)&lt;br /&gt;
;{{LE|2.0.52}} (October 31)&lt;br /&gt;
;{{LE|2.0.53}} (November 16)&lt;br /&gt;
;{{LE|2.0.54}}, {{LE|2.0.55}} (November 23)&lt;br /&gt;
;{{LE|2.0.56}} (November 25)&lt;br /&gt;
;{{LE|2.0.57}} (November 26)&lt;br /&gt;
;{{LE|2.0.58}}, {{LE|2.0.59}} (December 7)&lt;br /&gt;
;{{LE|2.0.60}} (December 8)&lt;br /&gt;
&lt;br /&gt;
==2004==&lt;br /&gt;
;{{LE|2.0.61}} (January 22) &lt;br /&gt;
;{{LE|2.0.62}} (February 7):&lt;br /&gt;
:*Added modern [[DECORATE]] support.&lt;br /&gt;
;{{LE|2.0.63}} (February 10): {{plainlink|[http://www.zdoom.org/files/lars/63.cab Build] {{!}} [http://www.zdoom.org/files/lars/63src.cab Source]}}&lt;br /&gt;
:*Added custom monsters to DECORATE.&lt;br /&gt;
;{{LE|2.0.64}} (June 8)&lt;br /&gt;
;{{LE|2.0.90}} (October 21):&lt;br /&gt;
:*Added &#039;&#039;[[Strife]]&#039;&#039; support and new inventory system&lt;br /&gt;
;{{LE|2.0.91}} (October 22)&lt;br /&gt;
;{{LE|2.0.92}} (October 31)&lt;br /&gt;
;{{LE|2.0.93}} (November 3)&lt;br /&gt;
;{{LE|2.0.94}} (November 19)&lt;br /&gt;
;{{LE|2.0.95}} (December 24): {{plainlink|[http://www.zdoom.org/files/lars/95changes.html Changelog]}}&lt;br /&gt;
:*Added [[camera]] textures to [[ANIMDEFS]] and [[SetCameraToTexture]]&lt;br /&gt;
:*Improved [[console]] tab completion, added Ctrl-X shortcut to clear the console&#039;s command line&lt;br /&gt;
:*Several &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039; fixes&lt;br /&gt;
:*Merged in Jim&#039;s [[ACS]] character array [[print]]ing support. &lt;br /&gt;
:*Added the [[polymost]] clipper.&lt;br /&gt;
:*Added support for 16:10 and 5:4 aspect ratios and letterboxing.&lt;br /&gt;
:*Added [[scope|static local variables]], [[Log]], [[SetAmmoCapacity]] and [[GetAmmoCapacity]] to [[ACS]].&lt;br /&gt;
;{{LE|2.0.96}} (December 25): {{plainlink|[http://www.zdoom.org/files/lars/96.cab Build] {{!}} [http://www.zdoom.org/files/lars/96src.cab Source] {{!}} [http://www.zdoom.org/files/lars/96changes.html Changelog]}}&lt;br /&gt;
:*Added [[TITLEMAP]]&lt;br /&gt;
&lt;br /&gt;
==2005==&lt;br /&gt;
;{{LE|2.0.97}} (September 28): {{forum|t=8060|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/97.cab Build] {{!}} [http://www.zdoom.org/files/lars/97src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*The [[LANGUAGE]] lump is now text-based.&lt;br /&gt;
:*Added IMF [[music format]] support.&lt;br /&gt;
:*Ported [[SetActorAngle]] and [[SetLineBlocking|BLOCK_RAILING]] from the [[ZDoom Community Build]].&lt;br /&gt;
:*Added [[Polymost]] visualization code from [[Build]].&lt;br /&gt;
:*Gave {{Flag|DONTMORPH}} flag to {{Class|Cyberdemon}}, {{Class|SpiderMastermind}}, {{Class|AlienSpectre1}}, {{Class|Crusader}}, {{Class|Programmer}}, and {{Class|Inquisitor}}.&lt;br /&gt;
:*Made {{Class|Puffy}} and projectiles spawned by [[A_LastZap]] deal no damage.&lt;br /&gt;
:*[[Teleport_NewMap]] can now be used within a [[TITLEMAP]] in order to make it possible to use different maps as the title map.&lt;br /&gt;
:*Merged in Graf Zahl&#039;s [[Caverns of Darkness]] patch.&lt;br /&gt;
:*Added [[Polymost]] wireframe mode.&lt;br /&gt;
:*Added {{CCMD|O|writeopl}} console command.&lt;br /&gt;
:*[[UsePuzzleItem]] can now be a [[thing]]&#039;s [[special]].&lt;br /&gt;
:*Missiles with negative damage now give you health.&lt;br /&gt;
;{{LE|2.0.98}} (November 3): {{forum|t=8460|Release thread}} | {{plainlink|[http://www.zdoom.org/files/lars/98.cab Build] {{!}} [http://www.zdoom.org/files/lars/98src.rar Source]}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
&lt;br /&gt;
==2006==&lt;br /&gt;
February 16 of this year saw the first commit to the [[SVN]] repository.&lt;br /&gt;
;{{LE|2.1.0}}{{rev|204}} (June 21): {{forum|t=10550|Release thread}} | {{plainlink|[http://zdoom.org/files/old/zdoom-2.1.0.zip Build] {{!}} [http://zdoom.org/files/old/zdoom-2.1.0-src.7z Source]}}&lt;br /&gt;
:*Added several things from [[ZDoom Community Build]] (unofficial 2.0.96x) and [[GZDoom]], including custom [[DECORATE]] [[weapon]]s.&lt;br /&gt;
;{{LE|2.1.1}}{{rev|226}} (June 25): {{forum|t=10630|Release thread}} | {{versionlinks|2|1|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
;{{LE|2.1.2}}{{rev|257}} (July 17): {{forum|t=10895|Release thread}} | {{versionlinks|2|1|2}}&lt;br /&gt;
:*Added custom [[player class]]es.&lt;br /&gt;
:*Added &amp;quot;replaces&amp;quot; keyword for [[DECORATE]].&lt;br /&gt;
:*[[IWAD selection box]] now remembers the last choice.&lt;br /&gt;
:*Added [[A_RadiusThrust]] to DECORATE.&lt;br /&gt;
:*Added [[ThingCountName]] and  [[SpawnSpotFacing]] to [[ACS]].&lt;br /&gt;
:*Changed additive scroller options into a [[compatibility options|compatibility flag]].&lt;br /&gt;
;{{LE|2.1.3}}{{rev|265}} (July 18): {{forum|t=10930|Release thread}} | {{versionlinks|2|1|3}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:* Sounds can be specified by full path now in [[SNDINFO]] and [[S_SKIN]].&lt;br /&gt;
:* [[DECORATE]] replacement is more universal.&lt;br /&gt;
:* Added NecroMage&#039;s submission for bitwise/shift assignment operators for [[ACS]]. (Requires [[ACC]] 1.42+.)&lt;br /&gt;
:* Changed PlayAttacking2 to always use the melee state instead of different implementations per player and hard coding it to MissileState+1. Also changed PlayAttacking for the {{Class|HereticPlayer}} to use the same animation as PlayAttacking2. Now the special handling for &#039;&#039;[[Heretic]]&#039;&#039; in the FireWeapon functions can be removed.&lt;br /&gt;
;{{LE|2.1.4}}{{rev|273}} (July 29): {{forum|t=11063|Release thread}} | {{versionlinks|2|1|4}}&lt;br /&gt;
:*Added partial emulation of [[Boom]]&#039;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.&lt;br /&gt;
:*Added a {{CVAR|C|queryiwad_key}} cvar to control which key can force the [[IWAD selection box]] to appear. It can be either &amp;quot;shift&amp;quot; or &amp;quot;control&amp;quot;. Any other value will disable its functionality.&lt;br /&gt;
;{{LE|2.1.5}}{{rev|321}} (September 2): {{forum|t=11466|Release thread}} | {{versionlinks|2|1|5}}&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInfo]], [[ChangeLevel]], [[SectorDamage]], [[ReplaceTextures]]&lt;br /&gt;
:*New [[DECORATE]] functions: [[A_PlaySoundEx]], [[A_StopSoundEx]]&lt;br /&gt;
:*The {{CVAR|C|vid_nowidescreen}} cvar can be used to disable widescreen aspect ratio correction.&lt;br /&gt;
:*[[A_SpawnDebris]] and [[A_SpawnItem]] can optionally transfer the caller&#039;s color translation to the newly spawned item.&lt;br /&gt;
:*New morphing artifacts can be created by subclassing the {{Class|MorphProjectile}} and {{Class|MorphedMonster}} classes.&lt;br /&gt;
:*[[A_FireCustomMissile]] has a new parameter: Previously it always aimed straight ahead and altered the projectile&#039;s angle according to the resulting direction. If the 6th parameter is 1 now it will aim at the specified angle directly.&lt;br /&gt;
:*Users can now define their own [[TEXTCOLO|text colors]], and there are several new standard ones.&lt;br /&gt;
:*The fourth parameter of [[Polyobj_StartLine]] and the fifth parameter of [[Polyobj_ExplicitLine]] now set the line&#039;s ID.&lt;br /&gt;
:*DECORATE explosion parameters are no longer considered deprecated.&lt;br /&gt;
:*Calling [[Radius_Quake]], [[Thing_Activate]], or [[Thing_Remove]] with a [[TID]] of 0 now operates the activator.&lt;br /&gt;
:*Strife&#039;s {{Class|PhosphorousFire}} now does completely thrustless damage.&lt;br /&gt;
:*An actor&#039;s damage in DECORATE can now be specified as an expression that is evaluated each time it needs to do damage. To do this, enclose it within parentheses, and the normal Doom damage calculation will be bypassed.&lt;br /&gt;
:*Passing a negative script number to the {{CCMD|D|puke}} [[console command]] now runs the script with [[ACS_ExecuteAlways]] instead of [[ACS_Execute]].&lt;br /&gt;
:*[[Polyobject]]s defined with [[Polyobj_ExplicitLine]] are no longer limited to 64 segs.&lt;br /&gt;
:*Starting a new game or reloading an old one no longer resets the [[chasecam]].&lt;br /&gt;
:*The [[automap]] background is now a regular texture.&lt;br /&gt;
:*Added support for many [[image format]]s for use as textures: [[PNG]], JPEG, PCX, TGA, DDS.&lt;br /&gt;
:*Numerous bugfixes.&lt;br /&gt;
;{{LE|2.1.6}}{{rev|346}} (October 2): {{forum|t=11758|Release thread}} | {{versionlinks|2|1|6}}&lt;br /&gt;
:*Scaled 2D images are supported.&lt;br /&gt;
:*Dehacked max health usage defaults to consistency with other ([[Boom]]) ports.&lt;br /&gt;
:*A &#039;&#039;font&#039;&#039; parameter was added to [[A_Print]].&lt;br /&gt;
:*Quoted strings in [[DECORATE]] can no longer span multiple lines without using the escape character (\) at the end of each line. This makes it easier to spot places where you unintentionally left off a closing quote and got an error several lines later.&lt;br /&gt;
:*A new {{CCMD|O|writeini}} console command can be used to save [[the ini]] at any time, with any file name.&lt;br /&gt;
:*If the ini is write-protected when you quit, an error dialog now opens to let you know your settings could not be saved and gives you the opportunity to unprotect it.&lt;br /&gt;
:*Multiple stat displays can be enabled at once.&lt;br /&gt;
:*Several bugfixes.&lt;br /&gt;
;{{LE|2.1.7}}{{rev|524}} (October 31): {{forum|t=12015|Release thread}} | {{versionlinks|2|1|7}}&lt;br /&gt;
:*Alias commands can now do parameter substitution. If you have %x, where x is some number, in an alias command, it will be replaced by the appropriately numbered parameter passed when the alias is used, with %0 being replaced by the name of the alias itself.&lt;br /&gt;
:*A new {{Class|MapMarker}} actor has been added that you can use to mark points of interest on the [[automap]]. If its first argument is zero, the map marker itself appears on the automap, otherwise it is drawn on top of any actor with a [[TID]] matching that argument. If the second argument is one, then the map marker will only be appear if the player has previously seen the sector it is in. You can use [[Thing_Activate]] and [[Thing_Deactivate]] on markers to turn them on and off. To make custom markers, all you need to do is subclass MapMarker with [[DECORATE]].&lt;br /&gt;
:*Added the [[SetActorPitch]] [[ACS]] command to set an actor&#039;s pitch.&lt;br /&gt;
:*You can pass multiple jump targets to the [[A_Jump]] [[DECORATE]] function, and it will choose one of them at random if it jumps.&lt;br /&gt;
:*Using a [[TID]] of 0 with [[Thing_Deactivate]], [[SetActorAngle]], [[Thing_Spawn]]*, [[Thing_Projectile]]*, and [[Thing_Move]] will now operate on the activator.&lt;br /&gt;
:*The fifth argument for [[Line_SetIdentification]] can be used to set the high byte of the line ID.&lt;br /&gt;
:*Added a {{Property|CameraHeight}} [[DECORATE]] property for actors.&lt;br /&gt;
:*Added special death states for [[projectile]]s hitting actors. If missiles hit a non-bleeding actor, they try the Crash state first. If that doesn&#039;t exist or the actor is bleeding, they try the XDeath state next. If they hit anything else or neither of the two states are defined, they use the normal death state.&lt;br /&gt;
:*Added a {{Flag|PIERCEARMOR}} [[DECORATE]] flag for projectiles.&lt;br /&gt;
:*The {{CCMD|D|morphme}} [[console command]] can be given an optional argument to specify which class to morph into.&lt;br /&gt;
:*Miscellaneous bugfixes.&lt;br /&gt;
&lt;br /&gt;
==2007==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
==2008==&lt;br /&gt;
;{{LE|2.2.0}}{{rev|748}} (February 15): {{forum|t=16272|Release thread}} | {{versionlinks|2|2|0}}&lt;br /&gt;
:*This is the final version of ZDoom to fully support Windows 95 since later versions switched to [[FMOD Ex]].&lt;br /&gt;
:*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 pain and death sounds.&lt;br /&gt;
:*Custom damage color for [[palette flash]]es per [[player class]].&lt;br /&gt;
:*Custom state labels. New states can be defined in [[DECORATE]].&lt;br /&gt;
:*The [[SBARINFO]] lump for creating status bar and other [[HUD]]s.&lt;br /&gt;
:*[[Skill definition]] in [[MAPINFO]], with many properties.&lt;br /&gt;
:*Most thing functions treat a [[TID]] of 0 as the activator now.&lt;br /&gt;
:*Support for [[ENDOOM]] screens and the graphical or semi-graphical [[startup lumps|screens]] from &#039;&#039;[[Heretic]]&#039;&#039;, &#039;&#039;[[Hexen]]&#039;&#039; and &#039;&#039;[[Strife]]&#039;&#039;.&lt;br /&gt;
:*Several things backported from [[Skulltag]], including powerups and flags for increased port compatibility:&lt;br /&gt;
::*{{Class|PowerDrain|Drain}}, {{Class|PowerHighJump|HighJump}} and {{Class|PowerRegeneration|Regeneration}} runes as powerups and used specific player sounds for their sound effects.&lt;br /&gt;
::*PowerQuadDamage and PowerQuarterDamage as more customizable {{Class|PowerDamage}} and {{Class|PowerProtection}}. These new powerups allow free customization of the damage modification per damage type by inheriting from these classes and setting specific values. Such derived damage/protection powerups will be considered as separate powers so that for example a QuadDamage and a DoubleDamage item can be stacked which would result in 8x damage.&lt;br /&gt;
::*{{Property|Armor.MaxBonus}} and {{Property|Armor.MaxBonusMax}} properties to create armor bonuses that increases the max amount that can be given by other armor items.&lt;br /&gt;
::*Custom F1 help screen [[MAPINFO]] option&lt;br /&gt;
::*Added REDMAP and GREENMAP [[palette blend]]s.&lt;br /&gt;
::*Imported SAME_SPAWN_SPOT [[DM flag]]&lt;br /&gt;
::*Pickup sprite for the {{Class|pistol}}.&lt;br /&gt;
::*Imported {{CVAR|R|r_maxparticles}} CVAR.&lt;br /&gt;
:*New [[Direct3D]] code for better Vista support.&lt;br /&gt;
:*Autoload sections in [[the ini]].&lt;br /&gt;
:*[[GZDoom]]&#039;s [[alternate HUD]].&lt;br /&gt;
:*Custom blood on an actor-by-actor basis into [[DECORATE]].&lt;br /&gt;
:*Smart [[autoaim]] code to prevent the targeting of friendly monsters.&lt;br /&gt;
:*New {{Flag|NOBLOODDECALS}} flag that prevents bleeding actors from spawning blood [[decal]]s.&lt;br /&gt;
:*Customizable border textures. They are defined with the [[MAPINFO]] keyword &#039;bordertexture&#039; and are settable per map.&lt;br /&gt;
:*Custom label support for [[A_Chase]] and [[A_VileChase]]&lt;br /&gt;
:*{{Property|Player.RunHealth}} property to expose the {{Class|StrifePlayer}}&#039;s behavior of not being able to run when its [[health]] is below 10.&lt;br /&gt;
:*Customizable gravity per actor&lt;br /&gt;
:*New {{CCMD|D|summonfoe}} console command, which is analogous to {{CCMD|D|summonfriend}} but forces the summoned creature to be hostile instead.&lt;br /&gt;
:*Added two new [[MAPINFO]] flags to control what actor activates impact lines: {{c|MissileShootersActivateImpactLines}} (the current behavior) and {{c|MissilesActivateImpactLines}} (the original &#039;&#039;[[Hexen]]&#039;&#039; behavior).&lt;br /&gt;
:*More player water sounds: {{c|*dive}} (head goes below water), {{c|*surface}} (your head goes back above water), {{c|*gasp}} (getting air back after starting to drown)&lt;br /&gt;
:*Using &amp;quot;*&amp;quot; with [[ACS]]&#039;s music commands will play the level&#039;s default music set in [[MAPINFO]]&lt;br /&gt;
:*Two new CVARs ({{CVAR|C|win_x}} and {{CVAR|C|win_y}}) that keep track of the window position when not playing in fullscreen mode&lt;br /&gt;
:*Key bindings can now be [[print]]ed with [[ACS]]&lt;br /&gt;
:*{{Flag|INVENTORY.KEEPDEPLETED}} flag for inventory items to keep them in the player&#039;s inventory even when they have been used up. If the item also has an inventory bar icon, it will be drawn darkened while it is depleted.&lt;br /&gt;
:*{{Flag|INVENTORY.IGNORESKILL}} flag for ammo that prevents the given quantity from being modified by the skill level&lt;br /&gt;
:*{{Property|Player.AttackZOffset}} for {{Class|PlayerPawn}}. This is the offset from the center of the player at which their attacks are fired and scales according to their crouched height.&lt;br /&gt;
:*Added a new [[SetActorState]] [[ACS]] function.&lt;br /&gt;
:*{{Flag|CANUSEWALLS}} flag which allows a [[monster]] to activate &#039;use&#039; specials like doors. This flag is on by default for any monster, which was the previous behavior.&lt;br /&gt;
:*[[Thing_Stop]] action special.&lt;br /&gt;
:*New {{Flag|FORCERADIUSDMG}} flag that allows exploding items to hurt boss monsters.&lt;br /&gt;
:*New {{Flag|USESPECIAL}} flag that allows using things to execute their [[special]]s.&lt;br /&gt;
:*[[Compatibility option]] to restore the original behavior of the {{Class|PowerInvisibility|Invisibility}} powerup&lt;br /&gt;
:*Telefrag option added to [[A_SpawnItemEx]].&lt;br /&gt;
:*Added option to [[A_Chase]] that prevents the monster from moving.&lt;br /&gt;
:*New {{c|allowrespawn}} MAPINFO option.&lt;br /&gt;
:*New [[scoreboard]]s.&lt;br /&gt;
:*New [[A_LookEx]] function.&lt;br /&gt;
:*Customizable [[team]]s through the [[TEAMINFO]] lump.&lt;br /&gt;
:*New {{CCMD|D|take}} console command to do the opposite of {{CCMD|D|give}}.&lt;br /&gt;
:*[[UseInventory]]/[[UseActorInventory]] [[ACS]] functions.&lt;br /&gt;
:*New [[A_CustomBulletAttack]] &#039;&#039;aimfacing&#039;&#039; parameter&lt;br /&gt;
:*New [[A_PlaySoundEx]] attenuation parameter.&lt;br /&gt;
:*[[Automap]] markers are stored in [[savegame]]s now.&lt;br /&gt;
:*&#039;No respawn&#039; [[DM flag]] which prevents a [[player]] from respawning after they have died.&lt;br /&gt;
:*&#039;Keep frags gained&#039; [[DM flag]] which allows you to choose whether you want to reset the [[frag]]s of each player next level or not.&lt;br /&gt;
:*Sector_Outside [[sector type]] which forces outside [[fog]] regardless of ceiling texture.&lt;br /&gt;
:*User-defined [[crosshair]]s in the [[Display options]] menu. See xhairs.txt in zdoom.pk3.&lt;br /&gt;
:*Generic log display that can show &#039;&#039;[[Strife]]&#039;&#039;&#039;s log messages in all games regardless of the current game, active [[status bar]] and [[HUD]] mode.&lt;br /&gt;
:*Support for stenciling actors with {{Property|RenderStyle}} property.&lt;br /&gt;
:*.TXT files can now be loaded by simply dragging-and-dropping them on top of zdoom.exe.&lt;br /&gt;
:*&#039;Ice&#039; [[translation]] is accessible from [[DECORATE]].&lt;br /&gt;
:*[[Teamplay]] MAPINFO option.&lt;br /&gt;
:*[[ACS]] script type [[RETURN]]. These are executed by players who return to a map they&#039;ve previously been to.&lt;br /&gt;
&lt;br /&gt;
==2009==&lt;br /&gt;
;{{LE|2.3.0}}{{rev|1455}} (March 1): {{Forum|t=21116|Release thread}} | {{versionlinks|2|3|0}}&lt;br /&gt;
:*[[Universal Doom Map Format]] (UDMF) support.&lt;br /&gt;
:*New garbage collector to improve performances on resource-intensive maps.&lt;br /&gt;
:*Sound uses [[FMOD Ex]] instead of FMOD. Among the benefits, [[REVERBS|reverbs]] can now work on any sound card, not just those that support EAX.&lt;br /&gt;
:*SPC is now a first-class [[music format]] that no longer requires an external DLL to play.&lt;br /&gt;
:*Support for [[Vavoom]]&#039;s [[slope|vertex height things]] and [[Eternity Engine]]&#039;s [[3D middle texture]]s.&lt;br /&gt;
:*[[Linked sectors]], to ensure that multiple [[sector]]s can move consistently in sync.&lt;br /&gt;
:*[[TEXTURES]] lump for text-based texture definitions.&lt;br /&gt;
:*[[Automatic compatibility|MD5-based recognition of maps]] that require certain [[compatibility options]] to work (e.g., {{dw|Strain}} map 7 which relied on the {{dw|Spechits overflow}} bug) to apply these settings transparently.&lt;br /&gt;
:*[[Freedoom]], [[Chex Quest]], and [[Chex Quest 3]] are recognized as [[IWAD]]s and can be selected in the [[IWAD selection box]]. New aliases are available for IWADs, too.&lt;br /&gt;
:*New [[MAPINFO]] format (the old is still supported of course) with a more robust syntax.&lt;br /&gt;
:*Custom [[map translator]]s for Doom-format maps, which can be specified in MAPINFO.&lt;br /&gt;
:*[[Strife]] dialogues now work in multiplayer.&lt;br /&gt;
:*Setting up slots for custom weapons no longer requires a [[KEYCONF]] lump, the limit of 8 weapons per slot is removed.&lt;br /&gt;
:*Added the &amp;quot;{{Class|RandomSpawner|random spawner}}&amp;quot; actor, customizable {{Class|BossEye}}s, {{Class|CustomBridge}}, {{Class|FastProjectile}}.&lt;br /&gt;
:*Many new [[compatibility options]], including one to have [[projectile]]s pass through solid decorations.&lt;br /&gt;
:*More flexible use of [[lightning]] in a map.&lt;br /&gt;
:*The two different [[crushing mode]]s (Doom and Hexen) are now selectable per action.&lt;br /&gt;
:*Customizable pickup flash with {{Property|Inventory.PickupFlash}} property.&lt;br /&gt;
:*[[DeHackEd]] music name replacement has been restored.&lt;br /&gt;
:*Rewritten DECORATE parser, more robust and featuring better error reporting. All actors are defined in DECORATE now.&lt;br /&gt;
:*Functions to handle [[weapon]] reloading through DECORATE.&lt;br /&gt;
:*New [[ACS]] functions: [[GetPlayerInput]], [[GetActorProperty|Get]]/[[SetActorProperty]].&lt;br /&gt;
:*Many actions are now more flexible through optional parameters, for example [[A_Die]] can specify damage type to send to a custom Death state, [[A_KeenDie]] can affect tags other than 666, [[A_Fire]] can specify a vertical offset, and so on.&lt;br /&gt;
:*Many, many new [[DMFlags]] for [[cooperative]] plays, such as having to kill all [[monster]]s before leaving the map or seeing the other [[player]]s on the [[automap]].&lt;br /&gt;
:*Enhanced &#039;&#039;[[Strife]]&#039;&#039; support.&lt;br /&gt;
:*Various and sundry bug fixes.&lt;br /&gt;
;{{LE|2.3.1}}{{rev|1480}} (March 15): {{Forum|t=21296|Release thread}} | {{versionlinks|2|3|1}}&lt;br /&gt;
:Mostly a bugfix release.&lt;br /&gt;
:*Fixes the bug that prevented you from switching weapons after respawning in multiplayer.&lt;br /&gt;
:*Fixes a performance regression introduced in 2.3.0.&lt;br /&gt;
:*Adds support for zip/pk3 files with LZMA and BZip2 compression. (7-Zip is one program that can create such files.)&lt;br /&gt;
:*Addresses a few other niggles.&lt;br /&gt;
&lt;br /&gt;
==2010==&lt;br /&gt;
;{{LE|2.4.0}}{{rev|2075}} (January 1): {{Forum|t=24602|Release thread}} | {{versionlinks|2|4|0}}&lt;br /&gt;
:*Rewritten [[archive format|archive]] management code.&lt;br /&gt;
::*Added support for new [[archive format]]s: 7z, &#039;&#039;Quake&#039;&#039; PAK, &amp;quot;Shrink&amp;quot; and &amp;quot;Implode&amp;quot;.&lt;br /&gt;
::*Removed loading limit of 65 535 lumps. The archive manager can now handle up to 4 294 967 295 lumps.&lt;br /&gt;
:*Rewritten mouse and keyboard handling input under Windows.&lt;br /&gt;
:*Reimplemented and improved support for gamepads and joysticks.&lt;br /&gt;
:*Added truecolor display of the [[HUD]], [[menu]]s and other 2D elements outside the game world when using [[Direct3D]] on Windows.&lt;br /&gt;
:*Replaced SNES_SPC with Game Music Emu, greatly increasing the number of supported emulated [[music format]]s.&lt;br /&gt;
:*Added compiling support for {{wp|Macintosh}} systems.&lt;br /&gt;
:*Added [[IWAD]] recognition for Ultimate [[Freedoom]], [[Action Doom 2: Urban Brawl|Action Doom 2]], [[Blasphemer]] and [[Harmony]].&lt;br /&gt;
:*Added {{param|-noautoload}}, {{param|-norun}}, {{param|-stdout}}, and {{param|-warpwipe}} command line parameters.&lt;br /&gt;
:*Added {{CVAR|C|save_dir}} and {{CVAR|R|d3d_antilag}} console variables.&lt;br /&gt;
:*Added optional parameters to {{CCMD|D|summon}} commands, added {{CCMD|D|summonmbf}} command.&lt;br /&gt;
:*Added {{CCMD|D|info}} command to obtain very verbose debugging information on actors.&lt;br /&gt;
:*Buddha mode&lt;br /&gt;
:*Added [[score]] and {{Class|ScoreItem}}s.&lt;br /&gt;
:*Added [[GameInfo definition]]s to [[MAPINFO]].&lt;br /&gt;
:*Changed random seed initialization so that it uses the system&#039;s cryptographically secure random number generator, if available, instead of the current time. Also changed the random number generator from Lee Killough&#039;s algorithm to the SFMT607 variant of the {{wp|Mersenne twister}}.&lt;br /&gt;
:*Disabled custom [[DEHSUPP]] lumps.&lt;br /&gt;
:*Added &#039;damage&#039; to the actor variables exported to [[DECORATE expressions|DECORATE&#039;s expression evaluator]].&lt;br /&gt;
:*Added &#039;frandom&#039; DECORATE function to the expression evaluator, which is like &#039;random&#039; but for floating point values instead of integers.&lt;br /&gt;
:*Added Raven color set and dagger-like vector sprite to the [[automap]].&lt;br /&gt;
:*Added desatured [[translation]]s.&lt;br /&gt;
:*[[SBARINFO]]: Added the ability to center things with fullscreenoffsets enabled, added [[underwater]] stats.&lt;br /&gt;
:*[[MAPINFO]]: Added [no_]grinding_polyobj, resetinventory properties, added EndTitle option for {{c|nextmap}}.&lt;br /&gt;
:*Added actor replacement to [[skill definition]]s.&lt;br /&gt;
:*Exported many hardcoded values to [[GameInfo definition]]s.&lt;br /&gt;
:*Added [[Line_SetBlocking]] and [[Sector_SetPortal]] specials.&lt;br /&gt;
:*Added {{c|defaultterrain}} section to [[TERRAIN]].&lt;br /&gt;
:*Added new [[earthquake]] functions.&lt;br /&gt;
:*Added [[user variable]]s.&lt;br /&gt;
:*[[DECORATE]]: Added {{Property|Species}}, {{Property|Activation}}, {{Property|PainThreshold}}, {{Property|PushFactor}}, {{Property|WeaveIndexXY}}, {{Property|WeaveIndexZ}}, {{Property|Powerup.Strength}}, {{Property|Player.MugShotMaxHealth}}, {{Property|Inventory.InterHubAmount}} properties.&lt;br /&gt;
:*Turned old bounce flags into {{Property|BounceType}} property.&lt;br /&gt;
:*Added {{Property|DamageFactor}} handling to Armors.&lt;br /&gt;
:*Added &amp;quot;BLUEMAP&amp;quot; [[palette blend]] for {{Property|Powerup.Color}}, and added {{Property|Powerup.Colormap}} for custom colormaps.&lt;br /&gt;
:*Added {{Flag|MOVEWITHSECTOR}}, {{Flag|NOBOSSRIP}}, {{Flag|THRUACTORS}}, {{Flag|THRUSPECIES}}, {{Flag|DONTSEEKINVISIBLE}}, {{Flag|FORCEPAIN}}, {{Flag|NOFEAR}}, {{Flag|BUMPSPECIAL}}, {{Flag|STEPMISSILE}}, {{Flag|NOTELEPORT}}, {{Flag|NOTRIGGER}},  {{Flag|AVOIDMELEE}}, {{Flag|JUMPDOWN}}, {{Flag|SCREENSEEKER}}, {{Flag|INVENTORY.PERSISTENTPOWER}}, {{Flag|WEAPON.AMMO_CHECKBOTH}}, {{Flag|WEAPON.NOAUTOAIM}} flags.&lt;br /&gt;
:*Added [[A_CheckCeiling]], [[A_MonsterRefire]], [[A_Weave]], [[A_JumpIfTargetInSight]], [[A_ZoomFactor]], [[A_SetAngle]], [[A_SetPitch]], [[A_ScaleVelocity]], [[A_ChangeVelocity]], [[A_SetCrosshair]], [[A_RemoveSiblings]], [[A_RaiseMaster]]/[[A_RaiseChildren|Children]]/[[A_RaiseSiblings|Siblings]], [[A_Log]], [[A_PrintBold]], [[A_SetArg]], [[A_SetSpecial]], [[A_Blast]] codepointers.&lt;br /&gt;
:*Added parameters to [[A_PodPain]], [[A_MakePod]], [[A_MLightningAttack]], [[A_M_Saw]], [[A_FireCustomMissile]], [[A_FadeOut]], [[A_Explode]], [[A_WeaponReady]], [[A_VileAttack]], [[A_Mushroom]], [[A_SeekerMissile]], [[A_KillChildren]]/[[A_KillMaster|Master]]/[[A_KillSiblings|Siblings]], [[A_CustomRailgun]] and [[A_RailAttack]], added SXF_TRANSFERPOINTERS flag to [[A_SpawnItemEx]] and several flags to [[A_Respawn]].&lt;br /&gt;
:*Imported {{Class|PowerDoubleFiringSpeed}} from [[Skulltag]], added {{Class|PowerInfiniteAmmo}}.&lt;br /&gt;
:*{{Class|PowerProtection}} and {{Class|PowerInvisibility}} can now be used to give certain flags to the player. Other enhancements to PowerInvisibility, such as changing the player&#039;s {{Property|RenderStyle}}.&lt;br /&gt;
:*Customizable mage lightning, sapphire wand, and {{Class|SpawnShot}} spawn lists.&lt;br /&gt;
:*[[ACS]]: compatibility fix for vanilla Hexen map where script execution order is critical.&lt;br /&gt;
:*Added [[GetActorVelX]]/[[GetActorVelY|Y]]/[[GetActorVelZ|Z]], [[SetActorVelocity]], [[GetActorViewHeight]], [[SetActivator]], [[SetActivatorToTarget]], [[GetChar]], [[SetSkyScrollSpeed]], [[GetAirSupply|Get]]/[[SetAirSupply]], [[GetArmorType]], [[CheckActorProperty]], [[CheckActorClass]], [[SoundSequenceOnActor]]/[[SoundSequenceOnSector|Sector]]/[[SoundSequenceOnPolyobj|Polyobj]], [[SpawnSpotForced]] and [[SpawnSpotFacingForced]].&lt;br /&gt;
:*Added ML_BLOCKUSE line flag, accessible through [[UDMF]] and [[Line_SetBlocking]].&lt;br /&gt;
:*Improved [[automatic compatibility]] with {{dw|Hacx}}, {{dw|Suspended in Dusk}}, {{dw|Community Chest}}, {{dw|Doomsday of UAC}}, {{dw|Strain}}, and the {{dw|Astrostein}} series.&lt;br /&gt;
:*[[Compatibility options]]: added Minotaur footclipped floor fire setting, sprite sorting order, [[MBF]]-style [[A_Mushroom]], monster movements affected by terrain, and friendly monsters able to cross blocking lines.&lt;br /&gt;
:*Added arch-vile &amp;quot;ghost&amp;quot; bug emulation for selected maps only.&lt;br /&gt;
:*Added several other MBF features, including {{Class|BetaSkull}}, [[A_FireOldBFG]], and [[DeHackEd]] support of MBF codepointers and actors.&lt;br /&gt;
:*Repaired accuracy of player behavior in &#039;&#039;[[Hexen]]&#039;&#039; with regards to [[jumping]] and pushing enemies away with attacks.&lt;br /&gt;
:*Fixed compatibility issues arising with [[Action Doom]].&lt;br /&gt;
:*Puffs now set their angle to face the originator of the attack.&lt;br /&gt;
:*Added SoulPriestess&#039; patch to force aspect ratio with {{CVAR|R|vid_aspect}}.&lt;br /&gt;
:*Added Spleen&#039;s patch to customize [[railgun]] performances with {{CVAR|R|r_rail_smartspiral}}, {{CVAR|R|r_rail_spiralsparsity}}, and {{CVAR|R|r_rail_trailsparsity}}.&lt;br /&gt;
:*[[UDMF]]: Added per-tier texture scaling with new [[sidedef]] properties and sidedef versions of [[linedef]] flags {{c|wrapmidtex}} and {{c|clipmidtex}}.&lt;br /&gt;
:*Improved [[sky]] projection and [[sky stretching]].&lt;br /&gt;
:*Updated Italian [[LANGUAGE|language]] file.&lt;br /&gt;
:*A whole lot more.&lt;br /&gt;
;{{LE|2.4.1}}{{rev|2126}} (January 24): {{Forum|t=24895|Release thread}} | {{versionlinks|2|4|1}}&lt;br /&gt;
:Bugfix release.&lt;br /&gt;
:*[[Floor_Waggle]] effects are smoother now.&lt;br /&gt;
:*Negative numbers in the [[alternate HUD]] have their minus sign at the right place now.&lt;br /&gt;
:*Menu option scales better in widescreen resolution.&lt;br /&gt;
:*[[Player setup]] menu looks better in non-Doom games.&lt;br /&gt;
:*Moving [[camera]]s work correctly again.&lt;br /&gt;
:*[[Polyobject]]s glitch a bit less now.&lt;br /&gt;
:*The internal nodebuilder works correctly now with certain troublesome maps.&lt;br /&gt;
:*&#039;&#039;[[Strife]]&#039;&#039; conversations fixed and improved.&lt;br /&gt;
:*Many nitpicky fixes in &#039;&#039;Strife&#039;&#039; (switch sounds, messages, etc.).&lt;br /&gt;
:*&#039;&#039;[[Action Doom 2]]&#039;&#039; and &#039;&#039;[[Harmony]]&#039;&#039; can now use idclev, and they have their Autoload section in [[the ini]].&lt;br /&gt;
:*[[MAPINFO]] {{c|ResetInventory}} keyword now works as expected.&lt;br /&gt;
:*The {{CVAR|C|norawinput}} console variable can be set to true to fix input problems while playing a Windows build through {{wp|Wine_(software)|Wine}}.&lt;br /&gt;
:*A [[character input grid]] is available to play ZDoom with a controller without having to use the keyboard.&lt;br /&gt;
:*Added [[GAMEINFO]] lump so that a mod can specify which [[IWAD]] and external resource files it uses.&lt;br /&gt;
;{{LE|2.5.0}}{{rev|2508}} (August 11): {{Forum|t=26755|Release thread}} | {{versionlinks|2|5|0}}&lt;br /&gt;
:*Enhanced [[polyobject]] system, allowing them to move anywhere in the map (like [[Eternity Engine|Eternity]]&#039;s &amp;quot;dynasegs&amp;quot;) and to give them any arbitrary shape. This is accompanied by new [[ACS]] polyobject movement functions.&lt;br /&gt;
:*Support for [[node|uncompressed extended nodes]], also supported by [[Eternity Engine]] and [[PrBoom+]], to create a new cross-port standard for node storage.&lt;br /&gt;
:*Support for using [[Byte Map Font]]s.&lt;br /&gt;
:*Ability to use metadata tags in audio formats to define custom loop points.&lt;br /&gt;
:*Added support for the [[MUSINFO]] lump (from [[Risen3D]] and [[PrBoom+]]).&lt;br /&gt;
:*Improved compatibility settings to allow optionally a greater faithfulness to the [[vanilla Doom]] and vanilla Heretic behaviors.&lt;br /&gt;
:*ZMAPINFO as an alias for [[MAPINFO]] to avoid compatibility problems with other ports parsing this lump.&lt;br /&gt;
:*Full rewrite of the [[SBARINFO]] system allowing many additional features and options.&lt;br /&gt;
:*Added support for multi-monitor display.&lt;br /&gt;
:*default reverbs environment setting in MAPINFO&lt;br /&gt;
:*Several generalized [[action functions|codepointers]] to emulate some very specific &#039;&#039;[[Heretic]]&#039;&#039; and &#039;&#039;[[Hexen]]&#039;&#039; action functions&lt;br /&gt;
:*New functions to refine actor behavior through&lt;br /&gt;
:*Enhanced [[poison]] damage system&lt;br /&gt;
:*Generalized [[railgun]] codepointers&lt;br /&gt;
:*New [[automap options]]&lt;br /&gt;
:*[[Hall of mirrors|HOM]] detection system&lt;br /&gt;
:*New [[console commands]]&lt;br /&gt;
:*The usual bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
==2011==&lt;br /&gt;
&#039;&#039;No release this year.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2012==&lt;br /&gt;
;{{LE|2.6.0}}{{rev|3730}} (July 2): {{Forum|t=33295|Release thread}} | {{versionlinks|2|6|0}}&lt;br /&gt;
:*Added [[Hacx]] IWAD support.&lt;br /&gt;
:*Added text-format Strife conversation system with [[USDF]] and [[ZSDF]].&lt;br /&gt;
:*A textured [[automap]] is now available; automap graphics are now [[map arrow|externalized]].&lt;br /&gt;
:*Rewritten [[menu]] system, which can now be defined with the [[MENUDEF]] lump.&lt;br /&gt;
:*Externalized intermissions to [[MAPINFO]].&lt;br /&gt;
:*Externalized [[IWAD]] detection and gave each IWAD its own independent config section.&lt;br /&gt;
:*Added [[FluidSynth]] and [[GUS|GUS emulator]] softsynths; fixed issues with [[TiMidity++]].&lt;br /&gt;
:*Added [[VOC]] support and enhanced [[MIDI]] playback with support for alternative formats such as [[XMI]] and [[HMI]].&lt;br /&gt;
:*[[Action specials]]: Added [[Ceiling_LowerAndCrushDist]] and [[Thing_SetConversation]]. Added [[console command]] to execute specials.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Increased maximum script number from 999 to 32767.&lt;br /&gt;
::*[[Named script]]s allow to avoid script number conflicts.&lt;br /&gt;
::*Added [[StrCpy]], [[CheckSight]], [[SetActivator]], [[SetPointer]] functions.&lt;br /&gt;
::*Added [[ACS actor properties|APROP_ScaleX/Y]] and APROP_Mass actor properties.&lt;br /&gt;
::*Added temporary dynamic strings variables with [[StrParam]].&lt;br /&gt;
::*Scripts can now have up to four parameters.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added [[A_CheckFlag]], [[A_FaceMaster]], [[A_FaceTracer]], [[A_RadiusGive]], [[A_SetMass]], [[A_SetScale]], [[A_Warp]] and [[A_WolfAttack]]...&lt;br /&gt;
::*Enhanced [[A_AlertMonsters]], [[A_BFGSpray]], [[A_Blast]], [[A_CustomBulletAttack]], [[A_FireBullets]], [[A_GunFlash]], [[A_PainAttack]], [[A_RadiusThrust]]...&lt;br /&gt;
::*Added an [[actor pointer]] manipulation system with several new codepointers...&lt;br /&gt;
::*Added {{Flag|DOHARMSPECIES}}, {{Flag|DONTCORPSE}}, {{Flag|SEEINVISIBLE}} and {{Flag|INVENTORY.UNTOSSABLE}}&lt;br /&gt;
::*Increased [[damage type]] flexibility in several ways with {{Property|DeathType}} and {{Property|PainType}}.&lt;br /&gt;
::*Added customizable {{Class|ArtiPoisonBag|fléchettes}}.&lt;br /&gt;
::*Made [[accuracy]] and [[stamina]] accessible through [[DECORATE expressions]].&lt;br /&gt;
::*Added {{Property|ProjectileKickback}}, {{Property|Inventory.RestrictedTo}} and {{Property|Inventory.ForbiddenTo}} class-based properties.&lt;br /&gt;
::*Backported {{Property|VisibleToTeam}}, {{Property|VisibleToPlayerClass}} and weapon {{Property|DropItem}} feature from [[Skulltag]], and enhanced them.&lt;br /&gt;
::*Added &amp;quot;Fast&amp;quot; keyword for states and deprecated the unreliable {{Flag|FASTER}} and {{Flag|FASTMELEE}} flags.&lt;br /&gt;
:*Added a [[SECRETS|secret hint system]].&lt;br /&gt;
:*[[3D floor]]s support.&lt;br /&gt;
:*[[FraggleScript]] support.&lt;br /&gt;
:*[[Voxel]] support.&lt;br /&gt;
:*[[SBARINFO]]: Ammo 1/2 capacities added to DrawNumber, support for color names in colored text.&lt;br /&gt;
:*[[SNDINFO]]: Added {{sndinfo|musicalias}} and {{sndinfo|attenuation}}.&lt;br /&gt;
:*Compatibility: fixed issues with {{dw|Eternal Doom}}, [[Happy Time Circus]], {{dw|Phobos_(WAD)|Phobos}}, vanilla compat, [[Boom]] compat, light levels higher than 255, [[Heretic]], [[Strife]], [[MUSINFO]], misnamed UDMF field.&lt;br /&gt;
:*Fixed loading of [[BMF]] palettes.&lt;br /&gt;
:*{{CCMD|O|restart}} console command.&lt;br /&gt;
:*Added [[PALVERS]] lump.&lt;br /&gt;
:*Custom [[IWAD]]s no longer need to include a [[COLORMAP]], as ZDoom will generate one automatically if it is missing.&lt;br /&gt;
:*Fixed vertical tiling of non-power-of-two textures.&lt;br /&gt;
:*Fixed blockmap overflows in huge maps with help from [[Mocha Doom|Maes]] and [[PrBoom+|Entryway]].&lt;br /&gt;
:*Joystick support for non-Windows platforms.&lt;br /&gt;
:*As always, a plethora of bug fixes and minor enhancements.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.6.1}}{{rev|3794}} (July 28): {{Forum|t=33547|Release thread}} | {{versionlinks|2|6|1}}&lt;br /&gt;
:*Added [[Hacx]] 2.0 IWAD support.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added [[ACS_NamedExecuteWait]] and [[NamedScriptWait]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{Flag|INVENTORY.RESTRICTABSOLUTELY}} and {{Flag|PLAYERPAWN.CANSUPERMORPH}}.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Added RandomPlayerStarts and UsePlayerStartZ flags for [[map definition]]s.&lt;br /&gt;
:*Solved compatibility issue with [[Massmouth 2]].&lt;br /&gt;
:*[[Voxel]]s are now rotated by 90° to match their orientation in Slab6 and [[Build]] games.&lt;br /&gt;
&lt;br /&gt;
==2013==&lt;br /&gt;
;{{LE|2.7.0}}{{rev|4342}} (June 8): {{Forum|t=36456|Release thread}} | {{versionlinks|2|7|0}}&lt;br /&gt;
:*Added [[Floor_RaiseAndCrushDoom]].&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Made dynamic strings persistent. ACS can now safely generate up to one million new strings.&lt;br /&gt;
::*Added [[CheckFont]], [[GetCVarString]], [[GetUserCVar]], [[GetUserCVarString]], [[IsTIDUsed]], [[LineAttack]], [[SetCVar]], [[SetCVarString]], [[SetUserCVar]], [[SetUserCVarString]], [[SpawnDecal]], and [[UniqueTID]].&lt;br /&gt;
::*Added HUD layers, visibility flags, additive blending, and alpha parameter to [[HudMessage]] and [[HudMessageBold]].&lt;br /&gt;
::*Also added HUD message wrapping and clipping with [[SetHudClipRect]] and [[SetHudWrapWidth]].&lt;br /&gt;
::*Added PLAYERINFO_FOV and _DESIREDFOV to [[GetPlayerInfo]].&lt;br /&gt;
::*Added support for desaturated [[translation]]s.&lt;br /&gt;
::*Added [[Sqrt]], [[FixedSqrt]], and [[VectorLength]] functions.&lt;br /&gt;
::*Support for advanced structures from non-ACC compilers.&lt;br /&gt;
::*Added the ability to retrieve the {{Property|ReactionTime}}, {{Property|Height}} and {{Property|Radius}} properties through [[GetActorProperty]].&lt;br /&gt;
::*Added CHANGELEVEL_PRERAISEWEAPON to [[ChangeLevel]].&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*{{Flag|FLOATBOB}} things are no longer moved physically when bobbing.&lt;br /&gt;
::*Added {{Property|Player.FallingScreamSpeed}}, {{Property|Player.GruntSpeed}}, {{Property|Weapon.MinSelectionAmmo1}}, and {{Property|Weapon.MinSelectionAmmo2}}.&lt;br /&gt;
::*Added random state duration and [[A_SetTics]].&lt;br /&gt;
::*[[A_Explode]]&#039;s &#039;&#039;affectsource&#039;&#039; parameter has been turned into a flag. Plus, added NOTMISSILE flag to A_Explode as well as to [[A_RadiusThrust]].&lt;br /&gt;
::*[[A_RadiusThrust]] can use negative &#039;&#039;force&#039;&#039; values.&lt;br /&gt;
::*Added [[A_JumpIfTargetInsideMeleeRange]], [[A_JumpIfTargetOutsideMeleeRange]], [[A_SetDamageType]], and [[A_CheckLOF]].&lt;br /&gt;
::*Added {{Flag|INVENTORY.NEVERRESPAWN}}, {{Flag|INVENTORY.NOSCREENFLASH}}, {{Flag|POWERSPEED.NOTRAIL}}, and {{Flag|PLAYERPAWN.CROUCHABLEMORPH}}.&lt;br /&gt;
::*Added JLOSF_NOAUTOAIM flag to [[A_JumpIfTargetInLOS]].&lt;br /&gt;
::*Added WRF_DISABLESWITCH to [[A_WeaponReady]].&lt;br /&gt;
::*[[A_Light]] can use negative values to darken the scene.&lt;br /&gt;
::*Added NORANDOMPUFFZ flag to [[A_CustomPunch]], [[A_FireBullets]], and [[A_CustomBulletAttack]].&lt;br /&gt;
::*Added SXF_USEBLOODCOLOR, SXF_CLEARCALLERTID, SXF_MULTIPLYSPEED, SXF_TRANSFERSCALE, SXF_TRANSFERSPECIAL, and SXF_CLEARCALLERSPECIAL flags to [[A_SpawnItemEx]].&lt;br /&gt;
::*Added the ability to adjust the vertical offset of a rail attack to [[A_RailAttack]] and [[A_CustomRailgun]].&lt;br /&gt;
::*Player-fired seeker [[Projectile|missiles]]&#039; range at which the missiles initially lock-on a [[Actor pointer|tracer]] can be set via {{Property|MaxTargetRange}} actor property.&lt;br /&gt;
::*{{Property|ReactionTime}} added to [[DECORATE expressions]].&lt;br /&gt;
::*Added [[Actor states#NoDelay|NoDelay]] state flag.&lt;br /&gt;
::*Added [[Actor_states#States|Bounce]] actor states.&lt;br /&gt;
::*Fixed few cases of DECORATE definitions inaccuracies for [[Doom]], [[Heretic]], [[Hexen]] and [[Strife]] actors.&lt;br /&gt;
:*[[FONTDEFS]]: Backported SPACEWIDTH from [[ECWolf]].&lt;br /&gt;
:*[[LANGUAGE]]: Brazilian Portuguese support.&lt;br /&gt;
:*[[MAPINFO]]: Added ForgetState, RememberState, and SpawnWithWeaponRaised flags for [[map definition]]s and NoRandomPlayerclass for [[GameInfo definition]]s.&lt;br /&gt;
:*[[MIDI]]: [[FluidSynth]] now recognize {{c|libfluidsynth.dll}} as a valid alias for {{c|fluidsynth.dll}}, various FluidSynth [http://forums.scummvm.org/viewtopic.php?p=72972#72972 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.&lt;br /&gt;
:*Updated [[foo_DUMB]].&lt;br /&gt;
:*Implemented additive rendering for [[3D floor]]s.&lt;br /&gt;
:*Added &#039;&#039;{{wp|Quake (video game)|Quake}}&#039;&#039;-like no-clipping with {{CCMD|D|noclip2}}.&lt;br /&gt;
:*Exported the [[scoreboard]] text to [[LANGUAGE]].&lt;br /&gt;
:*The sound system should now precache nearly all sounds used by actor properties and [[ambient sound]]s, and the [[MAPINFO/Map definition|MAPINFO]] command &amp;quot;PrecacheSounds&amp;quot; can be used to precache other sounds.&lt;br /&gt;
:*Arbitrary FPS cap with {{CVAR|R|vid_maxfps}}.&lt;br /&gt;
:*Increased maximum resolution to 5760&amp;amp;times;3600.&lt;br /&gt;
:*Added {{c|lightfog}} property for [[sidedef]]s.&lt;br /&gt;
:*Added support for {{dw|Doom 3: BFG Edition}}&#039;s modified [[IWAD]]s, including {{dw|No Rest for the Living}}.&lt;br /&gt;
:*Improved [[WAD]] archive code with support for big-endian format and LZSS compression used in several console ports.&lt;br /&gt;
:*Added ability in [[UDMF]] to specify things to spawn by [[:Category:Thing specials|thing specials]] and [[Hexen breakable items]] by names with {{c|arg1str}}, as well as the ability to set initial values to a thing&#039;s [[user variable]].&lt;br /&gt;
:*Added new [[node]] format for complex UDMF maps which need fractional precision on node splitters.&lt;br /&gt;
:*The [[alternate HUD]] now features a {{Class|Berserk}} indicator and a customizable time display.&lt;br /&gt;
:*Tweaked {{Class|ScriptedMarine|scripted marines}}.&lt;br /&gt;
:*Added {{c|{{CCMD|D|acsprofile}}}} [[CCMDs|console command]].&lt;br /&gt;
:*[[Weapon slots]] can be configured from the [[Customize controls]] menu.&lt;br /&gt;
:*Solved compatibility issues with [[Daedalus: Alien Defense]], {{dw|Community Chest 3}}, Nuke Mine, Khorus, [[Void]], the {{dw|Master Levels}}, and {{dw|Claustrophobia 1024}}.&lt;br /&gt;
:*{{Class|RandomSpawner}}s now respect {{param|nomonsters}}.&lt;br /&gt;
:*Added the ability to define mod-specific [[CVARs|console variables]] through the addition of the [[CVARINFO]] lump.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
;{{LE|2.7.1}}{{cs|21efe3b}} (July 3): {{Forum|t=36679|Release thread}} | {{versionlinks|2|7|1}}&lt;br /&gt;
&#039;&#039;Note: this is the first version based on the [[Git repository]]; 2.7.0 was the last version based on the SVN repository.&#039;&#039;&lt;br /&gt;
* Added new additive [[MAPINFO/GameInfo definition|GameInfo]] keywords: AddCreditPage, AddPlayerClasses, and AddInfoPage.&lt;br /&gt;
* Added a new {{Flag|DONTDRAIN}} flag to mark actors as ineligible for vampirism attacks.&lt;br /&gt;
* [[Automatic compatibility|Compatibility]] fixes for [[Ultimate Simplicity]] map07, [[Cheogsh]] map01, [[Super Sonic Doom]] map31&lt;br /&gt;
* [[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.&lt;br /&gt;
* The powered-up {{Class|GoldWand|Gold Wand}} was not puffing on actors.&lt;br /&gt;
* Disabled [[Heretic]]&#039;s punishment [[cheat]]s when in {{CVAR|C|allcheats}} mode.&lt;br /&gt;
* Objects that explode on death no longer deal the damage they were dealt instead of their own.&lt;br /&gt;
* Vampirism attacks now respect damage reduction.&lt;br /&gt;
* [[Demo]] recording now writes correct user info to demos.&lt;br /&gt;
* ACS&#039;s [[PlaySound]] for looping sounds now works properly when using channel flags.&lt;br /&gt;
&lt;br /&gt;
==2014==&lt;br /&gt;
==Next version==&lt;br /&gt;
The following additions are available in [[Git]] builds, but not yet in an official version.&lt;br /&gt;
:*Improved netcode and added [[network options]] menu to configure new features.&lt;br /&gt;
:*Native Cocoa back end for OS X resulting in significant increases in performance over SDL in addition to better overall user experience.&lt;br /&gt;
:*[[ACS]]:&lt;br /&gt;
::*Added {{c|[[DropItem]]}}, {{c|[[DropInventory]]}}, {{c|[[CheckFlag]]}}, {{c|[[GetLineActivation]]}}, {{c|[[SetLineActivation]]}}, {{c|[[GetArmorInfo]]}}, {{c|[[GetActorPowerupTics]]}}, {{c|[[IsPointerEqual]]}}, {{c|[[ChangeActorAngle]]}}, {{c|[[ChangeActorPitch]]}}, {{c|[[PickActor]]}}, and {{c|[[CanRaiseActor]]}}  functions.&lt;br /&gt;
::*Added FHF_NORANDOMPUFFZ flag for {{c|[[LineAttack]]}}.&lt;br /&gt;
::*Added BLOCKF_HITSCAN flag for {{c|[[Line_SetBlocking]]}}.&lt;br /&gt;
::*Added {{c|APROP_ViewHeight}}, {{c|APROP_AttackZOffset}} and {{c|APROP_StencilColor}} [[ACS actor properties]].&lt;br /&gt;
::*Fixed potential desync with {{c|[[CheckPlayerCamera]]}}.&lt;br /&gt;
::*Fixed: {{c|[[Thing_SetGoal]]}} could put an actor&#039;s target and goal out of sync.&lt;br /&gt;
::*{{c|[[GetSectorFloorZ]]}} and {{c|[[GetSectorCeilingZ]]}} now interpret 0-tag as &#039;any sector&#039; and return the z-height of whatever sector is at those coordinates.&lt;br /&gt;
::*[[Arrays]] are now supported at the script scope.&lt;br /&gt;
:*[[ANIMDEFS]]:&lt;br /&gt;
::*Added an optional {{c|worldpanning}} flag for camera textures definitions in order to make camera textures pan in world units instead of texture units.&lt;br /&gt;
::*Added {{c|allowdecals}} option to animated doors.&lt;br /&gt;
:*[[DECORATE]]:&lt;br /&gt;
::*Added {{c|{{Property|Player.UseRange}}}} and {{c|{{Property|Player.AirCapacity}}}} [[player properties]].&lt;br /&gt;
::*Added SXF_TRANSFERSTENCILCOL, SXF_TRANSFERALPHA, SXF_TRANSFERRENDERSTYLE, SXF_SETTARGET, SXF_SETTRACER, SXF_NOPOINTERS flags for {{c|[[A_SpawnItemEx]]}}; VAF_DMGTYPEAPPLYTODIRECT flag for {{c|[[A_VileAttack]]}}; AMF_TARGETEMITTER, AMF_TARGETNONPLAYER, AMF_EMITFROMTARGET flags for {{c|[[A_AlertMonsters]]}}; SF_NOPULLIN and SF_NOTURN flags for {{c|[[A_Saw]]}}; WARPF_ABSOLUTEPOSITION to {{c|[[A_Warp]]}}.&lt;br /&gt;
::*Added {{Flag|NOFORWARDFALL}}, {{Flag|NOTONAUTOMAP}}, {{Flag|RELATIVETOFLOOR}}, {{Flag|NEVERTARGET}}, {{Flag|NOTELESTOMP}}, {{Flag|ALWAYSTELEFRAG}}, and {{Flag|INVENTORY.TOSSED}} [[actor flags]].&lt;br /&gt;
::*Added parameters to [[A_BFGSpray]]&lt;br /&gt;
::*Added {{c|[[A_DamageSelf]]/[[A_DamageTarget|Target]]/[[A_DamageTracer|Tracer]]}}, {{c|[[A_Remove]]/[[A_RemoveSiblings|Siblings]]/[[A_RemoveTarget|Target]]/[[A_RemoveTracer|Tracer]]}}, {{c|[[A_KillTarget]]/[[A_KillTracer|Tracer]]}}, {{c|[[A_DropItem]]}} and {{c|[[A_SetSpeed]]}} [[action functions]].&lt;br /&gt;
::*The amount of health regeneration gotten from a {{c|{{Class|PowerRegeneration}}}} powerup can be controlled with the {{c|{{Property|Powerup.Strength}}}} property.&lt;br /&gt;
::*{{c|[[A_SetTics]]}} can work with weapons.&lt;br /&gt;
::*Improved the {{c|[[Actor states#NoDelay|NoDelay]]}} state flag reliability.&lt;br /&gt;
::*Added string table replacement for {{c|[[A_Print]]}}, {{c|[[A_PrintBold]]}} and {{c|[[A_Log]]}}.&lt;br /&gt;
::*Negative x-scale can be used to allow mirroring of an actor&#039;s sprite.&lt;br /&gt;
::*Added {{c|Subtract}} render style.&lt;br /&gt;
::*Added the ability to format text with {{c|[[A_Log]]}}.&lt;br /&gt;
::*Different types of {{Class|HereticImp|gargoyles}} and {{Class|Mummy|golems}} could infight amongst themselves (original &#039;&#039;[[Heretic]]&#039;&#039; behavior).&lt;br /&gt;
::*Added {{c|[[Actor states#CanRaise|CanRaise]]}} and {{c|[[Actor states#Slow|Slow]]}} actor [[actor states#State keywords|state flags]].&lt;br /&gt;
:*[[LANGUAGE]]:&lt;br /&gt;
::*Externalized &amp;quot;New save game&amp;quot; line for save screen, and [[automap]] statistics display.&lt;br /&gt;
:*[[MAPINFO]]:&lt;br /&gt;
::*Custom colors for both modes of the automap can be set on per-mod basis.&lt;br /&gt;
::*Added {{c|SlowMonsters}} [[skill definition]]s property.&lt;br /&gt;
:*[[SBARINFO]]:&lt;br /&gt;
::*Extended {{c|[[DrawImage]]}} command.&lt;br /&gt;
:*[[SNDINFO]]:&lt;br /&gt;
::*Fixed incorrect {{Class|Minotaur|Maulotaur}} melee attack sound.&lt;br /&gt;
:*Added [[Ceiling_CrushAndRaiseSilentDist]]&lt;br /&gt;
:*Added a user-settable factor for [[earthquake]] intensity.&lt;br /&gt;
:*Non-countable monster actors can have their own separate automap color.&lt;br /&gt;
:*Added a {{c|{{CCMD|O|closemenu}}}} [[CCMDs|console command]], so that menu options that close the [[menu]] can be added.&lt;br /&gt;
:*Menu&#039;s back button and the pause sign can be animated.&lt;br /&gt;
:*Added {{c|blockhitscan}} and {{c|transparent}} [[linedef|line]] properties, {{c|waterzone}} [[sector]] property, and {{c|alpha}}, {{c|fillcolor}}, {{c|gravity}}, {{c|health}}, {{c|pitch}}, {{c|renderstyle}}, {{c|roll}}, {{c|scale}}, {{c|scalex}}, {{c|scaley}} and {{c|score}} [[thing]] properties for [[Universal Doom Map Format|UDMF]].&lt;br /&gt;
:*Extended {{c|{{CVAR|A|am_cheat}}}} with three modes to prevent lines flagged as &#039;&#039;hidden&#039;&#039; from being shown on the automap.&lt;br /&gt;
:*Added separate colors for the various types of 2-sided walls for the overlay automap, as well as colors missing from that mode.&lt;br /&gt;
:*The behavior of auto-loading external [[DEHACKED]] lumps can be controlled by setting the {{c|dehload}} [[CVARs|console variable]].&lt;br /&gt;
:*Results for console tab-completion are now color-coded; console commands appear blue, console variables green, and aliases red.&lt;br /&gt;
:*Actors sprites can be shown on the automap instead of simple triangles when the second, third, fifth or sixth modes of {{c|am_cheat}} console variable are enabled.&lt;br /&gt;
:*Added compatibility settings for &#039;&#039;[[Cheogsh 2]]&#039;&#039; and &#039;&#039;XtheaterIII&#039;&#039;.&lt;br /&gt;
:*Fixed: the {{c|{{CVAR|R|wi_noautostartmap}}}} console variable was not sync-safe.&lt;br /&gt;
:*Added {{c|{{CVAR|C|sv_freelook}}}}, {{c|{{CVAR|C|sv_allowfreelook}}}} and {{c|{{CVAR|C|sv_nofreelook}}}}&lt;br /&gt;
:*Added support for standard file paths on Windows.&lt;br /&gt;
:*Removed [[Polymost]] code.&lt;br /&gt;
:*Fixed miscellaneous bugs.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://sourceforge.net/projects/zdoom/files/ Sourceforge archive] Unofficial mirror for ZDoom versions&lt;br /&gt;
* [https://github.com/doomtech/zdoom-old GitHub archive] Unofficial repository of pre-SVN source code&lt;br /&gt;
[[Category:Nostalgia]][[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=38539</id>
		<title>Compile ZDoom on Linux</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Linux&amp;diff=38539"/>
		<updated>2014-11-25T04:57:12Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Install dependencies */ GCC 3 hasn&amp;#039;t been supported for awhile.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial will guide you on the compilation of [[ZDoom]] on Linux.&lt;br /&gt;
Commands are shown in the tutorial that should be entered into a terminal. Commands beginning with `&amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt;` and `&amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt;` will require temporary root/admin privileges, as will most likely any package installation.&lt;br /&gt;
&lt;br /&gt;
==Install dependencies==&lt;br /&gt;
ZDoom needs certain dependencies in order to compile. These versions are known to work with recent ZDoom versions:&lt;br /&gt;
* gcc 4.0 or later&lt;br /&gt;
* make&lt;br /&gt;
* cmake 2.4 or later (2.8+ recommended)&lt;br /&gt;
* fmodex {{LatestFMOD/Version|.}}&lt;br /&gt;
* SDL 1.2.8–1.2.15&lt;br /&gt;
* zlib &#039;&#039;(optional - ZDoom has a copy of it and will be statically compiled in if not found)&#039;&#039;&lt;br /&gt;
* libbzip2 &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* libjpeg &#039;&#039;(optional - possibly static)&#039;&#039;&lt;br /&gt;
* nasm 2.03.90–2.05.01 or 0.98.39 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* GTK2 &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* Mesa &#039;&#039;(if compiling [[GZDoom]])&#039;&#039;; or any other GL implementation provider. [[Compile GZDoom on Linux|Compile GZDoom on Linux]]&lt;br /&gt;
* gxmessage &#039;&#039;(needed to show the crash log in a window)&#039;&#039;&lt;br /&gt;
* git &#039;&#039;(needed in order to clone repository)&#039;&#039;&lt;br /&gt;
* fluidsynth &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
* libgme or game-music-emu &#039;&#039;(optional)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can presumably use any &#039;&#039;higher&#039;&#039; versions of these programs, however that might not be the case. [[FMOD Ex]], notably, does not have a constant API and using a version newer than the one listed above can prevent the successful compilation or execution of ZDoom.&lt;br /&gt;
&lt;br /&gt;
=== Debian/Ubuntu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential zlib1g-dev libsdl1.2-dev libjpeg-dev \&lt;br /&gt;
nasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
yum install gcc-c++ make zlib-devel SDL-devel libjpeg-turbo-devel \&lt;br /&gt;
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emu-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
ZDoom is available in Arch User Repository at http://aur.archlinux.org/packages.php?ID=16403&lt;br /&gt;
&lt;br /&gt;
Install [https://wiki.archlinux.org/index.php/Arch_User_Repository as per usual for AUR packages].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pacman -S --needed gcc make zlib sdl libjpeg-turbo nasm tar bzip2 gtk2 cmake git fluidsynth libgme fmodex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
zypper install gcc-c++ make zlib-devel libSDL-devel libjpeg-devel \&lt;br /&gt;
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(FMOD available in RPM format from [http://packages.opensuse-community.org/index.jsp?searchTerm=libfmodex third-party repositories]. At your option, you can also use yast2 instead of zypper.)&lt;br /&gt;
&lt;br /&gt;
=== Mageia ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
urpmi gcc-c++ make lib&amp;quot;$a&amp;quot;zlib-devel lib&amp;quot;$a&amp;quot;SDL-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gtk+2.0-devel cmake git lib&amp;quot;$a&amp;quot;fluidsynth-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gme-devel lib&amp;quot;$a&amp;quot;cairo-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl media-libs/libjpeg-turbo \&lt;br /&gt;
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake dev-vcs/git media-sound/fluidsynth \&lt;br /&gt;
media-libs/game-music-emu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLinuxOS ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
a=&amp;quot;64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
a=&amp;quot;&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
apt-get install gcc-c++ make zlib1-devel lib&amp;quot;$a&amp;quot;SDL-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;jpeg62-devel nasm tar lib&amp;quot;$a&amp;quot;bzip2-devel \&lt;br /&gt;
lib&amp;quot;$a&amp;quot;gtk+2.0_0-devel cmake git lib&amp;quot;$a&amp;quot;fluidsynth1-devel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the versions of these packages are equal to or greater than one of the versions listed above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Continue to [[#Make zdoom_build directory|Make zdoom_build directory]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Get the ZDoom sources ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
Since a git clone is recommended, this guide will be referring to the root directory of the source code (not the src directory) as the &amp;quot;clone directory.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Get the [http://www.fmod.org/ FMOD] package ==&lt;br /&gt;
ZDoom uses the [[FMOD Ex]] library for audio. In many distributions, this will need to be installed manually. Check your system&#039;s package manager first to see if FMOD Ex is supported, and install it from there if it is and skip this section.&lt;br /&gt;
Otherwise, run the following commands to install FMOD Ex:&lt;br /&gt;
 wget http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux.tar.gz&lt;br /&gt;
Note that if you are on a 64-bit system, you will want the 64-bit version; use the following commands to get that instead. (You can have both the 32- and 64-bit versions installed concurrently, and this may be desirable if you wish to be able to use FMOD Ex with both 32- and 64-bit applications.)&lt;br /&gt;
 # to get the 64-bit version&lt;br /&gt;
 wget http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux64.tar.gz&lt;br /&gt;
 tar -xvzf fmodapi42636linux64.tar.gz&lt;br /&gt;
Now that the library has been downloaded and extracted, you may choose to install it or place it in the ZDoom directory tree. &lt;br /&gt;
&lt;br /&gt;
If you will not be installing ZDoom but running directly from the location where it is compiled, installing FMOD Ex is not strictly required, and you can place it in the clone directory or build directory. (**As installing ZDoom is not officially supported, you should probably choose this option**.) This has the advantage that you can easily have multiple versions of FMOD on your system with no conflicts between each other:&lt;br /&gt;
 mv fmodapi{{LatestFMOD/Version}}linux /path/to/zdoom&lt;br /&gt;
If instead, you would like to install FMOD Ex to /usr/local, you can do so:&lt;br /&gt;
 cd fmodapi{{LatestFMOD/Version}}linux # or fmodapi{{LatestFMOD/Version}}linux64 for the 64-bit version&lt;br /&gt;
 sudo make install&lt;br /&gt;
You will be prompted for your password, and assuming you have correct administrator privileges, FMOD Ex will be installed.&lt;br /&gt;
&lt;br /&gt;
== Compile ==&lt;br /&gt;
&lt;br /&gt;
ZDoom uses [http://www.cmake.org/ CMake] to handle makefile generation on Linux, so simply running &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; will not build ZDoom until you have used CMake first.&lt;br /&gt;
&lt;br /&gt;
First make sure that the zdoom directory looks something like this :-&lt;br /&gt;
&lt;br /&gt;
   /games/zdoom/$ ls&lt;br /&gt;
   bzip2 dumb fmodapi42636linux64.tar.gz jpeg-6b specs tools  &lt;br /&gt;
   zdoom.vcproj CMakeLists.txt FindFluidSynth.cmake &lt;br /&gt;
   game-music-emu lzma src wadsrc zlib docs&lt;br /&gt;
   fmodapi42636linux64 gdtoa output_sdl  strifehelp.acs  zdoom.sln&lt;br /&gt;
&lt;br /&gt;
Then make sure that the git master is upto date. This can be seen by doing :-&lt;br /&gt;
&lt;br /&gt;
   ~/games/zdoom$ git pull origin master&lt;br /&gt;
   From https://github.com/rheit/zdoom.git/&lt;br /&gt;
   * branch            master      -&amp;gt; FETCH_HEAD&lt;br /&gt;
   Already up-to-date.&lt;br /&gt;
&lt;br /&gt;
This means that we are with the latest development version. &lt;br /&gt;
&lt;br /&gt;
Next, we need to make a directory for CMake to work from, and compile to.&lt;br /&gt;
 mkdir release&lt;br /&gt;
 cd release&lt;br /&gt;
Invoke CMake to parse the ZDoom source and get ready for compiling:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
It may be necessary to tell it where the FMOD files and includes are located, for example use this command if you installed version {{LatestFMOD/Version|.}} of FMOD:&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=/usr/local/lib/libfmodex-{{LatestFMOD/Version|.}}.so -DFMOD_INCLUDE_DIR=/usr/local/include/fmodex/ ..&lt;br /&gt;
In case 64-bit FMOD is used, it of course needs to point to that instead.&lt;br /&gt;
 -DFMOD_LIBRARY=/usr/local/lib64/libfmodex64-{{LatestFMOD/Version|.}}.so&lt;br /&gt;
Compile the code from inside the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Compile with FMOD in the clone directory (AMD64) ==&lt;br /&gt;
&lt;br /&gt;
This is the recommended method, especially for 64 bit systems, I&#039;ve noticed that the installation does not usually put the file in lib64, and it was quite a hunt to find it. &lt;br /&gt;
&lt;br /&gt;
This portion is for x64 machines, but it should work with i386 systems as well, if you remove the 64 in fmodapi42416linux64/ and libfmodex64-{{LatestFMOD/Version|.}}.so it should work.&lt;br /&gt;
&lt;br /&gt;
Follow the above steps, but the CMake commands will be different.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the -DFMOD_LIBRARY parameter needs to point to a specific .so file (e.g., fmodapi42416linux64/api/lib/libfmodex-{{LatestFMOD/Version|.}}.so) and -DFMOD_INCLUDE_DIR needs to point to a DIRECTORY (e.g., fmodapi42416linux64/api/inc). If you&#039;re in doubt about the locations of a file, you can open these directories up to be sure that your library is there. Your inc/ directory should include .h and .hpp files. &lt;br /&gt;
&lt;br /&gt;
That is basically what these three parameters for CMake do, they tell CMake where the libraries and include files are, both libraries and includes are needed to compile ZDoom.&lt;br /&gt;
&lt;br /&gt;
Your command would look like this, replace &amp;lt;path to clone&amp;gt; with the directory which the clone was created in, e.g., /home/yourname/zdoom/ and replace fmodapi&amp;lt;VERSION&amp;gt;linux64 with the version you&#039;re using. Right now I&#039;m using the AMD64 version of FMOD 4.24.16, so my folder is fmodapi42416linux64.&lt;br /&gt;
&lt;br /&gt;
(this command should be a single line, shown on two lines so it&#039;s easier to read)&lt;br /&gt;
&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/lib/libfmodex64-{{LatestFMOD/Version|.}}.so &lt;br /&gt;
 -DFMOD_INCLUDE_DIR=&amp;lt;path to clone&amp;gt;/fmodapi&amp;lt;VERSION&amp;gt;linux64/api/inc ..&lt;br /&gt;
&lt;br /&gt;
== Start playing ZDoom ==&lt;br /&gt;
&lt;br /&gt;
Assuming all goes well, an executable &amp;lt;tt&amp;gt;zdoom&amp;lt;/tt&amp;gt; and the &amp;lt;tt&amp;gt;zdoom.pk3&amp;lt;/tt&amp;gt; file will be generated in the &amp;lt;tt&amp;gt;release&amp;lt;/tt&amp;gt; directory. To start ZDoom, the following command should work:&lt;br /&gt;
 ./zdoom&lt;br /&gt;
If ZDoom complains you do not have any IWADs set up, make sure that you have your [[IWAD]] files placed in the same directory as ZDoom, in &amp;lt;tt&amp;gt;$HOME/.zdoom&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$DOOMWADDIR&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;/usr/local/share&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Sound ===&lt;br /&gt;
If ZDoom starts but immediately closes with the following messages in the terminal:&lt;br /&gt;
 ...&lt;br /&gt;
 Init Playloop state.&lt;br /&gt;
 Setting up sound.&lt;br /&gt;
 S_Init&lt;br /&gt;
 Checking network game status.&lt;br /&gt;
 player 1 of 1 (1 nodes)&lt;br /&gt;
&lt;br /&gt;
This usually indicates that [[FMOD Ex]] is not loading correctly (and ZDoom is configured to use FMOD by default). There are then two solutions. &lt;br /&gt;
&lt;br /&gt;
You could start ZDoom without music:&lt;br /&gt;
 zdoom -nomusic&lt;br /&gt;
&lt;br /&gt;
or you could select (in the ZDoom settings) a [[MIDI device]] other than FMOD. To change MIDI device, go to the [[sound options]] menu.&lt;br /&gt;
* [[OPL synth emulation]] can work out of the box without further configuration.&lt;br /&gt;
* To install [[TiMidity++]]:&lt;br /&gt;
:*... on any Debian/Ubuntu-based distribution, run:&lt;br /&gt;
 sudo apt-get install timidity timidity-interfaces-extra&lt;br /&gt;
:*... on openSUSE:&lt;br /&gt;
 yast2 -i timidity &#039;&#039;&#039;or&#039;&#039;&#039; zypper in timidity&lt;br /&gt;
:*... on Gentoo, run:&lt;br /&gt;
 sudo emerge -avn timidity++&lt;br /&gt;
&lt;br /&gt;
See the [[software synthesizer]] article for further information about ZDoom&#039;s MIDI devices.&lt;br /&gt;
&lt;br /&gt;
== Developing ==&lt;br /&gt;
&lt;br /&gt;
This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or submitting code changes or fixes for inclusion. This section is intended for more advanced users who may be unfamiliar to CMake or debugging on Linux systems.&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
Maybe you have found a way to make ZDoom crash, and are interested in debugging it. First, you need to compile a debug build of ZDoom.&lt;br /&gt;
Inside the &amp;lt;tt&amp;gt;clone&amp;lt;/tt&amp;gt; directory, create a new directory &amp;lt;tt&amp;gt;debug&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 mkdir debug&lt;br /&gt;
 cd debug&lt;br /&gt;
Invoke CMake to set up for compiling, but this time, the build type is set to Debug.&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
After CMake is done, run &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; as usual.&lt;br /&gt;
&lt;br /&gt;
To run ZDoom under a debugger such as [http://www.gnu.org/software/gdb/ gdb], use the following command:&lt;br /&gt;
 gdb zdoom&lt;br /&gt;
Now gdb should have you in its own prompt. You probably want to log the output, so lets output to a file &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;: &lt;br /&gt;
 set logging on log.txt&lt;br /&gt;
Now start ZDoom by typing in &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt;, and pressing enter. (Put any arguments to zdoom after &amp;lt;tt&amp;gt;run&amp;lt;/tt&amp;gt; .)&lt;br /&gt;
If ZDoom crashes, gdb may be able to tell you the source file and line number it crashed in. Typing in the command &amp;lt;tt&amp;gt;backtrace&amp;lt;/tt&amp;gt; will produce information telling the last function calls, showing how execution got to the point where it crashed. All output will be copied into the &amp;lt;tt&amp;gt;log.txt&amp;lt;/tt&amp;gt;, which can then be scrutinized later, or perhaps posted to the {{forum|Bugs forum|view=forum|f=2}} for other developers to look at.&lt;br /&gt;
&lt;br /&gt;
To get out of gdb&#039;s prompt, type &amp;lt;tt&amp;gt;quit&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Build Options ===&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; width=&amp;quot;65%&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;text-decoration: underline&amp;quot;&amp;gt;CMake Build Types&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;|Types!!width=&amp;quot;45%&amp;quot;|Description!!width=&amp;quot;45%&amp;quot;|Example&lt;br /&gt;
|-&lt;br /&gt;
|Debug||Debug information, -O1 optimization.||cmake -DCMAKE_BUILD_TYPE=Debug ..&lt;br /&gt;
|-&lt;br /&gt;
|Release||No debug information, -O3 optimization.||cmake -DCMAKE_BUILD_TYPE=Release ..&lt;br /&gt;
|-&lt;br /&gt;
|RelWithDebInfo||Debug information, -O3 optimization. Useful for finding optimization bugs that only show up in Release.||cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..&lt;br /&gt;
|-&lt;br /&gt;
|MinSizeRel||Similar to Release but with less optimizations in order to save space.||cmake -DCMAKE_BUILD_TYPE=MinSizeRel ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Make zdoom_build directory ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Open a terminal and copy and paste the whole code box for each step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -pv $HOME/zdoom_build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Source ==&lt;br /&gt;
&lt;br /&gt;
Download the ZDoom source and make build directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
git clone git://github.com/rheit/zdoom.git &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv zdoom/build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and run the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd zdoom&lt;br /&gt;
git config --local --add remote.origin.fetch +refs/tags/*:refs/tags/*&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download FMOD ==&lt;br /&gt;
&lt;br /&gt;
Download FMOD 4.26.36 32-bit or 64-bit and extract files to zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then &lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
wget -nc http://www.fmod.org/download/fmodex/api/Linux/$FMODFOLDER.tar.gz &amp;amp;&amp;amp; \&lt;br /&gt;
tar -xvzf $FMODFOLDER.tar.gz -C zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FMOD Links ===&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 32-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux.tar.gz&lt;br /&gt;
&lt;br /&gt;
FMOD 4.26.36 64-bit:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.fmod.org/download/fmodex/api/Linux/fmodapi42636linux64.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom/build &amp;amp;&amp;amp; \&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
make clean ; \&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/lib/$FMODFILE.so \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=$HOME/zdoom_build/zdoom/$FMODFOLDER/api/inc .. &amp;amp;&amp;amp; \&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Current release version ===&lt;br /&gt;
Show the current release version:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git describe --tags $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to compile the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout $(git rev-list --tags --max-count=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and [[#Compiling|compile]].&lt;br /&gt;
&lt;br /&gt;
After compiling and backing up the current release version, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
&lt;br /&gt;
Follow this step if you want or manually copy (backup) zdoom, zdoom.pk3 and liboutput_sdl.so.&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the corresponding ZDoom version/revision and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZDOOM=&amp;quot;$(sed -n &#039;s/.*#define GIT_DESCRIPTION &amp;quot;\(.*\)&amp;quot;.*/\1/p&#039; \&lt;br /&gt;
zdoom/src/gitinfo.h)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZDOOM&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZDOOM&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Backup (Optional) ===&lt;br /&gt;
&lt;br /&gt;
Make and name a directory with the current year, month, day, hour and minute and copy zdoom, zdoom.pk3 and liboutput_sdl.so to it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build &amp;amp;&amp;amp; \&lt;br /&gt;
BACKUPZD=&amp;quot;$(date +%Y%m%d%H%M)&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
mkdir -pv &amp;quot;$BACKUPZD&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
cp -v zdoom/build/{zdoom,zdoom.pk3,\&lt;br /&gt;
output_sdl/liboutput_sdl.so} &amp;quot;$BACKUPZD&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Backup&amp;quot; or &amp;quot;Backup (Optional)&amp;quot;, the previous files should be located at:&lt;br /&gt;
: &#039;&#039;&#039;/home/&amp;lt;your username&amp;gt;/zdoom_build/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
When you wish to update ZDoom, copy and paste the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd $HOME/zdoom_build/zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the update finish, go to [[#Compiling|Compiling]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following steps contain commands that require to be run as superuser with the sudo command.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to install ZDoom, do the following:&lt;br /&gt;
&lt;br /&gt;
Make /usr/games/zdoom directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mkdir -pv /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy zdoom, zdoom.pk3, liboutput_sdl.so and libfmodex64-4.26.36.so or libfmodex-4.26.36.so to /usr/games/zdoom:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [ &amp;quot;$(uname -m)&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux64&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex64-4.26.36&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
FMODFOLDER=&amp;quot;fmodapi42636linux&amp;quot;&lt;br /&gt;
FMODFILE=&amp;quot;libfmodex-4.26.36&amp;quot;&lt;br /&gt;
fi &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v /home/$USER/zdoom_build/zdoom/{build/{zdoom,\&lt;br /&gt;
zdoom.pk3,output_sdl/liboutput_sdl.so},\&lt;br /&gt;
$FMODFOLDER/api/lib/$FMODFILE.so} /usr/games/zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make zdoom script, add executable permission and copy it to /usr/bin:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;#!/bin/sh&#039; &amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;export LD_LIBRARY_PATH=/usr/games/zdoom&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
echo &#039;exec /usr/games/zdoom/zdoom &amp;quot;$@&amp;quot;&#039; &amp;gt;&amp;gt; zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
chmod 755 zdoom &amp;amp;&amp;amp; \&lt;br /&gt;
sudo cp -v zdoom /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now from a terminal you should be able to execute &#039;&#039;&#039;zdoom&#039;&#039;&#039; from any user account.&lt;br /&gt;
&lt;br /&gt;
=== Uninstallation ===&lt;br /&gt;
&lt;br /&gt;
To remove the previous installation steps:&lt;br /&gt;
&lt;br /&gt;
Remove /usr/games/zdoom directory and all its files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/games &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -rfv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove zdoom script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/bin &amp;amp;&amp;amp; \&lt;br /&gt;
sudo rm -fv zdoom&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://github.com/rheit/zdoom Git Repository]&lt;br /&gt;
&lt;br /&gt;
[[category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Universal_Strife_Dialog_Format&amp;diff=37835</id>
		<title>Universal Strife Dialog Format</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Universal_Strife_Dialog_Format&amp;diff=37835"/>
		<updated>2014-04-01T21:39:24Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: /* Page blocks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;universal Strife dialog format&#039;&#039;&#039; is a scripting format is a format agreed upon by both authors of editing utilities and source ports. One advantage to using this over [[KSSC]] is that these scripts are more likely to be forwards compatible.&lt;br /&gt;
&lt;br /&gt;
== Direct use ==&lt;br /&gt;
[[ZDoom]] offers direct support of non-compiled USDF and [[ZSDF]] dialogue lumps.&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
The only format supported by [[Strife]] and ZDoom [[version history|versions up to 2.5.0]] is the original [[DIALOGUE|binary format]].  A tool known as the [http://bitowl.com/Universal_Strife_Dialog_Compiler Universal Strife Dialog Compiler] is capable of converting a subset of standard conformant dialogs to the original format. It can also be used to decompile old scripts into USDF.&lt;br /&gt;
&lt;br /&gt;
If you have a KSSC script and wish to convert it, you may compile it first and then decompile it with USDC.&lt;br /&gt;
&lt;br /&gt;
== Starting a script ==&lt;br /&gt;
Although not directly used by USDC itself, the USDF standard requires that you include the following two lines in your script.  If you are writing a replacement for SCRIPT00 you may remove the include line, but do note that the compiler will still print a warning.&lt;br /&gt;
&lt;br /&gt;
 namespace = &amp;quot;Strife&amp;quot;;&lt;br /&gt;
 include = &amp;quot;SCRIPT00&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
To compile the script run the following command:&lt;br /&gt;
&lt;br /&gt;
 usdc myscript.txt -o script02.o&lt;br /&gt;
&lt;br /&gt;
== Conversation blocks ==&lt;br /&gt;
The &#039;&#039;&#039; conversation &#039;&#039;&#039; keyword begins a group of scripts for a specific actor.  The only supported property is &#039;&#039;&#039; actor &#039;&#039;&#039; which must be set to the {{Property|ConversationID}} of the actor you wish to assign the dialogs to.  You should only have one conversation block per ConversationID as you may get undefined results otherwise.&lt;br /&gt;
&lt;br /&gt;
 conversation&lt;br /&gt;
 {&lt;br /&gt;
     actor = 1; // Change to the ConversationID of the actor.&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Page blocks ==&lt;br /&gt;
Within a conversation you may define as many &#039;&#039;&#039; page &#039;&#039;&#039; blocks as you would like.  Pages are indexed in the order in which they are defined.  Below is a list of properties supported within page blocks.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; name &#039;&#039;&#039; - Name that goes in the upper left hand corner.&lt;br /&gt;
* &#039;&#039;&#039; panel &#039;&#039;&#039; - Lump name that ZDoom uses as the portrait.&lt;br /&gt;
* &#039;&#039;&#039; voice &#039;&#039;&#039; - Name of the lump to play for narration. Should be in the voices [[namespace]].&lt;br /&gt;
* &#039;&#039;&#039; dialog &#039;&#039;&#039; - The contents of the page.&lt;br /&gt;
* &#039;&#039;&#039; drop &#039;&#039;&#039; - ConversationID of the object to be droped if the actor is killed.&lt;br /&gt;
* &#039;&#039;&#039; link &#039;&#039;&#039; - Page to jump to if all ifitem conditions are satisfied.&lt;br /&gt;
&lt;br /&gt;
 conversation&lt;br /&gt;
 {&lt;br /&gt;
     actor = 1;&lt;br /&gt;
     page&lt;br /&gt;
     {&lt;br /&gt;
          name = &amp;quot;MY ACTOR&amp;quot;;&lt;br /&gt;
          dialog = &amp;quot;Hello, what can I do for you?&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== IfItem blocks ==&lt;br /&gt;
Within a page up to three &#039;&#039;&#039; ifitem &#039;&#039;&#039; blocks can be defined.  You may specify the conversationID of the &#039;&#039;&#039; item &#039;&#039;&#039; in which to check.  If all conditions are satisfied the it will jump to the page pointed to by the link property in the page block.&lt;br /&gt;
&lt;br /&gt;
 conversation&lt;br /&gt;
 {&lt;br /&gt;
     actor = 1;&lt;br /&gt;
     page&lt;br /&gt;
     {&lt;br /&gt;
         link = 2;&lt;br /&gt;
         ifitem&lt;br /&gt;
         {&lt;br /&gt;
             item = 168; // Coin&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Choice blocks ==&lt;br /&gt;
Additionally you may specify up to 5 &#039;&#039;&#039; choice &#039;&#039;&#039; blocks within a page.  A generic response is always listed after these choices which does nothing more than close the dialog.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; text &#039;&#039;&#039; - The message of the response.&lt;br /&gt;
* &#039;&#039;&#039; displaycost &#039;&#039;&#039; - Determines if the cost should be displayed (defaults to true).&lt;br /&gt;
* &#039;&#039;&#039; yesmessage &#039;&#039;&#039; - Text to display if the choice is accepted (you can afford the option).&lt;br /&gt;
* &#039;&#039;&#039; nomessage &#039;&#039;&#039; - Text to display if the choice is rejected (you can&#039;t afford the option).&lt;br /&gt;
* &#039;&#039;&#039; log &#039;&#039;&#039; - The lump name of the log entry to use on success, for USDC this must be in the format of &amp;quot;LOGXXXXX&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039; giveitem &#039;&#039;&#039; - The ConversationID of the item to give on success.&lt;br /&gt;
* &#039;&#039;&#039; nextpage &#039;&#039;&#039; - The index of the page to go upon success.&lt;br /&gt;
* &#039;&#039;&#039; closedialog &#039;&#039;&#039; - Changes if the dialog will immediately go to the next page on success (default is false).&lt;br /&gt;
* &#039;&#039;&#039; special &#039;&#039;&#039; - Line special to execute.&lt;br /&gt;
* &#039;&#039;&#039; arg0 - arg4 &#039;&#039;&#039; - Arguments for the line special.&lt;br /&gt;
&lt;br /&gt;
 conversation&lt;br /&gt;
 {&lt;br /&gt;
     actor = 1;&lt;br /&gt;
     page&lt;br /&gt;
     {&lt;br /&gt;
          name = &amp;quot;MY ACTOR&amp;quot;;&lt;br /&gt;
          dialog = &amp;quot;Hello, what can I do for you?&amp;quot;;&lt;br /&gt;
          choice&lt;br /&gt;
          {&lt;br /&gt;
              text = &amp;quot;I need a crossbow.&amp;quot;;&lt;br /&gt;
              giveitem = 194;&lt;br /&gt;
              nextpage = 1;&lt;br /&gt;
          }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Cost blocks ==&lt;br /&gt;
Up to three &#039;&#039;&#039; cost &#039;&#039;&#039; blocks may be specified in a choice block, but if &#039;&#039;&#039; displaycost &#039;&#039;&#039; is true only the first will be shown.  You can specify the &#039;&#039;&#039; item &#039;&#039;&#039; ConversationID and the &#039;&#039;&#039; amount &#039;&#039;&#039; needed.&lt;br /&gt;
&lt;br /&gt;
 conversation&lt;br /&gt;
 {&lt;br /&gt;
     actor = 1;&lt;br /&gt;
     page&lt;br /&gt;
     {&lt;br /&gt;
          name = &amp;quot;MY ACTOR&amp;quot;;&lt;br /&gt;
          dialog = &amp;quot;Hello, what can I do for you?&amp;quot;;&lt;br /&gt;
          choice&lt;br /&gt;
          {&lt;br /&gt;
              text = &amp;quot;I need a crossbow.&amp;quot;;&lt;br /&gt;
              giveitem = 194;&lt;br /&gt;
              nextpage = 1;&lt;br /&gt;
              cost&lt;br /&gt;
              {&lt;br /&gt;
                  item = 168; // Coin&lt;br /&gt;
                  amount = 10;&lt;br /&gt;
              }&lt;br /&gt;
          }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[DIALOGUE]]&lt;br /&gt;
* [[ZDoom Strife Dialog Format]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [https://github.com/rheit/zdoom/blob/master/specs/usdf.txt USDF specifications]&lt;br /&gt;
&lt;br /&gt;
[[Category:Editing concepts]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=DIALOGUE&amp;diff=37834</id>
		<title>DIALOGUE</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=DIALOGUE&amp;diff=37834"/>
		<updated>2014-04-01T21:37:57Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;DIALOGUE&#039;&#039;&#039; lump holds Strife conversation data in a [[UDMF]] map. In binary [[map format]]s, this data is held outside of the map lumps, in a SCRIPTxx or DIALOGxx lump placed in the general namespace instead, where xx matches the number of a MAPxx map. For this reason, Strife conversations are only possible in maps named using the MAPxx convention; whereas in UDMF the name of the map is irrelevant.&lt;br /&gt;
&lt;br /&gt;
Conversation scripts written in [[USDF]] do not need to be compiled to be accepted by ZDoom. Those written in [[ZSDF]] cannot be compiled at all. Compiled lumps are called DIALOGUE (UDMF) or SCRIPTxx (binary formats), text lumps are called DIALOGUE (UDMF) or DIALOGxx (binary formats). For readability, DIALOGUE is also used here as the generic name of these lumps in the rest of this article.&lt;br /&gt;
&lt;br /&gt;
A compiled DIALOGUE lump contains a number of conversation nodes which are all exactly the same size: 1516 bytes. (Note: conversation nodes in the Strife teasers are a bit shorter: 1488 bytes. However there is no reason to create teaser-format conversations, since loading additional content is disabled when playing a non-complete version of a game.)&lt;br /&gt;
&lt;br /&gt;
A text-based DIALOGUE lump must follow either the [[USDF]] specifications, or its [[ZSDF|ZDoom variant]]. They are detailed in their own articles.&lt;br /&gt;
&lt;br /&gt;
== Binary format ==&lt;br /&gt;
The following structure corresponds to a Strife node. Multi-byte values are little-endian. A null string is one whose first byte is 0x00.&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Speech&lt;br /&gt;
|-&lt;br /&gt;
!Offset !! Length !! Name !! Content&lt;br /&gt;
|-&lt;br /&gt;
|0x0000 || 4 || speaker || An unsigned value corresponding to the talker&#039;s {{Property|ConversationID}}.&lt;br /&gt;
|-&lt;br /&gt;
|0x0004 || 4 || droptype || A signed value corresponding to the {{Property|ConversationID}} of an item that the talker will drop if killed. This is not the same as the {{Property|DropItem}} property. A negative value means no item is dropped.&lt;br /&gt;
|-&lt;br /&gt;
|0x0008 || 4*3 || itemcheck[3] || Three signed values to the {{Property|ConversationID}} of items that, if they are in the player&#039;s inventory, will provoke the conversation to jump to a different node instead of this one. A negative value means no items can trigger this jump.&lt;br /&gt;
|-&lt;br /&gt;
|0x0014 || 4 || link || A signed value corresponding to the node to which the conversation must jump if at least one of the itemchecks is successful.&lt;br /&gt;
|-&lt;br /&gt;
|0x0018 || 1*16 || name[16] || A string corresponding to the talker&#039;s displayed name, if any. The default value if the string is null is the actor&#039;s {{Property|Tag}}, and if that property is not defined, &amp;quot;Person&amp;quot; will be used instead.&lt;br /&gt;
|-&lt;br /&gt;
|0x0028 || 1*8 || sound[8] || A string corresponding to the sound name of the text&#039;s sound lump, if any. It must be declared in [[SNDINFO]] as svox/xxx, where xxx is the name contained in this string. Any sound in the voices [[namespace]] satisfies this requirement.&lt;br /&gt;
|-&lt;br /&gt;
|0x0030 || 1*8 || backdrop[8] || A string corresponding to a picture lump to display as the backdrop for the conversation. If not found, no picture is used.&lt;br /&gt;
|-&lt;br /&gt;
|0x0038 || 1*320 || dialogue[320] || A string corresponding to what the talker says.&lt;br /&gt;
|-&lt;br /&gt;
|0x0178 || 228*5 || responses[5] || five response structures defining the possible choices:&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; | Response&lt;br /&gt;
|-&lt;br /&gt;
!Offset !! Length !! Name !! Content&lt;br /&gt;
|-&lt;br /&gt;
|x+0x00 || 4 || givetype || A signed value corresponding to the {{Property|ConversationID}} of an item that the talker will give if this reply is chosen and successful. A negative value means no item is given.&lt;br /&gt;
|-&lt;br /&gt;
|x+0x04 || 4*3 || item[3] || Three signed values corresponding to the {{Property|ConversationID}} of items the player must have in his inventory for the reply to be successful if chosen. The first value, if not null, is reserved for gold.&lt;br /&gt;
|-&lt;br /&gt;
|x+0x10 || 4*3 || count[3] || Three signed values corresponding to the minimum amount of the items that the player must have in inventory. Again, the first is reserved for gold.&lt;br /&gt;
|-&lt;br /&gt;
|x+0x1C || 1*32 || choice[32] || A string corresponding to the text the player says if choosing this reply. A null string means no message. If both this and link are null, the reply is entirely ignored. If the first count value is positive, &amp;quot; for &amp;lt;count&amp;gt;&amp;quot; is automatically appended to the string.&lt;br /&gt;
|-&lt;br /&gt;
|x+0x3C || 1*80 || yes[80] || A string displayed if the reply is successfully chosen.&lt;br /&gt;
|-&lt;br /&gt;
|x+0x8C || 4 || link || A signed value corresponding to the node to which this reply leads. A value of zero means that the conversation stops. If both this and choice are null, the reply is entirely ignored.&lt;br /&gt;
|-&lt;br /&gt;
|x+0x90 || 4 || log || An unsigned value corresponding to the ID of the message that will be recorded in the log if the reply is successfully chosen, printing the content of the LOG&amp;lt;number&amp;gt; lump and playing the VOC&amp;lt;number&amp;gt; sound. See also [[SendToCommunicator]].&lt;br /&gt;
|-&lt;br /&gt;
|x+0x94 || 1*80 || no[80] || A string displayed if the reply is unsuccessfully chosen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Universal Strife Dialog Format]]&lt;br /&gt;
* [[KSSC]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Map lumps]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Namespace&amp;diff=37833</id>
		<title>Namespace</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Namespace&amp;diff=37833"/>
		<updated>2014-04-01T21:35:37Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Seems like this would be a decent spot to note the connection between voices and svox?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ZDoom]] organizes the lumps in several &#039;&#039;&#039;namespaces&#039;&#039;&#039; which correspond to different types of lumps. This allows to avoid conflicts if several lumps have the same name, but one is, for example, a texture while the other is a sound.&lt;br /&gt;
&lt;br /&gt;
Lumps belong to a namespace or another depending on where they are in the archive. The [[archive format]] matters: in sequential archives (such as WAD files), they are delimited by marker lumps; in hierarchized archives, they are in a specific directory.&lt;br /&gt;
&lt;br /&gt;
ZDoom uses the following lump namespaces:&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
! Namespace !! Markers !! Directory !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Global || Outside of markers || / (Root directory)&lt;br /&gt;
|-&lt;br /&gt;
| [[Sprite]]s || S_ or SS_ || /Sprites/ || Lumps are added to the Sprite image type.&lt;br /&gt;
|-&lt;br /&gt;
| [[Flat]]s	 || F_ or FF_ || /Flats/ || Lumps are added to the Flat image type.&lt;br /&gt;
|-&lt;br /&gt;
| Colormaps || C_ || /Colormaps/ || Optional&lt;br /&gt;
|-&lt;br /&gt;
| [[ACS]] [[Libraries]] || A_ || /ACS/&lt;br /&gt;
|-&lt;br /&gt;
| [[Texture]]s || TX_, HI_ || /Textures/, /Hires/ || Lumps are added to the Override image type.&lt;br /&gt;
|-&lt;br /&gt;
| [[Blood]] RAW || N/A || N/A || Files with the .RAW extension in a RFF archive.&lt;br /&gt;
|-&lt;br /&gt;
| [[Blood]] SFX || N/A || N/A || Files with the .SFX extension in a RFF archive.&lt;br /&gt;
|-&lt;br /&gt;
| [[Blood]] misc || N/A || N/A || Apparently unused&lt;br /&gt;
|-&lt;br /&gt;
| [[Strife]] voices || V_ || /Voices/ || Lumps are automatically assigned svox/&amp;lt;lumpname&amp;gt; as a [[SNDINFO]] logical name allowing them to be referenced directly in [[DIALOGUE]] scripts.&lt;br /&gt;
|-&lt;br /&gt;
| Hi-Res || HI_ || /HiRes/&lt;br /&gt;
|-&lt;br /&gt;
| Sounds || No specific markers || /Sounds/&lt;br /&gt;
|-&lt;br /&gt;
| [[Patch]]es || No specific markers || /Patches/ || Lumps are added to the Wall Patch image type. While not used by the engine, P_ or PP_ markers are often used anyway.&lt;br /&gt;
|-&lt;br /&gt;
| Graphics || No specific markers || /Graphics/ || Lumps are added to the Misc Patch image type. The Doom alpha and beta used the L_ marker here.&lt;br /&gt;
|-&lt;br /&gt;
| Music || No specific markers || /Music/&lt;br /&gt;
|-&lt;br /&gt;
| [[Skin]] || N/A || N/A || All lumps in an archive containing a [[S_SKIN]] lump are placed in a namespace specific to that skin.&lt;br /&gt;
|-&lt;br /&gt;
| [[Voxel]]s || VX_ || /Voxels/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is also a sort of equivalent of namespaces for images. The texture manager uses the following types:&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
! Name !! Description !! Namespace !! [[TEXTURES]] keyword&lt;br /&gt;
|-&lt;br /&gt;
| Any || Graphics that do not fit into any other category. || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Wall || These have priority over flats when applied on a sidedef. || N/A || WallTexture&lt;br /&gt;
|-&lt;br /&gt;
| Flat || These have priority over walls when applied on a floor or ceiling. || Flats || Flat&lt;br /&gt;
|-&lt;br /&gt;
| Sprite || Needs to be of the form NAME&#039;&#039;fa&#039;&#039; or NAME&#039;&#039;fafa&#039;&#039;, see [[sprite]] for more information. || Sprites || Sprite&lt;br /&gt;
|-&lt;br /&gt;
| Wall Patch || The building bricks of composite textures created through [[TEXTUREx]] or [[TEXTURES]]. || Patches || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Build || See [[Build tiles]] for more information. || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Skin Sprite || These have priority over sprites for players using the corresponding skin. || Skin || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Decal || They are defined in [[DECALDEF]] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Misc Patch || Miscellaneous graphics || Graphics || Graphic&lt;br /&gt;
|-&lt;br /&gt;
| Font Character || See [[font format]]s for more information. || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Override || Has priority on both flats and walls. || Textures || Texture&lt;br /&gt;
|-&lt;br /&gt;
| Autopage || Automap background. || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Null || An &amp;quot;empty&amp;quot; texture that is never displayed (e.g., TNT1A0). || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| FirstDefined || The first texture defined in a [[TEXTUREx]] lump (e.g., AASTINKY). || N/A || N/A&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Glossary]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Mac_OS_X&amp;diff=37499</id>
		<title>Compile ZDoom on Mac OS X</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Compile_ZDoom_on_Mac_OS_X&amp;diff=37499"/>
		<updated>2014-01-02T08:27:22Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Instructions for cross compiling for non native architectures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compiling ZDoom on Mac OS X may seem like a daunting task, but it&#039;s actually pretty similar to [[Compile ZDoom on Linux|the process for Linux]].&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A Mac computer with an Intel or PowerPC processor.&lt;br /&gt;
* Mac OS X 10.4 Tiger and above&lt;br /&gt;
* Latest version of Xcode, available [http://developer.apple.com/tools/xcode/ here] (requires free registration)&lt;br /&gt;
** Make sure you install GCC 4.2 and the Mac OS X 10.4u SDK, which should both be included in the Xcode package.&lt;br /&gt;
* [http://www.cmake.org/cmake/resources/software.html CMake 2.4 or later]&lt;br /&gt;
* {{LatestFMOD|m|msg=FMOD Ex v{{LatestFMOD/Version|.}}}}&lt;br /&gt;
* [http://www.libsdl.org/release/SDL-1.2.14.dmg libSDL 1.2.14]&lt;br /&gt;
&lt;br /&gt;
== Source code ==&lt;br /&gt;
&lt;br /&gt;
It is recommended that you use a recent version from the [[Git repository]] to compile, but you may use an older version&#039;s source from the {{plainlink|[http://www.zdoom.org/download.html ZDoom Downloads Page]}} if desired. Note that compilation steps may differ for older versions.&lt;br /&gt;
&lt;br /&gt;
== Configuring with CMake ==&lt;br /&gt;
&lt;br /&gt;
When you run the CMake application, you will be greeted with a window asking for a source code path and a build directory. The directions for CMake on Linux apply here, except with a GUI.&lt;br /&gt;
&lt;br /&gt;
After you click Configure, you will end up having to tell CMake where the FMOD library is located.  This should be &amp;quot;/Developer/FMOD Programmers API Mac/api/libfmodex.dylib&amp;quot;.  In addition set CMAKE_BUILD_TYPE to &amp;quot;Release&amp;quot;.  As of this writing you will also want to remove -O3 from CMAKE_CXX_FLAGS_RELEASE, set CMAKE_OSX_ARCHITECTURES to &amp;quot;i386&amp;quot; or &amp;quot;ppc&amp;quot; depending on your processor, and check the option for NO_ASM (you may need to switch to advanced view to see these options).&lt;br /&gt;
&lt;br /&gt;
After this, click &amp;quot;Configure&amp;quot; one more time and you should be good. When you click &amp;quot;Generate&amp;quot;, select the &amp;lt;tt&amp;gt;Unix Makefiles&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
=== MacPorts ===&lt;br /&gt;
If you are using {{wp|MacPorts}} to compile ZDoom, use the following command line to create the makefiles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
-DFMOD_LIBRARY=&amp;quot;/Developer/FMOD Programmers API Mac/api/lib/libfmodex.dylib&amp;quot; \&lt;br /&gt;
-DFMOD_INCLUDE_DIR=&amp;quot;/Developer/FMOD Programmers API Mac/api/inc/&amp;quot; \&lt;br /&gt;
-DNO_ASM=true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring for cross compiling ==&lt;br /&gt;
{{warning|ZDoom does not building universal binaries directly. Attempting to do so will likely succeed, but the resulting binary will not run on all architectures.}}&lt;br /&gt;
Skip this step if you are doing a native build. Since ZDoom uses some tools to generate files during the build and sets architecture specific optimizations for some files, there may be additional steps required to build for a non-native architecture.&lt;br /&gt;
&lt;br /&gt;
=== Cross compiling with Rosetta ===&lt;br /&gt;
If you are running OS X 10.4-10.6 on an Intel system, you can build PowerPC binaries natively. Simply set CMAKE_OSX_ARCHITECTURES to ppc and everything should build fine.&lt;br /&gt;
&lt;br /&gt;
=== Cross compiling without Rosetta ===&lt;br /&gt;
If your system does not have Rosetta, a universal binary can still be built. First you must create a native build directory following the directions without this step. This will create an ImportExecutables.cmake in your build directory. This file tells CMake where to find a pre-existing build of the tools needed.&lt;br /&gt;
&lt;br /&gt;
First enable FORCE_CROSSCOMPILE and then feed the ImportExecutables.cmake into IMPORT_EXECUTABLES variable. Finally set CMAKE_OSX_ARCHITECTURES to the desired target arch along with CMAKE_OSX_SYSROOT/CMAKE_OSX_DEPLOYMENT_TARGET.&lt;br /&gt;
&lt;br /&gt;
=== Making a universal binary ===&lt;br /&gt;
Once you&#039;ve built ZDoom for each architecture, you can combine the resulting binaries using the lipo tool.&lt;br /&gt;
 lipo -arch i386 /path/to/zdoom.i386 -arch x86_64 /path/to/zdoom.x86_64 -arch ppc /path/to/zdoom.ppc -create -output zdoom&lt;br /&gt;
&lt;br /&gt;
== Compiling ==&lt;br /&gt;
Open a terminal and cd to the trunk directory.  Type &amp;quot;make&amp;quot; to compile.  Assuming everything was done correctly you should have a working ZDoom binary.&lt;br /&gt;
&lt;br /&gt;
== Last steps ==&lt;br /&gt;
Alright, so now you have a &amp;lt;tt&amp;gt;zdoom&amp;lt;/tt&amp;gt; executable sitting in your Debug/Release folder. You will need to place the following files in the same directory as the compiled program:&lt;br /&gt;
&lt;br /&gt;
* libSDL.dylib&lt;br /&gt;
* libfmodex.dylib&lt;br /&gt;
* One or more [[IWAD]]s&lt;br /&gt;
&lt;br /&gt;
Assuming nothing went wrong, open &#039;&#039;&#039;Terminal&#039;&#039;&#039;, navigate to the build directory and type &amp;lt;tt&amp;gt;./zdoom&amp;lt;/tt&amp;gt; to start ZDoom!&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]][[Category:Technical aspects]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=Hacx&amp;diff=37436</id>
		<title>Hacx</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=Hacx&amp;diff=37436"/>
		<updated>2013-12-09T22:05:35Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{doomwiki}}&lt;br /&gt;
{{Wad&lt;br /&gt;
| name = Hacx&lt;br /&gt;
| author = Banjo Software, [[User:Xaser|Xaser]], [[User:Blzut3|Blzut3]]&lt;br /&gt;
| iwad = Stand-alone&lt;br /&gt;
| type = m&lt;br /&gt;
| status = Released&lt;br /&gt;
| link = [http://drnostromo.com/hacx/page.php?content=download Download from official site]&lt;br /&gt;
}}&lt;br /&gt;
== About ==&lt;br /&gt;
&#039;&#039;Hacx&#039;&#039; is a standalone game for ZDoom and the [[Eternity Engine]]. Originally released as a commercial [[Doom II]] mod, it suffered from a rushed completion and the competition of games with newer technology, such as the [[Build]] and {{wp|Quake_(video_game)|Quake}} engines. It was later re-released as freeware. More than ten years later, Hacx was resurrected by Xaser and Blzut3, who released a stand-alone update, targeted specifically at ZDoom and Eternity but still compatible with other ports. The new Hacx team is now working on a more complete overhaul, Hacx 2.&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
*[http://drnostromo.com/hacx/ Official Website]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ECWolf&amp;diff=37435</id>
		<title>ECWolf</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ECWolf&amp;diff=37435"/>
		<updated>2013-12-09T22:04:55Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Adding the three to my name just because I&amp;#039;m feeling OCD. (It&amp;#039;s more formal that way anyhow.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;ECWolf&#039;&#039;&#039; is a source port for &#039;&#039;{{wp|Wolfenstein 3D}}&#039;&#039; and &#039;&#039;{{wp|Spear_of_Destiny_(video_game)|Spear of Destiny}}&#039;&#039; based on [http://www.chaos-software.de.vu/ Wolf4SDL]. It is developed by ZDoom co-developer [[User:Blzut3|Blzut3]] and integrates many elements of ZDoom, including [[DECORATE]]. In addition, it replaces several &#039;&#039;Wolfenstein 3D&#039;&#039; concepts by &#039;&#039;Doom&#039;&#039; ones (such as sprites identified by their name, frame, and rotation), with the aim of making modding much easier.&lt;br /&gt;
&lt;br /&gt;
== ZDoom features supported or planned ==&lt;br /&gt;
* [[ACS]] (with differences as appropriate)&lt;br /&gt;
* [[ANIMDEFS]]&lt;br /&gt;
* [[DECORATE]] (with &amp;quot;half-length&amp;quot; frames possible, to account for &#039;&#039;Wolf&#039;&#039;&#039;s 70 Hz ticrate vs. Doom&#039;s 35 Hz.)&lt;br /&gt;
* [[FONTDEFS]]&lt;br /&gt;
* [[LANGUAGE]]&lt;br /&gt;
* [[LOCKDEFS]]&lt;br /&gt;
* [[MAPINFO]]&lt;br /&gt;
* [[SNDINFO]]&lt;br /&gt;
* [[Stacked sectors]]&lt;br /&gt;
* [[TEXTCOLO]]&lt;br /&gt;
* [[TEXTURES]]&lt;br /&gt;
* ZDoom&#039;s supported [[archive format]]s&lt;br /&gt;
* ZDoom&#039;s supported [[image format]]s (except [[Build tiles]])&lt;br /&gt;
&lt;br /&gt;
In addition, a new map format inspired from [[UDMF]] is supported, called &#039;&#039;Universal Wolf Map Format&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://maniacsvault.net/ecwolf/ Homepage]&lt;br /&gt;
* {{DRDForum|view=forum|f=174|Official forums}} on DRD Team&lt;br /&gt;
* {{forum|t=32910|Official thread of ZDoom forums}}&lt;br /&gt;
* Threads on [http://wolf3d.darkbb.com/t2051-ecwolf Wolf 3D Haven] and [http://diehardwolfers.areyep.com/viewtopic.php?t=6040 DieHard Wolfers]&lt;br /&gt;
* [https://bitbucket.org/Blzut3/ecwolf Mercurial repository on BitBucket]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=User:Blzut3&amp;diff=37434</id>
		<title>User:Blzut3</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=User:Blzut3&amp;diff=37434"/>
		<updated>2013-12-09T22:02:38Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: Basic information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Braden &amp;quot;Blzut3&amp;quot; Obrzut is a core developer for [[ZDoom]]. His first contribution being [[SBARINFO]] starting on December 20th, 2007 and officially became a developer April 19th, 2010.&lt;br /&gt;
&lt;br /&gt;
Blzut3 is also involved with the development of related projects [[Doomseeker]], [[ECWolf]], and [[Zandronum]].&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
	<entry>
		<id>https://zdoom.org/w/index.php?title=ZDoom:Contributors&amp;diff=37433</id>
		<title>ZDoom:Contributors</title>
		<link rel="alternate" type="text/html" href="https://zdoom.org/w/index.php?title=ZDoom:Contributors&amp;diff=37433"/>
		<updated>2013-12-09T20:40:07Z</updated>

		<summary type="html">&lt;p&gt;Blzut3: I don&amp;#039;t think the &amp;quot;for SBARINFO&amp;quot; qualifier really applies any more.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of the major and minor contributors to [[ZDoom]], the ZDoom Forum, Website, Wiki and anything else on site.&lt;br /&gt;
&lt;br /&gt;
== Core developers ==&lt;br /&gt;
These are the members who manage and develop the source code before bringing out a new version.&lt;br /&gt;
*[[User:Randy Heit|Randy Heit]]&lt;br /&gt;
*[[User:Graf Zahl|Graf Zahl]]&lt;br /&gt;
*[[User:Blzut3|Blzut3]]&lt;br /&gt;
&lt;br /&gt;
== Minor developers ==&lt;br /&gt;
Members who have developed and contributed patches, fixes and other code for ZDoom.&lt;br /&gt;
*[[User:MartinHowe|MartinHowe]]&lt;br /&gt;
*[[User:Grubber|Grubber]]&lt;br /&gt;
*[[User:Gez|Gez]]&lt;br /&gt;
&lt;br /&gt;
== Forum staff ==&lt;br /&gt;
Members who are in charge of the forums.&lt;br /&gt;
*[[User:Randy Heit|Randy Heit]] - Administrator&lt;br /&gt;
*[[User:Graf Zahl|Graf Zahl]] - Developer forums moderator&lt;br /&gt;
*[[User:QBasicer|QBasicer]] - Global moderator&lt;br /&gt;
*[[User:wildweasel|wildweasel]] - Global moderator&lt;br /&gt;
*[[User:Cutmanmike|Cutmanmike]] - Global moderator&lt;br /&gt;
*Siggi - Global moderator&lt;br /&gt;
*[[User:BlazingPhoenix|BlazingPhoenix]] - Global moderator&lt;br /&gt;
*BoldEnglishman - Global moderator&lt;br /&gt;
== Wiki staff ==&lt;br /&gt;
Members who moderate and look after the Wiki.&lt;br /&gt;
*[[User:Randy Heit|Randy Heit]] - Administrator&lt;br /&gt;
*[[User:Graf Zahl|Graf Zahl]] - Sysop&lt;br /&gt;
*[[User:Grubber|Grubber]] - Sysop&lt;br /&gt;
*[[User:BioHazard|BioHazard]] - Sysop&lt;br /&gt;
*[[User:Sargebaldy|Sargebaldy]] - Sysop&lt;br /&gt;
*[[User:Cutman|Cutman]] - Sysop&lt;br /&gt;
*[[User:HotWax|HotWax]] - Sysop&lt;br /&gt;
*[[User:Gez|Gez]] - Sysop&lt;br /&gt;
&lt;br /&gt;
[[Category:ZDoom]]&lt;/div&gt;</summary>
		<author><name>Blzut3</name></author>
	</entry>
</feed>