What's new in TDM 2.11

From The DarkMod Wiki
Revision as of 18:33, 13 January 2023 by Nbohr1more (talk | contribs)
Jump to navigationJump to search
Version 2.11 of The Dark Mod has not been released yet.

See the roadmap on our bugtracker.



The Dark Mod 2.11

TDM 2.11 is a major bugfix release. Longstanding problems with stealth scoring, load\save crashes and
visual glitches when changing loading or menu screens have gotten overdue repairs or improvement.

Dragofer deserves extra credit for fixing hundreds of assets and ensuring that the console is mostly free of useless warning messages
due to these asset bugs. Along the way, hundreds of asset submissions from both team members and forum members that the TDM team
hadn't had time to quality check and\or complete have been added to the project.

In line with the theme of fixing longstanding issues, Obsttorte developed a new Blackjack system that doesn't rely
on physically moving the player arm through a rotation arc and instead uses a trace to the destination target and adaptive animation.

Finally, stgatilov performed so many major performance improvements this release it could probably also be considered a "performance release".
Included in the long list of performance improvements is an improvement to the visual quality of the new Volumetric Lights so that players no
longer need to increase the number of samples to an absurd value to get a smooth visual gradient (thus killing performance).


PLAYERS


  • Volumetric lights appeared late before the previous beta, so the quality of volumetrics in 2.10 was rather poor, and the dithering pattern was very annoying to look at.


The feature received a lot more development, and now adheres to the standards of modern rendering.
The dithering pattern is gone, performance should be much better, and now you won't miss volumetrics even if you prefer to play with stencil shadows all the time! (thread)

  • Thanks to a certain "AI-heavy" mission, the game code has received major optimizations.


It is most noticeable in low performance conditions, when game modelling takes a lot of CPU time.
Previously the game could easily descend into the "spiral of death" with FPS falling below 5, now it is way harder due to better scheduling of AI thinking.
There is a variety of other game code optimizations which make our lives slightly better.

  • New version includes several optimizations for shadows, mostly stencil shadows.


A long-standing inefficiency of stencil shadows with antialiasing is fixed, new tile-based optimization is added for soft stencil shadows (thread),
small lights with large meshes work faster due to BVH efforts (thread).
On the side of shadow maps, the rules for distributing the resolution budget are changed: small distant lights no longer steal precious bandwidth for themselves.

  • There are several improvements on gameplay side as well.


The core mechanics of blackjacking enemies has received subtle, yet helpful improvements (thread).
Now you can grab many close pieces of loot by holding down the frob button, instead of picking up each item individually.
There are several improvements to crouching, making it more responsive (thanks to @Daft Mugi).
The in-game downloader now supports "sort by release date" ordering.

  • There were a ton of small bugfixes for issues like: bow stuck after load, wrong strafe-walk sound, crash when saving shortly after the death of an elemental,


issues with leaning onto doors, missing fracture sounds after loading a save, X-ray glitch in the first frame, toggling solidity/visibility, etc.


MAPPERS

  • The engine now supports OBJ model format.


This format is much more popular than ASE and LWO. The engine loading code is very lightweight: it will use your model exactly is as, and load it very quickly.
The OBJ format is preferred for large meshes due for faster loading times.
The only possible downside is somewhat larger download size compared to LWO, although not much and not always (thread).

  • Renderer should deal with large meshes much faster, thanks to BVH optimizations.


Recall that idTech4 was made for very low-poly models. When renderer frontend sees a "surface" in a model, it always treats this surface as an atomic piece,
doing all computations for all of its vertices and triangles.
This is very good for low-poly models, can heavily drag performance down with large meshes, as several recent missions noticed during beta.
The BVH data structure breaks every surface into smaller chunks, allowing renderer to quickly cull away whole chunks.
This makes a big difference in case of large meshes (e.g. terrain) lit by many small lights (thread).

  • You no longer have to write frob-highlight stages in materials, since they are added implicitly.


The problem with these stages was that were very easy to forget, which resulted in no highlight on frobable items.
Also it increased cognitive load and scared mappers away.
While writing frobstages is no longer necessary, the old stages work just fine. So mappers can still customize frob-highlighting if they really want to (thread).

  • It is now legal to override a single decl of core game in your mission.


Recall that "decl" means a material, a skin, an entityDef, a particle, etc.
Note that overriding a whole file from core game always worked as expected, but overriding a single decl from a file did not work reliably before (despite the common belief that it should).

  • The major cleaning of shaders resulted in some changes in lighting model.


The aim was to make TDM lighting closer to the standard Phong model, and make it more logical in general.
The changes should rarely make a big difference, aside from probably stronger specular (thread).

  • Added error-reporting to the GUI scripting engine.


Implementing GUI scripts is very hard, error-prone, and confusing. Aside from surprising differences in Doom 3 GUI behavior compared to e.g. Javascript in DOM,
a lot of confusion was caused by total lack of any error handling whatsoever!
In the new version, all possible errors should result in easy-to-understand console warnings, so writing correct GUI is much easier.
Also, we fixed a few features, and added a few new ones to the GUI engine (thread).

  • dmap command received minor improvements.


Yet another big rewrite happened for T-junctions fixing code, since it took tremendous amount of time on one mission. Also a few precision improvements were made.

  • Other small fixes and additions:
   added script functions getAnimRate / setAnimRate for tweaking animations
   added script function setObjectiveNotification for silent objective change
   added script function getCurInvItemCount for interaction with inventory
   added script variable "AI_ENEMY_TACTILE" to the base AI scriptobject, which is true whenever the AI is in tactile range of an enemy
   added spawnarg absence_alert_increase for loot items as a proper substitute for absence_alert, giving control over how much an AI gets alerted if that piece goes missing
   added spawnargs allow_idle_anims / allow_random_headturning for customization during a running mission, useful i.e. for cutscenes
   AIs notice broken fracture entities
   trigger_multiple now works on stationary AIs
   almost doubled tracemodel limits, raising the restrictive limits for making collision meshes for moveable items
   door movers can now call "used_action_script" whenever something like a key, lockpick or other item is used on them, if they have the spawnarg "call_used_action_script" "1".


ASSETS

  • Many new assets from capable creators in our community have been incorporated into the core assets. These include:
   Loot assets:
       Detailed coins and ingots with accompanying lore. Link
       Ancient loot items suitable for museums, collectors and ancient sites, first seen in the Volta series.
       A tiling treasure hoard texture for those with unimagineable wealth.
       6 detailed book skins including 3 that are lootable, a first for TDM. Link
   Security assets
       Highly detailed standing and wall safes - with or without an accompanying combination lock. Link
       The combination "safe lock" is now part of core assets and can be operated by either scrolling or frobbing. Mappers no longer need to track down this asset and include it with their FM files as a custom asset.
       Wall-mounted locks in the style of those commonly found in the original Thief games.
       Camgoyle sentry, a magical stone guardian based on the security camera shooting magical projectiles at the player, first seen in Written in Stone. The prefab also includes a power source pedestal. Link
   Fully useable audiograph for playing recorded sounds, first seen in the Accountant and Shadow of Northdale missions. A new full-featured scriptobject makes them easy to implement and control via spawnargs. Wiki
   Furniture assets
       Posh upholstered armchairs and sofas for the wealthiest nobles. Link
       A new high-detail grandfather clock with a working scriptobject and a mantle clock. Link
       A gothic-style cabinet. Link
   Office assets
       Including bundled stacks of paper, blueprints, a letter, crumpled paper, waste bins, an end table and an ornate table.
   Nautical assets
       Full-scale modular ship prefabs with interiors, allowing anyone to assemble a ship for a nautical mission in a matter of seconds. 1 merchant galleon and 2 smaller sailing ships are available. Link Link Link
       A large galleon ship wreck in 2 pieces for those sailors who have met an unfortunate end.
   Decorative assets
       An impressive multi-tiered wall fountain, first seen in the mansion in Noble Affairs.
       A new pair of marble lion statues. Link
       A standing stone menir with carved symbols on it, ideal for pagan missions. Link
       Stone pedestal with purple cloth for presenting valuable items.
   Textures
       High-resolution cobblestone textures for detailing the streets of TDM. Link
       Starry wallpaper.
   Lamps
       A set of 6 bronze vintage lamps has been added for particulary posh establishments. Link
       Thief-style charge post streetlamp.
   A new open-top carriage, the barouche. Link
   Miscellaneous other models, including: wall planter, 7 small "foliage" herbs, 2 mine carts, 6 shop signs, equippable feather duster and 5 decor plates
  • We fixed all loading warnings on all existing assets.


This became possible after creating an automatic map generator which forces the engine to load all assets from every group.
All the references to missing files are fixed too, which means a variety of assets have become available:

   Old noblewoman skin, plain mage robes skin, moor helmet, electrical arcs, stone window decals (5178), yellow banner skin (5563), wine barrel (Link), grass particles (5689), lampion lights and more graffiti decals.


PROGRAMMING


Under the hood, we updated third-party libraries, and moved to Visual Studio 2022.
The "Debug With Inlines" configuration was split into "Debug Editable" (with hot-reload support) and "Debug Fast" (fastest debuggable).
Marking the final step in transition to tdm_installer, the old tdm_update program is finally removed, with TDM packaging code extracted to standalone program.







Important CVARS

GENERIC


r_volumetric* --- for tweaking volumetric light algorithm (if defaults are not good enough).

tdm_blackjack_indicate --- raise arm up to indicate when blackjacking can result in KO.

pm_mantle_roll_mod --- allows to tune down motions during mantling.

tdm_multiloot_min_interval, tdm_multiloot_max_interval --- configures timings for multiloot grabbing feature.

teleportArea --- command to quickly find a visportal area with specified index.

TROUBLESHOOTING


r_modelBvh* --- configures all BVH-related optimizations. r_modelBvhBuild is the "kill switch".

r_softShadowsMipmaps --- enables the new bandwidth optimization for soft stencil shadows.

com_useMinorTics --- enables AI interleaving optimization for low FPS.

r_useParallelAddModels --- old optimization also known as "Frontend Acceleration", enabled by default in beta211-03. r_frobDefault* --- controls addition of implicit frob-highlight stages.

decl_fix_mission_override, decl_skip_redefine_warning --- controls the rules for decl overrides.

dmap_tjunctionsAlgorithm --- new dmap optimization in FixGlobalTJunctions function.

dmap_disableCellSnappingTjunc, dmap_aasExpandBrushUseEdgesOnce --- enables dmap changes for better numeric stability.

Graphics


AI


Mapping

Coding


Assets


GUIs


Gameplay


Sound

See also