GZDoom 4.2.0 released.

Posted by on at 11:48
(32) Comments
A new release is available.

Notice: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 graphics card and supported OpenGL/Vulkan versions.

Get the downloads over at Github. The linked page will host all binaries that are ready.

  • Restored original vanilla behavior of Lost Souls' charging attack
  • exposed Append() method to ZScript dynamic array
  • fixed handling of the "ouch" face.
  • fixed an inconsistency with missiles bouncing off actors.
  • added option to print a map author's name on the summary screen
  • Adds option to use a rotation of quicksaves instead of having one quicksave slot that needs to be manually created.
  • allow switching the Strife conversation screen to the VGA font for all languages by a CVAR.
  • Added A_SoundPitch and an optional pitch parameter to A_PlaySound and S_Sound.
  • Hacx and Harmony now support localization
  • new supported languages: Czech, Finnish, Japanese, Polish and Serbian.
  • RenderUnderlay feature.
  • Attachable dynamic lights with ZScript or DECORATE.

  • fix a couple issues with sigil.wad:
  • e5m2: floating skulls disappear on lower skill levels
  • e5m4: the platform with the baron of hell that led to the invulnerability secret had a missing texture
  • fixed the extremely long standing bug that Lost Souls didn't reacquire their target when slamming into something.
  • fixed: The OriginalSmallFont must always be created, even when the actual SmallFont is not the IWAD default.
  • exposed Append() method to ZScript dynamic array
  • fixed: Do not use BasicArmor's save percentage when no armor present.
  • do not blur the background for portrait-less conversations.
  • fixed bad texture canvas checks when in truecolor software rendering.
  • fixed: in order to ensure that all font characters are of texture type FontChar it is necessary to clone the texture instead of changing its use type.
  • fixed: The frozen state was not reset when the global level variable was reset.
  • fixed handling of the "ouch" face.
  • fixed an inconsistency with missiles bouncing off actors.
  • fixed incorrect write barrier in sound sequence code.
  • fixed: Takedown of an expired HUD message did not properly detach it from the list.
  • call vkDeviceWaitIdle before RAII tears down buffers
  • fixed mouse coordinate checks when using the generic VGA font with Strife conversations.
  • Made reverb editor localizable
  • fixed buggy ArmorFactor behavior when set to a value other than 1.0
  • recreate Vulkan swapchain in case of surface lost error
  • added option to print a map author's name on the summary screen
  • added an option to always display the log and the subtitles with the generic font.
  • updated bzip2 to version 1.0.8
  • Adds option to use a rotation of quicksaves instead of having one quicksave slot that needs to be manually created.
  • allow switching the Strife conversation screen to the VGA font for all languages by a CVAR.
  • added ability to specify display duration of subtitles
  • fixed: The numcommands value in A_KoraxCommand needs to be decremented by one because the max parameter of the random function is inclusive.
  • Added A_SoundPitch and an optional pitch parameter to A_PlaySound and S_Sound.
  • fixed crash on player unmorph after falling death
  • for the map name on the automap, fall back to the original SmallFont if the actual one cannot print it.
  • use proper interface calls to give the initial BasicArmor to the player.
  • added the two missing subtitle texts for Strife.
  • added PSprite.bMirror flag to ZScript class definition
  • the fallback BigFont now can also be loaded by IWADs which declare themselves as GAME_Heretic or GAME_Hexen.
  • add +ZDOOMTRANS to BFGExtra in order to force classic transparency per user setting.
  • renamed zd_extra.pk3 to game_support.pk3
  • setup Harmony localization.
  • moved iwadinfo.txt to zd_extra.pk3. This removes the stock IWAD definitions for custom games that distribute the engine along with their data, so that it doesn't pick up on Steam and GOG installations and shows an inappropriate IWAD picker.
  • added the missing WISLASH for Hacx.
  • allow setting the font used for the status screen's content text.
  • adjustments for the level summary screen.
  • added Hacx localization support.
  • dynamic light definitions for Hacx.
  • fixed: The countdown for the subtitles display was never counted down so the messages remained forever.
  • Shape2D drawing will gracefully abort the VM on any out of bounds access.
  • added validation for presence of drop item classes
  • do not set crouch player sprites on voodoo dolls
  • fixed crash on starting ACS script without level
  • fixed LevelLocals.isFrozen() return value with JIT disabled
  • fixed missing dive and surface player sounds
  • Added RenderUnderlay.
  • added validation of LevelCompatibility.Apply() signature
  • User definable dynamic lights
  • updated bzip2 to version 1.0.7
  • added detection of macOS Catalina
  • fixed: endgame menu no longer resets player's userinfo
  • fixed incorrect implementation of "episode = clear" in UMAPINFO.
  • fixed incomplete parsing of UMAPINFO when map already exists
  • fixed missing skill menu for episodes defined by UMAPINFO
  • fixed: all UMAPINFO definitions were applied to default map slot
  • give UMAPINFO the ability to disable cluster-based exit texts.
  • restored indication of console scrolling
  • made console cursor fill whole character box
  • switched to unconditional level exit in scriptified actors
  • exported unconditional level exit to ZScript
  • compat_pointonline for doom2 map14
  • Fixed "if (!(lhs ~== rhs))" breaking with vectors.
  • localize custom menu titles in option search results
  • add nullptr checks for double-frame model interpolation
  • fixed: light mode from mapinfo had no effect
  • delay postprocess texture destruction until the end of the frame
  • fix wipe screen when using -loadgame
  • fixed crash on loading map in Hexen format without any nodes
  • added a linear transformation system to Shape2D so that things like rotations and scales can be changed without having to clear and push a large amount of data

LZDoom replacing QZDoom on the download page

Posted by on at 06:11
(7) Comments
Since there are no planned future "official" releases for QZDoom and it pretty much just serves as a beta test bench now, the decision was made to replace it on the download page with LZDoom.

LZDoom is a port created by drfrag in the community, and should serve as a more maintained code base than the Vintage version did. While it aims to keep feature parity with GZDoom with regards to modding features, it does lag behind quite a lot in renderer code. (So much so, in fact, that it can be used to run on older systems that GZDoom has long since deprecated).

Please keep in mind that LZDoom is independently supported, and the GZDoom team can only offer limited support. Its development is not directly supervised by the GZDoom team, so this should be seen as more of a simple alternative to GZDoom than a real "vintage build" for it. As always, if you need help getting things working, you can post in the tech forum and see if someone can help you!

Here is a quote from drfrag's post for LZDoom v3.82 that by itself will complete this post:
drfrag wrote:Fixes/features since 3.61b4
  • Fake splitscreen support: you need to enable the 'vid_activeinbackground', 'i_soundinbackground' and the new 'joy_background' cvars.
    Start two copies of LZDoom from different folders (e.g. with ZDL), one with -host 2 and another one with '-join'. You need a dual core CPU, you'll probably get the best results using software D3D and setting 'r_multithreaded' to 0. Set player two to use the gamepad (left stick to move, right one to look around) and give the focus to player one, works for DInput and SDL.
  • Gives a warning instead of error out on unsupported ZScript version (3.8.3), hacked to run most mods with the original fonts.
  • Support for SIGIL and NERVE as iwads.
  • More DOOM2 compatibility fixes.
  • Auto level compatibility is now optional by Enjay's request: 'sv_njnoautolevelcompat' cvar. Gives a warning on level load.
  • Fixed crash with Eviternity on level end.
  • Huge update with tons of stuff from GZDoom such as the JIT compiler for 64 bit.
  • Reminder: savegames in LZDoom are sorted by filename (slot), to restore the old order use the 'oldsaveorder' cvar.


Enjoy LZDoom!

GZDoom 3.8.2 Vintage Released

Posted by on at 05:25
(10) Comments
Notice: This might be the last vintage version.

Please note that the survey is currently closed. GZDoom 3.8.2 does not include the survey code that 3.5.0 did.

Download (Vintage, OpenGL 2.0)

  • bug fixes
  • fixed broken multiplayer
  • add dithering support to emulate higher BPC displays than your real one (from 3.5.1, requires GL 3.3)
  • improvements to Doom64 colouring (from 3.7.0, requires GL 3.3)
  • added RenderUnderlay

GZDoom 3.8.1 Vintage Released

Posted by on at 14:59
(4) Comments
This release contains a fix to an exploit - please update as soon as you can!

Notice: This might be the last vintage version.

Please note that the survey is currently closed. GZDoom 3.8.1 does not include the survey code that 3.5.0 did.

Download (Vintage, OpenGL 2.0)

  • bug fixes
  • added native double round(double) function
  • added a crosshair on/off toggle
  • cl_blockcheats 2 blocks cheats without showing any messages, useful for streamers who happen to be mappers/modders/etc
  • fixed Strife dialogues

GZDoom 4.1.3 Released

Posted by on at 12:07
(13) Comments
This release contains a fix to an exploit - please update as soon as you can!

Notice: There is currently no Vintage version planned for this release.

Please note that the survey is currently closed. GZDoom 4.1.3 does not include the survey code that 3.5.0 did.

Download (Modern, OpenGL 3.3 and higher)

  • bug fixes for both zscript and vulkan (the vulkan renderer is pretty much complete at this point)
  • added native double round(double) function
  • added a crosshair on/off toggle
  • cl_blockcheats 2 blocks cheats without showing any messages, useful for streamers who happen to be mappers/modders/etc

  • cleaned up SDL mouse event handling
    • Right/middle clicking no longer cancels out the mouse motion events
    • The events for the side mouse buttons (EV_GUI_BackButtonDown/Up, EV_GUI_FwdButtonDown/Up) were never fired
    • The EV_GUI_WheelRight/Left events were never fired
    • The key bindings for mouse buttons above 3 (from 4-8) were broken - pressing MOUSE4 would bind to MOUSE6, for example
  • fixed access to wrong event data in SDL backend - Wrong button state event data were read on mouse motion
  • report implicitly initialized variable in code generator once
  • added implicit initialization of reused register variables in ZScript
  • added null check for self pointer before calling a native function
  • removed erroneous assignment of dialog reply
  • language update
  • check for presence of fonts in message box menu
  • fix loadgame crash
  • fixed hires texture lookup in Doomsday style .pk3
  • fixed the write barriers for the HUD message linked list. To ensure that no broken relations occur, any change in the list must be handled by a write barrier, not just the single message that gets added.
  • FXAA_DISCARD should never be enabled. It only works when the output framebuffer is the same as the original.
  • fixed PlaySpawnSound call in A_ThrowGrenade
  • Really fixed arrays of dynarrays this time.
  • Cephes code is released under BSD license
  • implemented GPU vendor string assingment in Vulkan backend
  • added a third state for cl_blockcheats. ==2 now blocks them silently.
  • added native double round(double) function
  • reset internal console state on clear CCMD 'last line needs update' flag cannot be set when console is empty as there are no lines at all in this case
  • Fixed uninitialized variable in case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS does not exist. Old graphics (Intel Sandybridge Mobile, GL 3.0 Mesa) do not support this, therefore most of the time RFL_SHADER_STORAGE_BUFFER wasn't unset (I found no consequence of this on my machine, but better safe than sorry). Found out by Valgrind.
  • Fixed a buffer overflow with Timidity++ when playing Sigil e5m5 music.
  • Fix OBJ face normal direction
  • Inclusion of check symbol cmake's module.
  • Check for execinfo.h and add libexecinfo if needed Some systems (e.g. musl) do not have execinfo.h header. Check if libexecinfo (library that provides execinfo.h header and its functions) is installed in the system, and add its linker flag if needed.
  • Add support for musl-fts library
  • fixed fillSimplePoly for indexed data. On OpenGL this merely caused some visual glitches on the cheat automap - but the bad data in the buffer can make Vulkan abort entirely.
  • fixed crash when loading a saved game with unknown class During serialization, when map shutdown because of unknown class stored inside saved game may occur, level member is not assigned yet to already spawned thinkers
  • adjusted condition for ZScript global variable deprecation warning The message is always printed for any use of deprecated global variable If such variable is accessed inside a deprecated function from a core script lump, the message is printed only when verbosity level is set to highest
  • fixed missing deprecation warnings for ZScript global variables
  • fixed: version wasn't set for ZScript global variables
  • fixed code generation for ternary operator with vector result types
  • fixed crash on message output during decorate parsing Script position is now initialized at the very beginning of decorate parsing process Script position no longer contains uninitialized file name
  • Improved SMALLFONT letter Ч for Doom In its past appearance, the letter was based on the number 4, which looks inconsistent among all letters. This new one is a modified Y.
  • fixed conversation links with pages referenced by name
  • fixed 'Pause by <playername>' message in multiplayer
  • fixed wrong native call for Actor.Vec2Offset()
  • fixed character position assignment for multi-lump fonts
  • Fixing crash when loaded module, using proper function liberate them.
  • fixed loading of 32-bit TGA textures with alpha channel
  • removed array length() function from shadowmap shader
  • create a new error class for vulkan errors as they are only recoverable during initialization (unlike CRecoverableError which is recoverable during normal processing)
  • improve vulkan errors by including the status code returned by vulkan if they fail
  • add some debugging information for GZSDF pagenames feature
  • do not pass TObjPtr<> instances as ScriptUtil::Exec() arguments There was no read barrier inserted for AActor object while it's a subject of garbage collection Pointer stored in TObjPtr<> was reinterpreted as void* because of vararg function
  • fixed bad statnum in Light_Stop.
  • fixed text color setup for added console message.
  • allow certain replacements to be valid for CanPrint The Romanian letters with comma below, the second Greek Sigma variant and a few special Cyrillic letters have replacements that should not result in rejection.
  • don't run the custom shaders twice on screenshots
  • apply present shader on screenshots
  • made the colorset names and the texts in the color picker localizable.
  • fixed erroneous texture mipmapping in Vulkan render
  • implemented subtitle display for Blackbird's voiceover messages.
  • implemented subtitles for intermission slideshows.
  • changed menu scaling so that on 1366x768 a factor of 2 gets used.
  • renamed misplaced characters.
  • added European Portuguese to the menu. This is sufficiently complete with only some intermission texts and the Strife dialogues falling back to the Brazilian version.
  • Raven smallfont fixes
  • Force STATIC for internal GZDoom libraries
  • improved control over MoltenVK logging capabilities
  • added missing Latin characters to the Raven small font.
  • made "netevent cannot be used outside of a map" message a warning
  • added a crosshair on/off toggle
  • use one render pass for the entire scene or until postprocess or command buffer flushing forces it to end
  • avoid creating a new render pass if a pipeline bind will suffice
  • centralize how image transitions are done in the vulkan backend
  • transition scene images used for the screenshot to color attachment optimal before rendering to them

Downtime 2019/Jun/04

Posted by on at 02:02
(6) Comments
So, you know how when you live in an apartment, you can have nasty neighbors? The ones that keep you up at night and blast their stereo whenever you're sleeping or studying?

That's what had. We had a nasty neighbor move in. It's been moved to another host now, in the same datacenter, and hopefully we'll have nice neighbors.

I know the site was a little touch and go yesterday. Things have seemed to improve quite a lot after the migration. We were on a blade that had a neighbor who was overusing their resources and it caused us some major hassles. And me a lot of headaches. Hopefully this doesn't happen again. :)

GZDoom 4.1.2 Released

Posted by on at 09:46
(24) Comments
Notice: There is currently no Vintage version planned for this release.

Please note that the survey is currently closed. GZDoom 4.1.2 does not include the survey code that 3.5.0 did.

Download (Modern, OpenGL 3.3 and higher)

  • bug fixes and vulkan improvements

  • always apply vid_maxfps even when vid_vsync is on. Some users may override the application in their driver control panel and this helps stabilize their fps if they did it this way
  • SIMPLE is never ever defined for main.fp
  • fix stencil test not being active when applying SSAO to portals
  • fix some vulkan warnings
  • removed useless assertions
  • do not show par time when it's zero
  • fix validation error for shader input not declared by main.vp
  • fix model chasecam crash
  • Fixes for Door_AnimatedClose (#838)
  • fixed: The software renderer was accessing the global viewpoint in several places. Aside from using incorrect values this could crash the renderer if used in the very first rendering frame because the software renderer always operates on a copy.
  • fixed crash when VM exception is raised during entering a level
  • added missing newline to scriptstat CCMD output
  • fix wrong screenshot gamma
  • made DUMB library always static DUMB uses dumb_decode_vorbis() function from the main executable, so it failed to link as a dynamic library
  • made setting actor TID more explicit
  • Intel on Linux used the footnote in the standard saying a descriptor pool can become fragmented (thanks guys!)
  • fix command buffer invalidation bug when DynamicSet is updated
  • add fragment shader texture reading as an additional subpass external dependency
  • add vk_debug_callstack for getting the location where a vulkan warning or error happens
  • fix burn crash on vulkan
  • only write the warning if r_multithreaded has its default value
  • Write out a warning if std::thread::hardware_concurrency returns zero.
  • If the number of cores cannot be determined, turn of multithreading in the software renderer as it is most likely a low end system
  • added handling of GLSL noise() functions to Vulkan backend
  • removed obsolete snd_flipstereo CVAR
  • added missing compat flag CVAR for Strife railing
  • Greek Sigma character fallback The lowercase Sigma letter in Greek has two different forms (σ and ς), which changes depending on its placement in a word, but in uppercase and smallcaps contexts, it only has one look regardless of word positioning. If the character ς is missing, it should fall back to σ.
  • Accented Greek characters for Doom
  • fixed output of software renderers with Vulkan backend
  • moved greek characters to proper location
  • OpenBSD build fix. As FreeBSD, does not have malloc.h aligned_alloc stricly available since C++17/C11, using the local impl.
  • Fixed letter Ξ
  • Greek characters for Doom
  • fix mirror effect shader
  • fix wrong fog color used for ssao when using multisampling
  • move camtex depthstencil to VkHardwareTexture
  • Fix build on FreeBSD (#829) On FreeBSD malloc.h is deprecated. <cwctype> is needed for iswalpha.
  • rendering to texture requires a separate depth/stencil image as the image used by the main view may be using multisampling

GZDoom 4.1.1 Released

Posted by on at 15:41
(22) Comments
Notice: There is currently no Vintage version planned for this release.

Please note that the survey is currently closed. GZDoom 4.1.1 does not include the survey code that 3.5.0 did.

Download (Modern, OpenGL 3.3 and higher)

  • bug fixes and vulkan improvements

  • fixed deprecation warnings in core scripts
  • the light storage buffer is not dynamic
  • made Vulkan Cocoa view opaque
  • tuned internal MoltenVK settings for better performance
  • postponed destruction of Vulkan resources
  • fix vsync off with vulkan
  • release staging buffer after the frame it was used in
  • make the VkHardwareTexture and VKBuffer linked lists private
  • fix shutdown crash due to GetVulkanFrameBuffer returning null when VulkanFrameBuffer is destroyed
  • Fixed offsets for Esperanto letters.
  • add VulkanQueryPool and QueryPoolBuilder
  • add VulkanQueryPool::getResults
  • implement stat gpu on vulkan and fix it on opengl
  • use the exact sRGB->linear transfer function in HDR mode as the 2.2 gamma approximation is visibly inaccurate in this case
  • fixed saved game thumbnails generation with Vulkan renderer
  • fixed 'I' to 'i' upper-to-lower mapping
  • fix vulkan crash when changing resolution when using the software renderer
  • VMA_MEMORY_USAGE_CPU_TO_GPU does not require VK_MEMORY_PROPERTY_HOST_COHERENT_BIT to bet set. Current implementation requires this flag as vkFlushMappedMemoryRanges is never called.
  • call SetActiveRenderTarget before drawing the software renderer scene
  • fix vkGetQueryPoolResults: parameter dataSize must be greater than 0
  • brought back text length check for 'type on' HUD message
  • improved handling of HUDMSG_TYPEON
  • Fixed random generation of friendly obituaries

GZDoom 3.8.0 Vintage Released

Posted by on at 16:03
(16) Comments
Notice: This might be the last vintage version.

Please note that the survey is currently closed. GZDoom 3.8.0 does not include the survey code that 3.5.0 did.

Download (Vintage, OpenGL 2.0)

  • A few localization enhancements.
  • add 'cl_blockcheats' - useful for people who use debugging keys, allows a user to consciously turn off cheats without affecting the server
  • Punctuated the input strings in UpperCamelCase format, improving its appearance in the menu for upper/lowercase capable fonts
  • 'wait' console commands no longer execute inside the level, and can run during intermissions and outside the game
  • moved controls to submenus in "Customize Controls" menu
  • Implement page string names for dialog lumps
  • did a bit of cleanup on the option menus by regrouping some settings, especially splitting out of the Hardware Rendering Options menu into submenus.
  • fixed inverted logic for displaying the generic log in Strife.

  • scriptified P_CalcHeight. This was the only code using the ViewBob member variable. This also moves the range check for this variable to its application, because a badly behaved mod can just as easily change it at run time instead of just setting an absurdly large value in the class definition.
  • scriptified APlayerPawn's DamageFade handling.
  • scriptified A_SkullPop and ObtainInventory. These were the last relevant items to access PlayerPawn.InvFirst.
  • scriptified useflechette CCMD's item finding code.
  • scriptified the remaining PlayerPawn methods.
  • exported all native components of APlayerPawn.
  • Added Z + camera roll relativity for A_QuakeEx's QF_RELATIVE flag.
  • Added inflictor, source and flag parameters to GetModifiedDamage on actors and ModifyDamage on inventory. The flags are used by DamageMobj so modders can determine radius damage, for example, by checking for DMG_EXPLOSION.
  • removed extraneous parameter in SpawnPlayerMissile call in A_FireProjectile. The native variant has a MissileActor out parameter in this place, but in ZScript that's a secondary return value.
  • Add LookScale variable on weapon This variable allows a weapon to set a custom look sensitivity multiplier without fiddling with FOVScale / DesiredFOV hacks.

Details/missing stuff
  • Due to the old texture manager titles cannot be created from texts, no extended console font, no support for vga/generic fonts.
  • No extra lenguages with the new csv format (russian is partially working with missing console chars).
  • No new player menu.
  • No generic HUD.

GZDoom 4.1.0 Released

Posted by on at 02:07
(23) Comments
Notice: There is currently no Vintage version planned for this release.

Please note that the survey is currently closed. GZDoom 4.1.0 does not include the survey code that 3.5.0 did.

Download (Modern, OpenGL 3.3 and higher)

  • workaround buggy preprocessor in old AMD OpenGL drivers
  • fix bloom pass regression
  • fixed scale calculations for option menus.
  • implement custom post process shaders for vulkan backend
  • improve error handling during vulkan initialization
  • fixed inverted logic for displaying the generic log in Strife.

  • remove 320x240 from the list of resolution presets
  • enforce a minimum CleanXfac scaling in the menu to prevent accidental divide by 0's
  • fixed: The WideString conversion function was missing a null check.
  • consolidate minimum screen resolution so that it's easier to change
  • fixed scale calculations for option menus.
  • workaround buggy preprocessor in old AMD OpenGL drivers
  • fix bloom pass regression
  • fixed: ACS's APROP_ViewHeight needs to check if a real player is attached to a PlayerPawn.
  • fixed: Replacing a text image with actual text may only happen if the text comes from the string table.
  • implement custom post process shaders for vulkan backend
  • fix uniform aligment bug for vec3
  • Fix typo: add missing dollar sign in new stereo 3D submenu.
  • workaround for drivers that bug by never acquiring an image
  • fixed the calculations which decide whether to use an options menu for skills and episodes.
  • Localization helper code for level names that haven't been exported to the string table.
  • allow retroactive substitution of cluster texts
  • improve error handling during vulkan initialization
  • allocate new texture descriptor pool if it is full
  • remove the 6 layer texture descriptor set limitation
  • fix model shutdown crash
  • fix model rendering glitch
  • use Unicode font for deathmatch summary screen to bring it in line with the coop version.
  • Full character-set for Esperanto orthography.
  • use the Unicode font for the scoreboard.
  • changed the filter name for Doom IWADs
      It's "" instead of "doom.doom1/2" now.
      The config file's content will be renamed and for lump filtering a fallback has been added - note that you cannot combine both naming schemes! The old one has to be considered deprecated now.

      This also removes the duplicated content necessitated by the old naming scheme.
  • allow all DHUDMessage calls to substitute SmallFont
  • added VGA font support to the MessageBoxMenu class
  • fixed: PlayerEntered for bots should occur after Level->DoReborn
  • fix SubmitCommands bug if it no swapchain image was acquired
  • allow the automap HUD to use the VGA font.
  • removed unused mSmallFont.
  • fixed redundant map name display on alternative HUD's automap HUD.
  • allow using the VGA font for map name display on the alternative HUD.
  • cleaned out the unneeded scaling hacks from the HUD messages.
  • updated strings.
  • removed the rather pointless hud_althudfont CVAR and the tiny piece of code it activated.

    This was meant for using the VGA font in the alternative HUD but this never went beyond the Kill/Item/Secret display which isn't useful for localization.
  • allow all list menu items to fall back on the Unicode font for languages which are not supported by the bitmap font.

    This allows the primary menus to display Korean text without any further special handling.
  • enable Unicode font on cast call.
  • added generic font support for intermission text screen.
  • changed text scaling for intermission screen to ensure that long texts are not cut off.

    22 lines of text need to fit and to avoid packing the text too tightly onto the screen and have a little headroom, a virtual size of 400x250 is needed.
  • handle generic fonts on the summary screen.
  • added a few more character fallbacks and fixed the StringWidth function
  • added a "DeleteLumps" list to IWADINFO

    This is for IWADs that contain content which clashes with the engine and must be removed. The primary reason are the unimplemented characters in Raven's BigFont.
  • prevent excessively bright pixels as this is actually visible on a HDR monitor
  • apply vk_hdr immediately and delay initial swapchain creation until first image needs to be acquired
  • change SubmitCommands to handle all parts of the present
  • slightly adjust AcquireImage to avoid border cases in the spec
  • fixed crash in GLDEFS parser caused by missing texture
  • add raven bigfont exclamation points - and the spanish inverted one too
  • added message about missing texture for material definition
  • add optional hacx_gzdoom_stuff.pk3 to HacX's IWADINFO
  • added generic font support to the dialogue system.
  • fixed: Intel OpenGL did not quite recognize the "layout(location=0)" shader uniform definitions, so this had to be removed for OpenGL mode only so that Intel's compiler will continue to function normally for custom shaders.
  • make the switch between game and generic fonts automatic by adding a key value to the language table
  • fixed crash caused by broken saved game picture
  • added the missing Ò for Doom's and Chex Quest's Smallfonts.
  • added some UTF-8 utilities to FString.
  • European BIGFONT for Chex Quest This covers French, German, Italian, Portugese, Spanish, and Swedish. Also adjusts the offsets of the inverted exclamation and question mark for Doom (so that they are in line with the colon sign).
  • added Unicode aware MakeUpper/MakeLower functions to FString and ZScript's String and deprecated ToUpper/ToLower because their semantics did not allow fixing them.
  • added CharUpper and CharLower functions to ZScript.

    These, like MakeUpper and MakeLower, use the internal Unicode case conversion tables.
  • added monospacing support to Screen.DrawText and its native counterparts.
  • make sure that the global and default language tables are always separate, if some other tables is being attempted to be filled in along with them, these tables should be ignored.
  • when altering the default string table, make sure that all existing text for the given label is removed that comes from an older resource file.

    If this isn't done there can be a mix of content from different sources, depending on the language. It's better to have correct English text than unfitting localized versions.
  • Added support for monospacing alignment modes to HUDFont / BaseStatusBar.DrawString (#810)
    • Added support for monospacing alignment modes to HUDFont / BaseStatusBar.DrawString
    • added underlying type declaration for EMonospacing
    • replaced "#include v_video.h" with a declaration of EMonospacing
  • Added "const" qualifiers to the new UTF-8-aware string methods
  • Fixed conditions tested for when checking whether "Force respawn" or "Respawn protection" dmflags are enabled
  • reimplemented player setup as an OptionsMenu.
  • reset RF_NOINTERPOLATEVIEW when unpredicting a player.
  • Russian Chex font Made by @JNechaevsky! Also includes a new hyphen symbol used for Russian.
  • added all Latin letters to the Doom and Chex SmallFont for the Latin 1 Supplement plus everything needed from Latin Extended A for the WIP languages and a few more that were more or less waste products.
  • change the wrap mode for custom textures in custom postprocess shaders to repeat
  • implemented 'deletelumps' feature and add Chex Quest 3 texts.
  • update glslang to 7.11.3113 (stable release February 8, 2019). This fixes the SPIR-V validation error reported for the shadowmap shader
  • Move player crouch sprites.
  • Czech BIGFONT for Doom
  • add gl_ssao_debug mode showing the depth
  • added Korean and Portuguese to the language menu Also add an English name in parentheses to Russian and Korean so that people not fluent in these scripts know what they selected.
  • rename `vid_backend` to `vid_enablevulkan`. Also changed the CVAR from a 0-state enable to 1-state. So `vid_enablevulkan==1` enables vulkan now. This should be less confusing.
  • rewrite depthblur.fp to workaround what seemed to be a bug in the NVidia driver
  • add r_ticstability for a smoother experience playing mods with high think times
  • Polish BIGFONT for Doom
  • fix normal vectors on models
  • fixed menu caption for languages which use the VGA font.
  • adjustments to the player menu so that the display isn't cut off on the smallest screen sizes.
  • improve shader error handling and attempt to remove some bogus declarations
  • Portugese characters for Strife + minor BIGFONT fixes
  • fix shader timer not always being applied correctly
  • fix wrong model culling
  • implement VKBuffer::Resize
  • fixed: GetDisplayDeviceName must always pick a valid monitor.
  • fixed radius use in dynamic light traversal for models.
  • do proper checks for chat string length.
  • fixed uninitialized variable in scoreboard code.
  • reinstated the old clean scaling factor calculation just for the status bar.
  • fixed a few developer warnings.
  • re-added the menu option for wipetype which got lost in a recent menu reorganization.
  • Improved Doom SMALLFONT
  • removed InitPalette call from OpenGLFrameBuffer's constructor.
  • fixed allocation mismatch in WildMidi.
  • Dedicated Russian SMALLFONT for Chex
  • change drawcalls to measure the Apply time rather than the individual draw calls (Apply is what costs something on vulkan while the draw call queuing is so cheap its an uninteresting thing to measure)
  • change FRenderState to store directly to the StreamData struct. This simplifies the vulkan backend and also allows the OpenGL backend to use the same uniform block transfer strategy in the future.
  • fixed inverted logic for displaying the generic log in Strife.
  • fix wrong clamp mode used in OpenGL
  • fix sampler array size on Vulkan
  • do not mix game-specified fonts with the extensions for the stock version.
  • fixed parameter passing for SetMarineWeapon and SetMarineSprite.
  • always construct the original IWAD SmallFont. This is for printing localized messages without having to fall back on the VGA font.
  • synthesize a font remapping so that the IWAD SmallFont can be printed in the same color as a mod's. This is for cases where the font needs to serve as stand-in for an incomplete mod font so that it better blends in.
  • fixed outline color of most extended characters in the Doom SmallFont.
  • only use the Doom SmallFont extensions with the commercial IWADs.
  • automated the SmallFont selection based on a filter string in the language table.
  • fixed string prioritization when a mod replaces the default language for a given string.
  • fixed: The minimal window size was not calculated properly.
  • Sort language options

    Reorders the languages to appear in alphabetical order, adds an English keyword, and adds an accent mark to Portuguese.
  • added smarter font replacement logic to the confirmation screen.
  • fixed the internal name of the original SmallFont to be different from the real SmallFont. This necessitated creating a separate font object, even if it has the same contents.
  • added an OriginalBigFont as well.
  • use Obituary for both Demon and Spectre.
  • destroy SDL window on Vulkan to OpenGL fallback
  • fixed: RenderCommand::isCompatible failed to properly compare the SpecialColormap.
  • removed the MaxAmount fudging from MaxHealth.
  • updated UFMF-spec for UTF-8.
  • removed the leftovers of the removed savedamount variable.
  • mark NewPlayerMenu as protected.
  • fixed crash on JIT allocations over 1 MB
  • fixed missing null checks in JIT generated code