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) Highlights:
- 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
Details
- 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