Skipped Turns ... what to know about?
Hi mate.
That is an awesome fix you provided there. I tested all kind of stuff related to skipped turns and it works like a charm.
Things I tested so far:
no more hidden skipped turns (very nice) no more wrong onScannedEvents(..) (I'm most excited :) well done) right turn number for skipped turn events (nice to have :) ) disable bots if they skip more than 30 turns - just to check if it still works (and it does :)) also gone is the 'skipped turn message but no actually skipped turn' issue (just a minor issue but thanks for fixing this too) it also looks like the influence of other bots is gone too. If I compare 'all nano' vs 'all general' melee battles, I got no difference in average skipped turns anymore
I have a quite large code base for skipped turns and I could detect something that looks suspicious. The output is from different battles - all full (10) melee.
This is the output if everything works fine ([x] skip xA - xB is the output within onStatus(), xA - lastStatusTime, xB - currentStatusTime):
SYSTEM: Numbat 2.1* skipped turn 6 [7] skip 5 - 7 SYSTEM: Bonus for killing cs.Grudge 1.0: 17 SYSTEM: Numbat 2.1* skipped turn 156 [157] skip 155 - 157 SYSTEM: Numbat 2.1* skipped turn 404 [405] skip 403 - 405 SYSTEM: Numbat 2.1* skipped turn 728 SYSTEM: Numbat 2.1* skipped turn 729 [730] skip 727 - 730 SYSTEM: Bonus for killing simonton.nano.MeleeSeed 1.8: 4 SYSTEM: Bonus for killing kawigi.nano.Lib 1.0: 3 SYSTEM: wompi.Numbat 2.1* wins the round.
This is the output for some other battles and it looks like the system sends an StatusEvent even if the bot is dead.
Round 8 of 35 ========================= SYSTEM: Bonus for killing radnor.DoctorBob 1.42: 7 [1004] skip 973 - 1004 <------- last status event on 973 and current status event on 1004 no skip events and I'm not having skipped 31 turns (average is 6 per battle) see following outputs for equally behavior on onDeath I can't say if I died on 974 and the system just delayed the message, or if something other happens [1004] DEAD <-------- output from onDeath() SYSTEM: wompi.Numbat 2.1* has died Round 9 of 35 ========================= [244] skip 241 - 244 [0244] DEAD SYSTEM: wompi.Numbat 2.1* has died Round 25 of 35 ========================= SYSTEM: Bonus for killing cs.Grudge 1.0: 5 SYSTEM: Bonus for killing radnor.DoctorBob 1.42: 2 [661] skip 649 - 661 [0661] DEAD SYSTEM: wompi.Numbat 2.1* has died
There is another one, but that should be discussed by the community, I guess. If a bot skips 30 turns within the victory turns he gets the 'no action message':
SYSTEM: wompi.BugBot* (2) wins the round. SYSTEM: BugBot* (2) skipped turn 36 .... SYSTEM: BugBot* (2) skipped turn 83 <-------- way more than 30 turns SYSTEM: BugBot* (2) has not performed any actions in a reasonable amount of time. SYSTEM: No score will be generated.
So the bot gets disabled and (probably - not tested right now)) no score, even if he has won the game at this point. I don't know if this should be handled somehow or if it is a legal response to bots - would be great to get some opinions about this issue.
Anyway, great work and you can be sure all your work on the RoboCode engine is very much appreciated by all community members, I guess.
Take Care