GZDoom 4.2.4 released

Posted by on at 01:12
(12) Comments
Notice: The survey is currently closed. GZDoom 4.2.4 does not include the survey code that 4.2.0 did.

Download (OpenGL 3.3 and higher)

  • This is a bugfix release without new features. The notable highlight is that this fixes translucent objects in the software renderer.

  • 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

LZDoom 3.83a released

Posted by on at 05:03
(14) Comments
Notice: Some defaults have been changed to fix problems, it's recommended that you delete your ini specially on old AMD GL3 cards.

Fixes/features since 3.82
  • Added missing null pointer checks to fix a crash with PB.
  • Added the 'quickunsetslot' command to unset the quicksave slot.
  • Fixed capped tall skies not working (Heretic and Hexen). Fixed sky stretching for the new freelook limit.
  • Implement the following functions under LevelCompatibility: FlipLine, GetNumMapThings, GetMapThingPos, GetMapThingAngle, SetMapThingAngle.
  • Wall and sprite render cull options for the GL renderer.
  • Added support for up to 4 DirectInput joysticks with 32 button each at the same time for fake splitscreen.
  • Added low detail mode (160x200) to the preset scale modes. UI looks horizontally stretched tough.
  • Implement taking screen shots in menus (m8f). Added support for PrtSc.
  • Use signal handler to invoke call_terms() before exit when possible (Conn O'Griofa)
  • Fixed crash drawing fog boundaries in the software renderer.
  • Fixed another crash in the software renderer now with transparent sprites (Stronghold STR12).
  • Fixed ancient ZDoom savegame slot selection bug.
  • Changed how the old quicksave works. Now you select the slot using quicksave like in original Doom.
  • Models are for now disabled by default for the classic software renderer with the new r_models_carmack CVAR for better performance on some maps and to avoid an issue with dissapearing sprites.
  • Allow disabling mirrors for the GL renderer with gl_mirrors as some maps abuse them and portals are much slower in the old renderer. Also reduce the number of default recursions.
  • Fixed vanilla light mode being available for GL2 when it's not supported without shaders.
  • Block scaling for the classic software renderer (D3D), it didn't work and caused some serious glitches.
  • Fall back to D3D for software on systems without GL2 support.
  • Tweaked the 1K Deaths skill setting for Heretic.
  • Fixed fuzz style fallback not working in GL legacy mode. Changed default since software style was too expensive on old cards.
  • A lot of stuff from GZDoom. Bumped ZScript to 3.9.0.

GZDoom 4.2.3 released

Posted by on at 17:35
(9) Comments
Notice: The survey is currently closed. GZDoom 4.2.3 does not include the survey code that 4.2.0 did.

Download (OpenGL 3.3 and higher)

  • to be compiled

  • 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

GZDoom 4.2.1 released

Posted by on at 01:14
(30) Comments
Notice: The survey is currently closed. GZDoom 4.2.1 does not include the survey code that 4.2.0 did.

Download (OpenGL 3.3 and higher)

  • to be compiled

  • Dutch translation
  • give P_ExplodeMissile a damage type when being called from P_Damage…
  • rename sprite names with '^' in the hires namespace.
  • compatibility option for Daedalus MAP19 which depends onan 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

GZDoom 4.2.0 released.

Posted by on at 11:48
(45) Comments
A new release is available.

Notice:The survey has been re-enabled for this version so that we can get some information about how the state of systems being used for GZDoom has developed over the last year. We would like to ask as many users as possible to participate, so that we can make the right decisions based on the information we obtain. Like previous surveys this does not collect any private information - all it sends is basic info about the operating system, the number of CPU cores, the graphics card and supported OpenGL/Vulkan versions.

Get the downloads over at Github. The linked page will host all binaries that are ready.

  • 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.

  • fix a couple issues with sigil.wad:
  • e5m2: floating skulls disappear on lower skill levels
  • e5m4: the platform with the baron of hell that led to the invulnerability secret had a missing texture
  • fixed the extremely long standing bug that Lost Souls didn't reacquire their target when slamming into something.
  • fixed: The OriginalSmallFont must always be created, even when the actual SmallFont is not the IWAD default.
  • exposed Append() method to ZScript dynamic array
  • fixed: Do not use BasicArmor's save percentage when no armor present.
  • do not blur the background for portrait-less conversations.
  • fixed bad texture canvas checks when in truecolor software rendering.
  • fixed: in order to ensure that all font characters are of texture type FontChar it is necessary to clone the texture instead of changing its use type.
  • fixed: The frozen state was not reset when the global level variable was reset.
  • fixed handling of the "ouch" face.
  • fixed an inconsistency with missiles bouncing off actors.
  • fixed incorrect write barrier in sound sequence code.
  • fixed: Takedown of an expired HUD message did not properly detach it from the list.
  • call vkDeviceWaitIdle before RAII tears down buffers
  • fixed mouse coordinate checks when using the generic VGA font with Strife conversations.
  • Made reverb editor localizable
  • fixed buggy ArmorFactor behavior when set to a value other than 1.0
  • recreate Vulkan swapchain in case of surface lost error
  • added option to print a map author's name on the summary screen
  • added an option to always display the log and the subtitles with the generic font.
  • updated bzip2 to version 1.0.8
  • 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 ability to specify display duration of subtitles
  • fixed: The numcommands value in A_KoraxCommand needs to be decremented by one because the max parameter of the random function is inclusive.
  • Added A_SoundPitch and an optional pitch parameter to A_PlaySound and S_Sound.
  • fixed crash on player unmorph after falling death
  • for the map name on the automap, fall back to the original SmallFont if the actual one cannot print it.
  • use proper interface calls to give the initial BasicArmor to the player.
  • added the two missing subtitle texts for Strife.
  • added PSprite.bMirror flag to ZScript class definition
  • the fallback BigFont now can also be loaded by IWADs which declare themselves as GAME_Heretic or GAME_Hexen.
  • add +ZDOOMTRANS to BFGExtra in order to force classic transparency per user setting.
  • renamed zd_extra.pk3 to game_support.pk3
  • setup Harmony localization.
  • moved iwadinfo.txt to zd_extra.pk3. This removes the stock IWAD definitions for custom games that distribute the engine along with their data, so that it doesn't pick up on Steam and GOG installations and shows an inappropriate IWAD picker.
  • added the missing WISLASH for Hacx.
  • allow setting the font used for the status screen's content text.
  • adjustments for the level summary screen.
  • added Hacx localization support.
  • dynamic light definitions for Hacx.
  • fixed: The countdown for the subtitles display was never counted down so the messages remained forever.
  • Shape2D drawing will gracefully abort the VM on any out of bounds access.
  • added validation for presence of drop item classes
  • do not set crouch player sprites on voodoo dolls
  • fixed crash on starting ACS script without level
  • fixed LevelLocals.isFrozen() return value with JIT disabled
  • fixed missing dive and surface player sounds
  • Added RenderUnderlay.
  • added validation of LevelCompatibility.Apply() signature
  • User definable dynamic lights
  • updated bzip2 to version 1.0.7
  • added detection of macOS Catalina
  • fixed: endgame menu no longer resets player's userinfo
  • fixed incorrect implementation of "episode = clear" in UMAPINFO.
  • fixed incomplete parsing of UMAPINFO when map already exists
  • fixed missing skill menu for episodes defined by UMAPINFO
  • fixed: all UMAPINFO definitions were applied to default map slot
  • give UMAPINFO the ability to disable cluster-based exit texts.
  • restored indication of console scrolling
  • made console cursor fill whole character box
  • switched to unconditional level exit in scriptified actors
  • exported unconditional level exit to ZScript
  • compat_pointonline for doom2 map14
  • Fixed "if (!(lhs ~== rhs))" breaking with vectors.
  • localize custom menu titles in option search results
  • add nullptr checks for double-frame model interpolation
  • fixed: light mode from mapinfo had no effect
  • delay postprocess texture destruction until the end of the frame
  • fix wipe screen when using -loadgame
  • fixed crash on loading map in Hexen format without any nodes
  • added a linear transformation system to Shape2D so that things like rotations and scales can be changed without having to clear and push a large amount of data

LZDoom replacing QZDoom on the download page

Posted by on at 06:11
(7) Comments
Since there are no planned future "official" releases for QZDoom and it pretty much just serves as a beta test bench now, the decision was made to replace it on the download page with LZDoom.

LZDoom is a port created by drfrag in the community, and should serve as a more maintained code base than the Vintage version did. While it aims to keep feature parity with GZDoom with regards to modding features, it does lag behind quite a lot in renderer code. (So much so, in fact, that it can be used to run on older systems that GZDoom has long since deprecated).

Please keep in mind that LZDoom is independently supported, and the GZDoom team can only offer limited support. Its development is not directly supervised by the GZDoom team, so this should be seen as more of a simple alternative to GZDoom than a real "vintage build" for it. As always, if you need help getting things working, you can post in the tech forum and see if someone can help you!

Here is a quote from drfrag's post for LZDoom v3.82 that by itself will complete this post:
drfrag wrote:Fixes/features since 3.61b4
  • Fake splitscreen support: you need to enable the 'vid_activeinbackground', 'i_soundinbackground' and the new 'joy_background' cvars.
    Start two copies of LZDoom from different folders (e.g. with ZDL), one with -host 2 and another one with '-join'. You need a dual core CPU, you'll probably get the best results using software D3D and setting 'r_multithreaded' to 0. Set player two to use the gamepad (left stick to move, right one to look around) and give the focus to player one, works for DInput and SDL.
  • Gives a warning instead of error out on unsupported ZScript version (3.8.3), hacked to run most mods with the original fonts.
  • Support for SIGIL and NERVE as iwads.
  • More DOOM2 compatibility fixes.
  • Auto level compatibility is now optional by Enjay's request: 'sv_njnoautolevelcompat' cvar. Gives a warning on level load.
  • Fixed crash with Eviternity on level end.
  • Huge update with tons of stuff from GZDoom such as the JIT compiler for 64 bit.
  • Reminder: savegames in LZDoom are sorted by filename (slot), to restore the old order use the 'oldsaveorder' cvar.


Enjoy LZDoom!

GZDoom 3.8.2 Vintage Released

Posted by on at 05:25
(32) Comments
Notice: This might be the last vintage version.

Please note that the survey is currently closed. GZDoom 3.8.2 does not include the survey code that 3.5.0 did.

Download (Vintage, OpenGL 2.0)

  • bug fixes
  • fixed broken multiplayer
  • add dithering support to emulate higher BPC displays than your real one (from 3.5.1, requires GL 3.3)
  • improvements to Doom64 colouring (from 3.7.0, requires GL 3.3)
  • added RenderUnderlay

GZDoom 3.8.1 Vintage Released

Posted by on at 14:59
(4) Comments
This release contains a fix to an exploit - please update as soon as you can!

Notice: This might be the last vintage version.

Please note that the survey is currently closed. GZDoom 3.8.1 does not include the survey code that 3.5.0 did.

Download (Vintage, OpenGL 2.0)

  • bug fixes
  • added native double round(double) 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
  • fixed Strife dialogues

GZDoom 4.1.3 Released

Posted by on at 12:07
(13) Comments
This release contains a fix to an exploit - please update as soon as you can!

Notice: There is currently no Vintage version planned for this release.

Please note that the survey is currently closed. GZDoom 4.1.3 does not include the survey code that 3.5.0 did.

Download (Modern, OpenGL 3.3 and higher)

  • bug fixes for both zscript and vulkan (the vulkan renderer is pretty much complete at this point)
  • added native double round(double) 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

  • cleaned up SDL mouse event handling
    • Right/middle clicking no longer cancels out the mouse motion events
    • The events for the side mouse buttons (EV_GUI_BackButtonDown/Up, EV_GUI_FwdButtonDown/Up) were never fired
    • The EV_GUI_WheelRight/Left events were never fired
    • The key bindings for mouse buttons above 3 (from 4-8) were broken - pressing MOUSE4 would bind to MOUSE6, for example
  • fixed access to wrong event data in SDL backend - Wrong button state event data were read on mouse motion
  • report implicitly initialized variable in code generator once
  • added implicit initialization of reused register variables in ZScript
  • added null check for self pointer before calling a native function
  • removed erroneous assignment of dialog reply
  • language update
  • check for presence of fonts in message box menu
  • fix loadgame crash
  • fixed hires texture lookup in Doomsday style .pk3
  • fixed the write barriers for the HUD message linked list. To ensure that no broken relations occur, any change in the list must be handled by a write barrier, not just the single message that gets added.
  • FXAA_DISCARD should never be enabled. It only works when the output framebuffer is the same as the original.
  • fixed PlaySpawnSound call in A_ThrowGrenade
  • Really fixed arrays of dynarrays this time.
  • Cephes code is released under BSD license
  • implemented GPU vendor string assingment in Vulkan backend
  • added a third state for cl_blockcheats. ==2 now blocks them silently.
  • added native double round(double) function
  • reset internal console state on clear CCMD 'last line needs update' flag cannot be set when console is empty as there are no lines at all in this case
  • Fixed uninitialized variable in case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS does not exist. Old graphics (Intel Sandybridge Mobile, GL 3.0 Mesa) do not support this, therefore most of the time RFL_SHADER_STORAGE_BUFFER wasn't unset (I found no consequence of this on my machine, but better safe than sorry). Found out by Valgrind.
  • Fixed a buffer overflow with Timidity++ when playing Sigil e5m5 music.
  • Fix OBJ face normal direction
  • Inclusion of check symbol cmake's module.
  • Check for execinfo.h and add libexecinfo if needed Some systems (e.g. musl) do not have execinfo.h header. Check if libexecinfo (library that provides execinfo.h header and its functions) is installed in the system, and add its linker flag if needed.
  • Add support for musl-fts library
  • fixed fillSimplePoly for indexed data. On OpenGL this merely caused some visual glitches on the cheat automap - but the bad data in the buffer can make Vulkan abort entirely.
  • fixed crash when loading a saved game with unknown class During serialization, when map shutdown because of unknown class stored inside saved game may occur, level member is not assigned yet to already spawned thinkers
  • adjusted condition for ZScript global variable deprecation warning The message is always printed for any use of deprecated global variable If such variable is accessed inside a deprecated function from a core script lump, the message is printed only when verbosity level is set to highest
  • fixed missing deprecation warnings for ZScript global variables
  • fixed: version wasn't set for ZScript global variables
  • fixed code generation for ternary operator with vector result types
  • fixed crash on message output during decorate parsing Script position is now initialized at the very beginning of decorate parsing process Script position no longer contains uninitialized file name
  • Improved SMALLFONT letter Ч for Doom In its past appearance, the letter was based on the number 4, which looks inconsistent among all letters. This new one is a modified Y.
  • fixed conversation links with pages referenced by name
  • fixed 'Pause by <playername>' message in multiplayer
  • fixed wrong native call for Actor.Vec2Offset()
  • fixed character position assignment for multi-lump fonts
  • Fixing crash when loaded module, using proper function liberate them.
  • fixed loading of 32-bit TGA textures with alpha channel
  • removed array length() function from shadowmap shader
  • create a new error class for vulkan errors as they are only recoverable during initialization (unlike CRecoverableError which is recoverable during normal processing)
  • improve vulkan errors by including the status code returned by vulkan if they fail
  • add some debugging information for GZSDF pagenames feature
  • do not pass TObjPtr<> instances as ScriptUtil::Exec() arguments There was no read barrier inserted for AActor object while it's a subject of garbage collection Pointer stored in TObjPtr<> was reinterpreted as void* because of vararg function
  • fixed bad statnum in Light_Stop.
  • fixed text color setup for added console message.
  • allow certain replacements to be valid for CanPrint The Romanian letters with comma below, the second Greek Sigma variant and a few special Cyrillic letters have replacements that should not result in rejection.
  • don't run the custom shaders twice on screenshots
  • apply present shader on screenshots
  • made the colorset names and the texts in the color picker localizable.
  • fixed erroneous texture mipmapping in Vulkan render
  • implemented subtitle display for Blackbird's voiceover messages.
  • implemented subtitles for intermission slideshows.
  • changed menu scaling so that on 1366x768 a factor of 2 gets used.
  • renamed misplaced characters.
  • added European Portuguese to the menu. This is sufficiently complete with only some intermission texts and the Strife dialogues falling back to the Brazilian version.
  • Raven smallfont fixes
  • Force STATIC for internal GZDoom libraries
  • improved control over MoltenVK logging capabilities
  • added missing Latin characters to the Raven small font.
  • made "netevent cannot be used outside of a map" message a warning
  • added a crosshair on/off toggle
  • use one render pass for the entire scene or until postprocess or command buffer flushing forces it to end
  • avoid creating a new render pass if a pipeline bind will suffice
  • centralize how image transitions are done in the vulkan backend
  • transition scene images used for the screenshot to color attachment optimal before rendering to them

Downtime 2019/Jun/04

Posted by on at 02:02
(6) Comments
So, you know how when you live in an apartment, you can have nasty neighbors? The ones that keep you up at night and blast their stereo whenever you're sleeping or studying?

That's what had. We had a nasty neighbor move in. It's been moved to another host now, in the same datacenter, and hopefully we'll have nice neighbors.

I know the site was a little touch and go yesterday. Things have seemed to improve quite a lot after the migration. We were on a blade that had a neighbor who was overusing their resources and it caused us some major hassles. And me a lot of headaches. Hopefully this doesn't happen again. :)