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 12: Line 12:
<br>
<br>
A major focus for The Dark Mod 2.12 development cycle was to better handle light and shadow culling.
A major focus for The Dark Mod 2.12 development cycle was to better handle light and shadow culling.
<br>Stgatilov did all the code work on this, with the team and community providing testing and feedback.
<br>Mappers often have to carefully arrange visportals and adjust light radius values to ensure
<br>Mappers often have to carefully arrange visportals and adjust light radius values to ensure
invisible lights are not stealing performance from a scene.
invisible lights are not stealing performance from a scene.
Line 21: Line 20:
<br>Even experienced mappers may see performance improvements because the culling algorithm can work on a more granular level than
<br>Even experienced mappers may see performance improvements because the culling algorithm can work on a more granular level than
<br>traditional optimization techniques.
<br>traditional optimization techniques.
<br>(Stgatilov did all the code work on this, with the team and community providing testing and feedback.)
<br>
<br>
<br>A special thanks must go out to community member '''Geep'''!  
<br>A special thanks must go out to community member '''Geep'''!  

Revision as of 18:36, 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 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, 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.

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.
Daft Mugi has taken on the task of improving movement, mantling, and frob operations to make them more seamless and closer to Thief 1/2 behavior.
Dragofer has added native support for Turrets to TDM 2.12, in addition to many asset and code-change submissions.








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 for the reduction of some player movements.

HELPER


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.

TROUBLESHOOTING


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_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 a workaround on a case-by-case basis.
  • 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.


AI

  • 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).


Mapping

  • Light entities now support noPortalFog spawnarg (6282).
  • 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" 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.
  • Added mission.cfg as a temporary way for a 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.
  • 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).


Assets

  • 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

  • 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.
  • Added vine arrows to the Training Mission (4352).
  • Optimized and fixed some issues with the Tears of Saint Lucia FM.


GUIs

  • Subtitles have been added to all 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.


Sound

  • 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).
  • Added EFX Reverb to the Training Mission.


See also