GZDoom version history

From ZDoom Wiki
Jump to navigation Jump to search
Error.gif

This article is a stub. Please help the ZDoom Wiki by adding to it.

This page tracks the evolution of GZDoom by listing the main features of each version.

By year 2017 · 2018 · 2019 · 2020 · 2021 · 2022
By version 3.0.0 · 3.0.1 · 3.1.0 · 3.2.0 · 3.2.1 · 3.2.3 · 3.2.3 · 3.2.4 · 3.2.5 · 3.3.0 · 3.3.1 · 3.3.2 · 3.4.0 · 3.4.1 · 3.5.0 · 3.5.1 · 3.6.0 · 3.7.0 · 3.7.1 · 3.7.2 · 4.0.0 · 4.1.0 · 4.1.1 · 4.1.2 · 4.1.3 · 4.2.0 · 4.2.1 · 4.2.3 · 4.2.4 · 4.3.1 · 4.3.2 · 4.3.3 · 4.4.0 · 4.4.1 · 4.4.2 · 4.5.0 · 4.6.0 · 4.6.1 · 4.7.0 · 4.7.1 · 4.8.0 · 4.8.1 · 4.8.2

2017

3.0.0cc3ae93 (April 29)
Release thread
  • Scriptable status bars.
  • Scriptable level status screens.
  • Static constant arrays in classes.
  • Support for Doom64-style lighting in the software renderer, with the exception of gradients.
  • Optimization of the scripting VM by removing some always active debug support.
3.0.1bb6015b (May 2)
Release thread
  • Fixed a potential crash when changing the render output in-game and continue playing.
  • Fixed a crash in the software renderer with camera textures.
  • For 32 bit Windows, libsndfile.dll is reverted to the old version due to some incompatibility with the newer one.
  • Cleanup of dynamic light options.
3.1.06875e5b (May 31)
Release thread
  • Support of Strife Veteran Edition's extended single player campaign.
  • Better handling of stereo sounds.
  • PlayerThink code has been exported to scripting.
  • On Windows and macOS, the system's MIDI synth is no longer the default. Instead, FluidSynth and a small soundfont are now included to provide better default playback quality.
  • Translucency on weapon sprites works properly.
  • Some layout fixes with SBARINFO based status bars.
  • Fixed par time display on level summary screen.
  • Fixed loop tag checks for Ogg files.
3.2.0e0d4d9a (October 4)
Release thread
  • zd_extra.pk3 splits off copyright infringing assets, allowing game makers to delete this file and distribute a fully GPL-conforming copy of GZDoom without further changes.
  • Custom IWAD support.
  • Video render scaling (play in 320x200, or any custom resolution).
  • Custom screen shader support.
  • MENUDEF replacements are now merged, allowing GZDoom to easily present new menu features in older mods that include one.
  • A pelothra of fixes and improvements.
3.2.1a4d2fb9 (October 22)
Release thread
  • Fixed applying of height argument in A_Fire() function.
  • Removed all code needed to support macOS earlier than 10.7 Lion.
  • Fixed crash on attempt to register IDs for undefined class.
  • Added vid_cropaspect. This CVAR turns vid_aspect into a letterboxing function that will crop the unused sides of the screen away, instead of stretching it. Requires one of the non-legacy OpenGL framebuffers to work.
  • Remove vid_tft and vid_nowidescreen and associated menu option. Their functionality was supersceded and extended by vid_aspect == 3 (which has the same effect as setting both to true anyhow), and it was mostly just redundant.
  • Fixed: do not interpolate view movements if a key press did not result in any changes.
  • If *nix, add default gzdoom.pk3 directory to File.Search paths.
  • Fixed: inverted color order for post-process textures to BGRA to correctly match the internal texture standard in GZDoom.
  • Added ability to change slider color using MAPINFO's gameinfo.
  • Added startuptype to IWADINFO, allowing to change the game startup screen with custom IWADs.
  • Fixed applying of compatibility settings for IWADs.
  • Fixed a few cases when IWAD was checked by hardcoded index.
  • Fixed arch-vile bleeding when damaging target.
3.2.200b60e5 (December 3)
Release thread
  • Added a new timer code. GZDoom now appears a lot smoother in interpolated frames.
  • Improve speed for ARMv7 processors by setting tuning options to the Cortex-a7 CPU (for Raspberry Pi 2).
  • Several ZScript extensions and fixes.
  • Improved OpenGL profile selection on Linux.
  • Rather than giving version info, GZDoom now displays the name of the game you are currently playing in the window title. This can be disabled via i_friendlywindowtitle.
  • Bug fixes, including some for non-Windows platforms.
3.2.38027369 (December 3)
Release thread
  • Implemented unicode handling in some functions.
  • Improved handling of temporary files on timidity++.
  • Added latch keyword to CVARINFO.
  • Added new grenade and ice shard sprites, removed non-GPL copyrighted assets.
3.2.477a33cc (December 17)
Release thread
  • Added DMG_NO_PAIN for DamageMobj function.
  • Fixed bright sprites in sectors with Doom 64 lighting.
  • Added free space margin, a.k.a. safe frame for automap.
  • Rotating sky and model smoothness fixes.
  • Implemented win_borderless for fake fullscreen in Windows.

2018

3.2.5da85d4f (Januray 4)
Release thread
  • Externalise DCanvas::DrawLine to ZScript.
  • Implemented i_soundinbackground to continue playing sounds and music while in background.
  • OpenGL rendering now continues even when losing focus if not running fullscreen.
  • Added playerrespawn skill flag to allow gameplay mods to retroactively enable player respawns in single player on all maps.
  • Improved Advanced Sound Options menu - added option for FluidSynth chorus, removed fractional part from FluidSynth voices option.
  • Fixed applying of Doom 64 lighting to horizon portals.
  • Particles are now interpolated.
3.3.00a85d65 (March 25)
Release thread
  • Added dynamic spot lights, configurable in the UDMF.
  • Export GetChecksum as part of FLevelLocals in ZScript.
  • Mod-defined aliases no longer permanently change CVARs
  • Add FriendlySeeBlocks actor property that allows a modder to expand the maximum radius that a friendly monster can see enemies.
  • Custom submenus are no longer removed from altered protected menu.
  • Exported S_GetMSLength to ZScript.
  • Added GetRadiusDamage, which returns the raw calculated explosion damage falloff by distance only.
  • Added Screen.getViewWindow function.
  • Exported Trace() interface to ZScript.
  • Added TeleportSpecial as an alias for Teleport in ZScript to deconflict from the Actor.Teleport function.
  • Added Distance(2/3)DSquared functions.
  • Fixed skip_super application for ZScript.
  • Split off the interface part of DHUDMessage.
  • Export sector effect pointers and fix missing pointer assignment on Lighting effect creation.
  • Made left button down event available to UI event handler.
  • Exported Inventory.AltHUDIcon field to ZScript.
  • Add WorldLinePreActivated to override line activation.
  • Add DI_MIRROR flag to statusbar image drawing.
  • Enable string and float user_ properties in UDMF things.
  • Added in-game reverb editor using the menu system.
  • Improved French translations.
  • Fixed 'precise' rendering in OpenGL.
  • New Materials Shader system to allow textures to show new properties such as glossiness and specularity, affected by dynamic lights, or with PBR, reflecting their direct surroundings.
  • New rocket smoke sprites by Talon1024.
  • Import Timidity++ into GZDoom directly.
  • Added light definition for megasphere.
  • Fixed midtex nowrap clipping bug when 3d floors are in view (Software Renderer).
  • Improved profilethinkers in various ways.
  • Add variables am_unexploredsecretcolor and am_ovunexploredsecretcolor to mark undiscovered secrets differently in the automap.
  • Added support for ADLMIDI and OPNMIDI libraries.
3.3.12d0e837 (April 1)
Release thread
  • Better handling of defaults with some ZScript/DECORATE functions.
  • Many bug fixes since 3.3.0.
3.3.2dd5a673 (April 12)
Release thread
  • Fixed detection of .ipk7 custom IWADs.
  • Restored vanilla behavior of lightning for original Hexen.
  • Added loading of ZSDF lumps by full paths.
  • Disabled the survey code.
  • Export P_ActivateLine to ZScript (along with constants for activation type).
  • Increased size of the savegame comment area.
3.4.0d9b6a8b (June 7)
Release thread
  • Enable #include support in MODELDEF files.
  • Removed DirectDraw and Direct3D backends, removed unaccerated SDL framebuffer backend.
  • Reorganization of 2D and 3D rendering code in preparation for Vulkan in the future, performance improvements on newer hardware.
  • CVAR that handles it is now vid_rendermode - vid_renderer, swtruecolor, and r_polyrender have been removed and combined into new CVAR.
  • Added a lightsizefactor command to GLDEFS.
  • Allow animated title pics.
  • Add support for Unreal Engine 1 vertex mesh format.
  • Added LevelLocals vec2/3Offset(Z) functions for portal-aware offsetting without needing actors.
  • Add OnGiveSecret virtual function on Actor for customizing behavior of secret finding.
  • BLOCKASPLAYER flag: treat non-player actors as blockable by "block players" lines.
  • Added 'revealed on automap' linedef flag, UDMF only.
  • Added forced automap style to linedef, UDMF only.
  • Added startup song definition for custom IWADs.
  • This release contains a major render optimization for highly detailed maps that may give a +20% performance improvement on Intel and AMD hardware (less on NVidia because the driver has far less overhead that could be optimized away).
3.4.1504b3d6 (June 14)
Release thread
  • Fixed: redirect script access to the compatflags CVARs to their internal shadow variables. This is needed so that MAPINFO settings for these flags don't get ignored.
  • Fixed: flag CVars in ZScript referenced wrong addresses.
  • Fixed: ZScript used the wrong variable for compatflags2.
  • Fixed: remove ARM specific gl_es definition since it's not even really much different from the main line definition, anyhow.
  • Fixed generation of brightmaps for sprites. This forgot to take the added empty border for filtering improvement into account.
  • Fixed ADynamicLight's shadowmap index must be reset when loading a savegame.
  • Fixed portal restoration on revisiting level in hub.
    • Added function to FLevelLocals to test if map is being reentered.
  • Fixed crash with GL 3.x and fixed colormap active.
3.5.07dd92fb (July 30)
Release thread
  • [modern branch only] Fullscreen is now borderless window (which, technically, it always has been, anyhow). Removed hacks which changed the desktop resolution in order to simulate exclusive fullscreen because they were a constant stability concern.
  • [modern branch only] Fixed a performance regression with the software renderer, introduced by the recent changes to the video backend in 3.4.
  • Save item statistics - Items are now saved into save games and are displayed on the statfile.
  • Upgrade libADLMIDI and libOPNMIDI.
  • Large number of MinGW fixes.
  • Add tags for all Doom and Heretic monsters for mods that reveal monster names.
  • Various compatibility fixes for old maps and mods.
  • Fixed titlepic animation.
  • Custom hardware shaders now can use custom texture units.
  • Fefault to "fullscreen" display.
  • Fixed a potential exploit with malformed WAD files. Thanks to xanaxdev ( th0razine@ret2p.lt ) for reporting it.
3.5.1a5296fe (August 25)
Release thread
  • Implemented "resolution mode selector".
  • Add post processing support to the software renderer and softpoly.
  • Add vid_hdr cvar that enables higher than 8bpc output for monitors that support it.
  • Fix: softpoly TEXTURES sprites with scale of 2 are tiled.
  • Add dithering support to emulate higher BPC displays than your real one. This should allow smoother gradients for light fades and such.
  • Make various getter and pure-math Actor methods clearscope.
3.6.0dd09d8e (October 10)
Release thread
  • Add OBJ model support.
  • Added Screen.DrawThickLine for drawing lines with thickness.
  • Fixed: sound from poly objects through portals will now propegate properly.
  • Add HITOWNER flag, when set, allows a projectile to collide with its shooter.
  • Allow LineAttack's LAF_NOINTERACT to fill FTranslatedLineTarget's information.
  • Added DMG_EXPLOSION flag.
  • Adds OnDrop virtual to inventory items. Called on the dropped item at the end of DropInventory.
  • Enabled the linear shadowmap filter.
  • Update xBRZ upscaler to version 1.6.
  • [modern only] Added 5x and 6x upscaling with xBRZ.
  • Add 'normalNx' texture scaling (normal2x, 3x, 4x, 5x, and 6x) (5x and 6x only supported in modern).
  • Upgrade libADLMIDI and libOPNMIDI.
  • Export various resurrection-related functions to ZScript.
  • Fixes for Wraith Corporation WADs.
3.7.0475b57f (December 27)
Release thread
  • Completely revamped textures system, allowing for more future extensibility and rework, also fixes a few issues.
  • Add support for scaled textures in the software renderer.
  • Untranslated fonts now appear as truecolor.
  • Improvements to Doom64 colouring.
  • Add NOFRICTION and NOFRICTIONBOUNCE flags.
  • Declared Actor's Morph and UnMorph functions virtual.
  • Scale factor is now applied to all scaling modes.
  • Add vanilla lightmode that behaves exactly as Doom's original light did.
  • Cheat-enforced CVARs can now be changed in normal single player games without sv_cheats.
  • Added a JIT compiler for DECORATE and ZScript which should allow some maps and mods to perform slightly, if not significantly faster in some cases (64-bit only).
  • Scriptified the AltHUD.
  • Many bug fixes.
  • Lights are now referenced by sections rather than surface, to speed up light linking. This should allow a dynamically-lit plasma bolt to pass over a 3D bridge in Frozen Time without turning the game into a slide show.
  • Many scriptifications from native code to ZScript.
  • Add shader cache for Intel GPU's which should result in faster startups (especially on Windows) - first startup will still be slower, though.
  • Added IsPointInMap.
  • Added destructible geometry.
  • Added a function to get the actor's age in tics.
  • Added a new field to the Actor class which stores the amount of tics passed since the game started on the moment the actor was spawned.
  • Added a function to the Actor class to get its spawn time relative to the current level.
  • Added spawn time information to the output of the info console command.
  • Export AllClasses global field.
  • Update GME up to 0.6.2 version.
  • Changed the way alpha works on DrawLine and DrawThickLine so they're consistent.
  • GL renderer is now partly multi-threaded, resulting in a 10-20% speedup, depending on a map's complexity.
  • Add "neutral" gender option and better obituary formatting.

2019

3.7.174b60ad (January 1)
Release thread
  • Fixed various bugs.
3.7.2caf326a (January 20)
Release thread
  • Resolution selector now sets to auto detected resolution at startup, no longer uses entries from the config file.
  • Committing a scaling change for fullscreen sets scaling to 1.0 to guarantee the selected number of pixels are actually used.
  • Add 4k UHD resolution to presets.
  • Fixed various bugs.
4.0.0ec0c82d (April 7)
Release thread
  • General:
  • Vulkan released in its alpha stages.
  • Localization: GZDoom has been translated to several languages.
  • Scaling has been changed. GZDoom now runs at a minimum of 640x400. An extra mode - 960x600 - has been added to replace the lost 320x200 one.
  • Internal code restructuring to agnostisize level structures.
  • Add cl_blockcheats - useful for people who use debugging keys, allows a user to consciously turn off cheats without affecting the server.
  • Punctuated the input strings in UpperCamelCase format, improving its appearance in the menu for upper/lowercase capable fonts.
  • wait console commands no longer execute inside the level, and can run during intermissions and outside the game.
  • Moved controls to submenus in Customize controls menu.
  • Implement page string names for dialog lumps.
  • Did a bit of cleanup on the option menus by regrouping some settings, especially splitting out of the Hardware Rendering Options menu into submenus.
  • Fully scriptified the Actor class hierarchy.
  • Added Z + camera roll relativity for A_QuakeEx's QF_RELATIVE flag.
  • Added inflictor, source and flag parameters to GetModifiedDamage on actors and ModifyDamage on inventory.
  • Removed extraneous parameter in SpawnPlayerMissile call in A_FireProjectile.
  • Add LookScale variable to weapons. This variable allows a weapon to set a custom look sensitivity multiplier without fiddling with FOVScale/DesiredFOV hacks.
4.1.00857320 (April 28)
Release thread
  • Workaround buggy preprocessor in old AMD OpenGL drivers.
  • Fix bloom pass regression.
  • Fixed scale calculations for option menus.
  • Implement custom post process shaders for Vulkan backend.
  • Improve error handling during Vulkan initialization.
  • Fixed inverted logic for displaying the generic log in Strife.
4.1.1d35dec9 (May 4)
Release thread
  • Bug fixes and Vulkan improvements.
4.1.2fdd8ee3 (May 14)
Release thread
  • Bug fixes and Vulkan improvements.
4.1.3d3e04a9 (June 7)
Release thread
  • Bug fixes for both ZScript and Vulkan (the Vulkan renderer is pretty much complete at this point).
  • Added native round function.
  • Added a crosshair on/off toggle.
  • cl_blockcheats 2 blocks cheats without showing any messages, useful for streamers who happen to be mappers/modders/etc.
4.2.0388c624 (August 12)
Release thread
  • Restored original vanilla behavior of Lost Souls' charging attack.
  • Exposed Append() method to ZScript dynamic array.
  • Fixed handling of the "ouch" face.
  • Fixed an inconsistency with missiles bouncing off actors.
  • Added option to print a map author's name on the summary screen.
  • Adds option to use a rotation of quicksaves instead of having one quicksave slot that needs to be manually created.
  • Allow switching the Strife conversation screen to the VGA font for all languages by a CVAR.
  • Added A_SoundPitch and an optional pitch parameter to A_PlaySound and S_Sound.
  • Hacx and Harmony now support localization.
  • New supported languages: Czech, Finnish, Japanese, Polish and Serbian.
  • RenderUnderlay feature.
  • Attachable dynamic lights with ZScript or DECORATE.
4.2.1f586196 (September 10)
Release thread
  • Dutch translation.
  • Give P_ExplodeMissile a damage type when being called from P_DamageMobj.
  • Rename sprite names with '^' in the hires namespace.
  • Compatibility option for Daedalus MAP19 which depends on an old scriptwait implementation.
  • Added dlg_vgafont and log_vgafont to the menu.
  • Add empty line in menu after standard options.
  • Make the build work with fluidsynth 2.x.
  • Level compatibility additions for Scythe 2 and Hell Revealed
  • Fixed: saving game to read-only file was erroneously reported as success.
  • Add current, max and average velocity as stat (#912).
  • Added ability to specify deprecation messages in ZScript.
  • GME update with bug-fixes.
  • Vulkan: release any references to command buffer when flushed.
  • Fixed crash on parsing bad hex number.
  • Let Hexen Cleric and Mage use unique health chains.
  • Allow custom status bars to override notification and centered message display.
  • Improve crosshair health color to be more informative.
  • Converted keyboard turnspeeds into global CVars.
  • Added obituary fallbacks for actors that do not have any defined.
  • Fixed bad default alpha for 3D floors.
  • Fixed attached dynamic light setup.
  • Added check for multiple parsing of the same MAPINFO.
  • Exposed xBRZ scaler options as CVARs.
  • Updated xBRZ scaler to version 1.7.
4.2.3d5ff274 (October 20)
Release thread
  • Fixed wrong offset on Fighter's Fist.
  • Added Armor to Hexen fullscreen display.
  • Export F3DFloor structure and related data.
  • Fix of checking for valid texture access, rather than checking whether it is null, when drawing fog boundaries in the software renderer.
  • Fixed crash with mock2.wad in software.
  • Fix for LineTrace not setting its starting sector based on its offset.
  • Fixed: sector lights could access the sector before it was set.
  • Fixed ancient ZDoom savegame slot selection bug. When creating new autosaves LastAccessed and LastSaved were not updated accordingly.
  • Fix crash on Vulkan with a large number of texture shaders.
  • Adapted the PSX XA decoder from EDuke32 as a music format in GZDoom.
  • Internal restructuring of music system.
  • Fixed inventory scroll arrows in alternative HUD.
  • Add m_quickexit option for quick exit in game menu.
  • Fixed a crash in the software renderer that caused wallsprites to crash.
  • Cleanup of game exit code to be more reliable, as this could cause spurious crashes.
  • Fixed capped tall skies not working (Heretic and Hexen).
  • Fixed sky stretching for the new freelook limit.
  • Made GL nodes loader more resilient to broken data.
  • Fixed CheckBossDeath not checking for actor replacements.
  • Fallback to console font in case of missing small font.
  • Fixed: pickup flash didn't fade out if player was killed by pickup.
  • Fixed: the dynamic lights must be initialized before the first frame is ticked.
  • Fixed SPC music looping after update to GME 0.6.2.
  • Fixed broken walkthrough of Restoring Deimos MAP03.
  • Fixed broken walkthrough of Skulldash MAP04.
  • Implicitly clear local dynamic arrays.
  • Fixed crash with dynamic light manipulation through netevents.
  • When adding some minmum lateral movement to trigger collision detection, do not just set Vel.X but actually use a vector pointing in the proper facing direction of the actor.
  • Fixed GetLineX/GetLineY ACS implementation.
4.2.403e6c1a (November 3)
Release thread
  • Fixed stretching for 256 and 240 pixels tall skies in software.
  • Fixed broken walkthrough of Restoring Deimos MAP07.
  • Fixed a bug in the flagdef processing code.
  • Adjusted collision detection for item pickups. Use vanilla condition for a thing with MF_SPECIAL flag to fix inability to grab it when item's top is at the same height as sector's floor from it can be picked up.
  • Fixed localization support for intermission texts.
  • Fixed radius attack that may inflict damage twice.
  • Sort CVAR output in config alphabetically instead of randomly dumping them in their internal order.
  • Fixed ZScript's Screen.DrawLine using the wrong color when drawing pure black.
  • Fixed missing frames for Hexen's fighter's axe attack without mana.
  • Fixed usage of uninitialized object in BlockLinesIterator.
  • Removed hardcoded width limit for screenshots.
  • Fixed dynamic arrays as function arguments.
  • Added Visual Studio debugger visualization for several types.
  • Do not accept read-only variable as out argument.
  • Fixed variable's stack offset for implicit dynarray clearing.
  • Fixed Vector2/3 out parameters in the ZScript compiler.
  • Added explicit clearing of global VM stack. When exceptions are thrown from JITed code, the VM stack isn't cleared during unwinding.
  • Fixed typo with D'Sparil's serpent attack in lights.pk3, creating an extremely large light.
  • Fixed bad application of translucency in the software renderer.
  • Scythe MAP22 compatibility fix.

2020

4.3.125c74c2 (Januray 5)
Release thread
  • New softpoly backend for the hardware renderer.
  • The software renderer will start again on DX9 compatible hardware that doesn't support OpenGL 3.3.
  • Advanced texture colorization options.
  • Scripted map post-processor.
  • Dictionary class for ZScript.
  • Reinstate 320x200 with the following caveat: it only functions outside of menus and console, and only when the dialogues and logs use the default font, the game will temporarily switch to 640x400 in these situations.
  • Add PSPF_PLAYERTRANSLATED flag (makes a PSprite layer translated to the user's color).
  • Support for MIDI on Linux via alsa sequencer.
4.3.29762509 (Januray 12)
Release thread
  • This is a mainly a bug-fix release. There are two notable new features, though:
  • Added ML_NOSKYWALLS and ML_DRAWFULLHEIGHT.
  • Add support for new Bethesda.Net Unity Edition WADs.
4.3.3a3b0f21 (Januray 20)
Release thread
  • This is a mainly a bug-fix release for the softpoly renderer and the customizable invulnerability colormap feature.
4.4.0e98ef83 (June 7)
Release thread
Release notes are not available yet. See the release thread for details.
4.4.15001f36 (June 10)
Release thread
  • This is a bug-fix release addressing a few issues that were reported for 4.4.0.
4.4.204e53b8 (June 16)
Release thread
  • This is a bug-fix release addressing a few issues that were reported for 4.4.1, with two notable new features:
  • Add "restart" button to error pane in Windows.
  • Made the new Build light mode operational.
4.5.03037c08 (October 31)
Release thread
  • For all of Doom's fullscreen images there's now widescreen versions provided. The other games are still being worked on and will be added later when they become available. All new images were created by Nash Muhandes - this does not use any of the versions from the Unity port.
  • A simplified options menu is now available for quick setup of the important settings.
  • New keybindings presets. Users can now choose between the classic layout and a WASD-based one.
  • Menu and intermission screen now scale to the original Doom.exe's layout by default.
  • Major additions to the menu system - animated menu transitions, image slideshows and fixed size menus can now be created.
  • The console now uses the border flat as default background instead of the titlepic.
  • It is now possible to fully quit the fullscreen console and get back to the title loop.
  • Various enhancements and fixes for ZScript.
  • Interpolate positions and angles in the automap for smoother appearance.
  • Added $PitchSet <logical name> <float> for SNDINFO.
  • Allow indirections in the string table by prefixing the language string with '$$' the remaining text is interpreted as another string label to resolve.
  • Optimization of the patch texture checker - do not read in the entire file if checking the initial header is sufficient for rejecting it. This can speed up loading of large mods quite significantly.
  • MIDS-format MIDI support.
  • OPUS support, courtesy of an updated libsndfile.
  • libADL/libOPN update.

2021

4.6.0c320db6 (May 22)
Release thread
  • Widescreen graphics for Heretic and Hexen.
  • Sprite shadows like in the Build engine. Both in software and hardware renderer.
  • 16-bit channel PNG files can be read.
  • DEHEXTRA working properly now.
  • Various enhancements and fixes for ZScript.
4.6.1347324e (July 25)
Release thread
  • Bug fixes, and widepix updates.
4.7.00e809b2 (September 22)
Release thread

Highlights:

  • Widescreen graphics for Strife
  • New GLES backend for better performance on OpenGL 3.3 and early 4.x hardware.
  • MBF21 support (still in beta and not fully tested yet, bug reports are welcome)
  • DEHEXTRA working properly now
  • Various enhancements and fixes for ZScript.

Details

  • Fixed vertex generation when splitting walls by planes on old hardware.
  • Menu system update from Raze for better control of animated menus.
  • GLES fixed: The weapon sprite must be rendered with the fullscreen colormap on.
  • Use explicit virtual screen sizes for the scripted intermission backgrounds to better cope with background replacements.
  • Fix compatibility handler for KDiZD's Z1M3.
  • Fixed: "Dialogue" in MAPINFO must clear all "AddDialogues" that came before.
  • Fixed melee attack disance being off after adding MBF21 support.
  • Fixed: Decal things did not spawn their lower decals.
  • Fixed texture clamping for elements that are partially behind a slope.
  • Fixed bad parameter order in MinoraurSlam.
  • Consider 'Program Files' a read only location without actually checking.
  • Fixed: 3D floor model sectors were not added to the sector lists for precise rendering.
  • Removed the redundant gl_render_precise CVAR.
  • Fixed: colors from brightmaps and glowmaps need to be desaturated.
  • Fixed: shaders with NO_LAYERS defined may not apply brightmap and glowmap.
  • Vulkan: Limit texture upload transfer buffers to roughly 64 MB.
  • Marked several invisible controller things to not show on the automap with the scanner powerup.
  • Treat 'vid_adapter 0' as what Windows considers the primary monitor.
  • Fixed: Brightmap application for horizons was undefined.
  • Replaces "BS" and "ED" on the on-screen keyboards with the symbols normally found on the keyboard for these actions.
  • Enable cvar blacklisting for defcvars for certain platform variables.
  • Demote unknown/invalid defcvars to warnings.
  • Split defcvars parser into its own file.
  • Fix options search when menus are defined recursively.
  • Exported STAYONLIFT flag.
  • Added a modified version of MBF's stay-on-lift feature.
  • Fixed crash on getting location description without a level.
  • Block user overrides for the logic module of core fragment shaders.
  • Added missing MBF21 Dehacked keys "blood color" and "dropped item".
  • Implemented MBF's monsters_avoid_hazards feature.
  • Added a map flag to disable MF6_JUMPDOWN.
  • Added a per-level AVOIDMELEE flag.
  • Allow passing a remap table to BestColor.
  • HUD models: add nullptr check for psprites without caller.
  • Removed the unused palette parameter from the V_GetColor family of functions.
  • Add FOV slider to the display options menu.
  • Added a null check to CheckWeaponChange.
  • Replaced the alt HUD's index font with a sheet based variant.
  • Changed FString API to use ptrdiff_t instead of long for signed size arguments.
  • Fixed IsHUDModelForPlayerAvailable limitation.
  • Look up HUD models by referencing the psprite's caller, rather than player's ReadyWeapon.
  • Allow Strife hands psprite to be a model.
  • Fixed: crushing stairs must use HexenCrush mode.
  • Extended 2D buffer lifetime to the end of the frame.
  • Use RefCountedPtr to manage 2D shape buffer infos.
  • Added RefCountedBase without virtual destructor.
  • Made RefCountedPtr follow rule of five.
  • Make RenderCommands able to use Shape2D vertex buffers past the Shape2D's lifetime without crashing.
  • Fixed line color handling in V_BreakLines.
  • Run the dynamic light recreation loop before calling the light ticker.
  • Fixed: instead of checking gl_lights, better check Level->HasDynamicLights.
  • Do not run the dynamic light ticker when lights are switched off.
  • Ensure that shadowmap indices only get set when shadowmaps are enabled.
  • Fixed file system's zip loader to not strip away a 'filter/' prefix.
  • Do not perform shadowmap updates when dynamic lights are disabled.
  • Moved the CheckForRestart call one level up so that it is within the Windows code and does not need #ifdefs.
  • Delay the restart action from the error pane until after everything has been shut down.
  • Use proper XMove for sheet fonts.
  • Use original menu spacing for skill and episode menus if all elements are patches.
  • Fixed: the software scene drawer must be deleted before calling ST_Endoom.
  • Reorder evaluation for 'if' statements to handle the condition first. Otherwise this won't emit errors if a bad condition is used with an empty conditional part.
  • Fixed exploding barrel animation duration.
  • Fixed two vr_* CVARs not getting archived.
  • Dim depleted inventory items in all games, not just Strife.
  • Fixed: palette index 0 (transparent) was left uninitialized for BMF fonts.
  • Fixed: P_RoughMonsterSearch did not pass the fov parameter to its worker functions.
  • Fixed BlockThingsIterator to not reset its list of processed actors when traversing portals.
  • fixed patch version in compatibility implementation of macOS detection.
  • Destroy stale thinkers after change level failure.
  • Fixed crash after change level failure.
  • SDL2: Properly print white bold text to the screen.
  • Merged gzdoom-gles2 backend.
  • Use proper music check in 'idmus' CCMD.
  • VOC loader fix.
  • Better prefix detection in Zip loader.
  • SDL Vulkan init.
  • Disabling of shadowmap management when the feature is off.
  • Extend the changemap command to allow warping to next or nextsecret.
  • Fixed crash after fatal error in SDL backend.
  • Fixed premature destruction of status bar.
  • Fixed EBlastFlags enum definition.
  • Add 'BF_ONLYVISIBLETHINGS' Flag to A_Blast
  • Fixed typo in Heretic light definition.
  • Fix wrong thiswad check for materials too.
  • Fix /0 error caused by having a completely black font character. this error was triggered by Return of the Triad.
  • MBF21 beta implementation.
  • Corrected the NUL checks in S_FindSkinnedSound.
  • Moved Doom specific font init code out of the backend.
  • Fixed crash calling ChangeSky() with an invalid texture.
  • Added APROP_Soundclass.
  • Added fallback to the parenthesis glyphs for the braces.
  • Font system overhaul.
  • Add some new optional parameters to A_SprayDecal.
4.7.1107ff70 (October 20)
Release thread
  • Fixed: SBar_DrawTextureRotated was missing the angle parameter.
  • Treat "materials" as a known folder name for eliminating root folders in Zips.
  • GLES: Fix texture MapBuffer and AllocateBuffer create client side memory.
  • Fix "out of memory" errors when the Vulkan backend is asked to create zero byte sized buffers.
  • Compat patch for misplaced items in Hexen MAP08.
  • Fixed some imprecisions in font luminosity calculation. This was still going through the palette which could result in off-by-one errors.
  • Widescreen assets for all officially supported games. This version adds Hacx, Harmony and Chex Quest.
  • Add cvars to control automap line alpha and thickness.
  • ReadThisMenu / MenuDelegate overriding.

2022

4.8.008e4676 (June 6)
Release thread

Highlights

  • added Raze-style HUD scaling. Not exposed in the menu yet, Set hud_oldscale to 0 and use shift with the screen resize keys to scale the status bar.
  • handle the start/endoom screens with the ingame renderer. They are now present on all platforms and use the full screen size of the game.
  • Many MBF21 fixes.
  • added the cutscene system from Raze

Details

  • the chat should use the console's scaling, not the one for the messages printed with the small font.
  • fixed auto-scaling for console.
  • removed all vid_fps offsetting. To compensate there is now also a "stat fps" which displays the FPS rate in the lower left corner. This had to go because unconditionally altering positions was causing problems with custom HUDs.
  • added Raze-style HUD scaling. Not exposed in the menu yet, Set hud_oldscale to 0 and use shift with the screen resize keys to scale the status bar.
  • added a few more names to the reserved names for main folder detection.
  • consider "fonts" and "models" reserved folder names.
  • fixed undefined behavior with Dehacked's value parser.
  • Rebuild nodes for 1024.wad MAP02 to fix invisible obstacle near the exit area
  • fixed fast crushers going out of sync if something is being crushed by them.
  • fixed: Vulkan descriptor sets must check the real translation, not just the translation ID.
  • handle the start/endoom screens with the ingame renderer.
  • Create a MainWindow class that manages the main win32 window of the application
  • Added Actor::LightLevel. Setting it to any value > -1 will override the sector's light level.
  • Implement virtual Actor.FallAndSink for scriptable falling and water physics
  • Added Actor.WaterDepth to retrieve how submerged and actor is, in map units
  • added cutscene data parser. This covers: game start, episode start, cluster start/end, level start/end.
  • MASTERNOSEE flag (#1601) Makes it so that if an actor's master is invisible due to camera/mirror/portal shenanigans, then the actor will also be invisible. Name based off of an Unreal Engine flag that does the exact same thing.
  • Made CanCrossLine opt-in by requiring the CROSSLINECHECK flag.
  • Added CanCrossLine virtual for actors.Called last after all other line checks occur. Returning false means the actor cannot cross that line.
  • Add WorldOffset field. Adjusts the thing's 3D position on render side. This allows for adjusting a thing's visual position without impacting their hitbox.
  • fix bad MP start spot in 1024.wad, MAP05
  • Enables shortcuts for option menus. Press a key to immediately jump to the next option menu entry which starts with this key. Hold Alt to jump backwards.
  • DontLightOthers: Acts as the inverse of DontLightSelf, where it won't light actors that aren't the owner.
  • DontLightMap: The light doesn't affect the map.
  • Relative Includes for ZScript
  • remove m_filter and simplify related code
  • exclude keys from ‚artifact‘ cheats
  • fixed MF_SHADOW handling for MBF21. This needs to alter the render style as well.
  • fixed handling of automap sprites with negative scale.
  • fix dynamic light setup. The level’s global flag is unreliable and cannot be used. The operation this was initially supposed to skip cannot be skipped anyway so the impact should be minor.
  • Allow SendNetworkEvent during title level.
  • add sv_ammofactor to change the skill adjustment for ammo
  • extended the read buffer for the 'secret' CCMD. This is merely preparation, the actual loading is still in one uninterrupted piece.
  • Fix that vk_debug doesn't output anything for newer versions of the vulkan sdk
  • added JPEG YCCK decoding.
  • Added MF8_SEEFRIENDLYMONSTERS. Non-friendly monsters with this flag on will be able to attack friendly monsters on sight.
  • fixed mouse coordinate checks for Strife conversations. ypositions needs one entry per response, not one per line.
  • fixed radius of BossBrain actor
  • Added QF_3D flag for quakes. When used, the quake thinker will perform a 3D distance check instead of 2D.
  • removed compat_soundcutoff from the menu. Handling for this was removed 14 years ago when ZDoom transitioned to FModEx 4.x
  • add -compatmode for setting a compatibility mode on startup as a replacement for +compatmode not working as intended.
  • activate Hungarian in the menu
  • Fix off-by-one in Vulkan multisample sample count selection
  • completed Hungarian translation.
  • Fix co-op softlock in Heretic E4M8 due to multiplayer teleporter.
  • added handlers to load Strife’s startup screen images as textures
  • added image source handlers for Hexen’s special startup image types
  • use the hex font for the Heretic/Endoom text screens.
  • fixed setup of files to load on startup.
  • fixed return type of MSTimeF script function.
  • moved -rngseed init to D_InitGame
  • pass ´hashfile´ to filesystem as parameter
  • fix TArray::Append with rvalue parameter. This must clear the source array to obey move rules.
  • fixed Playdemo and Timedemo check. The assumption that D_DoomLoop never returns does not apply anymore. Let it fall through to the end instead where this is properly handled.
  • only check „allowduplicates“ for the final file system init
  • added missing BLOCKF_ flags for ZScript.
  • added ‚repeat‘ option to SetLineActivation ACS function
  • made friendlyseeblocks writable.
  • removed all remains of the corpsegibs flag and made vileghosts interactive. Ghosts are still off by default, but they will now be enabled when selecting the vanilla (strict) compatibility mode.
  • restrict RealGibs for players only. All non-players will now always act as if the ‚corpsegibs‘ flag was set, regardless of the current setting.
  • added Get/SetAmmoCapacity ZScript functions
  • expose the ‚attenuatelights‘ map flag.
  • added an option to delete a terrain type from a texture.
  • add wipe transition support to the screenjob runner.
  • migrated intermissions and summary screens to screenjobs.
  • timer code fixes.
  • added all the cutscene system from Raze
  • added compat_nombf21 for cchest2.wad, map 19.
  • Fix usage of -1 as OBJ model FrameIndex
  • added zip64 handling
  • added workaround to Dehacked so that „Doom“ only replaces the music name
  • fixed some incorrect array allocation sizes in polyobj code
  • added missing range check for scrolling down an option menu with the mouse wheel.
  • do not clamp warped textures.
  • disabled deletion of previous event handlers when using 'eventhandler' keyword in MAPINFO.
  • fixed: decal things failed to spawn their decals on 3D floors.
  • validate the index argument for GetSavegame and abort if out of range.
  • don't let "give weapons" hand out abstract weapons.
  • lock cvar shader uniforms behind a command line parameter for now
  • fixed setup of PolyBSPs when the software renderer is active.
  • Remain 3, MAP11 also needs compat_nombf21.
  • fixed Dehacked drop items.
  • added nombf21 compat setting for Heroes Tales MAP31
  • fixed: The alt HUD's draw call did not use the virtual interface.
  • fixed: group teleporters must always preserve orientation.
  • don't move bad polyobjects in the savegame loader.
  • cast arguments for fastcos/sinbam
  • copy size info from defaults when starting a list menu block.
  • handle cases of empty state labels in ZScript.
  • GLES: Fix blend flags
  • fixed bad color range check in ACS HudMessage code.
  • fixed Dehacked check for A_ConsumeAmmo. This must use the internal function name.
  • fixed y-offsets of bal7scr* decal images.
  • let A_SpawnParticle respect the float bob offset
  • separate message for disabling noclip2
  • added a nullptr check for StatusBar when drawing „Paused“
  • make menu scale adjustments for ultra-wide aspect ratios.
  • treat PSP layer ID 0 as invalid. No PSprites with this ID may ever be created, as there is no means to find them again.
  • fixed: The skill menu did not remember its last selection.
  • allow artifacts that do not automatically activate to be given by the 'give artifacts' cheat
  • added vertical bullet spread relative to ssg
  • Fixed GUS Emulation with DMXGUS(C) lump conf.
  • changed default value for midi_config to empty string since gus is not working with sf2 file
  • fixed SetupDMXGUS not loading lump correctly, wrong use of CheckNumForFullName
  • midi_config default to empty string, since lzdoom.sf2 doesn't seem supported (distorted sound)
  • added absolute paths to FZipPatReader so we can add custom patches to resource files by using gus_patchdir and/or ULTRADIR variable (some custom maps has custom patches that can be added this way without putting them inside the resource file or in the same folder of the configuration file)
  • set timidity_reverb_level min value to 0 in menudef.txt, set to 9 by mistake?
  • Added the MF8_DONTFOLLOWPLAYERS flag, which allows friendly monsters to not follow their FriendPlayer when they have no target or goal left to head to.
  • fixed Font struct export and removed the duplicate handler.
  • fix detection for misplaced | when creating the small fallback font
  • typo 'Yea' instead of 'Yes'
  • implement proper GC handling for AActor::ViewPos.
  • Add CHF_DONTIDLE for A_Chase
  • fixed exittext definition for Harmony. This wasn't using the string table.
  • add gl_satformula == 2
  • an optional 'more accurate' desaturation
  • fixed order of slope creation so that slope copies are the last thing being done.
  • Discord RPC presence. Adds new IWADINFO and GAMEINFO keys: DiscordAppId, this should point to your AppId for your game. It will use a default GZDoom one if not found.
  • remove default lost soul translucency
  • Added 'ScaleWeaponFOV' flag to MODELDEF. Affects weapon models only; will scale the model along with the user's FOV to reduce distortion.
  • Additionally, a 'cl_scaleweaponfov' CVar has been added to allow users to further fine-tune the weapon model scale with higher FOVs
  • Terrain small splashes and splash bases now set their target to the thing that spawned them, allowing for extra customization.
  • Added GetTerrainDef and Sector variant of GetFloorTerrain.
  • Fix 3d floor-related crash in software renderer
  • add duplication checking to file list, prevent loading the same file twice unless explicitly asked by the user
  • initialize FSwitchDef::QuestPanel when reading a Boom SWITCHES lump.
  • added a 'no MBF21' compatibility flag. Turns out that there's a few old maps that have the extended line flags set but not the guard bit that forces their clearance. Astrostein 1's first map is an example for this.
  • Initialize some variables in FModelVertex::Set
  • Fix wrong normal vector in the FModelVertexBuffer constructor
  • virtualize player landing on thing sound
  • fixed local vector array initialization.
  • Fix func_paletted.fp to use alpha channel for index. This was needed due to GLES renderer change from Raze
  • allow floats for uniform cvar defaults
  • implement direct cvar linking to custom shader uniforms
  • Add per-tier sidedef light levels to UDMF maps
  • Add TexMan.SetCameraTextureAspectRatio. Allows ZScript to change the aspect ratio of a camera texture.
  • Optimized P_TestMobjZ by not running the iterator if actor also has THRUACTORS.
  • make m_quickexit a global CVAR
  • Added A_SetViewPos(Vector3 Offset, int Flags = -1)
  • apply WeaponScaleX/Y to all PSprites on a weapon
  • fix logic error with shader compatibility layer
  • add debug ccmds to manipulate custom postprocess shaders and their uniforms from the console
  • fix mbf21 A_FindTracer fov cone being twice as big as intended
  • add SMF_PRECISE flag to mbf21 A_SeekTracer, for accuracy
  • fix mbf21 A_SeekTracer not working (arg type shenanigans)
  • fix mbf21 A_ConsumeAmmo ignoring explicit amount arg if weapon's ammopershot field set
  • fix mbf21 A_ConsumeAmmo taking 0 ammo instead of 1 if ammopershot field not set (need to amend the spec for this, argh)
  • fix MBF21 A_WeaponMeleeAttack function name typo & args
  • fix MBF21 A_WeaponProjectile spawn position
  • fix MBF21 GetSoundArg off-by-one: sound indices are 1-indexed in args because Killough
  • fixed logic error with depth bias state in hardware renderer.
  • redid postprocessing shader interface to be free of the player dependency.
  • separate i_pauseinbackground and i_soundinbackground, they probably should ultimately be moved out of the sound code
  • Fix GC so collection rate is proportional to alloc rate
  • fixed: the powerup item for respawn invulnerability was never given to the player.
  • fixed MBF21's A_SeekTracer. This cannot directly call A_SeekerMissile because that has more parameters. It now maps to a wrapper that takes care of these.
  • fixed Dehacked parsing issues with weapon properties.
  • added proper range check to the main sound playing function.
  • fixed potential infinite loop in Hexen-style stair builder.
  • create new menu page for simple mouse options menu
  • remove advanced settings like the individual speed fine-tuning
  • Fixed crash with Scroll_Texture_Offsets with non-zero tag
  • Fixed: ActorMover was not changing its tracer's flags.
  • Added NoTrim support for ANIMDEFS, same syntax as TEXTURES outside a definition.
  • Added NoTrim for TEXTURES.
  • Exported the "paused" global variable to ZScript
  • ACS: fixed an old regression in which printing a map char array did not dereference the given array variable
  • Fixed some issues with the scaling feature of DStatusBarCore::DrawString
  • GLES: Load default shader if we try to load user shader to avoid crash
  • D_ProcessEvents(): Delay EV_KeyUp events until any EV_KeyDown events for the corresponding key have been processed. This makes the mouse under SDL a lot better.
  • add SDL hint to not minimize the window on focus loss
  • apply clearscope to ApplyDamageFactor as well
  • apply weaponscale relative to baseline
  • add WeaponScaleX/WeaponScaleY properties for applying global scaling to a weapon's PSprites
  • Fix upload and sampling bug for array textures in the vulkan backend
  • apply clearscope for ApplyDamageFactor https://forum.zdoom.org/viewtopic.php?f=15&t=73830
  • add LoadBrightmaps, LoadLights, and LoadWidescreen directives for IWADINFO, these function exactly the same as their GAMEINFO equivalents.
  • Fix abort with dir command and empty string on Windows.
  • Fix vulkan validation errors for wrong image transitions and buffers used after destroyed
  • Add a render style parameter to Screen.Dim
  • Fix vulkan buffers not using the stream usage for the 2d drawer. Add BufferUsageType enum to clarify what kind of usage is expected by the buffer allocated by SetData
  • fixed: menu delegate class error message referenced the wrong gameinfo property
  • Added 'NoPerPixelLighting' flag to models to force it to not use per-pixel lighting. Main use case is for voxels that have been converted to models.
  • add cvar r_skipmats, speeds up rendering on slower cards for mods that use a lot of specularity/pbr, effective on both the opengl and vulkan backends
4.8.11b6cea0 (June 26)
Release thread

Highlights

  • Update of the Vulkan backend.
  • several bugfixes

Details

  • let the "abort" button on the network pane of the startup screen do a hard exit on Windows.
  • Bugfix for software mode mirrors not working
  • make sure ticdup is initialized.
  • Add +ONLYVISIBLEINMIRRORS and +INVISIBLEINMIRRORS actor flags. The former makes the actor only visible in reflections, while the latter makes the actor not cast reflections in mirrors.
  • Vulkan backend update
  • validate fountaincolor before using it.
  • ZScript: don't allow multiple assignment syntax with only one element.
  • fixed type of third argument of MBF21's MonsterMeleeAttack function.
  • added an override for NOTAUTOAIMED flag when using P_AimLineAttack for informative CCMDs.
  • allow taking screenshots in cutscenes.
  • fixed JIT target function for GetTimeFrac.
  • fixed: For cutscenes the alternative clean scaling factors need to be activated.
  • fixed setup of ready state with Dehacked. This needs to emulate the hard coded chainsaw sound when weapon states get reassigned.
  • Fix the discolored sky bug on Vulkan
  • check point pushers/pullers by inheritance, not absiolute match
  • Implement FVector ZScript for Actor Scale
  • added FailSound property to PuzzleItem
  • add `i_pauseinbackground` to the menu. note: please pull the language file for this
  • set `i_pauseinbackground` to match `!(i_soundinbackground)` for all configs before this commit.
  • fixed division by zero with unvalidated ticdup values.
  • reinstated con_scale.
  • make sure the last notch on the start screen is rendered.
  • fix relative include path when loading folders
  • avoid storing texture pointers in longer lived data
4.8.2410a479 (July 4)
Release thread

Highlights

  • Fixes a few bugs that were overlooked in 4.8.1.

Details

  • Fixed names for A_PlaySoundEx.
  • ENDOOM is not Windows only anymore.
  • Fixed background tiling for summary screen.
  • Text update that was missed in 4.8.1.
  • Add a few maps to the rebuildnodes compatibility block.
  • Fix FVector to Vector comparison.