Raze 1.7.1 released

Posted by on at 10:48
Download (OpenGL 3.3/OpenGL ES 2.0 and higher required)

This is mainly a bugfix release.

  • language update, now featuring Italian and Turkish

  • fixed a few bad scaling values.

  • Duke: do not call DukeActor's OnInitialize function for projectiles.

  • Blood: display the charge meter for the dynamite also on the alternative HUD.

  • Exhumed: don't pass uninitialized data to the sound engine.

  • Duke: set clipdist default also for external bad guys.

  • Duke: fixed pitch calculation for explosion sounds.

  • Blood: fixed bad damage scaling in ConcussSprite

  • Duke: apply default scale only to enemies defined in CON. This code does not apply to the Recon!

  • added back WT's fireball's postHitEffect. This somehow got lost during scriptification.

  • Duke: fixed scale default for non-ememies.

  • Blood: Fix missing input bit in `GameInteface::reapplyInputBits()`.

  • Duke: Ensure hard landing check is done after pitch keys.


Raze 1.7.0 released

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

  • new language support: Spanish, French, Danish and Norwegian.

  • Duke: fixed weapon spread with non-pistol hitscan weapons.

  • Duke: Add a myriad of pitch recentering CVARs.

  • Duke: fixed potential logic deadlocks with the green slimer.

  • fixed lookup table generation for foggy fades.

  • Duke: Add CVAR to allow disabling pitch reset with pitch input.

  • Duke: Consolidate vehicle code between boat/moto.

  • use GAMENAMELOWERCASE for defining GAME_DIR.

  • Duke: Remove `everyothertime` global, we can just use `PlayClock`.

  • fixed STAT_ACTORS must handle actors where scale.X is 0 as 'deleted' and destroy them.

  • Duke: Make vehicle input functions work on floats and not doubles and FAngles.

  • removed the ValidateTarget call from HackSeqCallback to silence warning messages

  • Duke: Ensure spawned player actor has view height baked in up until the first `getzrange()` call.

  • Null the roll angle used for weapon drawing when looking left/right and with Blood's delirium for now.

  • Blood: Fix state checks when using TNT while diving underwater.

  • Exhumed: Ensure `Player::items[]` is signed.

  • Blood: Fix palette of actor sprite on 2D automap.

  • Blood: Fix shotgun ammo display when player fires a shell, switches weapons, then switches back.

  • Repair voxel 2D vector adjustment.

  • Blood: Repair velocity scaling in `ConcussSprite()`.

  • Exhumed: major internal cleanup

  • added a font option to have lower case for Latin only.

  • Re-calculate the sector for each eye if it has a shift factor applied.

  • completed all fonts for all European languages.

  • Fix crash in Shadow Warrior when player dies

  • Blood: fixed application of push velocity.

  • Exhumed: avoid shade hacks with palette emulation on.

  • Blood: make sure that tracking condition data is always properly initialized.

  • partially Revert "
  • pass shade values to sky renderer" Duke never did this.

  • Blood: reverted GetSpriteExtents to integer math.

  • SW: make player sounds always follow the source.

  • allow setting Duke's relevant sound properties through SNDINFO.

  • Duke: fixed incorrect sector in a few sprites of World Tour E5L1.

  • added adaptive layout for RR's summary screen as well. To better handle the spacing for accented characters the text scale was slightly reduced.

  • make layout of Duke's summary screen adapt to text and screen size.

  • RR: stop the bowling pins' tumbling animation when they come to a rest.

  • Duke: added a fully scriptable switch system

  • Change string `Ninja Slice Animation` to `Alternative Ninja Slice` to better reflect what it does.

  • Fixed a Mac debug build crash where CallAnimate attempted to pass one too many parameters to the VM.

  • Blood: add all statically stored EventObjects to the GC processor.

  • moved GetReservedScreenSpace function into the scripted status bar where it belongs.

  • split several texture flags off into a surface type value. Using the same field in the TexExtInfo struct as Blood's surfType. This frees up a lot of flags for later use.

  • adapted the breakable stuff interface in Duke to Texture IDs.

  • preparations and annotations for places in SW where textures are stored in tags.

  • tile system refactor. BuildTiles has been replaced with something that better integrates with the underlying texture manager

  • added mapSpawned member to DDukeActor

  • Exhumed: The ObjectList was not properly garbage collected.

  • fixed kill counting in Blood.

  • SW: For single player games, call `PlayerDeathReset()` from `TerminateLevel()` and not `DoPlayerDeathCheckKeys()`.

  • SW: Don't call `DoSpawnTeleporterEffect()` upon death. This causes an air bubble to spawn above the player for a single tic, even while on land until the level truly restarts. Since we're restarting, its better to just not do this.

  • SW: Don't reset player pitch upon death.

  • Duke: Always use tsprite pos/angle when used in conjunction with viewvec or viewang.

  • rewrote drawtile CVAR handling to render the image larger and allow using aliases.

  • SW: do a proper implementation for sprites which do not want texture animations.

  • gave all textures that were accessed with their "#0xxxx" name a descriptive names.

  • disabled the automatic localization feature in the texture manager.

  • rewrote the tile pixel cache to work on texture IDs instead of tile IDs. This allows using the related checking features with other textures as well.

  • SW: fixed camera validation

  • got rid of gotpic. Now everything uses the 'seen' flag in the texture which indicates that the texture was actually used for hardware rendering since the last check.

  • removed canvas hack stuff from Buildtiles after cleaning up the mess in SW.

  • initialize all special tiles to their intended type before starting the game.

  • do the handling of 90° rotated wall textures in the renderer instead of duplicating the texture.

  • Duke: implemented customizable breakable walls and ported all hard coded variants to use this.

  • Duke: implemented breakable walls with external definitions.

  • Duke: removed the limit of 64 on-state switches from the init code.

  • Duke: split the sprite animation code for CON-based actors into a separate function.

  • Duke: moved the shadow creation code out of animatesprites into a common subfunction.

  • Duke: cleaned up the main thinker loops, using a flag to denote actors that are not on STAT_ACTOR but need to run CON code.

  • Duke: gave proper names to ST_160 and ST_161.

  • define Duke's skies by name.

  • Duke: added generic destructibles

  • backported sound volume fix from NBlood.

  • Duke: use a flag for outer space textures.

  • Duke: exported the tile flag setters to RMAPINFO.

  • Change `DCoreActor::oang` to a DRotator named `PrevAngles`.

  • Change `spritetypebase::angle` to a DRotator named `Angles`.

  • Duke: gave all switch animation phases proper texture names.

  • did a bit of optimization on FGameTexture. Since all material layers except the brightmaps are relatively rare encounters these were taken out of the main texture object and offloaded to a substructure that is only allocated on demand.

  • use a sepate file system filter for 'duke-like' games, i.e. Duke, NAM and WW2GI combined.

  • replace the homegrown hash chain in the sound engine with a TMap.

  • sound system refactor to be based on names instead of indices.

  • Duke/RR: Properly fix `movement()` so the player's Z always makes it back to floorz.

  • Make `stat coord` show full floating point values.

  • Blood: Fix `gi->WarpToCoords()` that messed up the Z.

  • SW: Take full advantage of our floating point work for the wall blood drips.

  • more Duke/RR scriptifications

  • always set the sound listener position to something valid. Otherwise OpenAL throws lots of warning messages.

  • Use the interpolated sine table for tangent instead of Cephis math in `TAngle<T>`.


New Password Requirements and Password Reset

Posted by on at 11:46
Hey everyone! We've been having a bit of trouble with compromised accounts on here of late, so we've implemented a new password complexity requirement on all accounts, effective immediately. Upon logging in for the first time after today, you will be required to change your password to something that is at least 20 characters long, and contains both upper- and lower- case letters, as well as numbers. We feel this is necessary to maintain the continued security of the forums, and sincerely apologise for any inconvenience this may cause.

If you would like to create a randomly generated password, you can use

If you have any questions, comments, or concerns, you can leave them below. Otherwise, keep on Dooming! :)

Raze 1.6.2 released

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

This is a bugfix release addressing the following issues:

  • FString fixes.

  • call FullGc twice, because once does not seem to be sufficient anymore when the object system is shut down

  • respect i_pauseinbackground setting

  • SW: cleaned up SlopeBounce and fixed some bad math.

  • Exhumed: account for rounding errors in MoveSectorSprites

  • ignore executable files in a zip's main folder when checking for mod content in a subdirectory.

  • Duke: Fix bad setup for stopping Duke's scream when putting the jetpack on.

  • Duke: Additional fixes for `alterang()`.

  • Blood: Fix bad spawned actor angle for `actFireMissile()`.

  • Blood: Ensure actor's XY pos is updated before calling Z slope utils.

  • SW: do not double interpolate sectors that are both part of a sector object but also have a global interpolation attached.

  • Default initialise `g_nextskill` to `-1` so maps loaded directly from the command line load with the game's default skill.

  • fixed autoload setup for the full Duke World Tour version.

  • Fixed custom height and width not saving.

  • Ensure the viewport's aspect ratio is factored into the HUD's aspect ratio.

  • Blood: Fix some nullptr issues in `checkHit()` and `checkFloorHit()`.

  • SW: Fix tank track velocity.

  • SW: Fix tank tracks not working.

  • SW: Fix issue with RC tank in $seabase.

  • SW: Add inertia correction to `PlayerWarpUpdatePos()`.

  • Add support for Blood: Cryptic Passage via `CRYPTIC.SSI` file.

  • SW: Repair whoopsie in `BunnyCheat()`.

  • Duke: Ensure that the expander hitscans when autoaim is "hitscan only".

  • SW: Restore two original cheat codes lost long ago.

  • SW: Remove `CVAR_SERVERINFO` flag from `sw_ninjahack` and take them out of the global space.

  • SW: Only bring the weapon back up after doing chops if not on a vehicle with a weapon.

  • SW: Fix clipmove call within `DoPlayerMoveVehicle()`.

  • SW: Fix two bad calls to `pushmove()` where a fixed point adjustment was used.

  • fix math error on ARM architectures

  • Blood: add all statically stored EventObjects to the GC processor.

  • fixed: when deactivating the app, pausing the sound system should not depend on the game's internal pause state.

  • fixed ESC pressing on Duke's monitors.

  • Blood: relax range check in AlignSlopes. This now checks the full range of the wall array and if outside just does nothing. E2M6 has a bogus value for this feature that asserted with the old check.

  • Blood: fixed blood splats being spawned in the wrong place.

  • Blood: fixed 3 places where 3D distance was used but 2D should have been used.


Raze 1.6.1 released

Posted by on at 17:10
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:

  • Blood: add all statically stored EventObjects to the GC processor.

  • fixed: when deactivating the app, pausing the sound system should not depend on the game's internal pause state.

  • fixed ESC pressing on Duke's monitors.

  • Blood: relax range check in AlignSlopes. This now checks the full range of the wall array and if outside just does nothing. E2M6 has a bogus value for this feature that asserted with the old check.

  • Blood: fixed blood splats being spawned in the wrong place.

  • Blood: fixed 3 places where 3D distance was used but 2D should have been.

  • Fix pitch direction for controller input.

  • added a - sign to FindBestSector' default return. This somehow get lost when the code was moved out of clipmove into a separate utility function.

  • fixed velocity handling in a few enemy swimChase functions. The one for the gill beast was particularly bad.

  • Exhumed: allow Anubis to get out of the walking state if he loses his target.

  • fix initialization issues with a few serializer functions.

  • fixed bad direction setup for vertically moving SE 0. This also adds missing interpolation for this case.

  • Duke/RR: fixed floor alignment of flames in sloped sectors

  • Duke: fixed flames not being floor aligned. The same code was correct in the RR variant, so it just got copied over.

  • Exhumed: The ObjectList was not properly garbage collected.

  • fixed kill counting in Blood.


Raze 1.6.0 released

Posted by on at 16:43
Download (OpenGL 3.3/OpenGL ES 2.0 and higher required)

Visit the new homepage (still under construction)

  • All game code has been transitioned from Build's mixed fixed point to floating point math

  • several bugfixes

  • a few of Duke's actor classes have been scriptified as a teaser for things to come

  • experimental unlimited pitch, also giving Duke's weapons pitch adjusted velocity

  • replaced a large bunch of Build utility code with newly written replacements

  • NOTE: The Polymost renderer has been removed from this release. From now on we only support our new full 3D renderr.


  • Attempt to fix #647. I'm guessing the `nWalls < -1` is a typo, and it should have been `nWalls <= -1` all along. I decided to write `nWalls < 0` instead.

  • Fix `IWADBoxCallback()` and MENUDEF setup for GLES backend.

  • Make `crosshairscale` slider match GZDoom, including allowing it to slide down to 0 for unscaled.

  • Draw crosshair at 1:1 scale when `crosshairscale` is 0, just like GZDoom.

  • RR: initialize the bowling lane displays after loading a savegame.

  • try to address some occasional crash with chickens on the bowling lane.

  • Duke: Increase the precision of the angle in `handle_se00()`.

  • Duke: cleanup of weapon draw code.

  • Improved crosshair drawing that factor's in look_ang better I've had stashed away for a little bit.

  • Duke: Call `movetransports()` before processing any player movement. This simply works much better, transitioning from above water to underwater and vice-versa is interpolated, smooth and seamless.

  • complete transfer of vk_hdr fix from gzdoom (was missing the shader component)

  • Duke: added an ammo check to the chaingun firing loop. With weapon switching disabled it would not stop firing.

  • don't print negative ammo numbers on the Duke HUD.

  • renamed several of RR's sprites, mostly related to the chicken processing plant.

  • unlimized two map resources
  • cyclers and ambient tags.

  • scriptified the remaining controller sprites.

  • scriptified activators and locators.

  • scriptified the respawn controller.

  • only print texture resolve errors in debug builds.

  • scriptified the sound controller.

  • scriptified canwithsomething, the last internal STAT_STANDABLE item.

  • Duke: fixed long standing problem that pressing Escape or walking backwards does not switch off the camera view.

  • scriptified viewscreen and camera.

  • scriptified touchplate

  • scriptified doorshock

  • scriptified the waterdrip

  • scriptified the bolts.

  • scriptified the trash actor.

  • converted the masterswitch.

  • scriptified OozFilter + Seenine

  • scriptified the fire extinguisher.

  • scriptied the cracks.

  • scriptified the trip bombs.

  • refactored Duke's cactus.

  • scriptified the scraps. The were a Duke-ish mess of epic proportions.

  • flammable actors scriptified.

  • scriptified Dukes water fountain. That's this thingy in the first corridor of E2L1.

  • Duke: scriptified the crane

  • Blood: updated nnexts with the parts not related to the condition rewrite.

  • added 'foreach' loop to ZScript.

  • use a TArrayView to store the wall references in a sector.

  • adding some intrinsics to ZScript.

  • Vector 4 in zscript

  • garbage collector fixes

  • fixed: when deactivating the app, pausing the sound system should not depend on the game's internal pause state.

  • Duke: Use player's pitch sine rather than tangent when throwing a pipebomb while crouched. This maintains the feel of the weapon by having the pipebomb roll along the ground.

  • handle a visual glitch in Duke's E2L1 via compatibility. There is already code to deal with this automatically, but this does not manage to fully eliminate the problem.

  • Add option to (experimentally) unclamp the view pitch for the Duke family of games.

  • Duke/RR/SW: Pitch-adjusted velocity for all player weapons

  • added true level compatibility map processing and deleted all related map hack code.

  • removed the MHK for Route66's This was actually a render bug that was fixed long ago, so the edit is no longer needed.

  • added a MHK for RR E1L1 to fix a render glitch in the barn.

  • added a quick hack to move a misplaced vertex in RR E1L1's barn.

  • renamed getzsofslopeptr to calcSlope and removed one redundant inline.

  • Duke: use player palette only on the foot weapon.

  • Duke: New setup for blood splatters against walls, taking full account of the float precision.

  • renamed RR’s weapon sprites to match their weapons

  • added a GZDoom-style alternative HUD.

  • pushmove rewritten.

  • silenced lots of warnings for deliberate type conversions.

  • rewrote getzrange. Not using any old Build code anymore. Aside from the trivial stuff this uses code from Doom and SW instead.

  • Duke: Move Duke-exclusive code from `PlayerHorizon` struct into `displayweapon_d()` and clamp tangent to handle high pitches.

  • allow entering cheats in the chat editor without using '#'.

  • hitscan fully rewritten.

  • added LinePlaneIntersect

  • rewrite from scratch of neartag.

  • replaced try_facespr_intersect with something independently written.

  • Clean up the availability detection of `kdialog` and `gxmessage` in POSIX sources.

  • got new CVar system from GZDoom.

  • Fix broken paths in default configuraiton on Unix

  • SW: fixed savegame pic generation corrupting the actor list. This case missed the call to PostDraw which is responsible for cleaning up some temporary data.

  • SW: when an actor is killed, all attached ambient sounds must be deleted. Not only did the sound not stop but what happened here was very much undefined behavior as the ambient sound retained its pointer to now undefined memory.

  • Exhumed: gave local variables in FindWallSprites meaningful names

  • normalize the timer with the app start, not the epoch.

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

  • refactored coordinate display to have a single unified printing function.

  • hack to fix bad door definition in RR E2L7.

  • several backports from NBlood

  • Exhumed: exported a handful of missed messages to the string table

  • unlimited the displayable sprites. Now with Polymost gone this can finally be done properly.

  • do not overwrite a textures sky cap color.

  • animation precaching cleanup. No need to handle animations on the game side. markTileForPrecache already handles this
  • now also for oscillating animations.

  • rewrote nextsectorneighborzptr with a better parameter interface

  • replaced spriteheightofsptr with a method in DCoreActor.

  • updatesector* cleanup. Got rid of all remaining Build code in here, stripped down the wrapper interface and moved everything into a separate header file.

  • replaced sectordist with a floating point variant with better precision.

  • replaced getclosestpointonwall_internal with a floating point version based on NearestPointLine.

  • cleanup of 3D viewport code. Removes all the hackery that Polymost needed and now uses a sane struct to store the info.

  • made fov change for RRRA's drug mode work.

  • refined wall sprite check so that orthogonally aligned sprites are only aligned to orthogonal walls.

  • Duke: clear all collision flags from generic controller sprites

  • Don't adjust joystick pitch/yaw speeds based on whether autorun is enabled or not.

Note: savegames will be incompatible with 1.5.0!

GZDoom 4.10.0 released

Posted by on at 15:03
Notice: The survey is currently CLOSED. GZDoom 4.10.0 contains no survey code.

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

Download (OpenGLES 2.0 and higher

  • Map<K, V> types in ZScript

  • Quaternion support for model rotations

  • Improved IQM support


  • Italian language translation is now complete

  • Make the new scaled angle changes at frame rate opt-in behind new flag `SPF_SCALEDNOLERP`.

  • Set up interpolated camera angle changes to occur at framerate when all conditions in `P_NoInterpolation()` are met.

  • Make view angles interpolate on a separate flag to the one that forces interpolation for the entire frame.

  • Map<K,V> and MapIterator<K,V> for ZScript

  • Structified A_SpawnParticle/Ex

  • Look up named frames using the Animation ID (if any).

  • Allow Disabling of XY Billboard for Particles

  • Added Method For Getting Portal Group Count

  • Allow Getting Portal Group Offsets

  • Fixed A_Changemodel crash from invalid modeldef names

  • Fix SNDINFO $rolloff always changing global rolloff

  • Fix GC ignoring DynArrays inside fixed Arrays

  • AST debug cleanup

  • fixed: The raw texture caching in the texture manager did not work. This erroneously checked for FrontSkyLayer.

  • Allow assigning IQM frames by animation name plus frame offset.

  • Added animation support for OptionMenus

  • Fix crash if Animation is not explicitly assigned in MODELDEF.

  • internal cleanup of sound code

  • allow SNDINFO to declare sound mappings by using 'sound = soundfle' syntax.

  • process events every frame as well to ensure that menus can run at any framerate

  • Fix incorrect pixelratio handling on rotated models.

  • Added Font and TextureID types to Option and Image Scroller items (List items already have these)

  • Added "Class" instruction for Image Scrollers

  • Added ability for Option items to read in their OptionMenuDescriptor (List and Image Scroller items already have this)

  • Added "ForceList" instruction for Lists so that skill, playerclass, and episode menus don't get overridden

  • Fix checking of wrong variable in String..Float concatenation

  • Clearscoped getters for map data

  • CustomMessageBox

  • fix colormap remapping when colormap entries may have fullbright entries which should not be considered duplicates

  • stop all sound before showing ENDOOM.

  • disabled shortcutting the intermission code if no summary screen is wanted. This also disabled all cutscenes being attached to the completed map.

  • added 'foreach' loop to ZScript.

  • implementation of Quaternion type in ZScript

  • GLES: Added IQM bone support.

  • SendConsoleEvent function for EventHandlers

  • Future-proof particles by resetting them completely when replaced.

  • added PlusZ intrinsic to Vector3 and ToVector intrinsic to numeric values. These just mirror features of the internal vector classes.

  • added LengthSquared and Angle intrinsics for all vector types, also allow calling VectorAngle with a full vector as a single parameter.

  • Add PushSound property and Slide state

  • Added PS_REPLACE flag for A_SpawnParticle(Ex). When used, new particles that spawn when the limit is reached will replace the oldest particle.

  • add Vector4 to ZScript

  • avoid infinite portal recursion.

  • fix uncaught exception that rarely occurred with the intermission screen that would vm-abort out from any attempt to enter a level

  • Exposed LevelLocals' LookupString functionality

  • Improved Slam functionality.

  • Normalize angle in AngleToACS. Fixes GetActorAngle returning negative or large values with no range limit.

  • Enable ANIMDEFS for particles

  • add some more blacklisted cvars to defcvars

  • fixed background setup for intermissions to apply tiling only where intended.

  • removed the unused BaseBlend* variables and the testblend CCMD.

  • added a compile option to fully disable the software renderer. This is mainly for new games which have been designed for hardware rendering.

  • add the following command line parameters:

  • -noextras: disable loading of any extras (lights, brightmaps, widescreen)

  • -nolights: disable loading of lights

  • -nobrightmaps: disable loading of brightmaps

  • -nowidescreen: disable loading of included widescreen assets

  • fixed bad index check in CanWipe. This can be called with index == -1, which should check the first element of the intermission.

  • GC: Have a real finalizer stage for destroying objects instead of mixing them in to the sweep stage.

  • GC: Base GC rate on a running average of the allocation rate instead of basing it on the amount of time taken since the last sweep started.

  • More GC stats for better tweaking.

  • added characters U-0404 and U-0490 for Ukrainian language support.

  • reworked all accented characters of Doom's SmallFont. Also adding a few new ones that were easy to do

  • when converting to a portable install, flag the current session accordingly.

  • changed CalculateBones to receive the bone component data directly instead of the owning actor.

  • fixed FileExists check for -loadgame. This was done before the current savegame path was known so it always errored out.


ACC 1.59 Released

Posted by on at 12:34
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
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
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!