wraitii
4df03ed2d2
This is a paradigm change for AI computation. Historically, the AI was intended to be run in a separate thread from the simulation. The idea was that slow AI wouldn't stop the renderer from being smooth. In that original design, the AI received a copy of the game world and used that to run its logic. This meant the simulation could safely do whatever it wanted in the meantime. This copy was done via AIProxy & AIInterface. This design ended up having significant flaws: - The copying impacts the simulation negatively, particularly because AIProxy subscribes to a lot of messages (sometimes sent exclusively to it). This time cannot be threaded, and impacts MP games without AIs. - Copying the data is increasingly difficult. Modifiers are a headache, LOS is not implemented. Lots of logic is duplicated. The intended benefits of the design also failed to realise somewhat: - The AI was never threaded, and in fact, it is probably better to try and thread Sim + AI from the renderer than just the AI, at which point threading the AI specifically brings little benefit. The new design is much simpler and straighforward, but this has some side-effects: - The AI can now change the simulation. This can be used for cheating, or possibly for a tutorial AI. - The AI runs in the same GC zone as the simulation, which may lead to more frequent Sim GCs (but overall we might expect a reduction in temporary objects). - The AI state was essentially cached, so replacing some functions with Engine.QueryInterface might be slower. The tradeoff should be balanced by lower AIProxy computation times. Future work: - Threading some specific AI tasks could still be worthwhile, but should be done in specific worker threads, allowed to run over several turns if needed. Technical note: the AI 'global' is in its own Realm, which means name collisions with the same are not possible. Other notes: - The RL Interface uses the AI Interface and thus will gradually lose some data there. Given that the RL Interface can now request data however, this should be dine. Refs #5962, #2370 Differential Revision: https://code.wildfiregames.com/D3769 This was SVN commit r26274. |
||
---|---|---|
binaries | ||
build | ||
docs | ||
libraries | ||
source | ||
.arcconfig | ||
.arclint | ||
.gitattributes | ||
license_dbghelp.txt | ||
license_gpl-2.0.txt | ||
license_lgpl-2.1.txt | ||
license_mit.txt | ||
LICENSE.txt | ||
README.txt |
0 A.D. Introductory Information ================================= 0 A.D. (pronounced "zero ey-dee") is a free, open-source, cross-platform real-time strategy game of ancient warfare. This is currently an incomplete, under-development version of the game. We're always interested in getting more people involved, to help bring the game towards completion and to share the interesting experience of developing a project of this scope. There are several ways to contact us and find more information: Web site: http://play0ad.com/ Forums: http://www.wildfiregames.com/forum/ Trac (development info, bug tracker): http://trac.wildfiregames.com/ IRC: #0ad on irc.quakenet.org --------------------------------------- Running precompiled binaries on Windows --------------------------------------- Open the "binaries\system" folder. To launch the game: Run pyrogenesis.exe To launch the map editor: Run Atlas.bat or "pyrogenesis.exe -editor" ----------------------------------- Compiling the game from source code ----------------------------------- The instructions for compiling the game on Windows, Linux and OS X are at http://trac.wildfiregames.com/wiki/BuildInstructions ------------------ Reporting problems ------------------ Bugs should be reported on Trac. For information on reporting problems and finding logs, see http://trac.wildfiregames.com/wiki/ReportingErrors ------------------ Contributing Code ------------------ If you want to help out programming for the game, have a look at https://trac.wildfiregames.com/wiki/GettingStartedProgrammers or contact us on #0ad-dev on irc.quakenet.org -------------------- Contributing Artwork -------------------- If you want to make artwork for the game, have a look at https://trac.wildfiregames.com/#Forartists: or visit the forums http://www.wildfiregames.com/forum ----------- Translating ----------- You can help translating the game at https://www.transifex.com/projects/p/0ad for more information, see https://trac.wildfiregames.com/wiki/Localization