Page 15 of 17
Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 19 Oct 2009, 21:53
by hoijui
an other crash
infolog:
http://pastebin.com/f1636e7fd
gdb stack trace:
http://pastebin.com/f27ac2c4b
it happend on the springheadless branch of hughperkins after some 10-15mins into the game; 1vs1, KAIK vs KAIK on Brazillian Battlefield, BA 7.01.
Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 20 Oct 2009, 10:27
by cranphin
Not seeing any work on kaik since last version?
Good, means my Java thingyport can catch up XD
I guess kloot's occupied with more important work ? :)
Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 20 Oct 2009, 15:47
by Kloot
Degree work, mostly, but I did sneak in some fixes for hoijui's two crashes. Also, I thought your port was already (to borrow a phrase) fully armed and operational?
To answer your older questions:
Where numFriendlies is the number of -all- friendly units, not just the buildings.
Now I'm still figuring out what all this K stuff does... But I could see it possibly making more sense using friendlyPositions.size() (just the buildings) instead of numFriendlies .
I didn't write any of that code, but I assume the cluster-count estimate incorporates mobile units because they're often located near important buildings (constructors build-assisting factories, for example). Could just be a bug too, of course.
I intend to add a THANKS or THANKYOU file, which will be logged to to infolog on startup (good idea?) , could you provide a nice list for that ? :)
AFAIK the only people who ever worked on KAI (long) before me were Krogothe, Tournesol and Firenu.
I'd prefer sticking a generic GPL license on everything, think that's possible?
Possible and even required, since KAIK code itself is GPL'ed.
I'm fairly sure this happens when the target chose isn't destroyed, the ai keeps in a 'airattack' mode, but doesn't assign any new planes to the target, so it just waits for the target to die by itself :)
Confirmed; if the target isn't destroyed, AND all attacking planes are shot down during the run, then the state is never reset until the target's health drops to 0 in some other way, so any newly built aircraft go unused and can pile up to a huge swarm. That's what you get for testing against unarmed targets.

Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 20 Oct 2009, 18:45
by cranphin
Kloot wrote:Degree work, mostly, but I did sneak in some fixes for hoijui's two crashes. Also, I thought your port was already (to borrow a phrase) fully armed and operational?

Ahh, I see, hope that's going well! :)
As for my port, it pretty much works, but until hoijui can get his Java performance branch finished and in, and I do some more optimization in the code itself, performance compares woefully to kaik itself ^_^
And I've got a feeling it's got a bug or two in still that makes it lose more <.<
right, gonna read rest of your post now :)
Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 20 Oct 2009, 18:49
by cranphin
Kloot wrote:
I'm fairly sure this happens when the target chose isn't destroyed, the ai keeps in a 'airattack' mode, but doesn't assign any new planes to the target, so it just waits for the target to die by itself :)
Confirmed; if the target isn't destroyed, AND all attacking planes are shot down during the run, then the state is never reset until the target's health drops to 0 in some other way, so any newly built aircraft go unused and can pile up to a huge swarm. That's what you get for testing against unarmed targets.

I like to test against myself, helped by a few /cheat spawned krogoths and a lot of air defense built with some spawned fusions/metalmakers :D
Then I end up fidgeting around for so long that I don't get round to fixing bugs or so :D
I put in some code in the Java thing to improve on this, but it needs more tinkering and bugfixing :)
It kinda failed for example when there's fighters or torpedo bombers in the mix, which can't attack most targets :)
Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 20 Oct 2009, 20:28
by hoijui
:D thanks Kloot!
i merged master back in to hughperkins springheadless fork, and two KAIKs now successfully ended a battle

(... well one died of course)
@cranphin
yeah.. i still did not do it.. it is not realy joyfull work, but i think i settled with a way to do it in my head, so .. i just need some special motivation now, like a few girls comming to visit me in my cellar or so.. they somehow come along seldomly though :/
nah.. will do it, will do it ...
Re: KAIK 0.13 Unofficial (Spring 0.79.*)
Posted: 21 Oct 2009, 10:13
by cranphin
hoijui wrote:@cranphin
yeah.. i still did not do it.. it is not realy joyfull work, but i think i settled with a way to do it in my head, so .. i just need some special motivation now, like a few girls comming to visit me in my cellar or so.. they somehow come along seldomly though :/
nah.. will do it, will do it ...
Take your time, just don't give up :D
It's better if it's well thought out and tested anyways :)
Can't help you with the girls tho

But those distract anyways :D
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 28 Oct 2009, 10:37
by slogic
Does KAIK use its own pathfinding algorithm? Playing on 2Lakes map i noticed that non-floating builders try to overcome the river in some narrow, but still deep places. Also a big group of units can't reach an opponent to struggle against him.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 28 Oct 2009, 12:47
by cranphin
KAIK uses it's own pathfinding :)
Not sure if that causes the issues you describe though.
I'm sure Kloot can tell you more ^_^
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 28 Oct 2009, 13:55
by slogic
I guess this is done due to optimization purposes. The map is really hard for land pathfinding. I hope the reaction on "can't reach the destination" will be faster at least.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 30 Oct 2009, 12:26
by 1v0ry_k1ng
can you make it build air repair pads in EE?
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 07 Nov 2009, 23:56
by slogic
Kloot, can you fix CUNIT::ReclaimBestFeature(bool metal, float radius) in Unit.cpp? When searching for the best feature to reclaim ignore those which are underwater (compare unit maxwaterdepth (or i guess you should take it from movement class which assigned to current unit) with ai->cb->GetFeaturePos(featureIDs).y) in for-cycle. On Tangerline map AI sends kbot builders to reclaim a rock in the center of map which is underwater.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 14 Nov 2009, 14:06
by slogic
D-Gunning should be adjusted. At least make a preliminary trace to avoid self or team units/buildings on selected D-Gun path. I've attached a replay to show that D-Gun could be KAIK's enemy number one :)
Here is 2xKAIKs vs E232AI replay.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 23 Dec 2009, 17:14
by slogic
Hope i fixed the previous situation. Sorry, have no time to make MSVC2008 project file & test it by myself. Kloot, if you have time you can merge & test the following sourcefile.
I did another trace behind an enemy unit on DGun path. It is not perfect (i don't know how to get all units on a trace with ease) but will cover most of confusing situations when KAIK uses DGun.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 24 Dec 2009, 14:07
by hoijui
it looks to me, as if KAIK does not build new mexes if the wrecks remain. i guess a call to a canBuild function returns false becuase of the wreck or so...
am just watching a game wiht KAIK, where early on, the 3 mexes in his base got destroyed, and wrecks remain of all 3.. and despite having 3 cons and the commander idling in its base since minutes, it does not rebuild them (though it desperatly would need the metal).
edit:
something related: KAIK also builds mexes where allies already have mexes (maybe only if the mexes are not centered on the spot?).
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 24 Dec 2009, 17:39
by slogic
If you want to compile sources under MSVC2008 you should replace
Code: Select all
#define MY_FLT_MAX 3.40282347e+38F
with
Code: Select all
#define MY_FLT_MAX 3.402823466e+38F
or better rewrite this with std::numeric_limits<float>::max().
This is also concerning FLT_BIG macro in MicroPather.h.
PS. I missed ";" in my DGunController.cpp.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 25 Dec 2009, 00:29
by slogic
hoijui wrote:edit:
something related: KAIK also builds mexes where allies already have mexes (maybe only if the mexes are not centered on the spot?).
Code: Select all
// KLOOTNOTE: this needs to ignore spots already taken by allies
float3 CMetalMap::GetNearestMetalSpot(int builderid, const UnitDef* extractor) {
Currently i wrote a code which fixes it, but can't compile AI to test it.
PS. Is it correct (at KAIK.cpp):
? I got error:
Code: Select all
e:\prj\vcpp\spring\ai\skirmish\kaik\kaik.cpp(8) : error C2039: memberRegistrator: is not a member of "CKAIK"
PPS. Ok, solved. I had to define USING_CREG.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 25 Dec 2009, 12:29
by hoijui
slogic wrote:Is it correct (at KAIK.cpp):
without looking at the file in particular, this sort of code is valid and often seen for creg, even doh it looks wrong in the eyes of a dev (as it is fail in most programming languages).
thanks for the fixes slogic!

hope we can test them soon.
also.. maybe it would be time to give it a new version number if all that stuff is applied.
.. then again.. who cares for that.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 25 Dec 2009, 19:52
by slogic
Not too fast

I'm thinking more & more that MSVC is not for open source development:
Code: Select all
SkirmishAI.dll!_crt_debugger_hook(int _Reserved=2290032) Line 65 C
SkirmishAI.dll!_invalid_parameter(const wchar_t * pszExpression=0x00000000, const wchar_t * pszFunction=0x00000000, const wchar_t * pszFile=0x00000000, unsigned int nLine=0, unsigned int pReserved=0) Line 112 C++
SkirmishAI.dll!_invalid_parameter_noinfo() Line 125 C++
SkirmishAI.dll!CUnitHandler::BuildTaskCreate(int id=912) Line 638 C++
SkirmishAI.dll!CUnitHandler::UnitCreated(int unitID=912) Line 141 C++
SkirmishAI.dll!CKAIK::UnitCreated(int unitID=912, int builderID=909) Line 77 C++
SkirmishAI.dll!CAIUnitCreatedEvent::Run(IGlobalAI & ai={...}, IGlobalAICallback * globalAICallback=0x03eb30e0) Line 32 C++
SkirmishAI.dll!CAIAI::handleEvent(int topic=5, const void * data=0x0022f2a8) Line 164 C++
SkirmishAI.dll!handleEvent(int teamId=0, int topic=5, const void * data=0x0022f2a8) Line 103 C++
It is after 2 sec AI has been activated.
Re: KAIK 0.13 Unofficial (Spring 0.80.5*)
Posted: 26 Dec 2009, 03:52
by slogic
Changelog:
* fixed a crash (at least for me) on first 2 seconds of gameplay when DLL was compiled by MSVC2008
* avoid taking a decision to build a MEx near allied MEx
* better avoid situations when commander D-Guns at too high rate without considering of sad consequences
* threat map is considered when commander decides to reclaim or capture an enemy unit
Still will build a MEx right near another MEx which has been just captured (doesn't GetFriendlyUnits() return its own units?).