Currently 0 A.D. performance is lower than that of similar RTS games, especially when playing with many units on a map. This page collects some tasks and suggestions to improve performance of pyrogenesis, the engine used by 0 A.D.. To discuss other performance related ideas you can use the [http://www.wildfiregames.com/forum/index.php?showtopic=16991 Performance Optimizations forum thread]. == Ongoing improvements == {{{#!table style="background: LightGoldenrodYellow" ||= Feature =||= Relevant link(s) =||= Performance impact =||= Status =|| || Support OpenGL 4 || #3054 [http://www.wildfiregames.com/forum/index.php?showtopic=16734 forum thread] || Big || Work in progress || || Threading to use more than one CPU core || #5874 || Big || Work in progess || || !Short/Vertex Pathfinder Rewrite || #1942 || Big || Not started || || Improvement/replacement for AI entitycollections || #2370 || Big || Stalled || || Assorted "megapatch" patches || [http://git.wildfiregames.com/gitweb/?p=0ad.git;a=shortlog;h=refs/heads/projects/philip/megapatch-split git branch] || Medium || Stalled || || GUI code improvement || #885 || Medium || Stalled || || !ComponentManager optimization || #1860 || Medium || Stalled || || General pathfinder optimizations || #3588 || Medium || Work in progess || || Implement caching of terrain normals || #2039 || Medium || Stalled || || Calculate visible patches only when frustum changes || #2431 || Medium || Stalled || || UnitAI/UnitMotion repathing improvement || #1200 || Medium || Not started || || Enable the JPS cache || #3290 || Small || Stalled || || Disable off-screen animation || [http://trac.wildfiregames.com/browser/ps/trunk/source/simulation2/components/CCmpUnitRenderer.cpp#L293 TODO in CCmpUnitRenderer.cpp] || Small || Not started || || Skinning optimisations || #2026 || Small || Stalled || || More optimization with many selected units || #2179 || Small || Work in progress || || Optimisation of Fixed Point Trigonometic Approximations || #2109 || Small || Work in progress || || Implement a !Quadtree/Octree || [http://www.wildfiregames.com/forum/index.php?showtopic=17384 forum thread 1] [http://www.wildfiregames.com/forum/index.php?showtopic=16991 forum thread 2] || ? || Stalled || || Rewrite the AI base system in C++ || [http://www.wildfiregames.com/forum/index.php?showtopic=16991 forum thread] || ? || Not started || || Benchmark mode || #837 || n/a || Not started || || Implement profiling for any thread || #807 || n/a || Not started || }}} == Completed improvements == {{{#!table style="background: LightGreen" ||= Feature =||= Relevant link(s) =||= Performance impact =||= Appeared in =|| || Pathfinder optimizations || r17310 r17350 r17413 r17500 r17866 || Big || alpha20 || || Optimize range queries || #3717 || Medium || alpha20 || || Optimization of isBoxVisible || #3712 || Small || alpha20 || || Reduce calls to !CalculateTerritories || r17560 || Small || alpha20 || || !Long/Tile Pathfinder Rewrite || #1756 r16751 || Big || alpha19 || || Other Pathfinder optimizations || r17251 r17284 || Medium || alpha19 || || !RangeManager improvement || #2430 || Medium || alpha19 || || UnitAI improvements || r17264 || Medium || alpha19 || || Several AI optimizations || r16008 r16027 r16028 r16030 r16035 r16042 r16073 || Medium || alpha18 || || Upgrade [https://developer.mozilla.org/en-US/docs/SpiderMonkey SpiderMonkey] to [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/31 v31] || #2462 || Medium || alpha18 || || Reduce lag when selecting units || r16068 || Medium || alpha18 || || Unnecessary global message subscription || r16055 || Medium || alpha18 || || Add type specific method to cmpResourceGatherer || r16036 || Medium || alpha18 || || Visibility performance improvement || r16166 r16248 r16281 r16328 r16337 || Medium || alpha18 || || Improve performance of unitAI looking for new targets || r16057 || Small || alpha18 || || Improve fogging performance || r15956 || Small || alpha18 || || Replace CParser || #2589 || Small || alpha18 || || Dynamic message subscriptions || r15400 || Medium || alpha17 || || New unit renderer || r15265 r15266 || Medium || alpha17 || || Increase performance of random map generation || r15621 || Medium || alpha17 || || Use new ES6 keyed collections (e.g. Map, Set) || #2475 || Small || alpha17 || || Optimise silhouette rendering || r15483 || Small || alpha17 || || Improve GCC build flags on x86 || #2329 || Small || alpha17 || || Build fcollada with -O2 || r15675 || Small || alpha17 || || Improve UnitAI range query performance || #2156 || Medium || alpha16 || || Save GUI Sprites and Images in vectors / maps as pointers || #1984 || Small || alpha16 || || Improve speed of territory computation || r14530 r14531 || Small || alpha16 || || Speed-up of the foam generation code || r14514 || Small || alpha16 || || Make entity selection faster || #2358 || Small || alpha16 || || Minor LOS optimization || r14463 || Small || alpha16 || || Graphic settings system || #475 || n/a || alpha16 || || Renderer optimizations || r13902 r13903 r13904 r13906 r13911 || Medium || alpha15 || || Optimize fixed multiplies on Windows || r13873 || Medium || alpha15 || || CCmpRangeManager optimization || #1707 || Medium || alpha15 || || Optimization with many selected units || r14296 r14306 || Small || alpha15 || || Optimize Move() in !CCmpUnitMotion || #2094 || Small || alpha15 || || Text rendering optimizations || r14017 r14018 r14019 r14020 || Small || alpha15 || || Avoid slightly-expensive !QueryInterface?() calls || r13825 || Small || alpha15 || || Improve game setup GUI performance || r13828 || Small || alpha15 || || !GetPercentMapExplored optimization || #2012 || Medium || alpha14 || || Disable distance-sorting for most transparent objects || r13753 || Medium || alpha14 || || VBO support for minimap entity rendering || r13454 || Small || alpha14 || || Water improvements || r13374 r13555 r13720 || Small || alpha14 || || JS GUI code optimization || #1878 || Small || alpha14 || || AI API v3 and Aegis AI || [http://www.wildfiregames.com/forum/index.php?showtopic=17144 forum thread] || Medium || alpha13 || || !GetInterpolatedTransform math optimization || #1854 || Small || alpha13 || }}} == Other related resources == * [http://www.wildfiregames.com/forum/index.php?showtopic=17274 Forum thread: (DISCUSS) Performance Improvements] * [[CodeAndMemoryPerformance]] * [[CodeQuality]] * [[Coding_Conventions]] * [[EngineProfiling]]