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 | #5874 | Big | Work in progess |
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 |
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
6 months ago
Last modified on Sep 16, 2023, 4:57:44 PM
Note:
See TracWiki
for help on using the wiki.