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
|
---|
Rewrite the renderer to require OpenGL 2.1 | forum thread | Big | Stalled
|
Threading to use more than one CPU core | | Big | Not started
|
Long/Tile Pathfinder Rewrite | #1756 | Big | Stalled
|
Short/Vertex Pathfinder Rewrite | #1942 | Big | Not started
|
Improvement/replacement for AI entitycollections | #2370 | Big | Work in progress
|
Assorted "megapatch" patches | git branch | Medium | Stalled
|
Incremental update of pathfinder's passability grid | #930 | Medium | Stalled, to do with new pathfinder
|
Upgrade SpiderMonkey to v31 | forum thread | Small | Work in progress
|
Use new ES6 keyed collections (e.g. Map, Set) | #2475 | Medium | Work in progress
|
GUI code improvement | #885 | Medium | Stalled
|
ComponentManager optimization | #1860 | Medium | Stalled
|
Implement caching of terrain normals | #2039 | Medium | Stalled
|
UnitAI/UnitMotion repathing improvement | #1200 | Medium | Not started
|
Sim interpolation optimization (game and editor) | r13500 | Medium | Landed in alpha13, reverted in alpha14
|
Other Kuranes patches | #2022 #2026 | Small | Up for Review
|
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
|
Graphic settings system | #475 | n/a | Not started
|
Implement profiling for any thread | #807 | n/a | Not started
|
Completed improvements
Feature | Relevant link(s) | Performance impact | Appeared in
|
---|
Dynamic message subscriptions | r15400 | Medium | alpha17
|
New unit renderer | r15265 r15266 | Medium | alpha17
|
Improve GCC build flags on x86 | #2329 | 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
|
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
|