What's new in TDM 2.10: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
(41 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<!-- keywords whats new -->
<!-- keywords whats new -->
{{notreleasedyet|2.10}}
{{released|2.10|2022-02-28}}
See the [http://bugs.thedarkmod.com/roadmap_page.php roadmap] on our bugtracker.
See the [https://bugs.thedarkmod.com/changelog_page.php?version_id=91 changelog] on our bugtracker.
<!-- See the [https://bugs.thedarkmod.com/changelog_page.php?version_id=91 changelog] on our bugtracker. -->
<br>Source Revision 9853
<!-- {{released|2.10|XXXX-XX-XX}} -->
<font size="3"><pre>Note: As of TDM 2.10 only 64-bit executables are officially supported.
We still offer optional 32-bit builds but this may change in the future.</pre></font>
<font size="3">(For a more visually-compelling treatment of the improvements to each TDM release, see [https://www.moddb.com/mods/the-dark-mod/articles The Dark Mod’s articles on ModDB].)</font>
 


<br><br>
<br><br>
'''<font size="5">The Dark Mod 2.10 Load Time Improvement Release</font>'''
'''<font size="6">The Dark Mod 2.10</font>'''
<br><br>
<br><br>


<font size="3">TDM 2.10 addresses one of the oldest complaints about the project "Load Times".
<font size="3">TDM 2.10 addresses one of the oldest complaints about the project "Load Times".
<br>
<br>
<br>A lot of effort was put into '''optimizing loading''' times.
<br>A lot of effort was put into '''optimizing loading''' times.
* It includes: better integration of decompression, multi-threading, immutable texture storage, handwritten normal map compression and mipmap generation, removing artificial delays.
* It includes: better integration of decompression, multi-threading, handwritten normal map compression, immutable texture storage and mipmap generation, removing artificial delays.
* As the result, we even had to modify loading screens of some missions, because allocated 10% of loading time was no longer enough for a player to read the hint
* As the result, we even had to modify loading screens of some missions, because allocated 10% of loading time was no longer enough for a player to read the hint
<br>Generic '''performance improvements''' were done too
<br>Generic '''performance improvements''' were done too
* Most importantly, we fixed performance regressions since 2.07: rendering static geometry [https://bugs.thedarkmod.com/view.php?id=5598 (5598)] and soft stencil shadows with anti-aliasing.
* Most importantly, we fixed performance regressions since 2.07: rendering static geometry [https://bugs.thedarkmod.com/view.php?id=5598 (5598)] and soft stencil shadows with anti-aliasing.
* This hardly makes a difference, but it is nice to know that TDM can now use AVX instructions on Linux builds too.
* This hardly makes a difference, but it is nice to know that TDM can now use AVX instructions on Linux builds too.
<br>'''Volumetric lights''' can now be used on projected lights ( also known as "God Rays" )
<br>'''Volumetric lights''' can now be used on projected lights ( also known as "God Rays" ) [[Light_Properties#Volumetric_light | (Volumetric Lights Wiki)]]
* Unlike adding fake translucent geometry, the real volumetric lights automatically match their source light, including light volume geometry, projection & falloff texture, and even shadows.
* Unlike adding fake translucent geometry, the real volumetric lights automatically match their source light, including light volume geometry, projection & falloff texture, and even shadows.
  [[Light_Properties#Volumetric_light | Volumetric Light Wiki Page]]
<br>We made some changes to '''window / input''' systems. [https://forums.thedarkmod.com/index.php?/topic/20889-linux-testers-needed-new-window-management-and-input-handling/ (Thread)]
<br>We made some changes to '''window / input''' systems. [https://forums.thedarkmod.com/index.php?/topic/20889-linux-testers-needed-new-window-management-and-input-handling/ (Thread)]
* Most importantly, Linux build now relies on GLFW library to create window and handle keyboard / mouse, so a lot of the issues with OS integration on Linux should go away.
* Most importantly, Linux build now relies on GLFW library to create window and handle keyboard / mouse, so a lot of the issues with OS integration on Linux should go away.
Line 26: Line 29:
* Afraid to grab a candle near a sleeping guard? Hopefully, you will make less noise while moving objects in 2.10. And if you hold the creep button, the moved item will not make any noise at all.
* Afraid to grab a candle near a sleeping guard? Hopefully, you will make less noise while moving objects in 2.10. And if you hold the creep button, the moved item will not make any noise at all.
* Also, dragging unconscious bodies should feel better now. Rats slighty spoiled the joy of this improvement (rats often do), but hopefully it is fixed now
* Also, dragging unconscious bodies should feel better now. Rats slighty spoiled the joy of this improvement (rats often do), but hopefully it is fixed now
* Finally, now you can control how far a rock flies by holding throw button for a different amount of time.
* Finally, now you can control how far a rock flies by holding the 'throw' button for a different amount of time.
<br>'''Tooltips''' are now shown in the main menu.
<br>'''Tooltips''' are now shown in the main menu.
* Players will now have more detail about what settings do to sound, game-play, graphics, and performance
* Players will now have more detail about what settings do to sound, game-play, graphics, and performance
Line 35: Line 38:
----
----
<br><br>
<br><br>
== <br><br> <font size="4">'''Important CVARS'''</font> ==
=== <font size="4">GENERIC</font> ===
<br>
'''r_volumetricSamples''', '''r_volumetricDither''' --- quality settings of the new volumetric lights.<br><br>
'''tdm_show_menu_tooltips''' --- can disable tooptips in the main menu.<br><br>
'''r_frobOutlinePreset''' --- a command to switch between different preset styles of frob-highlight outlines. It modifies various outline-related cvars, setting them to predefined values.
<br>You can later adjust them individually.<br><br>
'''r_newFrob''', '''r_frob*''' --- a bunch of cvars for tweaking the new frob-highlight outline. Here are the main ones:
* '''r_newFrob''' controls surfaces highlighting
* '''r_frobOutlinePreset''' controls outline around highlighted objects
<br>
'''con_fontSize''', '''con_fontColor''' --- allows to adjust font of game console, e.g. make it smaller so see more text on one page.<br><br>
{{clear}}
=== <font size="3">DEBUGGING ONLY</font> ===
<br>
'''image_levelLoadParallel''', '''image_useTexStorage''', '''image_mipmapMode''' --- various switches to optimize loading times. We have already seen several issues caused by
<br>image_useTexStorage, and there may be more...<br><br>
'''tdm_drag_new''', '''tdm_drag2_*''' --- cvar to enable new dragging behavior, plus a bunch of cvars for tweaking how it works.
<br>If dragging, carrying, pulling or throwing does not work well, you can try switching tdm_drag_new back to 0 to see if the problem is caused by the new grabber code. <br><br>
'''r_spotlightBehavior''' --- changes the way how spotlights (projected lights) compute their light volume, and how projection and falloff textures are applied.
<br>If projected lights look wrong on a map, you may try a few options to see if this was broken by 2.10 or was wrong from the very beginning.
<br>Note: map restart is required for the change to take effect.<br><br>
'''dmap_compatibility''' --- switch some parts of dmap code to older algorithms which were used in previous version of TDM.
<br>Note that it does not perfectly reproduce behavior of old dmap, because it is too hard to put every improvement under "if".
<br>This cvar can be used to dmap an old map if you don't intend to rework it in major way (although you should still test it thoroughly if you want to release the newly dmapped version).


== <br> '''Graphics''' ==
== <br> '''Graphics''' ==


* The Entity limit has been virtually eliminated. With over 65K entities available, mappers will easily hit hardware limits before running out.
[[File:Volumetric demo.jpg|alt=Volumetric|Example of what a volumetric light looks like]]
* Volumetric Lights are here! ( also known as "God Rays" ) Now transparent textures and objects both cast shadows in the dusty \ foggy air!
* '''Volumetric Lights are here!''' ( also known as "God Rays" ) Now transparent textures and objects both cast shadows in the dusty \ foggy air! [https://forums.thedarkmod.com/index.php?/topic/21205-210-volumetric-lights/ (Thread)]
* '''The Entity limit has been virtually eliminated!''' With over 65K entities available, mappers will easily hit hardware limits before running out. [https://forums.thedarkmod.com/index.php?/topic/20825-210-entity-limit-removed/ (Thread)]
* RGTC Normal Map compression ( also known as ATI 3Dc ) is now complete! Both on-the-fly and pre-compressed loading works as well as keywords to force compression off
* RGTC Normal Map compression ( also known as ATI 3Dc ) is now complete! Both on-the-fly and pre-compressed loading works as well as keywords to force compression off
* Blurred reflective Tea Tray
* Reflective puddle material fixes
* Reflective puddle material fixes
* Some fog particles set to "sort last" so they properly render over water and windows
* Blurred reflective effect on the tea tray asset
* Some fog particles should now properly render over water and windows after being set to "sort last"


{{clear}}
{{clear}}
Line 81: Line 54:
== '''AI''' ==
== '''AI''' ==


* Significant improvements to Security Camera behaviors
* '''Significant improvements to security camera behaviors!''' [[Security_Camera_(2.10%2B) | Security Camera Wiki]]
* Sotha's "Automaton AI" from the Ulysses mission have been integrated
* Sotha's "Automaton AI" from the Ulysses mission have been integrated into the core assets
* Improvements to the Fire Elemental
* Improvements to the fire elemental


{{clear}}
{{clear}}
Line 93: Line 66:
* Dmap now has a diagnostic tool to identify "Location bugs". Now it will be easier to find broken locations
* Dmap now has a diagnostic tool to identify "Location bugs". Now it will be easier to find broken locations
* Spotlights are now reverted to 2.07 behavior and have been enhanced with clamping rendering to the volume
* Spotlights are now reverted to 2.07 behavior and have been enhanced with clamping rendering to the volume
* A new "Secrets" system has been created to easily design rewards for finding mission secret items or areas
* A new "Secrets" system has been created to easily designate mission secret items or areas and track them in the mission statistics! [[Secrets | Secrets Wiki]]
* PNG loading support has been added
* PNG loading support has been added
* Supported "set XXX on head" spawnarg on AIs.
{{clear}}
<br>
== '''Assets''' ==
* Sotha's Automaton AI model
* Wellingoncrab's extension to the "cabinet1" wooden furniture suite, both in models and prefabs
* Additional models and prefabs for setting up security cameras and related entities
* Improved success \ fail lockpick GUI images
* Improved player damage GUI overlay image
* Improved splash texture
* Most paintings now have torn skins
* Some missing normal maps for stone blocks textures added
* New unlit window textures
{{clear}}
<br>
== '''GUIs''' ==
* New mission install and start ( "Start this Mission" ) workflow!
* Subtitles support for briefings and ingame
* Tooltips for menu items
* EFX reverb volume slider
* Official support for mission gui customization ( rather than overriding the main menu gui )
* A few resolution and aspect ratio fixes
{{clear}}
<br>
== '''Gameplay''' ==
* Improved object manipulation and dragging
* Holding the throw button longer makes objects fly further
* New X-Ray vision feature for concealing and revealing objects [[Xrays]]
* Security camera has a follow the AI \ Player feature


{{clear}}
{{clear}}
<br>
== '''Sound''' ==


* New EFX Reverb strength support
{{clear}}
<br>


== '''Coding''' ==
== '''Coding''' ==
Line 109: Line 127:


     a) sys.VecRotate( vector vec, vector angles ) rotates a vector by a set of angles, allowing to match vectors such as offsets to an entity's current orientation.
     a) sys.VecRotate( vector vec, vector angles ) rotates a vector by a set of angles, allowing to match vectors such as offsets to an entity's current orientation.
     b) entity.getEntityFlag( string flag ) allows to find out properties about entities such as "notarget" (for the player entity) or "invisible".
     b) entity.getEntityFlag( string flag ) allows to find out properties about entities such as "notarget" or "invisible".
     c) $player1.getCalibratedLightgemValue() retrieves the current value of the lightgem, using the same weighting as AIs do.
     c) $player1.getCalibratedLightgemValue() retrieves the current value of the lightgem, using the same weighting as AIs do.
     d) entity.setSolid( boolean state ) allows to change the solidity of an entity at runtime. Note that it's still experimental.
     d) entity.setSolid( boolean state ) allows to change the solidity of an entity at runtime. Note that it's still experimental.
Line 121: Line 139:
* A generic hash table has been added to optimize lookup times
* A generic hash table has been added to optimize lookup times
* Additional Improvements
* Additional Improvements
   a) Supported "set XXX on head" spawnarg on AIs.
   a) Some LOD improvements, e.g. for lights.
  b) Some LOD improvements, e.g. for lights.
   b) Hot reload supports more of the popular spawnargs (i.e. without respawn).
   c) Hot reload supports more of the popular spawnargs (i.e. without respawn).
   c) In-game downloader can update the currently installed mission.
   d) In-game downloader can update the currently installed mission.


* The Tracy profiler has been integrated for better performance analysis
* The Tracy profiler has been integrated for better performance analysis
Line 130: Line 147:


{{clear}}
{{clear}}
<br>


== '''Assets''' ==
== <br><br> <font size="4">'''Important CVARS'''</font> ==
 
* Sotha's Automaton AI model
* Wellingoncrab's wooden furniture
* Additional models and prefabs for security camera setup
* Most paintings now have torn skins
* Improved success \ fail lockpick GUI images
* Improved player damage GUI overlay image
* Improved splash texture
* Some missing normal maps for stone blocks textures added
* Unlit windows


=== <font size="4">GENERIC</font> ===
<br>
'''r_volumetricSamples''', '''r_volumetricDither''' --- quality settings of the new volumetric lights.<br><br>
'''tdm_show_menu_tooltips''' --- can disable tooptips in the main menu.<br><br>
'''r_frobOutlinePreset''' --- a command to switch between different preset styles of frob-highlight outlines. It modifies various outline-related cvars, setting them to predefined values.
<br>You can later adjust them individually.<br><br>
'''r_newFrob''', '''r_frob*''' --- a bunch of cvars for tweaking the new frob-highlight outline. Here are the main ones:
* '''r_newFrob''' controls surfaces highlighting
* '''r_frobOutlinePreset''' controls outline around highlighted objects
<br>
'''con_fontSize''', '''con_fontColor''' --- allows to adjust font of game console, e.g. make it smaller so see more text on one page.<br><br>
{{clear}}
{{clear}}
<br>


== '''GUIs''' ==
=== <font size="3">DEBUGGING ONLY</font> ===
 
* New mission install and start worflow!
* Subtitles support
* Tooltips for menu items
* EFX reverb volume slider
* Official support for mission gui customization ( rather than overriding the main menu gui )
* A few resolution and aspect ratio fixes
 
{{clear}}
<br>
<br>
'''image_levelLoadParallel''', '''image_useTexStorage''', '''image_mipmapMode''' --- various switches to optimize loading times. We have already seen several issues caused by
<br>image_useTexStorage, and there may be more...<br><br>


== '''Gameplay''' ==
'''tdm_drag_new''', '''tdm_drag2_*''' --- cvar to enable new dragging behavior, plus a bunch of cvars for tweaking how it works.
<br>If dragging, carrying, pulling or throwing does not work well, you can try switching tdm_drag_new back to 0 to see if the problem is caused by the new grabber code. <br><br>


* Improved object manipulation and dragging
'''r_spotlightBehavior''' --- changes the way how spotlights (projected lights) compute their light volume, and how projection and falloff textures are applied.
* Holding the throw button longer makes objects fly further
<br>If projected lights look wrong on a map, you may try a few options to see if this was broken by 2.10 or was wrong from the very beginning.
* New X-Ray vision feature
<br>Note: map restart is required for the change to take effect.<br><br>
* Security camera has a follow the AI \ Player feature


{{clear}}
'''dmap_compatibility''' --- switch some parts of dmap code to older algorithms which were used in previous version of TDM.
<br>
<br>Note that it does not perfectly reproduce behavior of old dmap, because it is too hard to put every improvement under "if".
 
<br>This cvar can be used to dmap an old map if you don't intend to rework it in major way (although you should still test it thoroughly if you want to release the newly dmapped version).
== '''Sound''' ==
 
* New EFX Reverb strength support


{{whatsnew|sort=210}}
{{whatsnew|sort=210}}

Latest revision as of 05:57, 7 March 2022

Version 2.10 of The Dark Mod has been released on 2022-02-28.

See the changelog on our bugtracker.
Source Revision 9853

Note: As of TDM 2.10 only 64-bit executables are officially supported. 
We still offer optional 32-bit builds but this may change in the future.

(For a more visually-compelling treatment of the improvements to each TDM release, see The Dark Mod’s articles on ModDB.)




The Dark Mod 2.10


TDM 2.10 addresses one of the oldest complaints about the project "Load Times".

A lot of effort was put into optimizing loading times.

  • It includes: better integration of decompression, multi-threading, handwritten normal map compression, immutable texture storage and mipmap generation, removing artificial delays.
  • As the result, we even had to modify loading screens of some missions, because allocated 10% of loading time was no longer enough for a player to read the hint


Generic performance improvements were done too

  • Most importantly, we fixed performance regressions since 2.07: rendering static geometry (5598) and soft stencil shadows with anti-aliasing.
  • This hardly makes a difference, but it is nice to know that TDM can now use AVX instructions on Linux builds too.


Volumetric lights can now be used on projected lights ( also known as "God Rays" ) (Volumetric Lights Wiki)

  • Unlike adding fake translucent geometry, the real volumetric lights automatically match their source light, including light volume geometry, projection & falloff texture, and even shadows.


We made some changes to window / input systems. (Thread)

  • Most importantly, Linux build now relies on GLFW library to create window and handle keyboard / mouse, so a lot of the issues with OS integration on Linux should go away.
  • On the Windows side, some minor changes were made to fullscreen/borderless modes.


New implementation of object dragging / manipulation (Thread)

  • Afraid to grab a candle near a sleeping guard? Hopefully, you will make less noise while moving objects in 2.10. And if you hold the creep button, the moved item will not make any noise at all.
  • Also, dragging unconscious bodies should feel better now. Rats slighty spoiled the joy of this improvement (rats often do), but hopefully it is fixed now
  • Finally, now you can control how far a rock flies by holding the 'throw' button for a different amount of time.


Tooltips are now shown in the main menu.

  • Players will now have more detail about what settings do to sound, game-play, graphics, and performance


Tweaked starting new mission in the main menu

  • The old way of "installing" and starting missions was quite confusing for newcomers.
  • So we reorganized the main menu a bit, and now it is hopefully more intuitive.







Graphics

Volumetric

  • Volumetric Lights are here! ( also known as "God Rays" ) Now transparent textures and objects both cast shadows in the dusty \ foggy air! (Thread)
  • The Entity limit has been virtually eliminated! With over 65K entities available, mappers will easily hit hardware limits before running out. (Thread)
  • RGTC Normal Map compression ( also known as ATI 3Dc ) is now complete! Both on-the-fly and pre-compressed loading works as well as keywords to force compression off
  • Reflective puddle material fixes
  • Blurred reflective effect on the tea tray asset
  • Some fog particles should now properly render over water and windows after being set to "sort last"


AI

  • Significant improvements to security camera behaviors! Security Camera Wiki
  • Sotha's "Automaton AI" from the Ulysses mission have been integrated into the core assets
  • Improvements to the fire elemental


Mapping

  • The Dmap "map compiler" has been significantly optimized! Compile times are the lowest they have ever been! Dmap is also more precise!
  • Dmap now has a diagnostic tool to identify "Location bugs". Now it will be easier to find broken locations
  • Spotlights are now reverted to 2.07 behavior and have been enhanced with clamping rendering to the volume
  • A new "Secrets" system has been created to easily designate mission secret items or areas and track them in the mission statistics! Secrets Wiki
  • PNG loading support has been added
  • Supported "set XXX on head" spawnarg on AIs.


Assets

  • Sotha's Automaton AI model
  • Wellingoncrab's extension to the "cabinet1" wooden furniture suite, both in models and prefabs
  • Additional models and prefabs for setting up security cameras and related entities
  • Improved success \ fail lockpick GUI images
  • Improved player damage GUI overlay image
  • Improved splash texture
  • Most paintings now have torn skins
  • Some missing normal maps for stone blocks textures added
  • New unlit window textures


GUIs

  • New mission install and start ( "Start this Mission" ) workflow!
  • Subtitles support for briefings and ingame
  • Tooltips for menu items
  • EFX reverb volume slider
  • Official support for mission gui customization ( rather than overriding the main menu gui )
  • A few resolution and aspect ratio fixes


Gameplay

  • Improved object manipulation and dragging
  • Holding the throw button longer makes objects fly further
  • New X-Ray vision feature for concealing and revealing objects Xrays
  • Security camera has a follow the AI \ Player feature


Sound

  • New EFX Reverb strength support


Coding

  • Mission loading time has been significantly lowered!!!
  • Improved performance!!!
  • Linux window management has been significantly improved.


Now you can alt-tab to the desktop without causing the camera to be locked in place when you return to TDM
Windows Full-screen and Borderless support have also been improved

  • New script events have been added to the repertoire for use by mappers:
   a) sys.VecRotate( vector vec, vector angles ) rotates a vector by a set of angles, allowing to match vectors such as offsets to an entity's current orientation.
   b) entity.getEntityFlag( string flag ) allows to find out properties about entities such as "notarget" or "invisible".
   c) $player1.getCalibratedLightgemValue() retrieves the current value of the lightgem, using the same weighting as AIs do.
   d) entity.setSolid( boolean state ) allows to change the solidity of an entity at runtime. Note that it's still experimental.
   e) sys.getLocationPoint( vector point ) returns the location of a point in space.
   f) sys.pointIsInBounds( vector point, vector mins, vector maxs ) evaluates whether a point lies within a volume specified by 2 corner points.
   g) sys.getTraceSurfType() returns the type of surface the most recent trace has hit, such as "snow", if any.
  • GUI backend code has been refactored to be more stable
  • OpenGL changes to fix issues with older AMD graphic cards \ drivers
  • "Clear" in idLib now works according to the intended design
  • A generic hash table has been added to optimize lookup times
  • Additional Improvements
 a) Some LOD improvements, e.g. for lights.
 b) Hot reload supports more of the popular spawnargs (i.e. without respawn).
 c) In-game downloader can update the currently installed mission.
  • The Tracy profiler has been integrated for better performance analysis
  • The missions database has been moved to an SVN backend so that missions can be updated from one end-point and so that missions can be reverted if anything goes wrong during updates



Important CVARS

GENERIC


r_volumetricSamples, r_volumetricDither --- quality settings of the new volumetric lights.

tdm_show_menu_tooltips --- can disable tooptips in the main menu.

r_frobOutlinePreset --- a command to switch between different preset styles of frob-highlight outlines. It modifies various outline-related cvars, setting them to predefined values.
You can later adjust them individually.

r_newFrob, r_frob* --- a bunch of cvars for tweaking the new frob-highlight outline. Here are the main ones:

  • r_newFrob controls surfaces highlighting
  • r_frobOutlinePreset controls outline around highlighted objects


con_fontSize, con_fontColor --- allows to adjust font of game console, e.g. make it smaller so see more text on one page.

DEBUGGING ONLY


image_levelLoadParallel, image_useTexStorage, image_mipmapMode --- various switches to optimize loading times. We have already seen several issues caused by
image_useTexStorage, and there may be more...

tdm_drag_new, tdm_drag2_* --- cvar to enable new dragging behavior, plus a bunch of cvars for tweaking how it works.
If dragging, carrying, pulling or throwing does not work well, you can try switching tdm_drag_new back to 0 to see if the problem is caused by the new grabber code.

r_spotlightBehavior --- changes the way how spotlights (projected lights) compute their light volume, and how projection and falloff textures are applied.
If projected lights look wrong on a map, you may try a few options to see if this was broken by 2.10 or was wrong from the very beginning.
Note: map restart is required for the change to take effect.

dmap_compatibility --- switch some parts of dmap code to older algorithms which were used in previous version of TDM.
Note that it does not perfectly reproduce behavior of old dmap, because it is too hard to put every improvement under "if".
This cvar can be used to dmap an old map if you don't intend to rework it in major way (although you should still test it thoroughly if you want to release the newly dmapped version).


See also