github ZDoom/gzdoom g4.9.0
GZDoom 4.9.0

latest releases: g4.12.2, g4.12.1, g4.12.0...
19 months ago

Inportant note to Windows users:
GZDoom 4.9.0 changes where gzdoom.ini is stored. Unlike older versions this one will always prefer the system's user folder and place the INI in Documents/My Games/GZDoom if no INI is found. This was done to bring handling in line with current guidelines and to make it easier for commecial games that often get installed into a folder without write access. If you still want to store the INI in your game folder you have to create an empty file called GZDoom_portable.ini there before launching. If you still have an old INI in your folder, GZDoom will ask what to do with it, you can either move it to the user folder or convert to a portable install.

Change of savegame storage
This version introduces per-IWAD savegame folders. If you have old savegames you still intend to use, please wait with the update until you can safely delete them.

Highlights

  • IQM bone model support
  • textured particles

Details

  • added target check to A_MaulerTorpedoWave.
  • fixed: P_SpawnMapThing may not call playsim code.
  • added PARAM_NULLCHECK to the block iterator creation functions.
  • added [[noreturn]] to several functions that always throw exceptions.
  • Particle Rolling
  • Add Textured Particles
  • Add GFF_NOEXTCHANGE to Phasing Zorcher flash. The Plasma Rifle does not light the player's sprite, so we must assume the Phasing Zorcher also should not.
  • Fix HUD models not drawing if MODELDEF has been changed with A_ChangeModel
  • Fix inconsistent distance and hit position on traces that skip everything.
  • Fix canvas textures getting clipped by wrong scissor box
  • Fix vulkan backend clearing the canvas textures to undefined contents
  • made DMover and subclasses non-abstract so they can be inherited from.
  • added option to show hub and episode names on the alt HUD.
  • reworked CVARs to not use a linked list and to be initialized manually.
  • marked a few Printf calls in critical error paths as PRINT_NONOTIFY.
  • fixed: R_LoadVoxelDef did not fully initialize the voxel descriptor it creates.
  • don't crash on null pointers in V_GetFont.
  • zero the velocity of crunched sprites. Since their size is zeroed, they are no longer subject to collision detection and may slide out of the level otherwise.
  • don't crash when destroying incomplete textures. This can happen during TEXTURES parsing in case of an error.
  • try to keep the engine stable for as long as possible if a VM exception occurs in OnDestroy while running a cleanup. This will still crash, but run long enough for the exception message to be visible.
  • fixed F2DDrawer::SetClipRect.
  • added vanilla donut handling to compat_floormove.
  • Fixed: voxel models pitch/roll properties weren't initialized correctly
  • Added QF_SHAKEONLY. The QF_SHAKEONLY flag changes the behavior of earthquakes with a damage radius, so that they only shake actors around, without also harming them.
  • Added QF_AFFECTACTORS. The QF_AFFECTACTORS flag makes the thrusting and harming of damaging earthquakes also affect monsters. Monsters with DONTTHRUST will not be flung around by earthquakes.
  • Added the QF_GROUNDONLY flag. The QF_GROUNDONLY flag makes earthquakes only shake the player while they are standing on the ground.
  • fixed DrawLine commands by giving them a consistent floating point interface.
  • heretic: e2m7 - missing texture
  • fixed direct native interface for Draw(Thick)Line.
  • fixed: The main loop never checked the cutscene flag for disabling wipes.
  • Sync movie video playback to the audio, when possible
  • Fix washed out colors in Vulkan HDR mode
  • normalize the timer with the app start, not the epoch. This ensures smaller values and less wraparounds with integer values in scripts.
  • un-deprecated the integer MSTime variant. Due to undefined downconversion rules from double to int, there is no way to safely downcast the return from MSTimef, meaning the function is completely useless for retrieving integral time stamps.
  • added Harmony ENDOOM screen.
  • added a config getter to the interface.
  • moved language CVAR to backend.
  • handle menu customization via callbacks.
  • move hud scale CVARs to the backend.
  • handle autoload flags in startup through function parameters instead of directly accessing the CVARs.
  • handle Build tiles via explicit callback to the init function.
  • add a system interface for CheckCheatmode and moved some sound code to the backend.
  • Exported GetDisplayTopOffset for font characters to ZScript
  • added missing obituary for Strife's turret.
  • Added support for BLOCKLANDMONSTERS in Line_SetBlocking.
  • Added APROP_FriendlySeeBlocks to Set/GetActorProperty
  • Fix planeval; add direct sector slope manipulation
  • Modify to have one GetVertexZ rather than IsVertexZSet / GetVertexZ
  • Add vertex height manipulation functions to LevelPostProcessor
  • Add sv_noextraammo. When set to true, disables that weird hardcoded behavior from original Doom that gives extra ammo when picking up weapons in deathmatch
  • fixed: all script methods adding an object to a dynamic array must perform a write barrier.
  • add freezetics actor property
  • allow notification of actor goal is reached inside of a SECF_NOATTACK sector
  • GLES2: Fix anistropic filtering
  • disabled discord-rpc debug info for configurations without it
  • fixed sky cap color handling
  • fix arti teleport and arti teleother not respecting useplayerstartz mapflag
  • UE1 models now handle frame index -1 properly.
  • Add support for the GOG releases of the Unity versions of Doom and Doom II.
  • carry over the tiling flag from the finished to the entering screen
  • Prevent Keyconf from adding duplicate playerclass
  • Add detection for the Final Doom WADs that were recently added to the Steam version of Doom II.
  • new method to define obituaries without modifying actors.
  • remove latch flag from sv_cheats
  • add openscreenshots opensaves and openconfig console commands on Windows and Linux and Mac
  • use consistent index types for array function return values.
  • pass clip rect as pointer to F2DDrawer::AddLine.
  • Export FindLumpFullName to ZScript.
  • Add support for nested user types
  • made adjustments for proper int type promotion to allow internal ZScript to compile with it on.
  • ZScript: fixed integer type promotion for shift operator
  • version-restrict int to uint promotion. Some mods depend on this not happening.
  • fixed: The compile context for constant evaluation did not initialize its Version member.
  • Don't throw away unsignedness when passing unsigned constants to the codegen
  • Add signed->unsigned promotion for binary operators
  • fix menu commands with semicolon separated commands
  • get rid of M_Malloc call in WriteSavePic
  • Fix definition order of ZScript structs. Do a first pass over the Structs array in CompileAllFields() to reorder them such that if a struct uses other structs, those structs will be resolved first.
  • Fix viewpoint buffer not getting cleared when in the menus
  • backported KDE detection from Raze.
  • removed the Softpoly backend.
  • Add a 2d drawer to canvas textures
  • Fix incorrect mapping of texture indices for UE1 models.
  • Added PitchFromMomentum, UseActorPitch and UseActorRoll to VOXELDEF. Behaves exactly like their 3D model counterparts. Hardware renderer only.
  • removed some redundant chaaracters from the Doom SmallFont.
  • Added IQM bone model support
  • Added A_ChangeModelDef
  • fixed return values of FTextureAnimator::AddAnim
  • add longsavemessages to simple menu. set longsavemessages default to false.
  • DirectInput cleanup. Removing ancient code that's only useful on pre-XP OSs.
  • also allocate FDoorAnimation's frame table from the texture manager's memory arena.
  • optimized storage for animation definitions.
  • Fixed vulkan crash when multisampling is enabled
  • add a method for filling a shape2d instead of using a texture (#1661)
  • add stencil buffer support for 2d drawing (#1660)
  • add a system for setting all of 2D drawing's transform, not just shapes
  • Expose ConsoleState to scripts
  • rewrote Windows console code for Windows 10's new terminal.
  • fixed and consolidated artifact check in cheat code.
  • removed volatile type punning for clipping against line portals.
  • fixed handling of *dive and *surface sounds.
    -let A_FireProjectile pass through the second return value of SpawnPlayerMissile.
  • fixed PoisonCloud's looping animation count.
  • weapons are not artifacts.
  • rename PrintString to PrintfEx and make it a vararg function
  • Expose Print Flags to ZScript
  • fixed names for A_PlaySoundEx
  • ENDOOM is not Windows only anymore.
  • fixed background tiling for summary screen. Since the background object gets recycled it must clear this flag before loading a new background.
  • let the "abort" button on the network pane of the startup screen do a hard exit on Windows.
  • 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.
  • cleanup and refactoring of Vulkan backend
  • Improve vk_debug output a lot by throwing away the useless parts of the message and limit the callstack to the first 5 gzdoom calls
  • validate fountaincolor before using it.
  • added detection of macOS Ventura
  • ZScript: don't allow multiple assignment syntax with only one element.
  • fixed type of third argument of MBF21's MonsterMeleeAttack function. This is a sound, not an int.
  • 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
  • check point pushers/pullers by inheritance, not absiolute match
  • 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.

Don't miss a new gzdoom release

NewReleases is sending notifications on new releases.