What's new in TDM 2.12: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 17: Line 17:
they can make a sensible portal design.
they can make a sensible portal design.
<br>The new culling optimizations make TDM far more resilient to maps with poor portal design and bad lighting practices.
<br>The new culling optimizations make TDM far more resilient to maps with poor portal design and bad lighting practices.
With this new optimization in place, new mappers shouldn't need to reach out to veteran mappers for assistance with performance so often.
<br>With this new optimization in place, new mappers shouldn't need to reach out to veteran mappers for assistance with performance so often.
</font>
</font>



Revision as of 03:15, 25 February 2024

Version 2.12 of The Dark Mod has not been released yet.

See the roadmap on our bugtracker.



The Dark Mod 2.12 Performance Edition!


A major focus for The Dark Mod 2.12 was to better handle light and shadow culling.
Mappers often have to carefully arrange visportals and adjust light radius values to ensure that invisible lights are not stealing performance from the scene.
Many times such optimization work looks nonsensical or requires mappers to rebuild their scene until they can make a sensible portal design.
The new culling optimizations make TDM far more resilient to maps with poor portal design and bad lighting practices.
With this new optimization in place, new mappers shouldn't need to reach out to veteran mappers for assistance with performance so often.







Important CVARS

PLAYER


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 to reduce some player movements.

HELPER


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

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

TROUBLESHOOTING


r_useLightPortalFlow, r_useLightPortalFlowCulling --- improved light-entity interaction culling. Most 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_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).


Graphics

  • 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 workaround on case by case basis (thread).
  • 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 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: dynamic decals still don't interact with lights.
  • Revised parallelSky lights and marked shadowing parallel lights as deprecated (thread).
  • 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 (6300).
  • 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.


AI

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


Mapping

  • Now light entities support noPortalFog spawnarg (6282).
  • Extended dmap diagnostics to info_portalSettings, improved editor descriptions (6224).
  • r_showportals 2 is easier to understand now
  • Added r_skipEntities cvar, similar to "filter entities" in DR.
  • Added editor spawnargs for volumetric light properties (6322).
  • Added "forceShadowBehindOpaque" 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 func_emitter entity.
  • Added setSmoke script event to change particle decl for a func_smoke.
  • Added hasInvItem script event to check if 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_*" spawnargs to change projectile properties after bounce.
  • Added mission.cfg as a temporary way for mission to override non-archived cvars (5453).

Coding

  • Upgraded libpng and rebuilt third-party packages.
  • Fixed some uninitialized values, float overflows and NaNs across the code.
  • Now several script addons can 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 cvar to modify all head bobbing settings (6310).


Assets

  • Added automatic turrets, to be combined with security cameras (Thread).
  • Added more covered furniture models (6289).
  • Added wall models from Seeking Lady Leicester (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

  • Frob controls have been reworked completely. Previously players were annoyed by having to do three presses to extinguish a light. Also, some player didn't even know that bodies could be shouldered and were limited with dragging bodies. Now simply clicking the frob button performs the action player needs most of the time, and pressing-and-holding the same button performs alternative actions like dragging bodies and extinguishing candles (thread).
  • Several aspects of mantling has been improved: overhead mantling has become faster, mantling over low obstacles is allowed while carrying an item or a body. Also it is possible to switch weapon while being on rope/ladder or mantling. Pressing crouch button on rope/ladder now starts slide-down immediately.
  • Some aspects of gameplay can be further simplified. Auto-search bodies is for players who don't want to waste time searching for keys and purses on guard bodies. Lockpicking "Auto" difficulty now indeed trivializes lockpicking (thread).
  • Leaning animation has been improved with lower head tilt (thread).
  • More settings to reduce camera bobbing/rolling/shaking, which is good for players who feel motion sickness from default camera animations.
  • Added vine arrows to the Training Mission (4352).
  • Optimized and fixed some issues with Tears of Saint Lucia


GUIs

  • Subtitles have been added to all AI barks ( Courtesy of Geeps 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, 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 & background alignment in mission lists (6337)
  • Support fonts aspect ratio correction (6283).
  • Added 30 FPS option to max FPS selection in settings menu.


Sound

  • Fixed bug that stereo sample plays for 2x duration due to length confusion.
  • Fixed WAV sounds playing in 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).
  • Added EFX Reverb to the Training Mission


See also