GZDoom 4.11.0

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

Moderator: GZDoom Developers

User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49177
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

GZDoom 4.11.0

Post by Graf Zahl »

Notice: The survey is currently OPEN. GZDoom 4.11.0 contains survey code. You may OPT IN or OPT OUT when starting this software.

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

Download (OpenGLES 2.0 and higher Highlights:
  • Several new languages: Danish, Norwegian, Swedish and Turkish
  • cleanup of Doom's and Chex Quest's small font to use proper character heights for international support.
  • extended all fonts to be capable of handling all European languages which are in common use.
  • DSDHacked support.
  • The build system was transitioned to optionally use vcpkg, which allows building GZDoom on Windows by running a single batch file.
  • WebP and QOI support for textures.
  • sanitized the light mode selection to make it a first class mapping feature by separating map dependent light mode setup from performance related user preferences for the default setting.
  • Linux: GTK startup now offers all the options of the Windows variant
  • lots of new ZScript features.
Bugfixes:
  • screen size settings are now properly saved.
  • fix UMAPINFO boss action clearing.
  • MBF21's BOSS flag now implies NORADIUSDMG.
  • remove memory leak in `A_ChangeModel`
  • fix OpenGL ES selection on the windows startup dialog
Details
  • Changed the variable type of Crossed3DWater. Seems like there was some kind of oversight. Crossed3DWater is an F3DFloor pointer, not sector_t.
  • Add ZScript constants used by FallAndSink
  • Switch to miniz from zlib
  • fix for Genesis of Descent E1M2, which is impossible to complete on ITYTD/HNTR. I had to decompile the ACS script to figure out what was going on, basically at one point you get locked into a room and have to kill exactly 3 enemies with TID 215 for the door to unlock. One of these is a Baron tagged for only Medium and Hard, in his place is an Imp #1184 that has all the right script setups but is not set to appear on any difficulty. The fix is to simply have this imp appear on Easy.
  • fixed the overlapping sector handler in hw_fakeflat.cpp. This picked the wrong plane as the proper texture cutoff.
  • fixed: The UDMF loader did not adjust the floor/ceiling overlap state after processing UDMF sector plane properties.
  • fixed: EV_DoDonut checked the wrong compatibility variable and missed all map specified flags.
  • Fix gameinfo load from same directory as file containing gameinfo lump
  • validate partner seg index in LoadGLZSegs before using it
  • added compatibility handler for Phocas Island 2 MAP01.
  • fixed doublebind check with automap. For the automap C_DoKey gets called twice, once with the automap bindings and once with the regular bindings and doubleclicks.
  • clear the Dehacked string table after passing it to GStrings. For some reason std::move does not work here so make sure it won't stick around.
  • stop all cutscenes before the ENDOOM screen.
  • fixed: Boom's generalized crushers must stop 8 units above the floor. This required changing the special, so a new one was added to avoid altering Generic_Crusher.
  • Fix a very rare crash with complex Polyobjects
  • add support for not localizing some text functions, and modify menu text fields to use this
  • let Dehacked set the implicit missile flags.
  • fix ammo consumption of powered up Phoenix Rod.
  • add unexplored secret color for overlay automap to the menu
  • made all FileReader implementations 64 bit capable.
  • added a nomirrors compatibility handler and applied it to Conf256's CONF55 map. This is for disabling broken plane reflection setups.
  • When compat_floormove is enabled prevent sector floor from lowering if a thing is stuck in the ceiling (vanilla behavior)
  • fixed M_GetSavegamesPath for Linux.
  • Add Inventory::ModifyBob and Inventory::ModifyBob3D
  • Expose OF_Transient to actors as bNoSaveGame
  • add StartGameDirect function
  • fixed: MBF21's BOSS flag implies NORADIUSDMG.
  • fixed: For Dehacked, A_CPosAttack needs to use a hard coded attack sound. This discrepancy is ancient, so the approach used for the shotgunner does not work here and some hacks are needed to remap the function only for Dehacked.
  • implemented the remaining dynamic structures of dsdhacked
  • dsdhacked: Allow dynamic creation of new actors
  • dsdhacked: allow dynamic creation of new states.
  • add float.equal_epsilon and double.equal_epsilon
  • Allow building gzdoom with Vulkan with either X11 or Wayland WSI integration through CMake options
  • use stb-image for JPEG decoding because the old library provides no advantage over it.
  • Allow disabling colors for NameAllKeys
  • avoid high stack usage in anmtexture.cpp
  • added DSDA's passover/nopassover keys to the MAPINFO parser.
  • use a string pool to store all filenames and in the file system. this avoid lots of small allocations for data that will released in bulk later.
  • use the lump cache directly for FileData. This was the final puzzle piece to allow using memory mapped files in the future.
  • use better hash function in the file system. This is djb2 which is supposedly one of the best string hashing functions around.
  • rewrote dir CCMD using ScanDirectory and avoiding I_ChDir entirely.
  • use ScanDirectory in all places where the findfile API was used.
  • WebP image support
  • added safeguards against very early access to console variables in Cocoa backend
  • Add support for QOI image formats
  • block the centerview CCMD if the player has TOTALLYFROZEN. This is deliberately done this way, instead of placing the check inside PlayerPawn::CheckPitch, because there may be other situations where we don't want to block the centering function (APowerFlight::EndEffect being one such case)
  • replaced zstrformat with stb_sprintf.
  • A_Chase CHF_DONTLOOKALLAROUND
  • Add Weapon::ModifyBobLayer , Weapon::ModifyBobLayer3D and Weapon::ModifyBobPivotLayer3D
  • allow explicit casts between vectors of different underlying types
  • Fixed BlockingLine giving erroneous results
  • add CountSectorTags/CountSectorTags/CountLineIDs/GetLineID
  • Exported reflection functionality. Localized reflection code to a single function. Fixed an error where NOSHIELDREFLECT was being checked on the wrong Actor. Fixed an oversight where MIRRORREFLECT was checking for valid target despite not needing one.
  • Added ShadowAimFactor and ShadowPenaltyFactor. These properties allow to specify how much an actors' aim is degraded when shooting at a shadow actor. And how much the shadow actor itself affects the shooters' aim, respectively.
  • Added MF9_SHADOWAIMVERT. This flag causes the vertical aiming of monsters to also be affected when they aim at shadow actors.
  • Added MF9_SHADOWBLOCK. Actors in the line of fire with this flag trigger the MF_SHADOW aiming penalty. The shooter needs to have MF9_DOSHADOWBLOCK to check for actors with this flag.
  • Added MF9_SHADOWAIM. This flag allows actors with MF6_SEEINVISIBLE to still get an aim penalty by trying to shoot at a shadow actor.
  • Added damage property to earthquakes.
  • Added damage and thrust multipliers to quakes.
  • Added QF_DAMAGEFALLOFF. This flag makes it so that the damage and actor thrusting of earthquakes fades with distance like the screen shake effect does.
  • Added (XF/RADF)_CIRCULAR. This flag makes explosions use a spherical radius, instead of a cubic one. Only took almost 30 years.
  • Added (XF/RADF)_NOALLIES. This flag allows explosions to not harm any actors that are friendly to its' source.
  • Added (XF/RADF)_THRUSTLESS. This flag allows for explosions that do not thrust any of the actors caught in the blast.
  • Allow custom MessageBox menu selector
  • Individual Joystick Enable/Disable Toggles
  • add QualifiedName to VMFunction and allocate these static names from the class data memory arena instead of using FStrings.
  • null pointer type checks in the VM added to avoid crash on bad codegen.
  • Expanded Service's Get<Type> functions to pass in `name` parameter.
  • Added GetName(UI/Data) to Service class.
  • make all legacy light modes except 'Doom' and the software rendering emulation MAPINFO only. A CVAR still exists for testing but its value won't be saved to the config.
  • MAPINFO can not enforce any of the two software light modes, as low end users require the option to change this to the 'performance' setting.
  • changed lightmode menu options: user can only select between "performance', 'software' and 'vanilla'. 'performance' is the old 'Doom' mode which is still needed to speed things up on low end hardware.
  • fix the ammocount parameter in Weapon.CheckAmmo
  • fix UMAPINFO boss action clearing. This did not handle the case where the actions were cleared without adding new ones and also did not clear the MBF21 boss action flags.
  • remove memory leak in `A_ChangeModel`
  • made some changes to vectors.h so that it can be used without the floating point function replacements.
  • Add Voodoo Zombie Compatflag
  • remove `vid_gpuswitch` and all its handling; it is only as of now useful in old versions of Windows 7/8/10 which are no longer supported
  • added `MaxEffectTics` field to `Powerup`
  • adapted font system to properly handle Turkish. Those i's are really messy, especially when dealing with allcaps or pure lowercase fonts.
  • made D_WriteUserInfoStrings memory safe.
  • Fix TArray allocating 0 bytes in constructor
  • Add dynamic lights to software slope drawer
  • use uniform buffers for dynamic lights everywhere. Branching on SSBO content does not work that well on NVidia so it is better disabled. So far only implemented for OpenGL Vulkan needs more work.
  • Fix Software Slope Rendering for non-1.2 pixel ratios
  • add the flags MINVISIBLE and MVISBLOCKED
  • Extend pseudo-generics system used by maps to dynarrays
  • add RedirectCVAR directive for loading alternate maps based on a Bool CVAR setting
  • Fixes bones when using OpenGL 3.3 (UBO bone data)
  • validate the buffer size in HWViewpointBuffer::Set2D.
  • Fixed a bug where calling an invalid virtual function would cause a crash.
  • Add cvars to sprite shadows progressively according to thing <-> floor distance
  • Added OnEngineInitialize() for static event handlers
  • cleanup of the Doom and Chex Quest small fonts' discritical characters
  • Implement antialiasing for automap lines
  • Map::GetIfExists and Map::CheckValue
  • Fixed global TerrainDef array not being exported correctly
  • alt HUD: use `NewSmallFont` for drawing player's coordinates if `ui_generic` is enabled
  • Increase slider precision for mouse sensitivity settings
  • Use a slider to allow specifying max FPS with more precision
  • Check all ACS functions for minimum number of arguments.
  • Fixed SpawnForced not respecting the minimum declared in zspecial.acs. (viewtopic.php?t=77027)
  • Exported LinePortals to ZScript
  • cleaned up the pitch management in the sound backend. This now treats all pitch methods equally instead of the preferential treatment of Doom's original pitch hack. Most importantly, the sound channel now stores the pitch as a floating point value instead of 9.7 fixed point.
  • snd_pitched now also gets checked in the sound engine, not the low level interface.
  • Fix Y position of characters in monospace fonts
  • Added all of the missing player cheats to the SetPlayerProperty special.
  • Added APROP_WaterDepth.
  • Converted A_Quake(Ex) intensity parameters from ints to doubles.
  • Add missing error for mapinfo tonemap
  • Add Tonemap support for Unclamped lighting mode
  • Add Alternate Light Blending Options
  • gldefs: update Freedoom definitions.
  • CCMD listmaps: Colorize maps loaded from pwads in blue text
  • Fix MapIterator<X, String>::GetValue
  • Fixed a bug where static events would fail to halt propagation.
  • Fix diffuse-only material shaders not applying.
  • Add sv_noplayerclip to allow players to walk through and shoot each other (only in coop)
  • optimized sheet font texture generation. Instead of reloading the base image over and over again, let's cache it so that less time is needed for each single character.
  • changed CreatePalettedPixels to allow return of static pixel data without reallocation and copying.
  • fixed buffer size checks for raw textures.
  • Prevent important messages from being accidentally filtered.
  • Updated the WOPN banks collection
  • Added FlyBob Multiplier for Player
  • Added WaterClimbSpeed Property to Players
  • Fixed custom screen height and width not saving.
  • Additional lock-related ZScript functions.
  • Key.IsLockDefined: returns whether a lock number is valid (can be unlocked) or belongs to a "does not work" door.
  • Key.GetMapColorForLock: returns the automap color for a lock number (or -1 if the lock isn't valid).
  • Key.GetMapColorForKey: likewise, but for a specific key.
  • Fix FxMultiAssignDecl type
  • fix OpenGL ES selection on the windows startup dialog
  • Multi-Assign Declarations
  • Fixed the ACS PLAYERINFO_FVIEWBOB to be a bool instead of a double.
  • Add vulkan pipeline cache
  • Update and clean up UE1 model loader.
  • Expose StripLeft and StripLeftRight to ZScript
  • Fix StripLeftRight
  • Error out instead of crashing for vector out variables
  • optimizations for the sound system and texture manager.
  • Added FOV Interpolation
  • Added toggle control for weapon bob while flying
  • add BobWeapon3D
  • Exposed Box and PointOnLineSide
  • Add support for Vector types as properties
  • removed bogus errno check from Dehacked parser.
  • Fixed IsActorPlayingSound's default argument
  • Fix wrong assumptions about actor initialization in Map/MapIterator
  • fixed GC::FullGC not collecting everything anymore.
  • extended all fonts to contain all characters used by European languages
  • Fix Quicksave Rotation
  • Add all the functionality from the win32 startup window to the GTK version
Last edited by Graf Zahl on Mon Sep 25, 2023 1:52 pm, edited 1 time in total.
User avatar
Dynamo
Posts: 1040
Joined: Sat Jun 07, 2008 5:58 am
Location: Industrial District

Re: GZDoom 4.11.0

Post by Dynamo »

Very nice! I'm curious though, what was the reason for removing the older sector light modes?
User avatar
Rachael
Posts: 13782
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her

Re: GZDoom 4.11.0

Post by Rachael »

I am not in favour of that decision - but as I understand it, the reason for that was because mappers design their maps for a certain brightness and they want that brightness to be seen by all players without worry about how someone's preferences will ruin the map.
User avatar
Phredreeke
Posts: 309
Joined: Tue Apr 10, 2018 8:14 am

Re: GZDoom 4.11.0

Post by Phredreeke »

The problem IMO is that it's confusing for newcomers. I remember first playing the Playstation TC and being shocked how dark it was. Granted that could have been helped by defining a default MAPINFO light mode (if such a setting existed back then?)
Blzut3
 
 
Posts: 3178
Joined: Wed Nov 24, 2004 12:59 pm
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: GZDoom 4.11.0

Post by Blzut3 »

Remember that the various light modes existed for backwards compatibility. The light modes that remain a user setting are the most accurate ones and are the ones that people should have been using. Although there's inherently going to be some difference between the shaderless and software light modes, they should be roughly interchangeable in terms of map design.

But yes, it was confusing to new users since there's not enough space on the menu to adequately describe what all the light modes were for. (i.e. without being told how many people knew that "legacy" meant compatibility with the Doom Legacy source port?) It is also one clear example of GZDoom having too many options when some of the options were definitely wrong for daily use.

Even for the maps that were designed for the other light modes, I doubt very many people actively changed their light mode for them so there's a good chance people were just playing them wrong anyway. The mapinfo option is definitely a better late than never addition, and being able to set the other light modes temporarily for the session is honestly enough for backwards compatibility.
User avatar
Rachael
Posts: 13782
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her

Re: GZDoom 4.11.0

Post by Rachael »

Yes - despite my dislike for the change, I absolutely cannot argue against the merits of it. There definitely were good reasons for making the change. It just felt a little contrived with the way it was done, at first. But in the end I guess it really was for the better.
Professor Hastig
Posts: 251
Joined: Mon Jan 09, 2023 2:02 am
Graphics Processor: nVidia (Modern GZDoom)

Re: GZDoom 4.11.0

Post by Professor Hastig »

Since I made the change after discussing the feature with Graf, let's explain:

The main issue here clearly is that in the past this was not properly handled. GZDoom started out with a very bad light formula that got quickly changed after the first release but unfortunately was not removed entirely. Instead we got several more weird modes added to the list that were more for curiosity's sake than actual usefulness. On top of that there were frequent complaints about the light mode descriptions being very obtuse and detached from reality, especially when later the software lighting formulas got added. At this point the feature changed from an option to tweak a map's lighting to an actual user preference without addressing its true nature.

On top of that there was another, performance related problem here which I experienced on a very weak work computer when testing out the game with some map that used MAPINFO too force-set everything to as close to vanilla as possible: On ultra-low end iGPUs the performance of the software emulated light modes can make or break running at a stable frame rate. Here it is clearly preferable solely for performance reasons not to use software emulated lighting. But the way the light modes worked, if a map set such a mode there was no way out for the player.

So how to address it? The most important thing here was in my opinion to present something to the user that is actually useful to make a decision which one to choose, not to expose the feature in all its full gory details, i.e. essentially address a criticism that GZDoom's menus have gotten all to frequently.

The key was to separate the mapping feature from the user preference so that both can coexist without getting into each other's way. The 3 modes left under gl_lightmode are the ones closest to the original lighting formula with decreasing performance for increasing accuracy, allowing each user to set the one best matching their hardware (and personal like, of course) and blocking maps from overriding that choice by not allowing to choose a software lighting mode anymore.

The option to fully tweak the light mode still exists with the gl_maplightmode CVAR which, however, is not persistent as it is mainly meant for testing a light mode that then can be set in MAPINFO.
Blzut3 wrote: Mon Sep 25, 2023 6:47 pm The mapinfo option is definitely a better late than never addition, and being able to set the other light modes temporarily for the session is honestly enough for backwards compatibility.
The MAPINFO option has been there since ... forever, I guess. It just wasn't well known. It wasn't a new addition at all.
User avatar
Delfino Furioso
Posts: 118
Joined: Sat Mar 27, 2021 3:21 pm

Re: GZDoom 4.11.0

Post by Delfino Furioso »

I've noticed the gzdoom.sf2 soundfont bundled with 4.11 has a different filesize than usual.
The one hosted on github however seems to be the same since its inclusion 6 years ago.

Where does this latest soundfont revision come from?
What's changed?
Professor Hastig
Posts: 251
Joined: Mon Jan 09, 2023 2:02 am
Graphics Processor: nVidia (Modern GZDoom)

Re: GZDoom 4.11.0

Post by Professor Hastig »

https://github.com/ZDoom/gzdoom/issues/2054

It looks like it only ended up in the released package but not the repo.
User avatar
Delfino Furioso
Posts: 118
Joined: Sat Mar 27, 2021 3:21 pm

Re: GZDoom 4.11.0

Post by Delfino Furioso »

oh that's why I couldn't find any related PRs/commits
thank you!
_mental_
 
 
Posts: 3819
Joined: Sun Aug 07, 2011 4:32 am

Re: GZDoom 4.11.0

Post by _mental_ »

The old soundfont in the repository must be updated to the actual version, or removed from it. It's very confusing when some file is kept inside the repository, but released package should include a different file with the same name.

EDIT: Linux build contains "wrong" version of soundfont for this reason exactly.
User avatar
Rachael
Posts: 13782
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her

Re: GZDoom 4.11.0

Post by Rachael »

A 4.11.1 release will definitely seem to be necessary in order to address these issues. Or at least 4.11.0a.
User avatar
Phredreeke
Posts: 309
Joined: Tue Apr 10, 2018 8:14 am

Re: GZDoom 4.11.0

Post by Phredreeke »

Professor Hastig wrote: Mon Sep 25, 2023 11:46 pm The key was to separate the mapping feature from the user preference so that both can coexist without getting into each other's way. The 3 modes left under gl_lightmode are the ones closest to the original lighting formula with decreasing performance for increasing accuracy, allowing each user to set the one best matching their hardware (and personal like, of course) and blocking maps from overriding that choice by not allowing to choose a software lighting mode anymore.
Do you mean that the vanilla light mode has lower performance than the ZDoom software light mode?
Professor Hastig
Posts: 251
Joined: Mon Jan 09, 2023 2:02 am
Graphics Processor: nVidia (Modern GZDoom)

Re: GZDoom 4.11.0

Post by Professor Hastig »

Yes. The vanilla light mode's math is more complex because it uses different gradients for flats and walls which requires more logic.
grisina_hydra
Posts: 1
Joined: Sat Sep 30, 2023 5:32 am
Preferred Pronouns: He/Him
Operating System Version (Optional): Windows 10
Graphics Processor: Intel (Modern GZDoom)

Re: GZDoom 4.11.0

Post by grisina_hydra »

Why the fu*k remove the SoftPoky Rendering options in newer Gz Dooms. My patato pc graphic card died years ago and I can't open render mode "Open GL" ,"Vulkan, "Open Gl ES". My 14 years old pc cant support those suc*ers render option only support SoftPoly option. An you guys remove it and I'm pissed . I cant open some mods and Pk3 cause of you change render system options. Bring it back the SoftPoly render option for newer Gz Dooms!!!

Return to “ZDoom (and related) News”