1. Devlog XVIII: AUREUS Game optimization and technical improvements
  2.  
  3. Ave, citizens of Rome.
  4.  
  5. With the release of Update 2.0 of Citadelum (Devlog XVII: RUBICON Huge gameplay update and new features in Citadelum) we have dedicated much of the efforts to improve the optimization. At the end of the devlog you will find the complete list of improvements.
  6.  
  7. Setup
  8. In order to better understand the comparisons and the data obtained, it should be taken into account:
  9. The settings used for version 1.1 are all maxed out, including Anti-Aliasing, at a resolution of 1920x1080.
  10.  
  11. The settings used for version 2.0 are all active and in Ultra quality, and here we have made two tests: without Anti-Aliasing and with Anti-Aliasing SSAA.
  12.  
  13. The test is divided into a total of 12 measurements in different biomes (Italy, Desert and Snow) and spots in the game:
  14. Empty (Italy, Desert, Snow): this is an empty map, just as you would start a game.
  15. Worldmap (Italy, Desert, Snow): view with the zoom out to the maximum of the worldmap.
  16. Big City (Italy, Desert, Snow): map with a city between 800 and 1000 citizens and all the infrastructure set up.
  17. Battle (Italy, Desert, Snow): view on the battlefield.
  18.  
  19. Graphic comparison
  20. Below you can see a comparison of how Citadelum looked and how it looks now, even after having made adjustments to improve optimization.
  21.  
  22. Changelog
  23. Level of detail: we have added 2 levels of LODs to environmental elements such as trees and rocks to reduce the polygon load when making an overview of the settlement.
  24. Mesh optimization: we have reduced the number of polygons of objects and characters to free up GPU load without any perceived loss of quality.
  25. Improved loading times: we have optimized the data loading routines to reduce loading times.
  26. Avoid unnecessary memory reservations: we have optimized some processes to reuse already reserved memory to avoid creating garbage that would collapse the collector.
  27. Caching building search processes: We have expanded and improved the caching systems to ensure that costly building search processes are only executed when necessary.
  28. Avoid invalidation of caches: cases where building search caches are invalidated have been cleaned up to make them valid for much longer periods of time.
  29. Revise algorithms to avoid or replace costly processes.
  30. Disable features in materials if they are not used: we have found materials that used shader functionalities that consumed precious GPU cycles without being necessary and we have disabled them.
  31. Avoid data copies in frequently used methods: many methods now receive data by reference, instead of by value, when it is possible and makes sense. This saves unnecessary data copies and potentially frees up a little more CPU.
  32. Avoid running animation events on distant characters: when we know that it is not possible to hear a sound because it is too far away, we now do not even try to play it, thus saving resources.