What's new in TDM 2.12

From The DarkMod Wiki
Revision as of 05:14, 28 March 2024 by Nbohr1more (talk | contribs) (→‎Gameplay and Interaction)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
Version 2.12 of The Dark Mod has been released on 2024-03-03.

See the changelog on our bugtracker.
Source Revision 10651

The Dark Mod 2.12 Performance and Interaction Edition!

A major focus for The Dark Mod 2.12 development cycle was to better handle light and shadow culling.
Mappers often have to carefully arrange visportals and adjust light radius values to ensure invisible lights are not stealing performance from a scene.
Many times, such optimization work looks nonsensical and requires mappers to rebuild their scene until they can make a sensible portal design.
The new culling optimizations make TDM far more resilient toward maps with poor portal design and bad lighting practices.
With this new optimization in place, new mappers will have greater leeway when optimizing their missions.
Even experienced mappers may see performance improvements because the culling algorithm can work on a more granular level than
traditional optimization techniques.
(Stgatilov did all the code work on this feature, with the team and community providing testing and feedback.)

Another major focus for this development cycle was to improve player controls, movement, and gameplay settings.
Concerning controls, new players were often unaware that bodies could be shouldered or that candles could be extinguished.
To address that, the frob controls were redesigned to be more context sensitive. First, the more common actions were mapped to the primary frob action.
Second, a new frob action, hold frob, was created for alternate actions.
Concerning movement, certain view movements were uncomfortable to some players.
To address that, the angles and speeds for leaning and mantling were adjusted to feel more natural and responsive.
Also, menu settings for head bob and mantle roll were added.
(Daft Mugi did the majority of coding on these changes, with the team and community providing testing and feedback.)

A special thanks must go out to community member Geep!
Over the course of 2.12 development, Geep has created Subtitles for nearly all AI barks
along with developing testing tools and procedures for this gargantuan task!
Geep also provided substantial feedback for our GUI and Subtitle design process and edited font data to improve text quality overall.

stgatilov added some enhanced visual features to subtitles so you can determine which AI is speaking when there are multiple speakers
Joebarnin identified a 2.11 bug that prevented arrows from colliding with AI and objects at certain angles and sent us a patch to fix it.
Dragofer has added native support for Turrets to TDM 2.12, in addition to many asset and code-change submissions.

See our Feature Discuss Threads for more details about substantial changes.

Important CVARS


tdm_holdfrob_* --- set of variables that affect the reworked frob controls.

tdm_autosearch_bodies --- automatically take items attached to unconscious bodies on frob.

pm_headbob_mod, pm_lean_* --- allows for the reduction of some player movements.


tdm_show_viewpos, screenshot_viewpos --- embedding viewpos into screenshots for better bug reports.

tdm_open_doors, tdm_close_doors --- cheats to make mission testing faster.


r_useLightPortalFlow, r_useLightPortalFlowCulling --- improved light-entity interaction culling. It has a major effect on shadows. This cvar is responsible for causing light leaks with stencil shadows, please report all of them! (thread)

r_useNewRenderPasses --- selects from several renderer backend code paths. This is similar to the old r_useNewBackend cvar, which has been deleted.

r_shadowMapSinglePass --- faster code path for filling shadow maps.

r_useEntityScissors, r_animationBounds --- improved bounds estimates for rendered entities.

r_skipEntities, similar to "filter entities" in DarkRadiant

r_postprocess_dither --- new dithering in tonemap postprocessing for less color banding.

r_shadowMapAlphaTested --- experimental mode for alpha-tested surfaces with shadow maps, where transparent areas of texture don't cast shadows.

s_realTimeDecoding --- selects code path for decoding sound samples.

tdm_subtitles_* --- many cvars for subtitle improvements (location cue, duration extension, debug text).


  • Optimized generation of light-entity interactions in rendering frontend. Also greatly optimized shadow processing, especially for moving lights. Unfortunately, many existing missions are not compatible with these changes, so you might see light leaking through walls (mainly with stencil shadows). Please report all such cases; we'll apply a workaround on a case-by-case basis. New_light_leaks_in_2.12
  • The "old" and "new" rendering backends are finally merged into one. It is as nice to program as the new backend, and as old-fashioned and reliable as the old backend. Single-pass shadow maps are enabled by default and now respect noselfshadow.
  • Materials with polygonoffset now interact with lights. So static decals can have bumpmap and specular lighting. Note, however, that dynamic decals still don't interact with lights.
  • Revised parallelSky lights and marked shadowing parallel lights as deprecated.
  • PNG image format now behaves equally to other supported formats. In particular, it is not required to explicitly specify its extension, and it can be referenced directly in GUI code.
  • Added functions min/max to material expressions, which can be useful for clamping.
  • Fixed minor culling bugs on animated entities and enabled entity scissors by default.
  • Reduced color banding for fog with some dithering at tonemapping stage.
  • Fixed and revised underwater "double vision" effect.
  • Finally, our C++ code can compress and decompress all texture formats we use, meaning that we no longer depend on occasionally buggy/slow vendor implementations.


  • Added automatic turrets, to be combined with security cameras (Thread).
  • Fixed some issues with the moor AI (6345).
  • Added the canCloseDoors spawnarg on AI, which allows mappers to block closing only (6460).


  • Light entities now support noPortalFog spawnarg (6282).
  • Added mission.cfg as a temporary way for a mission to override non-archived cvars (5453).
  • Extended dmap diagnostics to info_portalSettings, improved editor descriptions (6224).
  • r_showportals 2 is now easier to understand.
  • Added r_skipEntities cvar, similar to "filter entities" in DR.
  • Added editor spawnargs for volumetric light properties (6322).
  • Added "forceShadowBehindOpaque" (entity based ) hack to workaround shadow leaks in old missions (5172).
  • Added "forceAllShadowsBehindOpaque" ( worldspawn \ global ) hack to workaround shadow leaks in old missions (5172).
  • Can set spawnarg "douse 0" on damageDef to not extinguish lights from splash damage.
  • Added setFrobMaster script event.
  • Added script-based stim type, which triggers only when stimEmit script event is called.
  • Added on/off script events to the func_emitter entity.
  • Added setSmoke script event to change particle decl for a func_smoke.
  • Added hasInvItem script event to check if the player has some item.
  • Added launchGuided script event to start guided projectiles.
  • Added getInterceptTime script event for shooting projectile and running target.
  • Added "bounce_sound_min|max_velocity" spawnargs to control projectile bounce sounds.
  • Added "postbounce_*" spawnarg to change projectile properties after bounce.


  • Upgraded libpng and rebuilt third-party packages.
  • Fixed some uninitialized values, float overflows, and NaNs across the code.
  • Several script addons can now coexist and work independently (thread).
  • Default value of com_maxfps increased from 144 to 300.
  • Improved idEntityPtr, fixed some warnings.
  • Simplified flee script event, supported fleeing from non-actor entity and fleeFromPoint.
  • CFrobLock now supports script events: Lock, Unlock, ToggleLock, IsLocked, IsPickable (6329).
  • Added a cvar to modify all head-bobbing settings (6310).
  • Area references are stored as Indexes rather than Pointer lists


  • Added automatic turrets, to be combined with security cameras (Thread).
  • Added more covered furniture models (6289).
  • Added wall models from the Seeking Lady Leicester FM (6293).
  • New and fixed versions of atdm:lamp_electric_square_3_lit_unattached (6315).
  • Fixed UV map on Stove models (6312).
  • Added forest models from The Valley abandoned mission.
  • Improved Merry Chest prefabs (6459).
  • Improved normal map of long banners (6355).
  • Fixed overbright skins for nature bushes (6478).
  • Fixed grandfather_clock_victorian_01 model (6383).
  • Tweaked fogging of health potion.

Gameplay and Interaction

  • Frob controls have been reworked completely. Previously players were annoyed by having to do three presses to extinguish a light. Also, some players were not aware that bodies could be shouldered and were limited to only dragging bodies. Now simply clicking the frob button performs the action that players need most of the time, and pressing and holding the same button performs alternative actions, such as dragging bodies and extinguishing candles (thread).
  • Several aspects of mantling have been improved: overhead mantling has become faster, mantling over low obstacles is now allowed while carrying an item or a body. It is now also possible to switch weapons while being on a rope, ladder, or while mantling. Pressing the crouch button while on a rope or ladder now immediately starts a slide-down.
  • Some aspects of gameplay can be further simplified: The auto-search bodies setting is for players who don't want to waste time searching for keys and coin purses on AI bodies. Lockpicking "Auto" difficulty now simplifies lockpicking (thread).
  • The leaning animation has been improved with lower head tilt (thread).
  • Added more settings to reduce camera bobbing/rolling/shaking, which is good for players who feel motion sickness from default camera animations.
  • Optimized and fixed some issues with the Tears of Saint Lucia FM.


  • Subtitles have been added to all current AI barks!!! ( Courtesy of Geep, with a few additions by Datiswous and MirceaKitsune )
  • Further improvements of subtitles: revised location and font to avoid overlapping with other GUI elements, added directional cue, and better slot allocation. Each subtitle is now displayed for at least one second even if the sound is very short.
  • Supported -durationExtend for inline subtitles (6262).
  • Fixed text and background alignment in mission lists (6337)
  • Support for fonts aspect ratio correction (6283).
  • Added 30 FPS option to max FPS selection in the settings menu.


  • Fixed bug that stereo sample plays for 2x duration due to length confusion.
  • Fixed WAV sounds playing in the main menu; all sounds are streaming now (6330).
  • Fixed wench AI sounds (6284).
  • Player footstep sounds have been rebalanced. Metal and water sounds were especially painful previously.
  • Removed pause from looping sound machinery/machines/m3_loop (6384).

See also