Version 46 (modified by serveurix, 9 years ago) ( diff )

--

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
RangeManager improvement #2430 Medium Work in progress
Upgrade SpiderMonkey to v31 #2462 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
Calculate visible patches only when frustum changes #2431 Medium Stalled
UnitAI/UnitMotion repathing improvement #1200 Medium Not started
Disable off-screen animation TODO in CCmpUnitRenderer.cpp Small Not started
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
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
Increase performance of random map generation r15621 Medium 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

a18 changes

fabio didn't update this page since a17 so here is a list of changes in the development version that might be related to performance :

AI-related changes :

r16008
r16012
r16027 related to #2730
r16028
r16030 related to #2730
r16035 related to #2730
r16042
r16053

other changes :

r16036

Note: See TracWiki for help on using the wiki.