GZDoom 4.4.0 released

News about ZDoom, its child ports, or any closely related projects.
[ZDoom Home] [Documentation (Wiki)] [Official News] [Downloads] [Discord]
[🔎 Google This Site]

[Tap Here for Mobile-Friendly Forums]

Moderator: GZDoom Developers

GZDoom 4.4.0 released

Postby Graf Zahl » Sun Jun 07, 2020 12:40 pm

Notice: The survey is currently closed. GZDoom 4.4.0 does not include the survey code that 4.2.0 did.
Important: 4.4.x will be the last GZDoom release to feature a 32 bit build. Starting with 4.5.0 there will only be 64 bit versions.

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

coming soon

  • Hotfix: LineTrace now reports the correct number of portal crossings.
  • fixed incomplete disabling of number field menu option
  • tighten rules for action functions called from Decorate
  • fixed: The full dotted lump filter string was never used.
  • fixed (un)morphing of more than one actor from ACS
  • fixed setup of JIT functions that require extra frame space
  • make various getter and pure-math methods clearscope, and where applicable, const
  • fixed offsets for hires replacements of already scaled textures.
  • Fix compilation on NetBSD
  • manually merged PR for kill count in Requiem MAP23.
  • there is no mace ammo in the bag of holding.
  • fixed texture sampler generation in the Vulkan backend.
  • added per pixel lighting for decals.
  • fixed incorrect offsets for textures in the hires/ folder.
  • advanced coordinate control for overlays over DTA_Fullscreen images.
  • fixed: the last frame of the intermission screen wasn't rendered.
  • added support for replacing the intermission backgrounds in Doom 1 with widescreen images.
  • fixed font selection on intermission screen.
  • fixed crash with texture upscaling in the software renderer.
  • Add option to disable SDL joystick support.
  • added a compatibility option for a bad teleporter in the final Strife map.
  • redid mouse control for the conversation menu.
  • fixed some double to float conversion warnings.
  • enabled CVAR descriptions.
  • Strife dynamic light tweaks by ReaperAA.
  • fixed: vertically mirrored textures should not be subjected to empty space optimizations because the algorithm cannot deal with the inverted case.
  • fixed: the 3D floor processing code in the renderer did not restore the render style after finishing.
  • made some changes so that material definitions can properly check automatic layers when determining their material type.
  • Fixed OpenAL regression with looping sounds with playing length 0.
  • Allow dialogs to be displayed on other Unix-like OSs
  • fixed floorclipping checks for 3D floors.
  • Strip out any color escape sequences before setting a window title.
  • reject all 0-special lines for activation.
  • use modulo, not bitwise and-ing to check the damage delay for terrain based damage.
  • fixed: Copying a texture's size must also copy the offset.
  • fixed scale setup for multipatch textures.
  • fixed missing custom shader setup in cases where a shader got used more than once.
  • make sure that incomplete multipatch textures are technically complete.
  • Add a cvar to control weapon bobbing while firing
  • Fixed crash on maps with out of range sidedef and sector numbers, adapted from PRBoom.
  • removed redundant TextureFilterChanged method from DFrameBuffer.
  • texture sampler cleanup.
  • don't let CHANF_AUTO hijack other channels.
  • more descriptive message for server CVAR change attempt in netgame
  • removed entry for non-functional linear tonemap.
  • fixed fullscreen toggle via shortcut
  • fixed space calculations for oversized episode and skill menus.
  • fixed: The size parameters for automap sprites are floats, so they need the matching tag.
  • fixed setup for translated textures in Vulkan.
  • Single image fonts do not use translations.
  • fixed: texture upscaling was disabled by default.
  • fixed shader building.
  • fixed: V_GetFont must load the translations once the game has been set up.
  • fixed: TRF_ALLACTORS did not consider actors without any flag being set.
  • added missing range check to section code.
  • fixed use of Powerup.Strength in PowerInvisibility.
  • fixed bad Heretic light definitions.
  • fixed missing sound for Polyobj_MoveTo.
  • Add mapinfo option to disable merging of identical pickup messages on same tic
  • attenuated lights for Strife.
  • fix "'Dictionary' is freed outside the GC process" warning
  • fixed map things erroneously treated as polyobject anchors/spots
  • restored warning about missing aiming camera target
  • Fixed an issue where multiple invulnerability powerups could cancel each other out from just one expiring.
  • export common formulae to functions instead of copy-pasting them
  • screen bevel now enlarges also when screenblocks <= 11
  • make intermission and status bar scaling game-specific in the config
  • add scaling customization for classic ui flat scaling
  • make screen border flat scale up
  • inter_classic_scaling now defaults to true
  • fixed: last commit I accidentally left hardcoded testing values and did not change them back to check for the texture's original size
  • implement cvar 'inter_classic_scaling' to render the intermission flat as if it were 320x200
  • force player respawn to call up the player's default class settings before determining where to respawn the player
  • Add optional direction parameters for SprayDecal and its A_SprayDecal zscript counterpart
  • Revised Serbian characters Ћ/Ђ
  • fixed: screen resolution changes did not notify the 2D drawer.
  • fixed secondary ammo display in strife status bar
  • Fix bouncing missiles not dealing damage when hitting top/bottom (#1068)
  • Add option to invert mouse x
  • Add an alpha parameter to StatusBar.DrawBar
  • moved benchmark fps output to the custom part of it because it depends on game data.
  • fixed ZScript compiler crash with dereferencing null pointers
  • moved the frame rate drawer out of DFrameBuffer.
  • did a bit of cleanup on DFrameBuffer, most notably taking GetCaps out of it. With the old softpoly renderer and OpenGL 2.x being gone there is no more need for such complex handling, it is now a single function in d_main.cpp.
  • Added MTF_NOCOUNT to spawn flags
  • split voxels.cpp into a backend and a game dependent part.
  • made FModelRenderer game independent - the 3 functions in question may just be global functions instead.
  • changed shadowmap setup so that the AABB tree is owned and controlled by the map, not the renderer.
  • changed the light parameter of ShadowTest to a position vector.
  • cleaned up the dependencies in the model rendering code and separated it into game-independent and game-dependent parts.
  • clean separation of vertex creation from map data and the buffer object.
  • made the portal state global, outside the framebuffer, because it is pure logic state without dependencies on the backend.
  • took the setup functions out of FDynLightData - there is no need to have them as members and they age game dependent.
  • moved RenderView out of the framebuffer classes to complete the consolidation of the renderer's entry points.
  • reworked canvas texture updater to avoid passing game data to the render backends.
  • consolidated the savegame picture code.
  • consolidated the 3 RenderViewpoint variants and took the function out of the framebuffer class.
  • consolidated the 3 virtually identical instances of DrawScene and moved the function to HWDrawInfo.
  • moved the render interface functions out of FGLRenderer into OpenGLFrameBuffer.
  • fixed: hwrenderer materials were nullptr checked but the pointers were not always properly initialized
  • fixed crash when loading saved game that has no music
  • added validation of game skill when changing a level
  • fixed potential crash on intermission cast screen
  • set all texture IDs after finishing the initial texture manager initialization. As it turned out, not all textures have a valid ID at that point so it needs to be redone.
  • block off the Substitute function by making it private to the 3 classes that really need it.
  • let TeleportSpecial universally map to Teleport when checking action special names.
  • apply aspect ratio compensation for all fullscreen images with a height of 200 and 400, and not just to 320x200 and 640x400.
  • fixed incorrect value range for particle's depth value, used for sorting.
  • made 3D floor damage transfers optional by adding a new flag bit (2048) and made that mode automatic for the old ZDoom-based light only transfer special.
  • fixed keybinding reader - before trying to load DEFBINDS the lump index wasn't reset.
  • removed the "no IWAD definitions found" error message because the condition it checks for is not an error.
  • fixed setup of IPK3's where all content is in a subdirectory.
  • fixed texture layer management so that each material layer can decide for itself if it wants to allow upscaling.
  • rewrote the hardware texture precacher to use the new texture management to properly track the data to delete.
  • store the Vulkan descriptor sets in the material - where they belong! Having them in the base texture object was a major maintenance issue.
  • store the material layers in reference counted pointers in the FGameTexture object.
  • major refactor of texture upscaling control. All decisions were done deep inside the texture creation code, leaving zero options to the higher level code for controlling the feature.
  • moved the decision whether to upscale textures up one level in the function chain. Still not the perfect place, this should be decided before creating the texture, not in the middle of the process.
  • disabled the selective texture cleaning in the precacher. The logic here turned out to be a serious blocker and needs to be rethought.
  • allocate the sprite positioning info on demand only.
  • Moved the raw texture handling into the texture manager as well.
  • moved the front layer hack for Hexen's skies to the texture manager.
  • moved the handling for paletted replacements into the texture manager.
  • use FGameTexture instead of FMaterial for texture tracking in the hardware renderer.
  • moved the sprite positioning info out of FMaterial back into FTexture.
  • scale the automap parchment to clean 320x200 dimensions.
  • made 'supportRemap0' an image property so that the handling for this can be taken out of the actual texture class by just providing a replacement texture for the skies.
  • decoupled the software renderer entirely from FTexture - it will only look at FSoftwareTexture now, all access to the texture manager has been wrapped.
  • texture code refactoring to consolidate multiple textures referencing the same backing image.
  • handle brightmaps in the main shader instead of keeping separate instances around.
  • added detail and glow layers from Raze.
  • fixed material setup which could not guarantee that everything was initialized correctly.
  • for warped textures, warp all layers. With this brightmaps finally work on warped textures.
  • fixed detection of standalone IWADs
  • let FSkybox inherit from FImageTexture to simplify the redirection of the base image for the software renderer.
  • fixed text size calculations in the status bar.
  • fixed: Setting 'noallies' on the level cleared the player's friendly flag.
  • Moved TICRATE from Thinker to Object in ZScript so status bars have access to it.
  • fixed conditions with SND_PlayerReserve flag
  • added global variants of the main 2D-draw functions taking an F2DDrawer as their first parameter.
  • separated the Doom specific parts of the ZScript parser from the core into a subclass.
  • separated the Doom specific parts from the compiler backend into a separate file, these parts now get invoked via callback hooks.
  • put the state pointer serializer in a virtual function so that types.cpp can operate without any knowledge of Doom states.
  • split the serializer in two to keep the Doom specific parts out of the main file.
  • split the TObjPtr serializers into a separate file to avoid polluting everything that needs to use the serializer.
  • took InitializeDefaults out of PClass and moved it to PClassActor. Like so many other parts, this created a hard dependency of the low level code on very invasive game content.
  • moved most of the root marking out of the garbage collector, replacing it with callbacks.
  • use translation slot 0 for reserved content, like font translations.
  • major dependency reduction of the texture system.
  • moved some data needed by the texture system into palettecontainer.cpp.
  • split animation management out of the texture manager into a separate class.
  • moved game specific data out of the sound backend. In Raze I already had a user data array for that so this gets used here, too, now.
  • use a TMap to store music volume settings instead of using a homegrown linked list.
  • separated the game-dependent music lookup parts from the core player.
  • reduce backend's dependency on game state by using callbacks.
  • merged FPalette and PaletteContainer.
  • use an array to store the buttons. This puts a lot less knowledge about the game's features into the low level code.
  • made console notification scrolling independent of the global game ticker variable.
  • uncouple console's cursor blinking from the game ticker.
  • c_dispatch header cleanup and splitting of gamestate into a separate header, to avoid polluting low level code with game specific headers.
  • CCMD no longer uses copystring function.
  • ability to dynamically register CCMDs.
  • removed the 'caller' parameter from the CCMD dispatcher. This can never be anything but players[consoleplayer].mo, so there is no need to pass it through the interface.
  • separated the button code from c_dispatch.
  • replaced Travis and AppVeyor with GitHub actions
  • split off the console's command line class into its own file.
  • CVAR cleanup, in particular decoupling from game internals, which now get handled via callbacks.
  • removed a large batch of unused names.
  • File system refactoring to free this code of direct game dependencies.
  • renamed the file system related classes to actually use the term "FileSystem".
  • moved the file name management out of the single resource lumps.
  • moved the linkedTexture pointer up one level out of the resource descriptor into the file system record.
  • renamed fullscreen CVar internally to vid_fullscreen to make searching for it easier.
  • make DumpCPUInfo return a string instead of letting it print the info itself. Also consolidated I_Init, because both existing versions were identical.
  • major code refactoring to improve reusability of low level utility code
  • move SuperFastHash to its own set of files, instead of having this tied to the console.
  • replace swapvalues with std::swap globally.
  • added printf.h header to avoid including more dirty ones for the console printing functions.
  • cleaned up the includes in m_png.h, this file had far too many and far too broad dependencies.
  • moved the dictionary implementation into the 'scripting' folder where it really belongs.
  • copied some fixes for overlong config entries from Raze.
  • renamed basictypes.h to basics.h to keep the file name in line with Raze and make comparisons easier.
  • added some utilities to cmdlib.cpp and changed its license to BSD, because no original Quake code is left here.
  • avoid using plain char pointers to store script data for FraggleScript.
  • use FString to manage strings in bot code.
  • removed use of copystring in Dehacked code and cleaned up the list of includes in cmdlib.cpp
  • Added $OPTVAL_MBFSTRICT to menudef.txt, and added corresponding case 7 to the compatmode cvar in d_main.cpp
  • removed the obsolete Doomsday 1.8-style texture pack support. This poorly integrated into the texture system and wasn't compatible with modern texture packs anymore so its usefulness was questionable.
  • REQUIEM.WAD fixes (#1050)
  • Fixed sprites sunk into water on Carmack with HQ resize modes.
  • Fixed tutti-frutti and crash with liquid warp effects on the Carmack renderer when texture resizing was disabled. (#1063)
  • Fixed: SPECTRAL flag didn't check for DMG_FORCED before aborting DamageMobj.
  • removed detection of unsupported macOS versions
  • fix nullptr crash in player.camera reference when player.camera is nullptr
  • Don't draw weapon tags when player tries to switch weapons while they're dead
  • add warp2 shader to softpoly2
  • Added Actor.CopyBloodColor to copy another existing actor's blood color.
  • Opaque blood decals must be defined with 'OpaqueBlood' keyword in DECALDEF
  • Colorize opaque decals using the bleeding actor's blood color, if the 'Shaded' keyword is omitted from the DECALDEF.
  • remove assumption in DFrameBuffer::FillBorder that ultrawide screens will stretch an image, since it is no longer the case.
  • Fix compile error when using std::sort with Visual Studio 16.5.0
  • clear the screen before drawing content, not afterward.
  • fixed file existence check in TRNSLATE parser.
  • changed translation management so that the fonts also use translation IDs.
  • allow specifying full palettes in translation definitions.
  • implemented better aspect ratio control for fullscreen images.
  • Print weapon name tag when switching with "slot" command (#1048)
  • Add help messages for most of the deprecated stuff in ZScript.
  • fixed FLineTraceData scripting definition
  • replaced assert() in ZScript fields compilation code
  • added line break to 'No GENMIDI lump' message
  • fixed A_FireCGun.
  • fixed: player_t::GetPSprite cannot guarantee success. As a consequence it must return null in the failure case instead of asserting and all calls to this function must check for the failure case.
  • added autonames for the shareware games
  • default terrain's DamageTimeMask to a reasonable value.
  • Add missing segment clipping clamps for decals, sprites and wall sprites
  • aggregate TMap into Dictionary instead of deriving from it
  • fix Dictionary and DictionaryIterator memory leaks
  • Added Pre(Un)Morph and Post(Un)Morph functions.
  • fixed infinite loop reporting '... before first state' errors
  • fixed: removed startTime from the wrong function internally.
  • add checking in S_StartSound for startTime length
  • Added A_StopSounds(int chanmin, int chanmax).
  • Added A_StopAllSounds.
  • fixed: Windows must call the wide version of _mkdir for Unicode support.
  • prohibit core shaders overriding for OpenGL renderer
  • stop all sounds after exiting level regardless of intermission screen
  • fixed comparison with uninitialized data in MAPINFO parser
  • use GAMENAMELOWERCASE macro for music config defaults
  • added Romanian to the language selection menu.
  • removed CD audio support. Mainly because this is an ancient deprecated feature on the system side that serves no good purpose anymore.
  • fixed wrong name assigned to dummy texture with zero ID
  • force Greek to use the standard font in Heretic and Hexen.
  • fix character substitution for mixed case fonts and text update.
  • Greek letters for Strife's Big and Mini fonts.
  • Greek characters for old console font.
  • reformatted getAlternative for compactness.
  • remap accented Greek uppercase letters to their base variant instead of directly to the Latin/Cyrillic replacement.
  • added the 7 Greek characters to Strife's SmallFont that cannot be done by remapping to existing Latin or Cyrillic letters.
  • SoftPoly only worked with Vulkan support on POSIX platforms (#1036)
  • fix vulkan crash when there are no textures in player's view
  • Fix vk_hdr looking for the wrong colorspace
  • backported a few sound code fixes from Raze.
  • use floats for sprite depth sorting in the hardware renderer.
  • Upgrade glslang to 8.13.3559 (stable release January 6, 2020)
  • Fixed a crash when trying to include a missing mixin.
  • Added source, inflictor and damage flags to AbsorbDamage.
  • transitioned engine to use ZMusic as a DLL.
  • Mixins now perform a deep copy of the AST. (Fixes default blocks in mixins)
  • Fixed colorization not being applicable to bottom wall textures.
  • autoload nerveunity.wad to doom2unity.wad
  • let freelook default to true.
  • Change updaterevision to a CMake script
  • fix for loading VOC files.
  • Remove the 'monoize' option from sound loading. Unnecessary with the AL_SOFT_source_spatialize extension, which has been available for over a year.
  • Remove the fallback for lack of AL_EXT_SOURCE_RADIUS. It's been available in OpenAL Soft for years and the fallback method wasn't very good.
  • fixed usage of floor sound with Plat_DownWaitUpStayLip special
  • fixed code generation for very special if+switch combination in ZScript
  • add Doom2f.wad support
  • add support for xbox 360 versions of Doom/Doom2
  • fixed sprite and particle colors when not affected by dynlights
  • Plutonia 2 Compatibility Fixes (#1026)
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Joined: 19 Jul 2003
Location: Germany

Re: GZDoom 4.4.0 released

Postby leodoom85 » Sun Jun 07, 2020 12:42 pm

Better and, congrats for the team and all the efforts.
User avatar
Dodge this.....
Banned User
Joined: 14 Sep 2014
Location: Earth-shaking Chile
Discord: leodoom85#6202

Re: GZDoom 4.4.0 released

Postby Enjay » Sun Jun 07, 2020 12:44 pm

That's quite a long details list. Thank you kindly. :)
User avatar
Everyone is a moon, and has a dark side which he never shows to anybody. Twain
Joined: 15 Jul 2003
Location: Scotland

Re: GZDoom 4.4.0 released

Postby Graf Zahl » Sun Jun 07, 2020 12:46 pm

Enjay wrote:That's quite a long details list. Thank you kindly. :)

That's nearly 5 months...
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Joined: 19 Jul 2003
Location: Germany

Re: GZDoom 4.4.0 released

Postby goldenmob72 » Sun Jun 07, 2020 12:52 pm

User avatar
Joined: 14 Sep 2017
Discord: GOLDƎN MOBSTƎЯ#2196

Re: GZDoom 4.4.0 released

Postby Rachael » Sun Jun 07, 2020 1:02 pm

Great news!
User avatar
^ walking stack of unfinished projects ^
Joined: 13 Jan 2004
Discord: Rachael#3767
Twitch ID: madamerachelle
Github ID: madame-rachelle

Re: GZDoom 4.4.0 released

Postby Alptraum » Sun Jun 07, 2020 1:07 pm

User avatar
Joined: 22 Apr 2019
Discord: Alptraum#6909
Operating System: Windows 10/8.1/8/201x 64-bit
Graphics Processor: nVidia (Modern GZDoom)

Re: GZDoom 4.4.0 released

Postby Zanieon » Sun Jun 07, 2020 1:08 pm

Just in time! Gonna pick this to test out from coop matches with Hunter's Moon, see how it goes.
User avatar
Tamer of The Dark
Joined: 13 Jan 2009
Location: Somewhere in the future
Discord: Zanieon#3177
Twitch ID: Zanieon
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: ATI/AMD with Vulkan Support

Re: GZDoom 4.4.0 released

Postby Kamil » Sun Jun 07, 2020 1:13 pm

GZDoom does not like my PC :( I got this error when I was playing the first level After Doom. However, I calmly completed the City of the Apocalypse in 7 minutes
Here is a screenshot of the error https://www.dropbox.com/scl/fi/eklx2t7z ... o0l6mxypuf
Joined: 21 Sep 2019
Discord: @Kamil#8122
Operating System: Windows Vista/7/2008 64-bit
Graphics Processor: nVidia with Vulkan support

Re: GZDoom 4.4.0 released

Postby Eonfge » Sun Jun 07, 2020 1:18 pm

The Flatpak builders for Linux are on their way, but there is currently a hold-up related to ARM builds. So be patient and you'll likely get the update in the next couple of days.
Joined: 10 Sep 2019
Github ID: https://github.com/eonfge
Operating System: RedHat-like Linux (RHEL, Fedora, CentOS, etc) 64-bit
Graphics Processor: nVidia (Modern GZDoom)

Re: GZDoom 4.4.0 released

Postby Cacodemon345 » Sun Jun 07, 2020 1:19 pm

https://drive.google.com/file/d/1N3BOa5 ... sp=sharing

So here it is, the unofficial NetBSD compilation of GZDoom.

Spoiler: "Output of ldd on the binary"

1. SDL joystick is disabled due to a major SDL2 bug causing USB mouse to be disabled until replug.
2. The binary has been built as Debug intentionally, as NetBSD support is new.
3. Vulkan won't work, no.
4. Check the spoiler for ldd output. Some libraries will have to be installed from the NetBSD pkgsrc using pkg_add. ZMusic must be built by yourself and installed using make install (as root).
5. ld.so.conf tweaking may be required.
6. Try to switch to the GZDoom window if it doesn't appear. I found out that disabling fullscreen will allow it to run more often.
PM me if exec loading issues arise. This build is also 64-bit only; breaking my neck over just for compiling a 32-bit build is not something that I will be doing as support for 32-bit is going to be dropped from the next release.
Joined: 22 Dec 2017
Discord: Cacodemon345#9151
Github ID: Cacodemon345
Operating System: Other Linux 64-bit
Graphics Processor: ATI/AMD (Modern GZDoom)

Re: GZDoom 4.4.0 released

Postby _mental_ » Sun Jun 07, 2020 1:34 pm

Kamil wrote:GZDoom does not like my PC :( I got this error when I was playing the first level After Doom. However, I calmly completed the City of the Apocalypse in 7 minutes
Here is a screenshot of the error https://www.dropbox.com/scl/fi/eklx2t7z ... o0l6mxypuf

"Could not create graphics pipeline: out of device memory" means the graphics card ran out of VRAM.
Joined: 07 Aug 2011

Re: GZDoom 4.4.0 released

Postby Kamil » Sun Jun 07, 2020 1:39 pm

My PC - Intel G3220 and NVIDIA GTX 750 TI 2GB + 8 GB RAM
Joined: 21 Sep 2019
Discord: @Kamil#8122
Operating System: Windows Vista/7/2008 64-bit
Graphics Processor: nVidia with Vulkan support

Re: GZDoom 4.4.0 released

Postby Eonfge » Sun Jun 07, 2020 1:40 pm

Wait, forget my previous comment. Linux release is being published:

I've taken the patch from _mental_ and applied it out-of-tree on the project, so ARM builds are now good.
Joined: 10 Sep 2019
Github ID: https://github.com/eonfge
Operating System: RedHat-like Linux (RHEL, Fedora, CentOS, etc) 64-bit
Graphics Processor: nVidia (Modern GZDoom)

Re: GZDoom 4.4.0 released

Postby Redneckerz » Sun Jun 07, 2020 1:41 pm

Obligatory huge thumbs up for a new GZ release. The Grafmeister strikes again.

Well done all around.
User avatar
To it's ports i may have seen
Spotlight Team
Joined: 25 Nov 2019
Discord: Redneckerz#8399
Operating System: Windows 10/8.1/8/201x 64-bit
Graphics Processor: Intel (Modern GZDoom)


Return to ZDoom (and related) News

Who is online

Users browsing this forum: No registered users and 2 guests