Raze 1.9.1 released

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

  • account for resorted directories when accessing the local file path array in file_directory.cpp

  • fixed autoaiming. The WW2GI pistol check was completely wrong. :(

  • perform music volume lookup by lump number instead of name. This way any setting will work for both short and long file names.

  • do music volume adjustment by modifying the raw waveform data to get around the clamping of AL_GAIN.

  • fixed: The generic sound loader for SNDINFO must use S_LookupSound to match the feature set of the game specific code.

  • added missing null check in clipmove. This only very rarely triggered for Blood's projectiles, no other things use this code path.

  • Duke: Fixed statnum for the geisha statues.

  • RR: fixed bad destination name for one Route66 sound

  • Blood: fixed cutscene sound not playing when starting a map from the console.

  • RR: Set Route66's Gator's size explicitly. The CON code for this sets its correct size with 'sizeto' which is an animating instruction so it is clearly visible when they shrink to their proper size.

  • internal FileSystem rewrite.

  • RR: fixed typo in spawn list.

  • RR: fixed secret trigger reporting.

  • fixed: Resource IDs for sounds must be unique. If an ID gets used it must be taken off any other sound that has it.

  • SW: fix vertical spread for the Uzi

  • fixed case mapping for Georgian script.

  • Duke: fixed keycard colors on alt. HUD.

  • Exhumed: fix crash on bad player animation sequence.

  • Duke: remove setting the xflip flag for sprites rendered in a mirror. The new renderer handles this internally so this flag will just un-flip the sprite again.

  • fix ChangeLevel when called for ending the game.

  • reverted some unstable changes from 1.8.x.


Raze 1.8.1 released

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

  • Exhumed: do raw serialization of FreeListArray.

  • SW: fixed coolie death animation.

  • Blood: fix ammo count for 2 items.

  • Don't inline `M_Calloc()` calls because GCC is shit.

  • Duke/RR: fixed player dying when falling from great heights while god mode being on.

  • Duke: Remove `incur_damage()` from dispatcher.

  • Duke: Use `checkp()` in `ParseState::parse()` to remove some duplicated code.

  • gave translations a dedicated scripted type.

  • Exhumed: Return early in `movesprite()` if the actor's sector is null.

  • Exhumed: fix handling of angles for the queen's eggs when colliding with a wall.

  • Exhumed: Clean up push factor in `runlist_CheckRadialDamage()` for players.

  • Exhumed: Always perform a range check on a sequence's length.

  • Exhumed: fixed radial damage push factor.

  • Exhumed: sanitize stupid implementation of UpdateEnemy and fixed bad use of it for the queen's eggs.

  • Consolidate Exhumed's `nCamerapos` and SW's `DSWPlayer::si` into something inside `DCorePlayer`.

  • bumped minimum OS version to 10.13 in .plist file

  • Blood: draw the powerup overlay on the alt HUD as well.

  • Duke: fixed breakable ceilings.

  • renamed $conreserve to $resourceid.

  • added some awful hackery to handle the different offsetting of Blood's native voxels vs. those imported via .DEF.

  • Make some utilities in `vectors.h` available as constexpr.

  • Duke: fixed bad loop index in gamevar init code.

  • cleaner handling of SW's panel sprites

  • Base all player structs on a common base class.

  • initial script exports for Blood, including some static data tables

  • retrieve time in fillSummary.

  • move kill/secret management into the shared code

  • moved all Is***Sprite function to animatesprite.cpp because that's the only place they still get used from.

  • Blood: get rid of the mirror struct and related data. This is a relic of Polymost.

  • renamed atfields in gib.cpp

  • took a hint from Blood-RE and replaced that awful reconstructed sorting function with the qsort call it most likely originally was.

  • consider swvoxfil.txt a known name for SW mods.

  • Duke: Fixed WT fallback for classic sounds in cases the user data does not exist.

  • fixed clipping range of artificially split sectors.

  • Exhumed: fixed sprite positioning issues

  • Vulkan backend updated.

  • zlib replaced with miniz.

  • FileReader is now 64 bit capable.

  • jpeg replaced with stb-image.

  • fix incomplete palette generation for paletted rendering.

  • added new Zoom variants of DukeDC and Vacation add ons.

  • added WebP and QUI image support

  • added missing cyrillic у (small U) for Blood's SmallFont

  • fixed broken character fallback for cyrillic T.

  • consolidated the 4 ReadSound functions.

  • controller handling improvements

  • use stb_sprintf.

  • cleanup on the sound init code.

  • macOS version detection overhaul.

  • SW: remove redundant ; in sector object serializer.

  • RRRA: Mama Jackalope's poison cloud did no damage

  • -fixed: tilenum 0 is a valid image for flat and wall sprites.

  • Blood: fixed bad scaling in viewBurnTime.

  • RR: spawn the correct player class.

  • remove lots of unneeded SAVE_CODE and SAVE_DATA declarations.

  • SW: migrate state functions to the VM.

  • give SW's sounds proper names and move their definition out of the EXE.

  • fix crash in RR when dying with an item-less weapon.

  • NOSHADOW flag.

  • fixed missing handling for BADGUYSTAYPUT flag.

  • fixed: The MVE player ignored the initial sound playing state.

  • Duke: for camera textures, set `display_mirror` to 2, not 1.

  • Blood: clear gHitInfo when starting a level.

  • Duke: clear resource ID when setting up the original sounds for World Tour.

  • Duke/RR: Use the exact same trajectory for autoaiming and the actual attack hitscan for the pistol.

  • Duke: Allow view tilting for RRRA vehicles on separate CVAR.

  • Duke: Convert RRRA's vehicle HUD tilting to a DAngle.

  • Allow roll input through the packet system, giving us 6DOF for VR usage, etc.

  • check for NOGRAVITY in 'fall'.

  • only declare the weapon gamevars for WW2GI.

  • made fallspecial game independent and eliminated all the wrapping and callback weirdness with fall.

  • clean out RRRA move flags in the CON parser for the other games.

  • added map flags to enable RR's special sector types in Duke as well.

  • use the symbolic constants for ST_160 and ST_161 in the last remaining places where they hadn't been put before.

  • eliminated lots of direct tile references in spawn() calls.

  • Exhumed: Change formula for `cl_exviewtilting 2`.

  • Exhumed: Move `UpdateCreepySounds()` into `MoveThings()` so its processing time can be clocked.

  • Exhumed: Move `bobangle` global into Player struct.

  • Exhumed: Move `updatePlayerTarget()` call back to main ticker loop.

  • Exhumed: Setup detection for Steam version.

  • Exhumed: Sequence refactor

  • Duke: fixed hitscan spread for enemies

  • Add more GOG registry search paths

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

  • renamed temp_data[0] to 'counter' and map temp_data[5] to the now free temp_data[0].

  • migrate all script related info to the data stored in the actor classes.

  • added the action, move and ai properties.

  • got rid of the g_t pointer in the CON interpreter.

  • moved actioncounter and curframe to a dedicated variable.

  • refactored AI storage as well to not use ScriptCode anymore.

  • moved 'move' data out of the ScriptCode array as well.

  • moved actions out of the ScriptCode array and gave them a dedicated struct with meaningful member names.

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

  • Duke: fixed pitch calculation for explosion sounds.

  • validate statnum before spawning an actor.

  • Blood: fixed bad damage scaling in ConcussSprite

  • cleaned up Duke's very broken kill count system.

  • fixed swapped language IDs for Norwegian and Dutch.

  • Allow disabling of level start/end cutscenes if a user desires.

  • Update player camera angles right before drawing a frame.

  • Move `invertmouse` CVARs into common code.

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

  • Duke/RRRA: Fix HUD tilting when reversing motorcycle backwards.

  • Ensure `GameInput::Clear()` clears the entire object.

  • Don't loop through all joystick axes and zero them in `I_GetAxes()`.

  • Only scale the mouse input in `GameInput::processMovement()`, where it's needed.

  • Remove `GameInterface::getConsoleAngles()`, it's not needed anymore.

  • Make `scaleAdjust` a float since it's what's needed anyway.

  • Internalise `InputPacket` used in movement functions.

  • Move all mouse handling into `GameInput` class.

  • Initial conversion of game input into class `GameInput`.

  • Relocate `processCrouchToggle()`.

  • Rearrange bools in `processVehicleInput()`.

  • Move `PlayerAngles` constants into the class.

  • make RR's ingame thunder effect not depend on having seen one specific texture.

  • Exported all of Duke's actors

  • Exhumed: Backup actor location in `BuildAnubis()`.

  • Exhumed: Rename last argument in `seq_MoveSequence()` to `nFrame`.

  • Duke: Ensure we backup player angles and not just pos when loading a save.

  • Blood: Fix potential null actor access in `gi->CanSave()`.

  • Duke: Fix potential null actor access in `gi->CanSave()`.

  • Remove backend crouch toggle solution redeploy with Duke/Exhumed/Blood using new `ESyncBit` bit.

  • Inline the remainder of `InputState` methods.

  • Move remaining mouse CVARs from `inputstate.cpp` to `gameinput.cpp`.

  • Move `HIDInput` struct from `inputstate.h` to `gameinput.h`.

  • Use an `FVector2` inside `HIDInput`.

  • Eliminate the duplicate mouse storage since we have things in the right spot now.

  • Move all mouse CVARs from `inputstate.cpp` to `gameinput.cpp`.

  • Move remaining CCMDs and non-inputstate related items to `gameinput.cpp`.

  • Stop passing `inputBuffer` around within gameinput.cpp since everything's local now.

  • Move `ApplyGlobalInput()` into `gameinput.cpp`.

  • Make the turbo turn functions static within `gameinput.cpp`.

  • Move Duke's vehicle input processor into `gameinput.cpp`.

  • Duke: Make vehicle input code work generically for possible reusage.

  • Duke: Merge vehicle input code into one function.

  • Duke: Move RRRA vehicle tilting out of the input code and into the playsim.

  • Remove the mouse input negation out of the event handler.

  • Remove now-unneeded inline wrapper `getHidInput()`.

  • Recover two `ESyncBit` values for other uses.


GZDoom 4.11.3

Posted by on at 20:26
Notice: The survey is currently CLOSED. GZDoom 4.11.3 contains no survey code. This version will not prompt you to submit your hardware info.

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

Download (OpenGLES 2.0 and higher)

(note: Linux AppImage is not being published, for now, due to issues - use the portable build instead, or flathub when it becomes available)


  • Fixes a critical savegame bug discovered in version 4.11.2



GZDoom 4.11.2

Posted by on at 17:23
Notice: The survey is currently CLOSED. GZDoom 4.11.2 contains no survey code. This version will not prompt you to submit your hardware info.

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

Download (OpenGLES 2.0 and higher)

(note: Linux AppImage is not being published, for now, due to issues - use the portable build instead, or flathub when it becomes available)


  • Further fixes from 4.11.1, most importantly the Boom generalized crusher bug



ACC 1.60 Released

Posted by on at 12:54

Full Changelog:



GZDoom 4.11.1

Posted by on at 20:18
Notice: The survey is currently CLOSED. GZDoom 4.11.1 contains no survey code. This version will not prompt you to submit your hardware info.

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

Download (OpenGLES 2.0 and higher)


  • Fixes from 4.11.0, ties up loose ends, to have a solid release overall before the transition to the next major release



GZDoom 4.11.0

Posted by on at 18:37
Notice: The survey is currently OPEN. GZDoom 4.11.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

Download (OpenGLES 2.0 and higher


  • Several new languages: Danish, Norwegian, Swedish and Turkish

  • cleanup of Doom's and Chex Quest's small font to use proper character heights for international support.

  • extended all fonts to be capable of handling all European languages which are in common use.

  • DSDHacked support.

  • The build system was transitioned to optionally use vcpkg, which allows building GZDoom on Windows by running a single batch file.

  • WebP and QOI support for textures.

  • sanitized the light mode selection to make it a first class mapping feature by separating map dependent light mode setup from performance related user preferences for the default setting.

  • Linux: GTK startup now offers all the options of the Windows variant

  • lots of new ZScript features.


  • screen size settings are now properly saved.

  • fix UMAPINFO boss action clearing.

  • MBF21's BOSS flag now implies NORADIUSDMG.

  • remove memory leak in `A_ChangeModel`

  • fix OpenGL ES selection on the windows startup dialog


  • Changed the variable type of Crossed3DWater. Seems like there was some kind of oversight. Crossed3DWater is an F3DFloor pointer, not sector_t.

  • Add ZScript constants used by FallAndSink

  • Switch to miniz from zlib

  • fix for Genesis of Descent E1M2, which is impossible to complete on ITYTD/HNTR. I had to decompile the ACS script to figure out what was going on, basically at one point you get locked into a room and have to kill exactly 3 enemies with TID 215 for the door to unlock. One of these is a Baron tagged for only Medium and Hard, in his place is an Imp #1184 that has all the right script setups but is not set to appear on any difficulty. The fix is to simply have this imp appear on Easy.

  • fixed the overlapping sector handler in hw_fakeflat.cpp. This picked the wrong plane as the proper texture cutoff.

  • fixed: The UDMF loader did not adjust the floor/ceiling overlap state after processing UDMF sector plane properties.

  • fixed: EV_DoDonut checked the wrong compatibility variable and missed all map specified flags.

  • Fix gameinfo load from same directory as file containing gameinfo lump

  • validate partner seg index in LoadGLZSegs before using it

  • added compatibility handler for Phocas Island 2 MAP01.

  • fixed doublebind check with automap. For the automap C_DoKey gets called twice, once with the automap bindings and once with the regular bindings and doubleclicks.

  • clear the Dehacked string table after passing it to GStrings. For some reason std::move does not work here so make sure it won't stick around.

  • stop all cutscenes before the ENDOOM screen.

  • fixed: Boom's generalized crushers must stop 8 units above the floor. This required changing the special, so a new one was added to avoid altering Generic_Crusher.

  • Fix a very rare crash with complex Polyobjects

  • add support for not localizing some text functions, and modify menu text fields to use this

  • let Dehacked set the implicit missile flags.

  • fix ammo consumption of powered up Phoenix Rod.

  • add unexplored secret color for overlay automap to the menu

  • made all FileReader implementations 64 bit capable.

  • added a nomirrors compatibility handler and applied it to Conf256's CONF55 map. This is for disabling broken plane reflection setups.

  • When compat_floormove is enabled prevent sector floor from lowering if a thing is stuck in the ceiling (vanilla behavior)

  • fixed M_GetSavegamesPath for Linux.

  • Add Inventory::ModifyBob and Inventory::ModifyBob3D

  • Expose OF_Transient to actors as bNoSaveGame

  • add StartGameDirect function

  • fixed: MBF21's BOSS flag implies NORADIUSDMG.

  • fixed: For Dehacked, A_CPosAttack needs to use a hard coded attack sound. This discrepancy is ancient, so the approach used for the shotgunner does not work here and some hacks are needed to remap the function only for Dehacked.

  • implemented the remaining dynamic structures of dsdhacked

  • dsdhacked: Allow dynamic creation of new actors

  • dsdhacked: allow dynamic creation of new states.

  • add float.equal_epsilon and double.equal_epsilon

  • Allow building gzdoom with Vulkan with either X11 or Wayland WSI integration through CMake options

  • use stb-image for JPEG decoding because the old library provides no advantage over it.

  • Allow disabling colors for NameAllKeys

  • avoid high stack usage in anmtexture.cpp

  • added DSDA's passover/nopassover keys to the MAPINFO parser.

  • use a string pool to store all filenames and in the file system. this avoid lots of small allocations for data that will released in bulk later.

  • use the lump cache directly for FileData. This was the final puzzle piece to allow using memory mapped files in the future.

  • use better hash function in the file system. This is djb2 which is supposedly one of the best string hashing functions around.

  • rewrote dir CCMD using ScanDirectory and avoiding I_ChDir entirely.

  • use ScanDirectory in all places where the findfile API was used.

  • WebP image support

  • added safeguards against very early access to console variables in Cocoa backend

  • Add support for QOI image formats

  • block the centerview CCMD if the player has TOTALLYFROZEN. This is deliberately done this way, instead of placing the check inside PlayerPawn::CheckPitch, because there may be other situations where we don't want to block the centering function (APowerFlight::EndEffect being one such case)

  • replaced zstrformat with stb_sprintf.


  • Add Weapon::ModifyBobLayer , Weapon::ModifyBobLayer3D and Weapon::ModifyBobPivotLayer3D

  • allow explicit casts between vectors of different underlying types

  • Fixed BlockingLine giving erroneous results

  • add CountSectorTags/CountSectorTags/CountLineIDs/GetLineID

  • Exported reflection functionality. Localized reflection code to a single function. Fixed an error where NOSHIELDREFLECT was being checked on the wrong Actor. Fixed an oversight where MIRRORREFLECT was checking for valid target despite not needing one.

  • Added ShadowAimFactor and ShadowPenaltyFactor. These properties allow to specify how much an actors' aim is degraded when shooting at a shadow actor. And how much the shadow actor itself affects the shooters' aim, respectively.

  • Added MF9_SHADOWAIMVERT. This flag causes the vertical aiming of monsters to also be affected when they aim at shadow actors.

  • Added MF9_SHADOWBLOCK. Actors in the line of fire with this flag trigger the MF_SHADOW aiming penalty. The shooter needs to have MF9_DOSHADOWBLOCK to check for actors with this flag.

  • Added MF9_SHADOWAIM. This flag allows actors with MF6_SEEINVISIBLE to still get an aim penalty by trying to shoot at a shadow actor.

  • Added damage property to earthquakes.

  • Added damage and thrust multipliers to quakes.

  • Added QF_DAMAGEFALLOFF. This flag makes it so that the damage and actor thrusting of earthquakes fades with distance like the screen shake effect does.

  • Added (XF/RADF)_CIRCULAR. This flag makes explosions use a spherical radius, instead of a cubic one. Only took almost 30 years.

  • Added (XF/RADF)_NOALLIES. This flag allows explosions to not harm any actors that are friendly to its' source.

  • Added (XF/RADF)_THRUSTLESS. This flag allows for explosions that do not thrust any of the actors caught in the blast.

  • Allow custom MessageBox menu selector

  • Individual Joystick Enable/Disable Toggles

  • add QualifiedName to VMFunction and allocate these static names from the class data memory arena instead of using FStrings.

  • null pointer type checks in the VM added to avoid crash on bad codegen.

  • Expanded Service's Get<Type> functions to pass in `name` parameter.

  • Added GetName(UI/Data) to Service class.

  • make all legacy light modes except 'Doom' and the software rendering emulation MAPINFO only. A CVAR still exists for testing but its value won't be saved to the config.

  • MAPINFO can not enforce any of the two software light modes, as low end users require the option to change this to the 'performance' setting.

  • changed lightmode menu options: user can only select between "performance', 'software' and 'vanilla'. 'performance' is the old 'Doom' mode which is still needed to speed things up on low end hardware.

  • fix the ammocount parameter in Weapon.CheckAmmo

  • fix UMAPINFO boss action clearing. This did not handle the case where the actions were cleared without adding new ones and also did not clear the MBF21 boss action flags.

  • remove memory leak in `A_ChangeModel`

  • made some changes to vectors.h so that it can be used without the floating point function replacements.

  • Add Voodoo Zombie Compatflag

  • remove `vid_gpuswitch` and all its handling; it is only as of now useful in old versions of Windows 7/8/10 which are no longer supported

  • added `MaxEffectTics` field to `Powerup`

  • adapted font system to properly handle Turkish. Those i's are really messy, especially when dealing with allcaps or pure lowercase fonts.

  • made D_WriteUserInfoStrings memory safe.

  • Fix TArray allocating 0 bytes in constructor

  • Add dynamic lights to software slope drawer

  • use uniform buffers for dynamic lights everywhere. Branching on SSBO content does not work that well on NVidia so it is better disabled. So far only implemented for OpenGL Vulkan needs more work.

  • Fix Software Slope Rendering for non-1.2 pixel ratios

  • add the flags MINVISIBLE and MVISBLOCKED

  • Extend pseudo-generics system used by maps to dynarrays

  • add RedirectCVAR directive for loading alternate maps based on a Bool CVAR setting

  • Fixes bones when using OpenGL 3.3 (UBO bone data)

  • validate the buffer size in HWViewpointBuffer::Set2D.

  • Fixed a bug where calling an invalid virtual function would cause a crash.

  • Add cvars to sprite shadows progressively according to thing <-> floor distance

  • Added OnEngineInitialize() for static event handlers

  • cleanup of the Doom and Chex Quest small fonts' discritical characters

  • Implement antialiasing for automap lines

  • Map::GetIfExists and Map::CheckValue

  • Fixed global TerrainDef array not being exported correctly

  • alt HUD: use `NewSmallFont` for drawing player's coordinates if `ui_generic` is enabled

  • Increase slider precision for mouse sensitivity settings

  • Use a slider to allow specifying max FPS with more precision

  • Check all ACS functions for minimum number of arguments.

  • Fixed SpawnForced not respecting the minimum declared in zspecial.acs. (viewtopic.php?t=77027)

  • Exported LinePortals to ZScript

  • cleaned up the pitch management in the sound backend. This now treats all pitch methods equally instead of the preferential treatment of Doom's original pitch hack. Most importantly, the sound channel now stores the pitch as a floating point value instead of 9.7 fixed point.

  • snd_pitched now also gets checked in the sound engine, not the low level interface.

  • Fix Y position of characters in monospace fonts

  • Added all of the missing player cheats to the SetPlayerProperty special.

  • Added APROP_WaterDepth.

  • Converted A_Quake(Ex) intensity parameters from ints to doubles.

  • Add missing error for mapinfo tonemap

  • Add Tonemap support for Unclamped lighting mode

  • Add Alternate Light Blending Options

  • gldefs: update Freedoom definitions.

  • CCMD listmaps: Colorize maps loaded from pwads in blue text

  • Fix MapIterator<X, String>::GetValue

  • Fixed a bug where static events would fail to halt propagation.

  • Fix diffuse-only material shaders not applying.

  • Add sv_noplayerclip to allow players to walk through and shoot each other (only in coop)

  • optimized sheet font texture generation. Instead of reloading the base image over and over again, let's cache it so that less time is needed for each single character.

  • changed CreatePalettedPixels to allow return of static pixel data without reallocation and copying.

  • fixed buffer size checks for raw textures.

  • Prevent important messages from being accidentally filtered.

  • Updated the WOPN banks collection

  • Added FlyBob Multiplier for Player

  • Added WaterClimbSpeed Property to Players

  • Fixed custom screen height and width not saving.

  • Additional lock-related ZScript functions.

  • Key.IsLockDefined: returns whether a lock number is valid (can be unlocked) or belongs to a "does not work" door.

  • Key.GetMapColorForLock: returns the automap color for a lock number (or -1 if the lock isn't valid).

  • Key.GetMapColorForKey: likewise, but for a specific key.

  • Fix FxMultiAssignDecl type

  • fix OpenGL ES selection on the windows startup dialog

  • Multi-Assign Declarations

  • Fixed the ACS PLAYERINFO_FVIEWBOB to be a bool instead of a double.

  • Add vulkan pipeline cache

  • Update and clean up UE1 model loader.

  • Expose StripLeft and StripLeftRight to ZScript

  • Fix StripLeftRight

  • Error out instead of crashing for vector out variables

  • optimizations for the sound system and texture manager.

  • Added FOV Interpolation

  • Added toggle control for weapon bob while flying

  • add BobWeapon3D

  • Exposed Box and PointOnLineSide

  • Add support for Vector types as properties

  • removed bogus errno check from Dehacked parser.

  • Fixed IsActorPlayingSound's default argument

  • Fix wrong assumptions about actor initialization in Map/MapIterator

  • fixed GC::FullGC not collecting everything anymore.

  • extended all fonts to contain all characters used by European languages

  • Fix Quicksave Rotation

  • Add all the functionality from the win32 startup window to the GTK version


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! :)