PLAYERS
1) A lot of effort was put into optimizing loading times.
It includes: better integration of decompression, multithreading, immutable texture storage, handwritten normal map compression 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
2) Generic performance improvements were done too.
Most importantly, we fixed performance regressions since 2.07: rendering static geometry (5598) and soft stencil shadows with antialiasing.
This hardly makes a difference, but it is nice to know that TDM can now use AVX instructions on Linux builds too.
3) We made some changes to window / input systems.
Most importantly, Linux build now relies on GLFW library to create window and handle keyboard / mouse (thread), 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.
4) 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 throw button for a different amount of time.
5) New visual style for frob-highlighting objects.
This point is still surrounded by debates though (thread, poll), so the fate of the frob outline is yet uncertain.
6) Tooltips are now shown in the main menu.
Perhaps the text is not perfect yet, but this is a birth of the long-awaited feature!
7) 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.
MAPPING
1) Entity limit is no more (thread).
Well, number of entities is technically capped by 65536, but I don't think it can be reached by ordinary mapping. You should no longer use the insane tricks of the past striving to reduce the number of entities (unless the tricks have other benefits, of course).
2) Behavior of spotlights (projected lights) reverted back to how they worked in 2.07.
It means that the missions released before 2.08 should now look as intended. The sad thing is that the missions with projected lights tweaked for 2.08 or 2.09 are probably a bit off now.
Also, fixed a bug that spotlights illuminated surfaces outside their light volumes.
3) Security camera improved.
Security cameras have been reworked from the ground up with the aim of bringing them to the same level of polish as TDM's AIs, both when it comes to stealth gameplay and how mappers can work with them and customize them.
Most importantly, security cameras in new FMs will track the player once they catch sight of him rather than freezing in place, making them considerably harder to shake off. All the details can be seen on the wiki page.
4) Volumetric lights can now be used on projected lights (thread).
Unlike adding fake translucent geometry, the real volumetric lights automatically match their source light, including light volume geometry, projection & falloff texture, and even shadows.
Full description of available settings is available on the wiki page.
5) X-ray screens feature added.
This feature that was originally in Doom 3, has been reintroduced to TDM and developed further. The screens are able to change the appearance of entities seen through them, even making them appear or disappear if desired. Look out for them in future Inventors Guild and magical themed FMs.
You can find the thread here with links to the relevant wiki articles. l
6) Added a system for tracking secrets.
Now it is easy to set up, with no custom scripts required. They'll also be shown on the mission statistics screen at the end of the mission, if the FM uses the new system.
More can be read on the wiki page.
7) Main menu GUI has been reworked to allow more customization.
Mappers can change music, background, disable screens in the uniform way. Debriefing videos work exactly as briefing videos do. The same customizations can be applied to ordinary missions and separately to every mission in campaign. You can find more details in guis/mainmenu_custom_defs.gui inside tdm_gui01.pk4.
A lot of the released missions were updated to use the new customization system (thread). Which unfortunately means that their customizations won't work in 2.09 and earlier versions anymore.
8| Dmap times have been reduced (thread).
Optimizations were made all over the dmap code, adding some new algorithms and data structures. Of course, the time difference varies between maps.
As a side product, precision has been improved in a few places.
9) Added location diagnostics to dmap (thread).
Setting up location entities and separators is an error-prone process, and previously there was no good way to find the error. Now dmap will post warnings and even produce pointfiles in case something is wrong with locations, similar to already existing visportal diagnostics.
10) Added native support for PNG image format.
Now PNG images can be used in materials. In some cases PNG is a good alternative to TGA for uncompressed images. Note however, that loading PNG is slower than loading TGA, and we have yet to discover if this is a problem or not.
As a side note, DDS images can now be used in image programs, although doing so is discouraged because of additional loss of quality due to compression.
11) Subtitles can now be assigned to sound files (thread).
While implementation is a bit raw yet and needs to pass test of time, subtitles have already been added to Saint Lucia prebundled mission. Note that we did not consider localization of subtitles yet (localization as a whole is in weird state in TDM).
Full description is available on the wiki page.
12) 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" (for the player entity) 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.
*) Some other improvements:
a) Supported "set XXX on head" spawnarg on AIs.
b) Some LOD improvements, e.g. for lights.
c) Hot reload supports more of the popular spawnargs (i.e. without respawn).
d) In-game downloader can update the currently installed mission.
ASSETS
1) Automaton AI from Ulysses mission by @Sotha have been added to core, together with new prefabs for (cosmetic) recharging stations to include in patrol routes and a camera screen showing what the automaton sees.
2) @Wellingtoncrab contributed a whole new suite of fancy wooden furniture pieces including prefabs. They can be viewed in their release thread.
PROGRAMMING
Some interesting things happened on programming side too.
First of all, the limited GL profiling has been replaced with Tracy profiler, which has its own cool viewer. It has greatly helped us in our optimization efforts.
More technical stuff: generic hash table has been added, Clear in idlib method now works as most programmers expect, unit tests integration has been improved.
Another major event that happened this year is migration to the new mission database, based on SVN repository. Hopefully, there will be less confusion about mission updates, and old versions of FMs will not be lost anymore.