News

Site Downtime - 2025/12/01

Posted by on at 17:12
0 Comments
The site will be having some intermittent downtime later today in order to deploy a new configuration.



ETA to completion is not available right now, it depends on how much trouble it is to migrate all the relevant configuration to the new system being deployed.



More details will be given after the reconfiguration is complete.
Comments

UZDoom 4.14.3

Posted by on at 17:07
7 Comments
Please do not report bugs in this thread! All bugs should be submitted here.

Downloads

Release



UZDoom’s First Release!

Hello all, and welcome to UZDoom! You've no doubt seen our new look courtesy of Cardboard Marty. With 4.14.3 marks the first official release of the port, a smaller update designed to hold the masses over until 5.0. While we wish we could include a bunch of goodies with it, those will still need some time to bake in the oven. Rest assured, 5.0 development is still moving along smoothly and we’re now in “fix things” mode. For now, 4.14.3 will contain a bunch of bug fixes and security updates since we’re intentionally keeping it smaller in scope.



Why 4.14.3? Mainly because it makes things a lot easier to transition over since more stuff than you’d think relies on that version number. Speaking of, if you’re coming over from GZDoom, we’ve got some instructions to let you transfer over your saves and configuration files as smoothly as possible.



Transferring From GZDoom

For configuration files, locate the folder containing it and rename both the folder and configuration file from gzdoom to uzdoom. If you’re using a portable configuration file, rename it from gzdoom_portable.ini to uzdoom_portable.ini and place it in your UZDoom folder. If you were using a custom configuration file, UZDoom will load it as-is.
  • On Windows, this will be located in your Documents directory under My Games.

  • On Linux, this will be located in ~/.config

  • On Mac, this will be located in your Application Support directory.


For saves, locate the folder containing them and rename it from gzdoom to uzdoom. If you were already using a custom save location, transferring your configuration file will automatically handle this. Note: Only saves from GZDoom 4.0.0 and greater can be transferred.
  • On Windows, this will be located in your Saved Games directory.

  • On Linux, see Linux Path Changes

  • On Mac, this will be located in your Documents directory.


Linux Path Changes

The location UZDoom searches for files has changed to more closely match the freedesktop specification.


  • Text configs have been moved to $XDG_CONFIG_HOME/uzdoom (~/.config/uzdoom by default).
    • ~/.config/gzdoom/gzdoom.ini ~/.config/uzdoom/uzdoom.ini

    • ~/.config/gzdoom/autoexec.cfg~/.config/uzdoom/autoexec.cfg

  • Game cache has been moved to $XDG_CACHE_HOME/uzdoom (~/.cache/uzdoom by default).
    • ~/.config/zdoom/cache~/.cache/uzdoom

  • All other game data (eg wads, skins, saves) has been moved to $XDG_DATA_HOME/games/uzdoom (~/.local/share/games/uzdoom by default).
    • ~/.config/gzdoom/DOOM.WAD~/.local/share/games/uzdoom/DOOM.WAD

    • ~/.config/gzdoom/savegames~/.local/share/games/uzdoom/savegames

    • ~/.config/gzdoom/skins~/.local/share/games/uzdoom/skins

In practice, you want to:
  1. Create folder ~/.local/share/games/uzdoom, and move everything from ~/.config/gzdoom except gzdoom.ini and autoexec.cfg into it.

  2. Rename gzdoom.ini to uzdoom.ini.

  3. Rename ~/.config/gzdoom to ~/.config/uzdoom.


Defaults

Defaults have long been a contentious issue in the ZDoom community, with some feeling it strays too far from what makes vanilla shine while others enjoy the visual flare compared to classical ports. We can understand both sides of this, and while we want to balance it as best we can, we ultimately felt that having so many extra graphical options on by default was too much. As such, we won’t be removing any of these features but instead will be going for an opt-in approach to make it easier to manage for first-time users. We feel these changes can help give better visual cohesion with content designed for vanilla while also balancing the legacy of maps and mods that relied on them. One of UZDoom’s biggest strengths, after all, is its ability to play almost anything thrown at it.



To go deeper into the why, we’d like to give some core philosophies around our decisions for how we chose defaults:
  • Out of the box, Doom should reasonably resemble how it originally looked. There are a large number of reasons someone would want to use UZDoom including its powerful scripting capabilities, its accessibility options, and the fact it can play just about darn near anything without hassle. Forcing users into the menu to achieve this is not the correct way to go about it, so only select effects will be enabled that we feel don’t distract heavily from its original vision. For the fancier effects, we’ve tried our best to make them more consistent with Doom’s overall aesthetic so that even when used, they don’t appear to clash.

  • Modernization should also be done where reasonable. The reality is that we aren’t playing Doom in software on CRTs anymore but with 3D acceleration and modern monitors. This introduces some stark differences, so those should be accounted for as best as possible. For this reason, enhancements that don’t take away from the aesthetic like anisotropic filtering and distance-based filtering have been left on to help clean up the image. We also understand we have a legacy of maps designed for GZDoom to account for, and not all user options are controllable by mappers, so certain things like the software light banding have been left off to prevent breaking visual cohesion with these.

  • Getting a more vanilla experience should be made easier. Having to constantly go into the menu or mess with console variables isn’t fun, and things should be made more streamlined. For this reason we’re starting with a new tweak: the automap now has a Default color mode to automatically match the current game’s art style. In the future the Auto modes for ZDoom’s translucency will also be enhanced to allow better fine tuning for balancing vanilla visuals with mods expecting transparency. We’ll be looking into ways to improve this on the gameplay front as well since ZDoom introduced some differences that we know can break things like combat encounters in unexpected ways. While we have plans to fix up the menu, the best solution is for users to not feel like they need to constantly fall back on it at all.


Changes From GZDoom 4.14.2
  • Multiple security fixes. This update is being deemed as critical. It’s highly recommended to upgrade to it.

  • Anisotropic filtering is now disabled on Intel GPU devices if the texture filtering mode is set to any of the None options. This is to prevent texture filtering from being forced on when anisotropic filtering is enabled.

  • Added new game-based cursors (courtesy of Nash Muhandes and Xaser). These are much more cursor-y, and very good at pointing and clicking on things.

  • Changed defaults to be more balanced between vanilla and modern.

  • Lowered the master volume so it's less likely to blow out the system audio and become muffled (especially with things like the Plasma Rifle firing sound).

  • Added the Default option for automap colors, allowing the automap to choose based on which game is being played.

  • Added a Display option to control the render style of rocket explosions (these now default to additive instead of translucent since we felt it visually fit the other projectiles better).

  • Made the mouse less sensitive in menus when it’s been dormant for a short period. This should help reduce it accidentally shifting the selected option randomly while idle.

  • Added the powerup_fade_scalar cvar for controlling the strength of the fade on power ups (e.g. the Radiation Suit’s green tint).

  • Added support for the BUSY script flag for ACS.

  • Fixed audio not muting properly when the game is unfocused, causing it to build up and play back explosively in certain cases (especially for multiplayer games).

  • Fixed the master volume not properly applying to music when the game starts up.

  • Fixed weapon bobbing not disabling correctly when manually set to 0 via cvar.

  • Fixed the wrong music being played during Strife’s bad endings.

  • Fixed the opening subtitle for Strife not displaying.

  • Fixed the Iron Lich’s whirlwind blaming the wrong target for its damage dealt.

  • Fixed the textured automap being broken.

  • Fixed mid textures clipping incorrectly when skewed.

  • Fixed a crash with VisualThinkers when loading from a save.

  • Fixed IQM models with decoupled animations not displaying correctly if spawned without an animation.

  • Fixed gun flashes from MBF21 weapons not displaying correctly.

  • Fixed a bug with CreateTossable where items wouldn’t be removed if their amount was 0.

  • Fixed Quat’s Conjugate and Inverse functions throwing a JIT error.

  • Fixed the BrokenLines class being unserializable.

  • Fixed level data fields e.g. Sector not being cleared properly when transitioning between levels.
Comments

UZDoom 4.14.3 Pre-release

Posted by on at 02:29
47 Comments
This is a pre-release thread for 4.14.3. If you wish to test the upcoming 4.14.3 build and give feedback, this can be done here.

This thread will contain all pre-release builds for 4.14.3 and will be updated when new ones are available.

Current Version: Release Candidate 2



Spoiler: Changes from RC1


Downloads

macOS (ARM) builds are currently being investigated for future releases.

Release

Pre-release Changelog
Comments

A Notice About 3rd Party Websites

Posted by on at 23:08
5 Comments
Recently it has come to our attention that, amidst what's happening right now, some people are creating websites claiming to be for Ultimate ZDoom. These are not official websites for UZDoom as UZDoom will be hosted here at zdoom.org with the GitHub repo (alternative link) being the only official place to get access at the moment. Do not trust these websites, all information regarding UZDoom's status will be here.



We're still working away at getting 4.14.3 out and plan to have a release candidate next week with a full release following shortly after. Alongside the release we'll be including instructions for transferring saves and configuration files from GZDoom for those who wish to do so. We thank everyone for their patience and are excited for its first release!
Comments

What’s Happening With UZDoom?

Posted by on at 08:08
88 Comments
So, you’ve no doubt picked up on a lot of the buzz that swept the internet for the past week. In case you haven’t, after a scuffle between Graf Zahl, the project lead of GZDoom, and its maintainers, the ZDoom organization has decided to step away from him spearheading its leading port. While there are many reports on the nature of what caused it, we’d like to outline the issues that led to this decision to clear the air of any speculation.



Graf has been an incredibly consistent developer, and has helped craft some of ZDoom’s most defining features including the OpenGL renderer, DECORATE, and ZScript. His contributions cannot be overstated and his work is a core part of ZDoom’s modern appeal. The extensions he helped add to the engine have evolved and helped shape an entire new world of content, from incredibly impressive mods to even full-blown games. Genuinely, we could not be where we are without his passion for this project.



But Graf has also not been a stranger to getting into conflicts with the community and other developers. He has often acted antagonistically towards those wishing to be involved and has said some reprehensible things of the works of others, even going as far as to call for outright harassment. His leadership has pushed many prospective coders away as he often shuts down discussions, refuses to cooperate with his peers, and has generally created an unproductive work environment. This has always been unacceptable, but it is even less so as ZDoom’s leading port creator. ZDoom is built around its community and those wanting to create for it, so the lead of its direction cannot be someone so hostile towards them.



The latest incident was not just caused by Graf pushing code to GZDoom generated by an LLM (Large Language Model), but also highlighted his treatment of others. While ZDoom takes a strong stance against LLM code for multiple reasons (ethical and legal alike), the attitude he showed towards our newest maintainer was completely out of line, especially after all he asked was for Graf to respect his peers more. In response, we were informed that we should create our own port if we do not like this treatment, so we will be doing so.



Going forward, Graf will no longer be leading ZDoom’s main port, with a new team of maintainers taking over this role. This port will be UZDoom (Ultimate ZDoom), a continuation of GZDoom as it is at the time of posting this. Unlike before, UZDoom will not have a singular person as its project lead but instead the organization itself will determine its direction, with a new collaborative approach that seeks to level the playing field among all maintainers and give everyone a chance to speak, the community included. Graf will continue to run GZDoom and is still free to contribute directly and collaborate with ZDoom, but his port will no longer be considered our main one.



UZDoom’s versioning will pick up where GZDoom left off in order to make transitioning as smooth as possible. Currently a release version, 4.14.3, is being worked on so it can be made available for download in the coming weeks. This version will contain some security fixes, so it’s highly recommended to upgrade to it. Plans for UZDoom 5.0 are unchanged and it will still have the reworked launcher, networking, bone manipulations, etc. For those worried, we will not be removing any major features and all current GZDoom projects should work the same, with configuration and save files being transferable. Our vision of maintaining backwards compatibility will still be upheld into the foreseeable future. And yes, texture filtering is now off by default.



Alongside this restructuring, we’ve decided to clean up the forum and download page for ease of use. Projects and modding help will now be at the top of the ZDoom forums as we feel this is what most users are likely in search of, with the technical help being moved down as this is often more niche. Those who wish to report issues and submit feature requests to UZDoom should do so on the GitHub repo as this is where most activity will be occurring, but proper forums for it may be added if there’s enough demand. For the download page, with now four ports to display (UZDoom, LZDoom, GZDoom, and ZDoom), we’ve decided to create two sections to help lessen confusion: Current and Historical. Current ports are ports that are considered actively sponsored by ZDoom and will be at the top for better readability. Historical ports are ports that are significant to ZDoom’s history but are either retired or are superseded.



We find it regretful that this parting went down the way it did, but we felt we had no other choice. We wish Graf the best on wherever he decides to take GZDoom, and we look forward to starting this new chapter in ZDoom’s history.



-Boondorl, Nash, Marcus, Jay, Gutawer (UZDoom Maintainers), Rachael (Webmaster), Barry (Forum Administrator), Agent_Ash (Discord Administrator)
Comments

GZDoom 4.14.2 Released

Posted by on at 09:55
9 Comments
Notice: The survey is currently CLOSED. GZDoom 4.14.2 contains no survey code. This version will not prompt you to submit your hardware info.



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

Download (OpenGLES 2.0 and higher)


(note: Linux AppImage is not being published, for now, due to issues, same with Linux Portable)



Highlights:

  • Ortho + OOB fixes and improvements

  • Revert clipper to older code path when not in Ortho/OOB (speed improvement)

  • Fix to some crashes and memory leaks

  • Exposed DDoor to ZScript, Exposed DPlat to ZScript, Exposed more of the Ceiling thinker, Exposed more of the Floor thinker, Exposed DElevator to ZScript.

  • Exported: • GetLumpContainer • GetContainerName • GetLumpFullPath for WADS struct, useful for debugging custom-made parsers and identifying where problems may arise.

  • Added autoSwitch parameter to A_ReFire

  • add a few commonly-used gzdoom-specific properties to the dehacked parser

  • many more fixes and improvements



Details
Spoiler: This is long
Comments

GZDoom 4.14.1 Released

Posted by on at 22:49
1 Comment
Notice: The survey is currently CLOSED. GZDoom 4.14.1 contains no survey code. This version will not prompt you to submit your hardware info.



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

Download (OpenGLES 2.0 and higher)


(note: Linux AppImage is not being published, for now, due to issues, same with Linux Portable)



Highlights:

  • "vid_dontdowait" disables the 35 fps throttling in the menu

  • gzdoom process no longer changes its priority in windows. Instead it will default to disabling interpolation when it is not the active window. This can be changed with the "vid_lowerinbackground" cvar.

  • add a 1:1.2 ratio min-scale mode

  • allow summon to work with visual thinkers

  • add snd_footstepvolume to sound options menu

  • implement new cvar save_sort_order - for now options are only 0 or 1 - 0 is alphabetical, 1 is descending by time (most recent first)

  • add default values, vec4 uniforms, and cvar uniforms to post-process uniforms

  • Fixed the registered or shareware versions of Doom not using the correct chat sound.

  • Added S_StartSoundAt

  • improvements and fixes to id24 support

  • some mapping changes conformant to vkdoom



Details
Spoiler: this is long
Comments

Raze 1.11.0 Released

Posted by on at 18:09
5 Comments
Download (OpenGL 3.3/OpenGL ES 2.0 and higher required)


fixes:

  • copy vid_dontdowait from GZDoom

  • backend update from GZDoom.

  • fixed use of wrong file lookup function in map patching code.

  • Blood: fix placement of powerup counters on alt HUD

  • SW: fix shadow size math.

  • sw: widescreen menu background

  • SW: fix sector object setup.

  • don't spam the console log if there's math errors - mostly affects Linux/MacOS because there is no distinction from console apps or GUI apps so they put all the data in the console which can cause lag

  • SW: removed several unused sound functions.

  • Validate the file reader in DoOpenResourceFile.

  • avoid floats in integer math.

  • Duke: add range checks for accessing the moves array

  • account for 'amess96.voc' being renamed in the World Tour re-recordings.

  • SW: fixed use of sound attribute array.

  • Blood: fixed messed up math in podAttack.

  • Duke: fixed animated static monitors.

  • Duke: lower the coordinate precision for calculating the sector's center for ST09 to original Build.

  • toolchain support: make gcc14 happy

Comments

GZDoom 4.14.0 Released

Posted by on at 19:50
13 Comments
Notice: The survey is currently CLOSED. GZDoom 4.14.0 contains no survey code. This version will not prompt you to submit your hardware info.



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

Download (OpenGLES 2.0 and higher)


(note: Linux AppImage is not being published, for now, due to issues, same with Linux Portable)



Highlights:

  • sector damage for non players re-enabled

  • netcode fixes

  • +STRETCHPIXELS flag for rollsprites and particles to re-enable pixel stretch based on level aspect ratio

  • ortho fixes

  • many zscript fixes and additions

  • fixed UMAPINFO's label field to allow 'clear' as argument.

  • standardized footsteps

  • add set/get plane reflectivity

  • allow using `self` as the class name in the Default {} block to refer to current class

  • fixed particle replacement code

  • serialization fixes

  • add automap default markers for all games (can be overridden with mods or iwads, previously were missing for hexen/heretic/etc)

  • Discs no longer blast players with collision disabled

  • Allow easier piece weapon replacing

  • Fixed view for frozen players

  • Added WorldHitscanFired and WorldHitscanPreFired

  • Improved "respawn where died" functionality

  • Add new SBARINFO top level "AppendStatusBar", allowing for extra SBARINFO code to be added to custom SBARINFO definitions.

  • Add WorldRailgunPreFired for railgun attacks and Add WorldRailgunFired

  • Fixed A_SprayDecal not working on 3D floors

  • Various bouncing fixes

  • remove "DECORATE" from error string

  • added config file saving from zscript



Details

Full Changelog: https://github.com/ZDoom/gzdoom/compare ... ...g4.14.0
Spoiler: this is long
Comments

GZDoom 4.13.2 Released

Posted by on at 13:00
4 Comments
Notice: The survey is currently CLOSED. GZDoom 4.13.2 contains no survey code. This version will not prompt you to submit your hardware info.



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

Download (OpenGLES 2.0 and higher)


(note: Linux AppImage is not being published, for now, due to issues, same with Linux Portable)



Highlights:

  • fixes a couple critical bugs with the ZScript engine

  • minor step improvements



Details

Full Changelog: https://github.com/ZDoom/gzdoom/compare ... ...g4.13.2

  • Do a check if a local variable exceeds the available stack space.

  • Check array size for overflow.

  • cap the size of the string copy calls in LevelStatEntry()

  • Reduce number of multiply ops per frame and increase x-axis clipper range for orthographic projection.

  • Allow using Self as the class name in the default block to refer to the current class

  • Fixed STRETCHPIXELS flag not being exposed.

Comments