2021-04-22 19:18 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0005245Spring engineAIpublic2018-08-06 11:33
Assigned Tohokomoko 
Product Version 
Target VersionFixed in Version 
Summary0005245: Add CircuitAI as a submodule
Description1) CircuitAI exists: https://github.com/rlcevg/CircuitAI
2) Engine automatic downloads exist for all both supported platforms and architectures
3) Missions exist (in ZK and others alike); missions can be auto-distributed.
4) No automatic AI distribution systems exist.
5) Therefore, it is not possible to add CircuitAI to missions.

Obvious solution that does not require implementation of a SkirmishAI distribution system: add CircuitAI to engine like the other AI's.

Then, mission requires specific engine version, engine is autodownloaded, ai is bundled with engine.
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files

has duplicate 0005873resolvedabma 104.0.1-150-gd36042d maintenance Circuit AI always crashes on load 
related to 0005294resolvedabma Upgrade GCC 



silentwings (reporter)

As far as I know, none of the AIs distributed with the engine were designed with a single specific game in mind.


abma (administrator)



abma (administrator)

Last edited: 2016-05-17 16:54

View 2 revisions

yeah, thats an issue, too: all other ai's (theoritically) can play other games.


i personally don't see this as blocker, would be just a nice to have.


FLOZi (reporter)

Theoretically being the operative.

None of the engine AIs can play MCL at all, and S44 barely (which is really not far from OTA mechanics in some respects)


Anarchid (reporter)

Last edited: 2016-05-18 12:51

View 4 revisions

> As far as I know, none of the AIs distributed with the engine were designed with a single specific game in mind.
> all other ai's (theoritically) can play other games.

HughAI only plays BA. And only as ARM. And openly says so in its wiki page. And in its README.

And it has hardwired unit names (https://github.com/hughperkins/HughAI/blob/master/src-ai/hughai/unitdata/TankList.java#L48) and it has no way to discover new names.


lamer (reporter)

Last edited: 2016-05-17 20:39

View 3 revisions

I'd prefer "SkirmishAI distribution system", but while (it doesn't exist) {...}

Please let me know if this request will have greenlight. Some preparations must be done: tags/v0.8.2.1 is the candidate for public release (not master branch).


hokomoko (developer)

At the moment CircuitAI requires boost/geometry which isn't in the current engine requirements. (can be added probably)


silentwings (reporter)

Last edited: 2016-05-18 14:22

View 2 revisions

I am pessimistic of the value of spending time on setting up an AI distribution system. I think dll AIs in their current incantation are not going to survive in the long run; the (engine side) code is too convoluted. I expect that the future of AIs is the Lua API, and that most newly written AIs will be closely tied to specific games.

But we are some way from this point yet - until then as far as I can see the best solution is too bundle a selection of semi-functional dll AIs and finally fix https://springrts.com/mantis/view.php?id=2923.


lamer (reporter)

Last edited: 2016-05-26 13:50

View 3 revisions

AI distribution system engine-side is not good indeed.
But i don't believe in Lua AIs without proper background/framework. I don't like to write performance critical parts in VM (lua). If only C++ layer of Shard had threatmaps, pathfinder, advanced yardmaps, threading, terrain/area analyzer...

Circuit has some non-standart requirements:
*boost/geometry - consists from .h only, partial boost surprised me;
*gcc 4.9+ - std::regex support;

Are there plans for gcc 5+ migration (std::list::size, new ABI ... and all other cool stuff)?


abma (administrator)

> Are there plans for gcc 5+ migration (std::list::size, new ABI ... and all other cool stuff)?

plans no, but it will happen at some point. I'm a bit conservative about updating to new compiler versions as historically there always were bugs / crashes when we updated to a new version.


gajop (developer)

I think adding AI support to pr-downloader would be the right thing to do. Essentially we'd need to have some utility which can compile and package AIs for multiple platforms. Obviously this wouldn't be easy, but certainly doable if there is interest.


hokomoko (developer)

@lamer I've noticed you released a new version, if you think it's stable enough, please supply a hash so we can test adding the submodule.


lamer (reporter)

Need a bit time for testing, will post today/tomorrow (found a bug with startframe number).

Hardcoded unitnames can be a potential threat, but for testing - its stable enough.

Yet i see the default builbot compilers are 4.8.1 (windows) and 4.8.5 (linux). 4.8 will not work, it doesn't have builtin regex (only edclarations of it with empty functions).
And i didn't manage to replace std::regex by boost::regex because of some missing symbols in boost lib (don't know how that is possible)


lamer (reporter)

hash, proclaimed as stable:
or tags/v0.8.4


hokomoko (developer)

Last edited: 2016-06-09 13:10

View 2 revisions

that's the current situation:

also this:


lamer (reporter)

Last edited: 2016-06-09 22:03

View 2 revisions

This means that replacing std::regex by boost::regex works but static link is not an option (must recompile libboost_regex with -fPIC option)
Any suggestions? Is there dynamic libboost_regex.dll/so that can be copied to libSkirmishAI.dll/so after compilation?


hokomoko (developer)

I fear my suggestion would be to move to gcc 4.9.* after 102 is released (with the unfortunate meaning that it won't be bundled with 102 :S )


abma (administrator)

as the last "stable" release (100.0) was 17 Sep 2015... we should try to release 102.0 without delaying it by updating infrastructure.

so yes, no gcc update before a stable release.


lamer (reporter)

Seems logical to me, ok


hokomoko (developer)

16 July, even worse.

Let's hope we can get a release before a year :S


Anarchid (reporter)

My ulterior motive of using Circuit in missions means that i, for one, am not going to obsess over whether it's 102.0 or 102.0.1.gabracadabra that includes Circuit. Missions can use dev engine versions just as well.


abma (administrator)

side note:

please no further tests with compiling the submodules on the buildslaves as it breaks compile on other branches, too:



Anarchid (reporter)

At the very least ZK now has an automated AI distribution system.

This ticket can be closed because such systems are the future and stuffing the engine with submodules is unsustainable.


hokomoko (developer)

I'm not sure if I agree.
Having AIs compile with the engines is great for identifying fatal regressions as early as possible.


Anarchid (reporter)

Fair point.


Anarchid (reporter)

ZK now deploys Circuit all on its own, in effect implementing an automated AI versioning and distribution system. This renders this feature request obsolete.


hokomoko (developer)

My last comment still stands


raaar (reporter)

It may be useful for testing and development, but currently most of the AIs shown are useless/misleading for new players on nearly all games.


sprung (reporter)

That's a problem with lobbies. It is their responsibility to hide AI unfit for given game.


abma (administrator)

good + "bad" news: spring doesn't depend on boost anymore, only boost-test is used / left / available.

the good news is that the linux32 / linux64 buildslaves where upgraded.


lamer (reporter)

Added required boost libs inside CircuitAI. It should be ready for spring's buildbot.
What are further steps to include CircuitAI in spring's ecosystem?


hokomoko (developer)

Seems done, I just need someone with permissions to clone it into spring's organisation and then we can close this.


abma (administrator)



hokomoko (developer)

Fix 0995fa8356029dff2c4506f769dcf2bfc2fecc3d committed to develop branch: Fix 0005245, repo: spring changeset id: 10462


hokomoko (developer)

Fix 2090ebb95ac0d0594dc43ed6ecfea4868deac126 committed to maintenance branch: Fix 0005245, repo: spring changeset id: 10463

-Issue History
Date Modified Username Field Change
2016-05-17 16:18 Anarchid New Issue
2016-05-17 16:47 silentwings Note Added: 0016310
2016-05-17 16:49 abma Note Added: 0016311
2016-05-17 16:49 abma Note Added: 0016312
2016-05-17 16:54 abma Note Edited: 0016312 View Revisions
2016-05-17 17:59 FLOZi Note Added: 0016313
2016-05-17 19:58 Anarchid Note Added: 0016318
2016-05-17 20:00 Anarchid Note Edited: 0016318 View Revisions
2016-05-17 20:00 Anarchid Note Edited: 0016318 View Revisions
2016-05-17 20:37 lamer Note Added: 0016319
2016-05-17 20:37 lamer Note Edited: 0016319 View Revisions
2016-05-17 20:39 lamer Note Edited: 0016319 View Revisions
2016-05-17 21:41 hokomoko Note Added: 0016321
2016-05-18 12:51 Anarchid Note Edited: 0016318 View Revisions
2016-05-18 14:21 silentwings Note Added: 0016324
2016-05-18 14:22 silentwings Note Edited: 0016324 View Revisions
2016-05-25 23:35 lamer Note Added: 0016344
2016-05-25 23:42 lamer Note Edited: 0016344 View Revisions
2016-05-26 13:50 lamer Note Edited: 0016344 View Revisions
2016-05-26 14:47 abma Note Added: 0016350
2016-05-26 16:57 gajop Note Added: 0016354
2016-06-08 16:45 hokomoko Note Added: 0016410
2016-06-08 18:01 lamer Note Added: 0016411
2016-06-09 01:28 lamer Note Added: 0016415
2016-06-09 01:46 hokomoko Note Added: 0016416
2016-06-09 13:10 hokomoko Note Edited: 0016416 View Revisions
2016-06-09 22:02 lamer Note Added: 0016418
2016-06-09 22:03 lamer Note Edited: 0016418 View Revisions
2016-06-09 22:40 hokomoko Note Added: 0016419
2016-06-09 23:39 abma Note Added: 0016420
2016-06-10 00:01 lamer Note Added: 0016421
2016-06-10 12:28 hokomoko Note Added: 0016424
2016-06-10 15:50 Anarchid Note Added: 0016425
2016-06-10 19:37 abma Note Added: 0016427
2017-02-11 16:23 abma Relationship added related to 0005294
2017-02-28 12:05 Anarchid Note Added: 0017370
2017-02-28 12:09 hokomoko Note Added: 0017371
2017-02-28 13:29 Anarchid Note Added: 0017373
2017-08-14 14:19 Anarchid Note Added: 0018204
2017-08-14 14:22 hokomoko Note Added: 0018205
2017-08-17 17:27 raaar Note Added: 0018218
2017-08-18 12:17 sprung Note Added: 0018219
2018-01-22 14:56 abma Relationship added has duplicate 0005873
2018-04-25 20:30 abma Note Added: 0019050
2018-08-05 15:03 lamer Note Added: 0019271
2018-08-05 17:57 hokomoko Note Added: 0019272
2018-08-06 10:48 abma Note Added: 0019273
2018-08-06 11:03 hokomoko Changeset attached => spring develop 0995fa83
2018-08-06 11:03 hokomoko Note Added: 0019274
2018-08-06 11:03 hokomoko Assigned To => hokomoko
2018-08-06 11:03 hokomoko Status new => resolved
2018-08-06 11:03 hokomoko Resolution open => fixed
2018-08-06 11:33 hokomoko Changeset attached => spring maintenance 2090ebb9
2018-08-06 11:33 hokomoko Note Added: 0019275
+Issue History