- removed
- zd_extra.pk3 splits off copyright infringing assets, allowing game makers to delete this file and distribute a fully GPL-conforming copy of GZDoom without further changes.
- Custom IWAD support
- Video render scaling (play in 320x200, or any custom resolution)
- Custom screen shader support
- MENUDEF replacements are now merged, allowing GZDoom to easily present new menu features in older mods that include one
- Tons of fixes and improvements
Changes from 3.1.0:
- Merged with QZDoom 2.0.0
- "Software" light mode (in OpenGL) now supports radial fog setting
- Unsloped Flats can now use non-power-2 textures in software mode
- Menus now merge in with a mod's custom MENUDEF when it provides menu replacements. This is due to older mods' menus becoming very quickly outdated.
- Rise of the Wool Ball is now supported as an IWAD
- Custom IWAD support is now available. A custom IWAD file must have the extension ipk3/iwad, and contain a "iwadinfo" lump similar to GZDoom.pk3's with only this IWAD's information and no file list.
- "Classic Transparency" option - turn off ZDoom's additive transparency effects for the original game resources.
- Better non-accelerated buffer support for software rendering - when vid_hw2d is disabled or otherwise using an unaccelerated framebuffer, stencils and on-screen objects now show up better.
- (Windows only) vid_used3d is now renamed to vid_glswfb. This matches the same CVAR that is available on Mac/Linux.
- vid_glswfb is now exposed to the menu.
- r_visibility now affects GL's Software lightmode as well as Softpoly.
- Player Sprite overlays now support the PSPF_MIRROR flag which flips the sprite horizontally across the entire screen.
- Menu Blurring option - when running in OpenGL mode, a mod can now blur the screen when the menu is active.
- Unfriendly players - when a PlayerPawn object has -FRIENDLY set, they become a playable monster and interact with the game world as one. Additionally, they become deathmatch opponents, capable of dealing and taking damage from other players.
- Custom Screen Shaders - mods are now able to include their own post processing shaders, insertable before the bloom pass ("beforebloom"), before 2D objects are drawn ("scene"), and after everything is on the screen ("screen").
- vid_saturation saturates/desaturates the screen - improves the appearance of the screen when using certain brightness/gamma settings as well as allowing the user to play in 'black and white' (similar to the display control panel option). (Requires post-processing shaders to be active and hardware gamma must be disabled)
- r_visibility now works in OpenGL (software lightmode only) and SoftPoly
- (Software only) Added r_line/sprite_distance_cull cvar that culls lines or sprites beyond the specified distance
- (OpenGL only) Added 'enabled' property for post-process shaders, to automatically enable them without the assistance of ZScript
- Enable Core Profile on macOS only when OpenGL 3.3 is available
- Use multiple threads for xBRZ upscaling
- Added new "sv_damagefactor*" variables.
- sv_damagefactorplayer: Scales damage for player
- sv_damagefactorfriendly: Scales damage for all other +FRIENDLY objects
- sv_damagefactormobj: Scales damage for everything else (incl. monsters and decorations)
- added per-class think time profiling tool.
- Fixed crash when drawing untranslated font
- Fixed applying of color to untranslated fonts in hardware renderer
- added 'kill baddies' cheat - does the same thing as 'kill monsters' only it ignores friendly monsters
- changed gl_ssao_portals default to 1
- (OpenGL hardware/software framebuffer only) Revamped vid_max_* variables. Originally debug variables, they've been redesigned to allow screen resizing based on aesthetics.
- The variable controlling the entire system is now vid_scalemode:
- 0 == neighbor scaling, controlled by vid_scalefactor
- 1 == linear scaling, controlled by vid_scalefactor
- 2 == 320x200, neighbor scaled
- 3 == 640x400, neighbor scaled
- 4 == 1280x800, linear scaled
- vid_scalefactor added for modes 0 and 1, which changes the render resolution to any arbitrary amount the user specifies >0, and resizes the screen to that amount. Valid values are >0 to <=2.0, where values above 1.0 are super-sampled to the screen (allowing up to SSAAx4 super-resolution). Please note that due to the way this is implemented, screenshots generated using this system will be in their original render resolution, so a super-sampled screenshot will actually come out in higher resolution.
- menu options for this system have been added
- please note that this system is not available in the DirectDraw/Direct3D software framebuffers. For those, ZDoom's old -2 and -4 command-line parameters still work. (For now)
- The variable controlling the entire system is now vid_scalemode:
- post-process GLDefs parsing is more strict than QZDoom's, and will error out if invalid keywords are used.
- Lemon parser now uses dynamic stack size comparable to C++'s, allowing deeper nesting of if, for, and while loops in ZScript
- fix dynamic light clamping in true-color software renderer
- BSP node cache will now no longer write to NTFS alternate streams. In Linux/Mac systems, this means said filenames will no longer contain a colon.
- The classic software renderer now supports use of the 'maxviewpitch' CVar - it still cannot pan to a full 90 degrees, though (sorry folks) ;)
- (Source code) Some OpenBSD support is now in the source. Please note that this is currently HUGELY unsupported by the dev team and comes as a user contribution. (From our perspective: 'here be dragons, tread ye carefully')
- Models now have normals in the hardware renderer, allowing them to be affected by dynamic lights and SSAO
- sv_singleplayerrespawn changed from a 'latching' cvar to a 'cheat' cvar using the new cheat cvar system. This means the cvar can now be enabled dynamically for single player games, however, it is still disabled when cheats are.
- added render visibility flags - will selectively make objects disappear on the screen when certain rendering feature criteria is not met. The goal of this is to allow two different objects to appear on the screen based on renderer type, as a deterministic-supporting substitution for the oft-requested "moar reliable vid_renderer checks plzplz" - this feature is also intentionally designed to be future proof (i.e. if you use this feature MODS WON'T BREAK when new features are introduced in the associated renderers!).
- added 'r_showcaps' ccmd to show which render flags are currently active in the renderer
- maximized window state is now saved between sessions as well as when 'swtruecolor' is changed
- Support binding textures for custom PP shaders
- added per-level exit texts independent of the current cluster.
- This is mainly to support UMAPINFO which does not have clusters but has been extended to define separate exit texts for each target map that can be reached from a given map.
Special names 'normal' and 'secret' can be used to define texts specific to the default exits.
New MAPINFO properties:
- exittext = mapname, "text"...
- textmusic = mapname, "musicname", order
- textflat = mapname, flatname
- textpic = mapname, picname
Setting an empty exittext will disable a cluster-based text screen that may apply to the given map.
- This is mainly to support UMAPINFO which does not have clusters but has been extended to define separate exit texts for each target map that can be reached from a given map.
- timidity++ fixes for Linux
- Significantly improve shadowmap light performance for faces with a large number of lights but where only a few applies to each individual fragment
- More classic IWAD compatibility fixes for missing textures
- Fixed unset inflictor in WorldThingDamaged event
- removed tag 0 check for 3D floors because as seems to be par for course in Doom modding, some people actually exploited this bug.
- handle state label resolution in a non-actor context more gracefully.
- addressed incorrect ACS printbold implementation: For native Hexen maps it will now be correct, but all others will have to set a flag in MAPINFO's 'gameinfo' section to avoid problems with numerous ZDoom maps depending on the incorrect implementation.
- Reset interpolation coordinates for all actors before the current thinking turn instead of at the start of each actor's own Tick function so that indirect actor movement gets properly interpolated.
- fixed: The color for untranslated font was missing its alpha channel.
- print a warning if a decal definition cannot find an animator. This is important because DECALDEF cannot tentatively find animators declared after the decal.
- let PlayerPawn.ForwardThrust use its angle parameter.
- fixed: a destination-less line portal should be ignored by the sight checking code.
- added a user reserved range of statnums from 70-90
- fixed: FastProjectile's movement code was missing a portal check.
- softpoly now uses a zbuffer, similar to hardware rendering
- Add sprite adjustment to softpoly
- Fixed camera rotation from FraggleScript
- Fixed crash when morph item is used from ACS
- Fixed incorrect damage flags' checks for A_Kill...() functions
- more softpoly fixes
- softpoly now supports sloped 3d floors
- Fixed handling of default arguments in Actor.GiveSecret()
- In software rendering, lights now check if they are too far above or below a certain plane before rendering. An example of this is in unloved.pk3 where in map02, some lights are above the ceiling.
- Fixed VM abort with null activator for SecretTrigger object
- fixed: changing 'uiscale' did not always update the screen size properly.
- Game will now print the version at the start of the log.
- Properly handle VM abort exception when occurred in menu
- Add GOG path for Doom 3: BFG Edition
- fixed: When offsetting the projectile for testing, P_CheckMissileSpawn must also reset the projectile's sector to its new location.
- fixed: When stepping through a sector portal and touching a two sided line on the opposite side, its opening must be used, regardless of the FFCF_NOFLOOR flag.
- fixed: The struct field compiler did not check for forward declared type references that hadn't been resolved yet.
- Added per-actor camera FOV.
- Player FOV changes are now transmitted over the network using floats.
- Fixed Infinity and NaN floating point values formatting as string
- (8-bit software) Fixed overflow for precise blend mode
- Added Actor.A_SoundVolume(int slot, double volume) function to ZScript
- Fixed crash caused by script number collision of ACS typed scripts
- fixed: Do not call DoEffect when predicting player movement.
- fixed crash when defining a global constant which references a class member constant in its value.
- fixed: For original Hexen, executing a death special should not clear it. This addresses the bell in HexDD's Badlands being rung before it is ready to use. This also removes the redundant special handling in the ZBell actor.
- gzdoom.pk3 has now been GPL-ized and has had many assets replaced with free GPL-conforming assets.
- zd_extra.pk3 is now included in the GZDoom distribution. This file contains the assets replaced in gzdoom.pk3 to their original assets, with the exception of the MBF German Shepherd, which now uses Nash's dog sprite replacement. If you are creating a commercial game, you may now simply remove zd_extra.pk3 to avoid copyright issues.
- Static executable assets now replaced as well. The Doom marine is now completely gone, the crash logger now shows a dying marine from FreeDoom, instead. GZDoom sports its own logo icon.
- Unsafe math operations removed from armv8 - they were deterministic breaking and broke original monster behavior.
- added: m_showinputgrid == '-1' allows for on-screen keyboard to never show when inputting text, even when using a mouse
- shadowmap quality is now exposed to the menu
- OpenGL 3.0 is now allowed for software OpenGL framebuffer (aka vid_glswfb) - The Mesa rendering library supports this just fine, and it seems it runs without trouble on known troublesome 3.0 cards.
- OpenGL 3.3 is now required for the modern rendering path for hardware rendering. This means that ALL OpenGL cards prior to this version will revert to the legacy rendering path; no longer using shaders or clip planes. This was done due to there being too many compatibility issues and bugs with cards and drivers from this era.
- fixed playersprite calculations in softpoly
- classic software renderer now supports 'pixelratio' mapinfo definition - allowing mappers to now create square pixel maps in all 3 renderers.
- softpoly now supports dynamic lights in truecolor mode
- Updated "cream" and "olive" definitions in TEXTCOLO to be more readable
- Added four text colors: ice, fire, sapphire, teal
- added TID to 'actorlist' and similar console commands output
- Fixed read beyond buffer boundary during font color parsing
- Fix speed of sound and unit scale
- Fixed bugs with Line_PortalSetTarget and added more portal geometry warnings
- fixed: A bug exists where portals that have been deactivated with Line_PortalSetTarget cannot be reactivated, even if given a valid target.
- fixed: Another bug exists where portals that were created in an inactive state (using a target line tag of 0) could never be activated. (Even with the above bugfix.)
- Linked portals that have been demoted to teleport portals because they do not have a return portal now emit a warning.
- Portals that are supposed to be traversable, but do not have back-sector now demote to visual portals and emit a warning, because nothing could ever possibly traverse them anyway.
- Fixed flags when demoting interactive portals
- Interactive portals demoted to visual due to not having a back-sector would not have their interactive flag properly cleared.