GZDoom 4.5.0 released

Sat Oct 31, 2020 5:22 am

Notice: The survey is currently closed. GZDoom 4.5.0 does not include the survey code that 4.2.0 did.
Important: 4.5.0 is the first version to be released as 64 bit exclusively.

Important note about the mouse setup
This release removes some magic factors from the mouse sensitivity setup. Old configurations will be adjusted automatically, but for new configurations the default are a bit different to closer match an average mouse. Our testing showed a large variation in how different mice handle, so please make sure you set this up properly for playing as the average cannot match all devices.

Please do not post bugs or issues in release threads! Click here

Download (OpenGL 3.3 and higher for hardware rendering, Direct3D 9 or later for software rendering)

  • 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

  • Extended AddOptionMenu to allow inserting items before or after a specific menu item
  • Implemented AddListMenu MENUDEF directive to allow extending list menus.
  • adjust the sound limit distance by the attenuation - zero attenuation must mean infinite distance and for high attenuations the distance must be lowered for limiting to work as intended.
  • The limit for the Doom boss sounds was increased to 4 to compensate for this change.
  • fix HDR shader
  • add widescreen images for Doom
  • Linetrace properly reports 3D line hits as "middle" part
  • add 'writeini' console command to the menu.
  • add 'sv_alwaysspawnmulti' dmflags2
  • Added WorldThingGround event to hook into the actor at exact moment its corpse spawns gibs upon being crushed.
  • added a simple options menu
  • Raise SNDSEQ limit to 4096 sequences
  • Added code for rotating the PSprite, courtesy of IvanDobrovski.
  • changed border flat for Chex Quest, because at least CQ3 does not have FLOOR7_1.
  • use the border flat as console fallback instead of the title pic.
  • it is now possible to switch back to the main intro loop from the fullscreen console.
  • do not distort the background of the fullscreen console. Always draw the console on top of what the main loop currently displays with a translucent black overlay.
  • do not use the CONPIC for the fullscreen console as it tends to be more of a distraction than an asset when filling the entire screen.
  • Expose changing sidedef wallpart flags to zscript
  • added flag option menu item by Accensus.
  • made the vertical scroller widescreen aware as well.
  • adapt the bunny scroller to widescreen images.
  • fixed: Crushing generic floors must use crush mode 2.
  • fixed edge case where both Mancubus and Arachnotron have the same replacement and trigger a boss action.
  • Implemented ZScript abstract functions
  • Fix crossing multiple lineportals on same tic
  • Make bMaskRotation angles portal-aware
  • fixed infinite loop with list menus that have no selectable item.
  • changed order of identifier types to be checked to what it was in 4.3
  • added localization fallback handling for the BigFont in menu items and captions.
  • clear the button state when entering chat mode.
  • fixed side_t::SetSpecialColor.
  • fixed: Array.Insert must zero all elements before the new one if something gets inserted outside the existing range.
  • Added ThruBits.
  • Fixed: Server CVars did not immediately revert to their saved values upon loading a save file.
  • added a new 'Translate' struct which wraps the native methods of 'Translation'.
  • added missing decal assignments to the medium mace spheres for Heretic.
  • disabled negative gravity check.
  • moved console command line buffer tab completion into their own files.
  • layout fixes in load/save menu and confirmation screen.
  • ensure that sfxinfo_t is always fully initialized, regardless how the setup is performed.
  • script side support for menu transitions.
  • backport of menu transition code from Raze.
  • use Raze's layout for load and save game menus.
  • resorted base.zs and constants.zs so that all pure engine content but nothing else is in base.zs,
  • allow struct extensions in zscript.
  • added a customization hook class for the menu.
  • restructured the option menu drawer for easier replacement of the caption handler.
  • route menu's CheckGame call through SysCallbacks.
  • moved AutomapBindings export into common code.
  • use the backend's GameTicRate in the scripts where applicable.
  • add console command to reset a CVAR to default value
  • Add A_OverlayTranslation to set PSprite translations
  • Added PSPF_PLAYERTRANSLATED support to the software renderer
  • setup console handlers earlier to make them available during exit cleanup
  • clear current levels' snapshots explicitly if saved game loading fails
  • fixed: next secret map was ignored in ending sequence
  • Fixed a lift in Double Impact E1M7 that could not be used more than twice from the lower area.
  • Force node rebuilding for Double Impact E1M3 (bad subsector)
  • Force node rebuilding for Akeldama MAP26 (bad subsectors)
  • add option to texture hqresize resize model skins.
  • store extended sector info directly in FLevelLocals.
  • changed display in key binding menu to list all bound keys for an action, not just the first two.
  • fixed some text issues with Hacx and Harmony.
  • fixed: The scripted DrawFrame export should not be subjected to ui_screenborder_classic_scaling.
  • add an option to the ListMenu class to draw to a fixed virtual screen size.
  • MIDS-format MIDI support
  • libADL/libOPN update
  • backport of some enhancements for Cyrillic font support for Raze. Now the identical looking characters can be mapped to their Latin counterpart if they do not have their own glyphs.
  • Added NORANDOMPUFFZ flag to A_Saw
  • Fix weapon bobbing interpolation
  • Merged chat and scoreboard bindings into a "Multiplayer" submenu.
  • Reordered items by importance. Chat at position #2 was nonsense.
  • Moved weapon state actions from "Action" to "Weapon" menu, because the menu was already quite large and these are not standard actions.
  • added a new scaling mode to the level summary screen to scale to a given size.
  • Add MaxSlopeSteepness actor property
  • Add optional filtering to `listmaps` CCMD output
  • Show CVar's default value in addition to current
  • forced node rebuild for two Memento Mori maps
  • Add grayed-out support to sliders
  • delete the FraggleScript thinker in G_NewInit.
  • cleanup of mouse input code and removal of all magic factors.
  • fixed sounds not stopping in sound sequences.
  • fixed sounds not being serialized for hub travel.
  • handle SoftLightLevel properly in the 2D drawer.
  • SDL joystick events now work while in menus
  • Implement return type covariance for ZScript virtual functions
  • Add keybindings presets.
  • Call SpecialMissileHit directly with zero damaging missiles last to ensure the function is actually triggered.
  • Add species parameter to A_RadiusThrust
  • fixed binding issues in OpenGL when resetting the samplers due to a texture filter change.
  • new texture format: ANM - this reads the first frame of a Build-ANM movie as a texture.
  • optimization of the patch texture checker - do not read in the entire file if checking the initial header is sufficient for rejecting it.
  • save FixedBitArrays as base64 in savegames.
  • allow indirections in the string table by prefixing the language string with '$$' the remaining text is interpreted as another string label to resolve.
  • added a proper 'sound finished' callback to the sound engine.
  • allow drawing fonts with explicit palette translations.
  • backported all new scaling and rotation options for the 2D drawer from Raze.
  • avoid killing timer precision when there's no time scale active.
  • fixed the integer readers' internal variables.
  • use a sector's special sprite color to colorize decals.
  • fixed: The IWAD record for Wadsmoosh was missing the IWAD default filename.
  • transmit the actual run mode in BT_RUN, because BT_SPEED was poorly designed.
  • fixed: CreateTexBuffer did not check the Inactive flag for the requested translation.
  • delete textures before starting the ENDOOM screen.
  • fixed height fudging for Heretic's sky textures.
  • immediately abort loading a savegame if object deserialization fails.
  • fixed: The font init code must check textures, not the file system for existence of required data.
  • fixed: Actors moved to STAT_TRAVELLING need to preserve their JUSTSPAWNED flag.
  • fixed: Artiflash is not translatable.
  • let non-solid teleporting actors not actually telefrag.
  • flat tile backgrounds in intermission now respects 'inter_classic_scaling' cvar
  • Fixed: extra player translation tables were not fully initialized.
  • Fixed decals not appearing when firing at walls point-blank
  • Exported FLevelLocals::ChangeLevel to ZScript
  • fixed constant propagation for operator && in ZScript
  • Fixed inability to achieve 100% kills in BTSX E2 MAP06
  • add missing SPAC constants
  • pass ScriptPosition down to color parser functions for better error reporting
  • Add FALLDAMAGE flag and add property to properly apply falling damage…
  • fixed setting of skill level via action special
  • Disallow sound to be played on destroyed actors
  • Add string table lookup to SECRETS lump handling
  • For status bars for the Unity iwad.
  • add support for the (as of now) newest version of the Unity re-releases
  • change BloodSmear2 decal to use correct graphic
  • Add Travelled virtual for PlayerPawn, akin to the same function for Inventory.
  • Add Pre/PostTeleport virtuals, for special handling of actor teleportation.
  • reset player's blocking line on traveling between levels
  • Time in coop tally
  • Add the DF2_NO_COOP_THING_SPAWNDM flag to prevent spawning MP things in coop.
  • fill array of objects with nulls on reserve
  • fixed getting state name with incomplete list of actor classes
  • Added ViewAngle/Pitch/Roll properties to actors.
  • Implemented Clock Class
  • Added A_SpriteOffset.
  • do not report missing camera target if its TID is zero
  • fix a bug in the png renderer of the software renderer with decals: if the palette remap is missing, don't attempt to use it. (fix null pointer)
  • added bounds checks for serialization of pointers
  • added initialization for line and sector portals. Resizing of portal arrays during serialization could lead to processing of junk data
  • update floor/ceiling for inventory items after traveling
  • Allow conversation menu cursor graphic replacement.
  • autosave and make screenshot only if there is no other game actions
  • Add PlayerSpawned() event
  • Fixed nested structs breaking the ZScript compiler under certain circumstances.
  • Fix error in Animated Doors where the Actor can be NULL
  • P_BounceActor now calls SpecialMissileHit before any other bouncing effects are processed. Return values are as such:
  • added native fullscreen mode option to Cocoa backend
  • fixed: UMAPINFO partime was multiplied by ticrate
  • demote pwad defcvars error to a warning
  • fixed: the minotaur spawned its floor flames regardless of the setting of compat_minotaur
  • Added $PitchSet <logical name> <float> for SNDINFO.
  • fixed incomplete special menu handling
  • add menu options for 'sv_alwaystally'
  • merge whitespaces before comparing Dehacked texts
  • Optimize UE1 vertex normal computation.
  • Fix am_zoom and adjust am_zoomout speed for the automap.
  • added more contrast to the Cream font color.
  • Rename MAP31 and MAP32 back in Doom 2: Unity Edition
  • when a damaging sector's damage interval is 0, instantly kill the player instead of dividing by 0
  • fixed freeze with StartSlideshow called for undefined intermission
  • add menudef entries for the scaling text.
  • Interpolate positions and angles in the automap for smoother appearance
  • exposed menu blur amount to engine interface
  • fixed leaking full VM frames
  • assigned endoom lump name after mapinfo is parsed
  • fixed crash when loading empty resource directory
  • Add color output for SDL backend using ANSI escapes
  • Rename 'Play GZDoom' button to something more generic to more easily allow for use in forks or other projects
Last edited by Graf Zahl on Sat Oct 31, 2020 11:30 am, edited 3 times in total.

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 5:42 am

Nice Halloween present!

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:11 am

How do fixed sized menus work? I noticed that my menus are way bigger now and some actually get cut offscreen like this one
So i'm guessing there's a way to set the size for it now?

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:14 am

Yes, there is an option in the 'miscellaneous options' menu to set the default to the old layout, and for mods there's also a way to force the old setup by specifying 'size clean' in MENUDEF.
Or if you still want to scale to the full screen but with a 4:3 aspect ratio, specify 'size 320, 240'.

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:20 am

Thanks for everyone’s work on this! There are some exciting updates in here :)

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:21 am

This release is


Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:22 am

burning in hell? How dare you...? :mrgreen:

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:28 am

It's a very wide release alright.

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:34 am

Happy Hallowidescreen.

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 6:39 am

Awesome, a lot of new stuff. Great work as usual!

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 7:25 am

Best release!

... so far! :mrgreen:

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 10:48 am

There's also the ability to rotate, scale, and manipulate overlays in a variety of new ways now too.


Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 11:28 am

Very nice, very nice indeed. I hadn't realised that the list of fixes and additions was quite as long as it is.

The widescreen assets look great.

This does indeed seem to be a really good release.

As ever, thank you very much to Graf and all other contributors who made this possible.

Graf Zahl wrote:Yes, there is an option in the 'miscellaneous options' menu to set the default to the old layout

Is it known that the text for this is... well, not there?


I thought I'd seen it mentioned on the forum a little while back. :?:

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 2:32 pm

Enjay wrote:Image

I thought I'd seen it mentioned on the forum a little while back. :?:

It's there on my end. I downloaded it from this thread, and it shows the correct text.

Re: GZDoom 4.5.0 released

Sat Oct 31, 2020 2:58 pm

Well that's strange, I redownloaded and tried again and - the option now has its correct text. No idea what happened there.