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 Performance Optimizations forum thread.

Ongoing improvements

Feature Relevant link(s) Performance impact Status
Support OpenGL 4 #3054 forum thread Big Work in progress
Threading to use more than one CPU core #2618 Big Not started
Short/Vertex Pathfinder Rewrite #1942 Big Not started
Improvement/replacement for AI entitycollections #2370 Big Stalled
Assorted "megapatch" patches 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 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 forum thread 1 forum thread 2 ? Stalled
Rewrite the AI base system in C++ forum thread ? Not started
Benchmark mode #837 n/a Not started
Heap usage profiling #187 n/a Not started
Implement profiling for any thread #807 n/a Not started

Completed improvements

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 SpiderMonkey to 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 forum thread Medium alpha13
GetInterpolatedTransform math optimization #1854 Small alpha13

Other related resources

Last modified 13 months ago Last modified on Mar 14, 2016 9:35:53 AM