ACC 1.59 Released

Posted by on at 12:34
() Comments
This version is mostly to update the included *.acs files with the newest GZDoom 4.9.0 features.

It also (should) compile a static binary for Linux/MinGW too.


GZDoom 4.9.0 released

Posted by on at 18:52
() Comments
Notice: The survey is currently OPEN. GZDoom 4.9.0 contains survey code. You may OPT IN or OPT OUT when starting this software.

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

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.

Please note that this code contains a small error when choosing to convert to a portable install. After doing so the current session will not be flagged as portable and as a result may not find the save data and it will save a global copy of the INI. Until a hotfix gets released please quit GZDoom and restart, that will ensure that the portable settings take effect.

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.

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 name of the graphics card and supported OpenGL/Vulkan versions.

Download (OpenGLES 2.0 and higher)

  • IQM bone model support

  • textured particles

  • modern standards compliant configuration storage on Windows


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


Raze 1.5.0 released

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

Visit the new homepage (still under construction)


  • Commit changes that Discord compilation always makes on Linux, leading to -m on compiles.

  • Blood may not abort on a bogus start position.

  • Fix crash when exiting with no game data

  • fixed render order of non-orthogonal wall sprites.

  • glslang compiler and Vulkan backend update.

  • fixed automap angle in unrotated mode.

  • added workaround to render the crane in WT's 'Docks' map correctly. This one violates engine specifications by creating overlapping walls when the crane is rotated.

  • SW: changed fullscreen HUD to display all 8 keys without gaps ans overlapping.

  • fixed crash in Last Warrior map 9.

  • for Raze hud_aspectscale needs to default to true

  • Support for the DOS end-of-game text screens in Duke and SW on non-Windows systems.

  • Force synchronised input when `cl_capfps` is true.

  • fixed sky panning. This picked the wrong overload
  • to make things robust one of the functions was renamed.

  • Duke: Interpolate `loogcnt` when drawing onscreen.

  • Duke: Change a few return types from int to bool in HUD code.

  • Duke: Interpolate `access_incs` when drawing onscreen (security card usage).

  • Duke: Interpolate `tipincs` when drawing onscreen (tipping the dancers).

  • Duke: Interpolate `knee_incs` when drawing onscreen (stomping on shrunken enemies).

  • Duke: Interpolate `fist_incs` when drawing onscreen (hitting the nuke detonator at the end of each level).

  • Duke3d: smooth movement of recons.

  • Duke3d: make actors set to move vertically in CON act as if SFLAG_SMOOTHMOVE was explicitly enabled

  • Duke: fixed some crashes with bad map setups

  • fixed level number for RRRA's travel animations. First level is 1001, not 1.

  • ported secret hack for WT's map 11 from SW Redux.

  • removed redundant setting of black shadow color with incorrect data check.

  • Remove `m_filter` option from the menu. The remainder of the removal will come from a backend sync with GZDoom.

  • Add bool `lock` to `PlayerHorizon::settarget()` when setting target from the ticker without having to call setters and resetters.

  • Interpolate FIRELASER trails.

  • fixed wall sprite clipping

  • fixed: FSkyVertexBuffer::RenderBox did not reset the object color after finishing.

  • SW: added interpolation for sine wave floors.

  • SW: fixed shadow positioning.

  • Duke: Add CON support for Duke Nukem 3D 1.1 Shareware.

  • Duke: Fix CON parser to detect shareware scripts.

  • helpers for wall sprite rendering improvement

  • fixed parsing issues in secret hint system.

    -renamed spritetype’s owner field to ‚intowner‘ Mainly for easier searching.

  • function for checking wall sprites’ need for recalculation

  • RR: clear jaildoors array on map start. This was leaving stale data behind which could cause nasty crashes.

  • several more Blood fixes copied from NBlood

  • blood: GetHighestSprite fix

  • blood: fix velCeil calculation

  • blood: SetupGibWallState fix

  • blood: add missing case in OperateSprite

  • dd self check for burning cultist fix

  • Renamed checkFired6or7->checkLitSprayOrTNT

  • Reset thinkTime for kDudeModernCustomDude

  • Set inittype on actSpawnDude()

  • Check enemy type when adding to enemy level count. Fixes count issues with respawning enemies

  • Initialize viewbob members for playerResetPosture()

  • Fix kDudeModernCustomDude may not morphing during specific events

  • Renamed dword_138BB0 -> gCultTeslaFireChance

  • stretch HUD flames in widescreen

  • shadow positioning improvements from NBlood

  • Blood: fix delirium being twice as fast

  • Exhumed: pin death arms to the right side of the screen

  • added wipe transitions to screen job. Mainly to have the crossfade, the other styles are mostly bonus.

  • add proper scoping to the cutscene code, which needs to run in UI scope.

  • music system improvements

  • Zip64 support

  • fixes for menu scaling on ultrawide screens

  • Mac default paths fixed

  • pass shade values to sky renderer

  • fixed bad search path setup on macOS

  • don’t crash on sector-less walls.

  • lock cvar shader uniforms behind a command line parameter for now

  • Duke: set game palette before rendering the automap

  • improved the secret hint management for Blood. This now uses sprite and sector indices directly instead of encoding them into a larger number. Sprite secrets will use a $t prefix instead of $s now.

  • fixed sprite indices for map spawned sprites.

  • optimize fcos and fsin to use the BAM value directly for table lookup.

  • add level names to title bar (and by proxy, to RPC)

  • add gl_satformula == 2
  • an optional 'more accurate' desaturation

  • implement discord rich presence, expand window title code. (still wip)

  • copy-paste is simultaneously the most useful feature in the world, and a programmer's greatest curse. use with care.

  • only overwrite rpath if not already defined

  • add $ORIGIN to rpath for Linux

  • Fix tesla cultist prone state

  • Blood: fix crashes when trying to exit from a fatal error during startup. soundEngine can be null here.

  • added script exports for Duke's main structures.

  • added scripting exports for the global map types and a few more actor utilities.

  • do not call tileUpdatePicnum for voxelized tsprites.

  • Blood: fixed bad marker check in OperatePath

  • Exhumed: Properly fix interpolation issues when at the end of the level instead of trying to back up everything.

  • fixed bad assumption about g_visibility == 0 meaning fullbright.

  • avoid pointer arithmetic in feebtag.

  • fixed bad filter name for DukeDC's SSI variant fpr 1.5

  • fixed validation issue with maps that have a wall with nextwall == -1 and nextsector > -1.

  • made DCoreActor's properties functional.

  • SW: remap LIGHT_Tics to the otherwise unused spritetype::detail instead of the Z-coordinate.

  • do not update the sector for sector effectors moving themselves.

  • SW: bumped two hard limits because there's maps out there that exceed them.

  • partial engine floatification.

  • use full precision math for rotating sectors in Blood.

  • Duke: changed animation storage to be independent of the animated values' types.

  • SW: changed sector object interpolation to be independent of the interpolated values' types.

  • use a method for setting wall coordinates when loading a map.

  • use an access function for reading wall positions so that we have a non-modifiable value wherever this is possible.

  • Blood: Fix ceiling panning angle

Note: SW savegames will be incompatible with 1.4.1!

GZDoom 4.8.2 released

Posted by on at 20:25
() Comments
Notice: The survey is currently CLOSED. GZDoom 4.8.2 contains no survey code.

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

Download (OpenGLES 2.0 and higher for hardware rendering, Direct3D 9 or later for software rendering)

  • Fixes a few bugs that were overlooked in 4.8.1


  • fixed names for A_PlaySoundEx

  • ENDOOM is not Windows only anymore.

  • fixed background tiling for summary screen.

  • text update that was missed in 4.8.1

  • add a few maps to the rebuildnodes compatibility block

  • Fix FVector to Vector comparison

GZDoom 4.8.1 released

Posted by on at 12:11
() Comments
Notice: The survey is currently CLOSED. GZDoom 4.8.1 contains no survey code.

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

Download (OpenGLES 2.0 and higher for hardware rendering, Direct3D 9 or later for software rendering)

  • Update of the Vulkan backend.

  • several bugfixes

  • let the "abort" button on the network pane of the startup screen do a hard exit on Windows.

  • Bugfix for software mode mirrors not working

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

  • Vulkan backend update

  • validate fountaincolor before using it.

  • ZScript: don't allow multiple assignment syntax with only one element.

  • fixed type of third argument of MBF21's MonsterMeleeAttack function.

  • 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 on Vulkan

  • check point pushers/pullers by inheritance, not absiolute match

  • Implement FVector ZScript for Actor Scale

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

  • make sure the last notch on the start screen is rendered.

  • fix relative include path when loading folders

  • avoid storing texture pointers in longer lived data

GZDoom 4.8.0 released

Posted by on at 06:19
() Comments
Notice: The survey is currently CLOSED. GZDoom 4.7.1 contains no survey code.

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

Download (OpenGLES 2.0 and higher for hardware rendering, Direct3D 9 or later for software rendering)

  • added Raze-style HUD scaling. Not exposed in the menu yet, Set hud_oldscale to 0 and use shift with the screen resize keys to scale the status bar.

  • handle the start/endoom screens with the ingame renderer. They are now present on all platforms and use the full screen size of the game.

  • Many MBF21 fixes.

  • added the cutscene system from Raze

  • the chat should use the console's scaling, not the one for the messages printed with the small font.

  • fixed auto-scaling for console.

  • removed all vid_fps offsetting. To compensate there is now also a "stat fps" which displays the FPS rate in the lower left corner. This had to go because unconditionally altering positions was causing problems with custom HUDs.

  • added Raze-style HUD scaling. Not exposed in the menu yet, Set hud_oldscale to 0 and use shift with the screen resize keys to scale the status bar.

  • added a few more names to the reserved names for main folder detection.

  • consider "fonts" and "models" reserved folder names.

  • fixed undefined behavior with Dehacked's value parser.

  • Rebuild nodes for 1024.wad MAP02 to fix invisible obstacle near the exit area

  • fixed fast crushers going out of sync if something is being crushed by them.

  • fixed: Vulkan descriptor sets must check the real translation, not just the translation ID.

  • handle the start/endoom screens with the ingame renderer.

  • Create a MainWindow class that manages the main win32 window of the application

  • Added Actor::LightLevel. Setting it to any value > -1 will override the sector's light level.

  • Implement virtual Actor.FallAndSink for scriptable falling and water physics

  • Added Actor.WaterDepth to retrieve how submerged and actor is, in map units

  • added cutscene data parser. This covers: game start, episode start, cluster start/end, level start/end.

  • MASTERNOSEE flag (#1601) Makes it so that if an actor's master is invisible due to camera/mirror/portal shenanigans, then the actor will also be invisible. Name based off of an Unreal Engine flag that does the exact same thing.

  • Made CanCrossLine opt-in by requiring the CROSSLINECHECK flag.

  • Added CanCrossLine virtual for actors.Called last after all other line checks occur. Returning false means the actor cannot cross that line.

  • Add WorldOffset field. Adjusts the thing's 3D position on render side. This allows for adjusting a thing's visual position without impacting their hitbox.

  • fix bad MP start spot in 1024.wad, MAP05

  • Enables shortcuts for option menus. Press a key to immediately jump to the next option menu entry which starts with this key. Hold Alt to jump backwards.

  • DontLightOthers: Acts as the inverse of DontLightSelf, where it won't light actors that aren't the owner.

  • DontLightMap: The light doesn't affect the map.

  • Relative Includes for ZScript

  • remove m_filter and simplify related code

  • exclude keys from ‚artifact‘ cheats

  • fixed MF_SHADOW handling for MBF21. This needs to alter the render style as well.

  • fixed handling of automap sprites with negative scale.

  • fix dynamic light setup. The level’s global flag is unreliable and cannot be used. The operation this was initially supposed to skip cannot be skipped anyway so the impact should be minor.

  • Allow SendNetworkEvent during title level.

  • add sv_ammofactor to change the skill adjustment for ammo

  • extended the read buffer for the 'secret' CCMD.

  • This is merely preparation
  • the actual loading is still in one uninterrupted piece.

  • Fix that vk_debug doesn't output anything for newer versions of the vulkan sdk

  • added JPEG YCCK decoding.

  • Added MF8_SEEFRIENDLYMONSTERS. Non-friendly monsters with this flag on will be able to attack friendly monsters on sight.

  • fixed mouse coordinate checks for Strife conversations. ypositions needs one entry per response, not one per line.

  • fixed radius of BossBrain actor

  • Added QF_3D flag for quakes. When used, the quake thinker will perform a 3D distance check instead of 2D.

  • removed compat_soundcutoff from the menu. Handling for this was removed 14 years ago when ZDoom transitioned to FModEx 4.x

  • add -compatmode for setting a compatibility mode on startup as a replacement for +compatmode not working as intended.

  • activate Hungarian in the menu

  • Fix off-by-one in Vulkan multisample sample count selection

  • completed Hungarian translation.

  • Fix co-op softlock in Heretic E4M8 due to multiplayer teleporter.

  • added handlers to load Strife’s startup screen images as textures

  • added image source handlers for Hexen’s special startup image types

  • use the hex font for the Heretic/Endoom text screens.

  • fixed setup of files to load on startup.

  • fixed return type of MSTimeF script function.

  • moved -rngseed init to D_InitGame

  • pass ´hashfile´ to filesystem as parameter

  • fix TArray::Append with rvalue parameter. This must clear the source array to obey move rules.

  • fixed Playdemo and Timedemo check. The assumption that D_DoomLoop never returns does not apply anymore. Let it fall through to the end instead where this is properly handled.

  • only check „allowduplicates“ for the final file system init

  • added missing BLOCKF_ flags for ZScript.

  • added ‚repeat‘ option to SetLineActivation ACS function

  • made friendlyseeblocks writable.

  • removed all remains of the corpsegibs flag and made vileghosts interactive. Ghosts are still off by default, but they will now be enabled when selecting the vanilla (strict) compatibility mode.

  • restrict RealGibs for players only. All non-players will now always act as if the ‚corpsegibs‘ flag was set, regardless of the current setting.

  • added Get/SetAmmoCapacity ZScript functions

  • expose the ‚attenuatelights‘ map flag.

  • added an option to delete a terrain type from a texture.

  • add wipe transition support to the screenjob runner.

  • migrated intermissions and summary screens to screenjobs.

  • timer code fixes.

  • added all the cutscene system from Raze

  • added compat_nombf21 for cchest2.wad, map 19.

  • Fix usage of -1 as OBJ model FrameIndex

  • added zip64 handling

  • added workaround to Dehacked so that „Doom“ only replaces the music name

  • fixed some incorrect array allocation sizes in polyobj code

  • added missing range check for scrolling down an option menu with the mouse wheel.

  • do not clamp warped textures.

  • disabled deletion of previous event handlers when using 'eventhandler' keyword in MAPINFO.

  • fixed: decal things failed to spawn their decals on 3D floors.

  • validate the index argument for GetSavegame and abort if out of range.

  • don't let "give weapons" hand out abstract weapons.

  • lock cvar shader uniforms behind a command line parameter for now

  • fixed setup of PolyBSPs when the software renderer is active.

  • Remain 3, MAP11 also needs compat_nombf21.

  • fixed Dehacked drop items.

  • added nombf21 compat setting for Heroes Tales MAP31

  • fixed: The alt HUD's draw call did not use the virtual interface.

  • fixed: group teleporters must always preserve orientation.

  • don't move bad polyobjects in the savegame loader.

  • cast arguments for fastcos/sinbam

  • copy size info from defaults when starting a list menu block.

  • handle cases of empty state labels in ZScript.

  • GLES: Fix blend flags

  • fixed bad color range check in ACS HudMessage code.

  • fixed Dehacked check for A_ConsumeAmmo. This must use the internal function name.

  • fixed y-offsets of bal7scr* decal images.

  • let A_SpawnParticle respect the float bob offset

  • separate message for disabling noclip2

  • added a nullptr check for StatusBar when drawing „Paused“

  • make menu scale adjustments for ultra-wide aspect ratios.

  • treat PSP layer ID 0 as invalid. No PSprites with this ID may ever be created, as there is no means to find them again.

  • fixed: The skill menu did not remember its last selection.

  • allow artifacts that do not automatically activate to be given by the 'give artifacts' cheat

  • added vertical bullet spread relative to ssg

  • Fixed GUS Emulation with DMXGUS(C) lump conf.

  • changed default value for midi_config to empty string since gus is not working with sf2 file

  • fixed SetupDMXGUS not loading lump correctly, wrong use of CheckNumForFullName

  • midi_config default to empty string, since lzdoom.sf2 doesn't seem supported (distorted sound)

  • added absolute paths to FZipPatReader so we can add custom patches to resource files by using gus_patchdir and/or ULTRADIR variable (some custom maps has custom patches that can be added this way without putting them inside the resource file or in the same folder of the configuration file)

  • set timidity_reverb_level min value to 0 in menudef.txt, set to 9 by mistake?

  • Added the MF8_DONTFOLLOWPLAYERS flag, which allows friendly monsters to not follow their FriendPlayer when they have no target or goal left to head to.

  • fixed Font struct export and removed the duplicate handler.

  • fix detection for misplaced | when creating the small fallback font

  • typo 'Yea' instead of 'Yes'

  • implement proper GC handling for AActor::ViewPos.

  • Add CHF_DONTIDLE for A_Chase

  • fixed exittext definition for Harmony. This wasn't using the string table.

  • add gl_satformula == 2
  • an optional 'more accurate' desaturation

  • fixed order of slope creation so that slope copies are the last thing being done.

  • Discord RPC presence. Adds new IWADINFO and GAMEINFO keys: DiscordAppId
  • this should point to your AppId for your game. It will use a default GZDoom one if not found.

  • remove default lost soul translucency

  • Added 'ScaleWeaponFOV' flag to MODELDEF. Affects weapon models only; will scale the model along with the user's FOV to reduce distortion.

  • Additionally, a 'cl_scaleweaponfov' CVar has been added to allow users to further fine-tune the weapon model scale with higher FOVs

  • Terrain small splashes and splash bases now set their target to the thing that spawned them, allowing for extra customization.

  • Added GetTerrainDef and Sector variant of GetFloorTerrain.

  • Fix 3d floor-related crash in software renderer

  • add duplication checking to file list, prevent loading the same file twice unless explicitly asked by the user

  • initialize FSwitchDef::QuestPanel when reading a Boom SWITCHES lump.

  • added a 'no MBF21' compatibility flag. Turns out that there's a few old maps that have the extended line flags set but not the guard bit that forces their clearance. Astrostein 1's first map is an example for this.

  • Initialize some variables in FModelVertex::Set

  • Fix wrong normal vector in the FModelVertexBuffer constructor

  • virtualize player landing on thing sound

  • fixed local vector array initialization.

  • Fix func_paletted.fp to use alpha channel for index. This was needed due to GLES renderer change from Raze

  • allow floats for uniform cvar defaults

  • implement direct cvar linking to custom shader uniforms

  • Add per-tier sidedef light levels to UDMF maps

  • Add TexMan.SetCameraTextureAspectRatio. Allows ZScript to change the aspect ratio of a camera texture.

  • Optimized P_TestMobjZ by not running the iterator if actor also has THRUACTORS.

  • make m_quickexit a global CVAR

  • Added A_SetViewPos(Vector3 Offset, int Flags = -1)

  • apply WeaponScaleX/Y to all PSprites on a weapon

  • fix logic error with shader compatibility layer

  • add debug ccmds to manipulate custom postprocess shaders and their uniforms from the console

  • fix mbf21 A_FindTracer fov cone being twice as big as intended

  • add SMF_PRECISE flag to mbf21 A_SeekTracer, for accuracy

  • fix mbf21 A_SeekTracer not working (arg type shenanigans)

  • fix mbf21 A_ConsumeAmmo ignoring explicit amount arg if weapon's ammopershot field set

  • fix mbf21 A_ConsumeAmmo taking 0 ammo instead of 1 if ammopershot field not set (need to amend the spec for this, argh)

  • fix MBF21 A_WeaponMeleeAttack function name typo & args

  • fix MBF21 A_WeaponProjectile spawn position

  • fix MBF21 GetSoundArg off-by-one: sound indices are 1-indexed in args because Killough

  • fixed logic error with depth bias state in hardware renderer.

  • redid postprocessing shader interface to be free of the player dependency.

  • separate i_pauseinbackground and i_soundinbackground
  • they probably should ultimately be moved out of the sound code

  • Fix GC so collection rate is proportional to alloc rate

  • fixed: the powerup item for respawn invulnerability was never given to the player.

  • fixed MBF21's A_SeekTracer. This cannot directly call A_SeekerMissile because that has more parameters. It now maps to a wrapper that takes care of these.

  • fixed Dehacked parsing issues with weapon properties.

  • added proper range check to the main sound playing function.

  • fixed potential infinite loop in Hexen-style stair builder.

  • create new menu page for simple mouse options menu
  • remove advanced settings like the individual speed fine-tuning

  • Fixed crash with Scroll_Texture_Offsets with non-zero tag

  • Fixed: ActorMover was not changing its tracer's flags.

  • Added NoTrim support for ANIMDEFS, same syntax as TEXTURES outside a definition.

  • Added NoTrim for TEXTURES.

  • Exported the "paused" global variable to ZScript

  • ACS: fixed an old regression in which printing a map char array did not dereference the given array variable

  • Fixed some issues with the scaling feature of DStatusBarCore::DrawString

  • GLES: Load default shader if we try to load user shader to avoid crash

  • D_ProcessEvents(): Delay EV_KeyUp events until any EV_KeyDown events for the corresponding key have been processed. This makes the mouse under SDL a lot better.

  • add SDL hint to not minimize the window on focus loss

  • apply clearscope to ApplyDamageFactor as well

  • apply weaponscale relative to baseline

  • add WeaponScaleX/WeaponScaleY properties for applying global scaling to a weapon's PSprites

  • Fix upload and sampling bug for array textures in the vulkan backend

  • apply clearscope for ApplyDamageFactor
  • viewtopic.php?f=15&t=73830

  • add LoadBrightmaps, LoadLights, and LoadWidescreen directives for IWADINFO
  • these function exactly the same as their GAMEINFO equivalents.

  • Fix abort with dir command and empty string on Windows.

  • Fix vulkan validation errors for wrong image transitions and buffers used after destroyed

  • Add a render style parameter to Screen.Dim

  • Fix vulkan buffers not using the stream usage for the 2d drawer. Add BufferUsageType enum to clarify what kind of usage is expected by the buffer allocated by SetData

  • fixed: menu delegate class error message referenced the wrong gameinfo property

  • Added 'NoPerPixelLighting' flag to models to force it to not use per-pixel lighting. Main use case is for voxels that have been converted to models.

  • add cvar r_skipmats
  • speeds up rendering on slower cards for mods that use a lot of specularity/pbr, effective on both the opengl and vulkan backends

Raze 1.4.1 released

Posted by on at 08:39
() Comments
Download (OpenGL 3.3/OpenGL ES 2.0 and higher required)

Visit the new homepage (still under construction)

This is a bugfix release addressing the following issues:

  • handle walls where a sloped floor intersects with the visible part.

  • handle wall sprites on orthogonal walls better, covering the case that a wall sprite may overlap two walls with a slight deviation in their position
  • always pick the closest one.

  • fixed handling of badly placed sprites in map validation code.

  • fixed inverted logic when checking for dragged sectors in the renderer.

  • fixed sky tiling in Polymost.

  • Exhumed: avoid accessing undefined memory when loading the sounds.

  • Exhumed: fixed surface collisions of projectiles. There was some commented out undefined behavior here, we need to properly define this case.

  • Exhumed: removed erroneous target assignment in Anubis AI, leading to infighting.

  • Exhumed: Add save game option to in-game menu.

  • Exhumed: did some reshuffling on the menu to allow adding a "User map" item and prevent accidental reset of ongoing games, both the items for starting the campaign and the training map are now in a submenu.

  • Blood: fixed bad alignment flags for HUD flames.

  • WW2GI: fixed gamevars not being allocated for map spawned actors.

Raze 1.4.0 released

Posted by on at 21:05
() Comments
Download (OpenGL 3.3/OpenGL ES 2.0 and higher required)

Visit the new homepage (still under construction)

This new release brings several bug fixes and improvements:

  • added custom postprocessing shader support using the same system as GZDoom.

  • the new renderer is now the default after fixing most of the outstanding issues.

  • added interpolation for several special sector movement effects in RR.

  • added interpolation for Exhumed's UI.

  • experimental new light modes, based on GZDoom's original light modes. (new renderer only, these do not work with palette emulation.)

  • better handling for disabled autoaim in Duke/RR.

  • major internal rewrite to remove the limits of map items. Actors have been consolidated into garbage collected objects, like in GZDoom.

  • added a user map browser.


  • Exhumed: fixed check for bad ending cutscene.

  • added guards against badly defined skies.

  • Blood: do color highlighting for trigger messages, like NBlood does.

  • enable Bloom and SSAO menu options.

  • gracefully handle when a map tries to exit twice. This case left a broken ScreenJobRunner behind which later crashed on garbage collection.

  • Exhumed: use proper distance calculations when spawning weapon flashes. The cheap distance approximation here tended to fail on longer walls.

  • Exhumed: Avoid playing the same pickup sound while another copy of it is already active. The pickup code here is not robust enough to play the sound only once per pickup.

  • allow a bit of tolerance for attached orthogonal wall sprites. We have to account for mappers adding some 'safe' distance (which isn't really safe!)

  • do not use floor sprites for splitting geometry. because this is way too expensive on maps with lots of sprites. Instead, run them through the case for slope sprites which should be sufficient here.

  • removed all uses of nexttoward in Polymost. Taking a hint from EDuke32 here, the performance increase is absolutely massive with this function gone from the innermost loops.

  • proper maintenance of the depth bias state.

  • Duke: Directly check the backend input code's `crouch_toggle` to always remain crouched after pausing, even if the first tic doesn't have input.

  • do proper handling of the 'no shadow' case for Duke's bad guys. Using a flag like RedNukem instead of hacking dispicnum, which occasionally does reach the renderer and causes problems.

  • fixed floor sprite normals.

  • Duke: hardened the sound controller a bit by flagging the callsound call from doanimations as most likely terminating. This allows avoiding unnecessary sound repeats on some doors.

  • Nam: don't draw the icon for weapon 7 on the HUD. This is just a blue square. In RedNukem it isn't shown, but there's no special code for it.

  • fixed NAM's sniper rifle. This was using one of WW2GI's apl* variables, but shouldn't.

  • Add a new `Duke!ZONE II` grpinfo definition so that the copy supplied from Zoom which ships with a 1.5 copy of Duke 3D can be found.

  • Don't do an animated transition for Duke's credits menu and don't redraw the background for RR/RRRA's credits menu.

  • Exhumed: Mark in-game menu as animated so its interpolation works properly.

  • RR: address a missing texture in E1L2.

  • RR: interpolate moving furniture.

  • RR: interpolate jaildoors and minecarts.

  • Nam/WW2GI: use the console font for the generic message display. The small font in these games is not usable because it is too small, too ugly and not extendable for localization.

  • Platoon Leader: Set explicit sky offset for the third episode's orange sky.

  • Exhumed: interpolate the menu items when zooming.

  • Exhumed: use the loop flag when starting music.

  • Exhumed: interpolate the scrolling map.

  • Exhumed: Don't force the framerate to reduce to ticrate at end of each level, instead interpolate player's position to prevent draw errors.

  • deal with bad start sectors. The engine will now try to find a proper sector in the map loader if there's a mismatch.

  • fixed main game resource detection for Blood to allow loading modified blood.rff versions.

  • added handling for slope sprites

  • RRRA: fixed typo in portal setup.

  • fixed handling for wallsprites on walls.

  • added precise render mode like in GZDoom.

  • Duke/RR: added fudging to work around aiming randomization issues with the pistol when autoaim is off. Solution is the same as in RedNukem/EDuke32: do one hitscan directly in aiming direction and if that hits a sprite, use it as aiming target.

  • Hack for Exhumed: palette 4 does not fade to black so sprites should not have shades above numshades.

  • Duke: make camera actors temporarily invisible before rendering a scene. Mainly needed for voxel/model replacements of the security camera sprite.

  • major fixing on new renderer.

  • added a user map browser.

  • fixed music lookup for user maps. This was only looking for real files, but instead needs to check the file system. The game directory's content will always be part of that so other checks are counterproductive.

  • added libtess2 for better sector triangulation

  • match alignment of NPOT flat textures to the software renderer. Tested in RR E1L4, sector 224+40,.

  • added a warning for multiple sectors referencing the same walls. RR E3L1 contains such a setup, for example.

  • Add `hud_showmapname` to the HUD Options menu to allow easy disabling of it if its not desired.

  • SW: fixed accidentally inverted colliision check in DoMirvMissile.

  • fixed: voxel culling must take sprite flipping into account.

Raze 1.3.1 releases

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

Visit the new homepage (still under construction)

This is a bugfix release addressing the following issues:

  • SW: fixed sound listener angle for the remote control case. It was taking the angle of the rotating sector object instead of the angle from the listener's position to it.

  • Blood: make sure that invalid face sprites don't get rendered at all.

  • fixed: in palette emulation mode, assume all textures to be non-translucent.

  • Exhumed fixed bad parameter to getzrange causing player fall through sprite bridges.

  • fixed logic for discarding walls in new renderer.

  • fixed OOB write in section splitting code.

  • Add OpenGL ES to the backend options in the menu.

  • fixed triangulation via node builder for sectors with invalid walls causing spurious crashes.

  • GLES: Fix depth bias state

  • GLES: Fixed palette emulation mode and interpolation

  • reordered the init calls in engineLoadBoard. Sprite lists must be done after preparing the arrays, otherwise important bits get overwritten.

  • Duke/RR: Fixed sprite validation checks in animatesprites.

  • Duke: Ensure all weapon variables used for interpolation have the `o` values set when CON updates them.

  • Duke: Fix lotag signedness issue affecting SE10 (door auto-close).

Raze 1.3.0 released

Posted by on at 21:44
() Comments
Download (OpenGL 3.3/OpenGL ES 2.0 and higher required)

Visit the new homepage (still under construction)

This new release brings several bug fixes and improvements:

  • Blood fix some major issues rendering modern features largely inoperable in 1.2.x.

  • Blood: Backport GDX fix for lighter just appearing when switching to the aerosol.

  • Duke/RR: strip trailing spaces off strings parsed in CON.

  • properly macro-fy parsed strings from Blood's INI.

  • Blood: Fix TNT pickup accidentally equipping player with voodoo doll.

  • Exhumed: fixed bad interpolation setup in AddFlow, plus some variable renaming.

  • enable depth clamping in GLES backend

  • Duke/RR/SW: Fix several crashes when noclipping out of the valid map area.

  • Make a number of CVARs in `gamecvars.cpp` saved as part of the global config: `cl_weaponsway` `cl_viewbob` `cl_interpolate` `cl_slopetilting` `cl_showweapon` `cl_syncinput` `cl_hudinterpolation` `cl_loadingscreens`

  • fixed camera textures breaking in SW when restarting a level.

  • fixed bad sector being chosen for rendering in maps with sector overlaps.

  • added .ssi to the list of known extensions for container files.

  • fixed handling for cl_capfps and cl_nointerpolate to never use any smoothratio value other than 1.0.

  • Blood: don't play the same looped sound multiple times on the same actor. This caused some strong echoing on E4M6.

  • fixed center aligned rendering of 2D content. This calculates the centered pivot point in integer texel coordinate space so for odd numbers it must round down instead of using a fractional position.

  • fixed animated voxels in new renderer.

  • fixed assignment of map hacks with multiple maps assigned. The parser only ever added the last MD4 but not the others.

  • fixed translucent voxel rendering.

  • make upscaling of sky textures depend on the single tile size, not the entire composite texture.

  • fixed sky rendering in paletted sectors for Polymost.

  • [Blood] Fix self collisions for lifeleech projectiles

  • [Blood] Match view height clamping behavior to 1.21

  • Change out of box default of `cl_runmode` to 0, which allows the bound run key to act like an autorun negator.

  • SW: un-flag mirrors that got smashed. The new renderer cannot check tilenums.

  • SW: Tidy up use of `cl_nomeleeblur` use within panel code.

  • address issues with key down/key up events being sent in the same tic not having an effect on game actions that require a key being held down.

  • Make screenjob valid keys for skipping ignore the Alt key as its used for modifiers, and special keys like the screenshot bind.

  • flush the network timer right after loading and before starting a level. Without this the entire load time may get registered as skipped frames.

  • Exhumed: flag the main menu as animated. This is needed for the plasma display to animate properly.

  • Duke: Fix issue where calculated value for old player variable `return_to_center` could have been negative, causing undefined behaviour.

  • Add support for Duke Nukem's Penthouse Paradise as shipped with the Zoom release of Duke Nukem 3D Atomic.

  • Patch in registry detection for Duke 3D Atomic + Expansions from Zoom on Windows.

  • `processMovement()`. Remove `cl_exhumedoldturn` CVAR and tidy up numeric literals in use.

  • Build: Promote `sintable[]` array values to precision Blood uses.

  • Blood: Fix horizon adjustment for death camera to avoid Fixed > Float > Fixed conversion.

  • Exhumed: Don't run through the slopetilting math if the view is locked.