Skirmish AI: E323AI 3.22.4
Moderators: hoijui, Moderators
Re: Skirmish AI: E323AI v3.14.3 - High Templar
it can, for two reasons. it can do multiple things at a time, and it LoS cheats.
also, even if it could not, it would still leave you free to protect your base and build stuff while the fleas are at work.
also, even if it could not, it would still leave you free to protect your base and build stuff while the fleas are at work.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Yes I know it maphacks and doesnt need to idle at all. It has potential to be very good but atm it suicides its units way too much, it doesnt avoid enemy units or use buildings as cover, gang on enemy scouts etc etc, good players harass much better.
And even when it gets very good its not just a good thing to have your spotting fleas run around as they please.
And even when it gets very good its not just a good thing to have your spotting fleas run around as they please.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Heya. I'm getting a crash when loading the bot. I've pastebinned the infolog. Am I using the best Spring Version?
Forgive me for not reading the entire thread.
http://pastebin.com/m4f1121c0
Thanks.
Forgive me for not reading the entire thread.
http://pastebin.com/m4f1121c0
Thanks.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
in the infolog:
[ 0] <SkirmishAI: E323AI 3.14.3 (team 0)>: Speedmetal infects my skills... I won't play
And spring fails because of it
[ 0] <SkirmishAI: E323AI 3.14.3 (team 0)>: Speedmetal infects my skills... I won't play
And spring fails because of it
- 1v0ry_k1ng
- Posts: 4656
- Joined: 10 Mar 2006, 10:24
Re: Skirmish AI: E323AI v3.14.3 - High Templar
lool
it needs to put a big bmp on the screen to alert you it is crashing due to speedmetal
perhaps
it needs to put a big bmp on the screen to alert you it is crashing due to speedmetal
perhaps
Re: Skirmish AI: E323AI v3.14.3 - High Templar
I take it that speedmetal is due to the map?
Re: Skirmish AI: E323AI v3.14.3 - High Templar
yes, speedmetal is a type of map, they usually have metal textures all over, and the whole map has metal (eg, its all green whn you press F4).
this makes the algorithm the AI uses to find spots for metal extractors fail.
this makes the algorithm the AI uses to find spots for metal extractors fail.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
errors (((
- Attachments
-
- infolog.txt
- (26.33 KiB) Downloaded 120 times
Re: Skirmish AI: E323AI v3.14.3 - High Templar
2autor.
Plz fix those bugs!
Thx.
Plz fix those bugs!
Thx.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Here you can try my first attempt to fix crash errors. I repeat, i focused only on errors which make AI unstable. Looks like AI gameplay degraded a bit due to pathfinding issues. No version change.
Based on 3.14.2 sourcecode (prior to group merge removing by Error323).
Changelog:
- fixed 4 errors i mentioned above
- fixed AI attempts to build land metal makers underwater
PS. SSE CPU required.
Based on 3.14.2 sourcecode (prior to group merge removing by Error323).
Changelog:
- fixed 4 errors i mentioned above
- fixed AI attempts to build land metal makers underwater
PS. SSE CPU required.
- Attachments
-
- E323AI_source.zip
- (73.99 KiB) Downloaded 30 times
-
- SkirmishAI.zip
- Windows DLL
- (230.05 KiB) Downloaded 42 times
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Hey Slogic,
Nice! I've finally got some spare time again and will take a look at it this evening.
Nice! I've finally got some spare time again and will take a look at it this evening.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Nice to see you came back. I could suspect you wait until smb fix your errors :) But i won't.
Your ARegistrar concept blowed my brains. You wrote
So this means (for me) a linkage to owners/parents. For example, in ATask::addGroup() you're adding ATask to CGroup.records() list, so CGroup is owned by ATask. I can't imagine this because usually vice-verse & ATask should be assigned to CGroup.
Due to code above CGroup->records may contain non CUnit descendant objects, e.g. of ATask class (i put there TODO mark) but CGroup::remove(ARegistrar &unit) assumes ARegistrar is of a CUnit class.
Also can you explain the meaning of "waypoint" variable in CPathfinder::updateFollowers()? It can have values: -2, -1, 0, 1.
The last version produces too much LOG_EE messages with pathfinding because algorithm tries to calculate path to group position, owned by already destroyed task
(as you remember group is owned(!) by task, ai->tasks->getPos()). I avoided this situation in my patch so i got zero crashes currently.
PS. The most noticeable bug of the latest version is units sometimes don't know where to got: if you select them in replay you will see they try to move right then left then right then left again etc.
Your ARegistrar concept blowed my brains. You wrote
Code: Select all
/* The other objects where this registrar is registered */
std::list<ARegistrar*> records;
Due to code above CGroup->records may contain non CUnit descendant objects, e.g. of ATask class (i put there TODO mark) but CGroup::remove(ARegistrar &unit) assumes ARegistrar is of a CUnit class.
Also can you explain the meaning of "waypoint" variable in CPathfinder::updateFollowers()? It can have values: -2, -1, 0, 1.
The last version produces too much LOG_EE messages with pathfinding because algorithm tries to calculate path to group position, owned by already destroyed task
(as you remember group is owned(!) by task, ai->tasks->getPos()). I avoided this situation in my patch so i got zero crashes currently.
PS. The most noticeable bug of the latest version is units sometimes don't know where to got: if you select them in replay you will see they try to move right then left then right then left again etc.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Hahaha, well ofc not =), but I must say it did make me curious .Nice to see you came back. I could suspect you wait until smb fix your errors :) But i won't.
Yeah it might seem a bit unintuitive, and I would do it a bit different if I were to recode it again. The idea is that a unit->remove() can propagate through the system, so a path could be:Your ARegistrar concept blowed my brains. You wroteSo this means (for me) a linkage to owners/parents. For example, in ATask::addGroup() you're adding ATask to CGroup.records() list, so CGroup is owned by ATask. I can't imagine this because usually vice-verse & ATask should be assigned to CGroup.Code: Select all
/* The other objects where this registrar is registered */ std::list<ARegistrar*> records;
Due to code above CGroup->records may contain non CUnit descendant objects, e.g. of ATask class (i put there TODO mark) but CGroup::remove(ARegistrar &unit) assumes ARegistrar is of a CUnit class.
- Remove unit from UnitTable
- Remove unit from Group
- Group becomes empty, remove group from Military
- Remove group from task
- Remove group from pathfinder
Its the amount of "lookahead" for pathfinding. That is, the next waypoint on the path the units will move too.Also can you explain the meaning of "waypoint" variable in CPathfinder::updateFollowers()? It can have values: -2, -1, 0, 1.
Since I fixed the pathfinding for watermaps aswell as land, the following problem occured: On target selection for military units, the target might be in a spot that the groups cannot reach. This results in a LOG_EE msg in the system. Due to some datastructuremanagement flaw this results in crashes (this is presumably what you fixed).The last version produces too much LOG_EE messages with pathfinding because algorithm tries to calculate path to group position, owned by already destroyed task
(as you remember group is owned(!) by task, ai->tasks->getPos()). I avoided this situation in my patch so i got zero crashes currently.
The result of the above is this, as units are now undefined by the system, they need to be set to idle of some sort such that the military module can pick them up again.PS. The most noticeable bug of the latest version is units sometimes don't know where to got: if you select them in replay you will see they try to move right then left then right then left again etc.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
use boost.signals or libsigc++ or whatever signal library next time, that's precisely what such libs are made for.Error323 wrote:Yeah it might seem a bit unintuitive, and I would do it a bit different if I were to recode it again. The idea is that a unit->remove() can propagate through the system, so a path could be:
- Remove unit from UnitTable
- Remove unit from Group
- Group becomes empty, remove group from Military
- Remove group from task
- Remove group from pathfinder
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Hm, i saw this for Construction Vehicle. It is not a military unit.Error323 wrote:Since I fixed the pathfinding for watermaps aswell as land, the following problem occured: On target selection for military units, the target might be in a spot that the groups cannot reach.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
try to transfer any unit to bot :)
Re: Skirmish AI: E323AI v3.14.3 - High Templar
And? If game crashes then tell exactly how to repeat. Tested with /give command. Works ok.pingved wrote:try to transfer any unit to bot :)
Re: Skirmish AI: E323AI v3.14.3 - High Templar
i think he meant sharing a unit via the diplomacy dialog.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
Any cool stuff planned for next version?
Error, I hope you didn't give up on your project.
Error, I hope you didn't give up on your project.
Re: Skirmish AI: E323AI v3.14.3 - High Templar
No haven't!!! Just extremely busy, was even during holidays. I don't wanna make any promises as to when I'll have a new version but I'm working on it.