News

GZDoom 4.0.0 Released

Posted by on at 02:47
(116) Comments
Notice: There is currently no Vintage version planned for this release.

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


Download (Modern, OpenGL 3.3 and higher)

Highlights
  • Vulkan released in its alpha stages. Use "+vid_backend 0" on the command line to activate it. VERY IMPORTANT! Vulkan is unfinished and has several issues. You will likely crash. It works well in vanilla Doom without any mods, and will work with mods that don't use models or shaders - but any mods that have these things will likely cause GZDoom to crash. You will have to switch back to OpenGL to play these mods. ("+vid_backend 1")
  • Localization: GZDoom has been translated to several languages, with more to come soon. Please see the following two threads if you wish to help: [1] [2]
  • Scaling has been changed. GZDoom now runs at a minimum of 640x400. An extra mode - 960x600 - has been added to replace the lost 320x200 one.
  • Internal code restructuring to agnostisize level structures.
  • add 'cl_blockcheats' - useful for people who use debugging keys, allows a user to consciously turn off cheats without affecting the server
  • Punctuated the input strings in UpperCamelCase format, improving its appearance in the menu for upper/lowercase capable fonts
  • 'wait' console commands no longer execute inside the level, and can run during intermissions and outside the game
  • moved controls to submenus in "Customize Controls" menu
  • Implement page string names for dialog lumps
  • did a bit of cleanup on the option menus by regrouping some settings, especially splitting out of the Hardware Rendering Options menu into submenus.


ZScript
  • scriptified P_CalcHeight. This was the only code using the ViewBob member variable. This also moves the range check for this variable to its application, because a badly behaved mod can just as easily change it at run time instead of just setting an absurdly large value in the class definition.
  • scriptified APlayerPawn's DamageFade handling.
  • scriptified A_SkullPop and ObtainInventory. These were the last relevant items to access PlayerPawn.InvFirst.
  • scriptified useflechette CCMD's item finding code.
  • scriptified the remaining PlayerPawn methods.
  • exported all native components of APlayerPawn.
  • Added Z + camera roll relativity for A_QuakeEx's QF_RELATIVE flag.
  • Added inflictor, source and flag parameters to GetModifiedDamage on actors and ModifyDamage on inventory. The flags are used by DamageMobj so modders can determine radius damage, for example, by checking for DMG_EXPLOSION.
  • removed extraneous parameter in SpawnPlayerMissile call in A_FireProjectile. The native variant has a MissileActor out parameter in this place, but in ZScript that's a secondary return value.
  • Add LookScale variable on weapon This variable allows a weapon to set a custom look sensitivity multiplier without fiddling with FOVScale / DesiredFOV hacks.

Details
Spoiler: This is long
Comments

Introducing The Spotlight

Posted by on at 15:10
(5) Comments
As you may have noticed, certain people on the forum have a different color in their name, and suddenly a new subforum has appeared. Additionally, a new section has appeared on the ZDoom main page.

Well - leodoom85 and m8f now lead a new team called The Spotlight! This team is meant to showcase mods created by the community and give reviews of them. Anyone can be a part of the team, but the leadership selected for the team was purposely non-staff members (thereby to reduce bias).

Any mod can appear in the spotlight - good or bad - and writers will give an honest review (and a critique) about the things they think could use improvement.

If you're looking for new mods to play, check this out every once in a while!
Comments

John Romero - Honoring the Awesome Man He Is

Posted by on at 17:46
(5) Comments
If you've had your ear to the ground lately, then you know that John Romero has come under fire lately for joining a charity stream by HBomberGuy to raise money for a youth trans charity. The attacks have been vicious, unfair, childish and hateful.

So to try and counter that, and to show John Romero support, not only for what he has given us over the years, but for standing up for principle and being strong, and to show that he is not alone in this, many of us staff from both here and the r/Doom subreddit have come together and decided to create a project to show our appreciation for him.

Kevansevans, a r/DOOM subreddit moderator, has taken up the mantle for leading this project.

And John - if you ever read this - you did the right thing. The staff in both of our communities stand behind you, along with many of our members. We owe you a great deal for the fun you have given us over the past quarter of a century. What happened to you was wrong - and we're here to stand strong and tell you in one clear voice - we have your back - and we want to give you something back.

To anyone else interested in contributing to this project, you can join in on this project here!
Comments

GZDoom 3.7.2 Released

Posted by on at 13:31
(7) Comments
Notice: This release has been split into two. There is now a "modern" version and a "vintage" version, for older hardware. More info can be found here.

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


Download (Modern, OpenGL 3.3 and higher)

Download (Vintage, OpenGL 2.x)

Highlights
  • resolution selector now sets to auto detected resolution at startup, no longer uses entries from the config file
  • committing a scaling change for fullscreen sets scaling to 1.0 to guarantee the selected number of pixels are actually used
  • add 4k UHD resolution to presets
  • More Bug Fixes


Details
  • fixed: ScriptUtil.PlayerAmmo must be declared static.
  • modify the wording in the preset scaling menu to imply that all it does is pixel scaling, not change the actual screen resolution
  • resolution selector now sets to auto detected resolution at startup, no longer uses entries from the config file
  • committing a scaling change for fullscreen sets scaling to 1.0 to guarantee the selected number of pixels are actually used
  • add 4k UHD resolution to presets
  • fix spacing on one of the resolution preset entries
  • fixed: The rail attack only considered the puff's decal if it had ALWAYSPUFF set.
  • reverted GME Kss_Cpu.cpp to previous version (Update to GME 0.6.2 broke playback of MSX .kss files)
  • applied proper scaling type to font textures
  • fixed: application of fake contrast should never result in a light level of 0 unless the sector's own light level is 0.
  • normalize the pitch in ACS's SetActorPitch.
  • fixed: TVector3::Pitch() got the sign inverted.
  • workaround MSVC 2015 code generation issue, x64 only (With optimization turned on illegal instructions were generated for turbo CVAR handler function)
  • workaround code generation issue in PlayerPawn.FindMostRecentWeapon()
  • fixed default alpha for sector colors
  • fixed disappearing inventory after morphing pickup
  • fixed potentially missing event handlers
  • fixed wrong self type in Array.Resize()
  • unary minus operator propagates boolean operand to integer
  • fixed script line numbers after multi-line raw string literal
  • fixed incompatible commit.
  • fixed condition to produce blood splatter during line attack
  • relaxed caller type check for states modified by Dehacked
  • fix black cam texture on HUD
  • fix null pointer crash
  • Make LevelLocals::ExecuteSpecial return int
  • Fix return value of native BuiltinCallLineSpecial
  • Fixed multidimensional array definitions.
  • increased range of valid sound positions and velocities
  • Move receiver NULL check above the orresult check (#695) - This is to prevent a VM abort from happening here if orresult is false.
  • Fixed Thing_ProjectileAimed being broken.
    • It was calling the fallback aiming in the wrong place when it should have been outside the speed check.
    • Credit to _mental_ for the base code, but no gotos involved.
  • fixed the direct native variant of DynamicLight.SetOffset.
  • fixed: The player sound lookup would fail if a sound was only available for the last gender in the list. (This is an ancient bug, but it never registered before - only after making 'other' the default gender for nonsense input it became apparent.)
  • Default gender for sound classes should be male and not other since it could be undefined in SNDINFO.
  • fixed A_Chase default detection.
  • Add missing screenshot sRGB gamma when vid_hdr is active
  • Fixed: NODAMAGE was not accounted for with pain.
  • added missing range checks to level compatibility handler
  • force CMake to use internal asmjit. I left it in a state so that it can easily be changed back in the future.
  • fix Unix builds without backtrace functions in their libc
    • backtrace functions are not present in all libc implementations. Cmake has
      module to add external libraries into build if needed so use it to fix build on
      Unix systems without backtrace in libc.
  • Fix A_CustomBulletAttack's spawnofs_xy parameter
  • Since GetParentAmmo is now virtual, BackpackItem and the "give ammo" cheat should call GetParentAmmo to determine base ammo classes.
  • fixed memory leaks in network code.
Comments

GZDoom 3.7.1 Released

Posted by on at 09:13
(15) Comments
Notice: This release has been split into two. There is now a "modern" version and a "vintage" version, for older hardware. More info can be found here.

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


Download (Modern, OpenGL 3.3 and higher)

Download (Vintage, OpenGL 2.x)

Highlights
  • Just bug fixes


Details
  • fixed everlasting fast projectile after hitting ceiling - Without the test for ceiling hit fast projectile could enter its Death state every tick infinitely
  • fixed crash in AutoUseStrifeHealth - The loop never checked if the item was still valid and would continue to try to use it, even after it was removed from the inventory and destroyed. As native code this just failed silently, but with the VM it needs to be explicitly checked.
  • fixed typo in sky preparation.
  • Fixed: SXF_CLEARCALLERSPECIAL cleared the spawned actor's special instead of the caller.
  • Fixed settings_controller not updating properly when a player becomes the new arbitrator in a netgame.
  • added missing return in P_RemoveThing.
  • added missing null pointer check to SBarInfo's inventory bar drawer.
  • fixed ammo check for weapon with 'uses both' flags
  • fixed SPC music loops
  • fixed precaching of switches. The backwards animation accessed the wrong array which in case of sequences with different length could crash
  • fixed missing attack sound in A_CustomPunch
  • Fixed: IsFakePain received the modified damage instead of the raw, preventing ALLOWPAIN from working as intended.
  • TNT.WAD fixes
  • Have Plutonia MAP16 pit kill player
Comments

ACC 1.57 released

Posted by on at 18:40
(3) Comments
This brings it in line with newer features from both Eternity and GZDoom.

Download

changelog
  • Added SECPART_3D definition
  • Updated specials and definitions for destructiblegeometry branch
  • Adding the new automap specials

    • 281:Line_SetAutomapFlags(lid, setflags, clearflags),
    • 282:Line_SetAutomapStyle(lid, style),
  • Added SetAirFriction for Eternity.
Comments

GZDoom 3.7.0 Released

Posted by on at 08:01
(68) Comments
Notice: This release has been split into two. There is now a "modern" version and a "vintage" version, for older hardware. More info can be found here.

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


Download (Modern, OpenGL 3.3 and higher)

Download (Vintage, OpenGL 2.x)

UDMF changes - important for editor authors!
  • Expand UDMF and ZScript API for side's own additive colors
  • Add 'useowncoloradd_{top,mid,bottom}' sidedef properties to the UDMF spec
  • Please be aware there are also now UDMF fields for destructible geometry. (implementation details here)


Highlights
  • Completely revamped textures system, allowing for more future extensibility and rework, also fixes a few issues
  • add support for scaled textures in the software renderer
  • Untranslated fonts now appear as truecolor
  • Improvements to Doom64 colouring
  • Add NOFRICTION and NOFRICTIONBOUNCE flags
  • declared Actor's Morph() and UnMorph() functions virtual
  • scale factor is now applied to all scaling modes
  • add vanilla lightmode that behaves exactly as Doom's original light did
  • Cheat-enforced CVARs can now be changed in normal single player games without sv_cheats
  • Added a JIT compiler for DECORATE and ZScript which should allow some maps and mods to perform slightly, if not significantly faster in some cases 64 bit only!
  • scriptified the AltHUD
  • Many bug fixes as usual
  • Lights are now referenced by sections rather than surface, to speed up light linking. This should allow a dynamically-lit plasma bolt to pass over a 3D bridge in Frozen Time without turning the game into a slide show.
  • Many scriptifications from native code to ZScript
  • Add shader cache for Intel GPU's which should result in faster startups (especially on Windows) - first startup will still be slower, though
  • Added IsPointInMap(Vector3 p).
  • Added destructible geometry, exported to ZScript
  • Added a function to get the actor's age in ticks.
  • Added a new field to the Actor class which stores the amount of ticks passed since the game started on the moment the actor was spawned.
  • Added a function to the Actor class to get its spawn time relative to the current level.
  • Added spawn time information to the output of the "info" console command.
  • Export AllClasses
  • Update GME up to 0.6.2 version
  • changed the way alpha works on DrawLine and DrawThickLine so they're consistent
  • GL renderer is now partly multi-threaded, resulting in a 10-20% speedup, depending on a map's complexity.
  • add "neutral" gender option and better obit formatting


Details
Spoiler: This list is pretty big...
Comments

GZDoom 3.6.0 Released

Posted by on at 16:22
(59) Comments
Notice: This release has been split into two. There is now a "modern" version and a "vintage" version, for older hardware. More info can be found here.

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


Download (Modern, OpenGL 3.3 and higher)

Download (Vintage, OpenGL 2.x)

Highlights
  • Add OBJ model support
  • added Screen.DrawThickLine for drawing lines with thickness
  • fixed: sound from poly objects through portals will now propegate properly
  • Add HITOWNER flag, when set, allows a projectile to collide with its shooter.
  • Allow LineAttack's LAF_NOINTERACT to fill FTranslatedLineTarget's information.
  • Added DMG_EXPLOSION flag.
  • Adds OnDrop virtual to inventory items. Called on the dropped item at the end of AActor::DropInventory.
  • enabled the linear shadowmap filter.
  • update xBRZ upscaler to version 1.6
  • (modern only) added 5x and 6x upscaling with xBRZ
  • Add 'normalNx' texture scaling (normal2x, 3x, 4x, 5x, and 6x) (5x and 6x only supported in modern)
  • Upgrade libADLMIDI and libOPNMIDI
  • Exports various resurrection-related functions to ZScript.
  • Fixes for Wraith Corporation WADs


Details
  • Additional blocking-related flags for Actor.LineTrace()
  • Added CheckReplacement to event handlers, a function inspired by its namesake in Unreal's Mutator class.
  • Add "IsFinal" parameter for CheckReplacement.
  • Add HITOWNER flag, when set, allows a projectile to collide with its shooter.
  • support static const arrays inside structs
  • prohibit assignment of dynamic arrays
  • Add ZScript method `LevelLocals.SphericalCoords`.
  • fixed: sound from poly objects through portals will now propegate properly
  • defaulted constructors and assignment operators of several trivial types.
  • removed most of the old LastIndexOf methods in FString, only leaving one for ZScript and clearly giving it a name that says it all. RIndexOf has been made the proper version of LastIndexOf internally now.
  • Added paths for all games on Steam for Linux since they now offer the ability to download all games for Proton/Wine.
  • Check ~/.steam on Linux for the config.
  • add menu sliders for `vr_ipd` and `vr_screendist`
  • added Screen.DrawThickLine for drawing lines with thickness
  • fixed: always initialize active colors in special font
  • update french language translation from Tapwave
  • Add OBJ model support
  • fixed the use of Doom-Legacy-style 3D floor lighting in light mode 8.
  • fixed math imprecisions in horizon vertex generation.
  • be more thorough with 'in menu' checks for certain protected functions.
  • Fixed code generation of infinite for loop
  • Add NewGame to EventHandler
  • Make StatusScreen::End virtual
  • Allow LineAttack's LAF_NOINTERACT to fill FTranslatedLineTarget's information.
  • Added DMG_EXPLOSION flag.
  • do not render lights from uninitialized data.
  • Adds OnDrop virtual to inventory items. Called on the dropped item at the end of AActor::DropInventory.
  • clamp the software light to never get brighter than the initial light level
  • enabled the linear shadowmap filter.
  • update xBRZ upscaler to version 1.6
  • (modern only) added 5x and 6x upscaling with xBRZ
  • Add 'normalNx' texture scaling (normal2x, 3x, 4x, 5x, and 6x) (5x and 6x only supported in modern)
  • Upgrade libADLMIDI and libOPNMIDI
  • Exports various resurrection-related functions to ZScript.
  • Computed facet normals for UE1 models were not normalized when they were supposed to.
  • removed dynamic lights from Hexen's Mana pickups.
  • fixed potential null pointer access in Hexen's spike code.
  • Fixes for Wraith Corporation WADs
  • fixed: smooth teleporters could fudge the player over an adjacent line, causing the player to appear on top of a cliff that is much higher than the original teleport.
  • fixed: MD3s with a skin-less surface left the renderer in an undefined state. The frame interpolation factor wasn't reset and rendering prematurely aborted with no chance to recover.
Comments

The GZDoom 3.5.0 survey's results

Posted by on at 02:10
(15) Comments
After closing the survey with the 3.5.1 release, here's the results from 15000 users reporting:

The big numbers (3.3 survey results in parentheses)

61% (57%) of the reporting users use a graphics card which is DX12/Vulkan compatible.
34% (34%) of the reporting users use a graphics card which is at least OpenGL 3.3 compatible, i.e. it can use the modern core profile render path.
This is further split up into 19% running an OpenGL 3 compatible card and 15% running an OpenGL 4.3+ compatible (i.e. capable of running the most modern render path) card.
2.5% (6%) of the reporting users use a graphics card which only has OpenGL 2 support, i.e. has to be run the legacy build.

No separate reports were made for the software renderer anymore.

Distribution of operating systems is:

90% (88%) Windows
1.9% (2%) Mac
8% (10%) Linux
0.3% are on Windows XP - most using the vintage build.

87% (85%) use 64 bit on a 64 bit system
9% (10%) use 32 bit on a 64 bit system. (This one's odd, I'd appreciate if some of these users can tell us why.)
4% (6%) use 32 bit on a 32 bit system

I think the most interesting aspect in here is the sharp dropoff in users on systems with OpenGL 2 and OpenGL 3.1. It more than halved over a mere 4 months!
This speaks a very clear language about the future of support for this hardware group. If the dropoff continues at the given rate and factoring in the Christmas business this will most likely not be supported past 2019.
Windows XP user share has already reached numbers where supporting it makes no real sense anymore - the exact number as of this morning was 48 users out of roughly 15000. As long as there is no need to reconfigure the project it will remain supported but I give no guarantees whatsoever about for how long.
Comments

GZDoom 3.5.1 Released

Posted by on at 15:19
(38) Comments
Notice: This release has been split into two. There is now a "modern" version and a "vintage" version, for older hardware. The reason for this is that some recent changes to improve performance on modern hardware resulted in quite severe slowdowns on Intel's OpenGL 2 hardware. So in order to give these users the best possible experience it was decided to provide this vintage build which adds all new non-renderer-related features with the latest state of the renderer from before the abovementioned change. The vintage version is provided thanks to the efforts of drfrag.

Please note that this solution is only a temporary measure. User share of OpenGL 2 hardware had already been low when we ran our survey with GZDoom 3.3 and once this drops any further the vintage build will be discontinued. If you cannot run the main (modern) build we strongly recommend to upgrade your hardware.

Please note that the survey is now closed. GZDoom 3.5.1 does not include the survey code that 3.5.0 did.


Download (Modern, OpenGL 3.3 and higher)

Download (Vintage, OpenGL 2.x)

Highlights
  • Implemented "resolution mode selector"
  • add post processing support to the software renderer and softpoly
  • add vid_hdr cvar that enables higher than 8bpc output for monitors that support it
  • fix: softpoly TEXTURES sprites with scale of 2 are tiled
  • add dithering support to emulate higher BPC displays than your real one. this should allow smoother gradients for light fades and such.
  • Make various getter and pure-math Actor methods clearscope.


Details
  • add vid_hdr cvar that enables higher than 8bpc output for monitors that support it
  • fix: softpoly TEXTURES sprites with scale of 2 are tiled
  • Implemented "resolution mode selector"
  • add post processing support to the software renderer and softpoly
  • Fix model rendering only using interpolated yaw. Pitch and roll are now also interpolated.
  • add dithering support to emulate higher BPC displays than your real one. this should allow smoother gradients for light fades and such.
  • clear GLWF_TRANSLUCENT at the end of PutWall.
  • fixed FraggleScript's moving camera.
  • Make various getter and pure-math Actor methods clearscope.
  • disable runtime buffer security check in release build.
  • prohibit assignment of dynamic arrays
  • Avoid overriding vr eye-specific buffer binding during 2D rendering.
  • only render visual portals if they are front facing in softpoly
  • disable survey code, 3.5.0's is over
  • got rid of FNameNoInit and made the default constructor of FName non-initializing.
  • Add the "RightIndexOf" method to FString, which works like String.lastIndexOf from JavaScript
  • Deprecate the LastIndexOf method of StringStruct
Comments