rlcevg / CircuitAI

Spring RTS local native AI
GNU General Public License v2.0
19 stars 19 forks source link

Dev engine circuit does not use its combat units #91

Closed GoogleFrog closed 5 years ago

GoogleFrog commented 5 years ago

It makes units but does nothing with them. The only units I have seen it use are constructors and artillery.

circuitAIandReplay.zip

rlcevg commented 5 years ago

last working engine: 104.0.1-822-gcf9c812 maintenance first broken engine that runs: 104.0.1-828-ga312ff3 maintenance Most likely the issues is in https://github.com/spring/spring/commit/22b3fe73ca50a8341d7077a195bb24deaf05cd7f Did they removed ability of an AI to control speed of own units?

GoogleFrog commented 5 years ago

CMD.SET_WANTED_MAX_SPEED has been removed entirely. As far as I can tell there is no way in the default engine for AIs (or LuaUI) to set the speed of units. Could you add compatibility for the removal of this ability within Circuit? Backwards compatibility would be best.

Anarchid commented 5 years ago

AFAICT the reason Circuit wants to use this command is to keep shieldblobs together. It can use it using staggered move commands or circle-guard though (@aeonios used the latter approach for KGB).

That is inherently backwards compatible.

rlcevg commented 5 years ago

Circuit uses lowest speed of a unit in attack group to minimize re-group phases (and i believe it worked at least on flat areas). Shieldbots is only partial example. Loosing such ability is a shame. Guard order is not the same. Maybe workaround with "guard slowest group leader" is legit, but it will force undesirable local battles(?). At the moment i'm going to simply comment all SetWantedMaxSpeed() calls and also remove it from engine's New_OO_AI_Interface.

rlcevg commented 5 years ago

From latest spring maintenance Circuit should work again (though it doesn't control speed anymore)