I'll upload version compiled with -source 1.4 version soon. --ph |
Thanks, your advice applies to Musketeer too (Archer and Musketeer use the same movement and target selection method). But I don't pick enemy only by bullet travel time - see TimeToHit. I take into the account gun turn time too. So I think this strategy avoids "thrashing". What do you think about my segments? I use segmentation across:
-- Ph
Why wouldn't you know if an energy drop is from an enemy firing or not when there are many enemies? -- PEZ
Well it applies in any case when there are more than 2 bots, but it is just more likely when there are lots. Say if in between scans an enemy doesnt fire, but is hit by a power 3 bullet its energy will drop by 12 points. If a power 3 bullet it has already fired hits another bot it will receive 9 energy points, leading to a net result of -3 energy taht makes it look like it has fired a power 3 bullet when it hasnt. Also with lots of bots collisions are more likely to occur and the resultant damage could easily be confused with shot's being fired. I've always thought that at the start of a melee it is better to concentrate of avoiding the massive scrum of bots that seems to occur rather than trying to avoid single bullet hits. That said all my Melee bots suck. As for your segments, i have no idea. You'd need to speak to one of the melee masters (Paul Evans, Rozu, ABC, Kawigi etc.) though i would have thought that the enemy absolute heading would have done nothing for you. --Brainfade
Enemy's heading is actually quite handy to a degree. If any enemy is moving with a very narrow profile to you (almost diving straight in and out) then they exhibit a much different set of spikes than at a wide profile (near perpendicular to you). Though absolute heading isn't too useful as the measure of that, you might want to seriously consider a relative heading where 0 is pointing straight at you. -- Kuuran
It seems good. With this method I should recognize bots that stay perpendicular to me. I think enemy's absolute heading can be useful too, as a kind of "movement signature". -- Ph
I think all you're going to do is slow down learning. There's no real reason for a bot's behaviour to change as it's angle in the arena changes if you have no regard for position. A bot facing straight down will probably still behave the same if it's facing straight left if they're both perpendicular to you positions, the opponent itself probably won't even know there's a difference in the situation. The few small differences that may crop up (such as bots running longer when they're going the width of the arena than the height) can't possibly make up for the learning speed hit. -- Kuuran
I recently released new version, with enemy's relative heading segmentation axis added, and it performs better (approximately 10 rating points better). What do you think about it? -- Ph
There have got to be some serious issues with your bot, to be brutally honest, I also suspect the 10 point rise may be a fluke. I think that conceptually it's extremely good, with just various silly and/or implementation mistakes. I really like how you've structured the code, too, I wish I had that kind of patience.
Now, so far I haven't read all of your code (there is a lot of it) but I've read most of the gun code, some of the other code, and run it through the FloodGrapher gauntlet. Here's what I've noticed:
Assuming you keep your current segment layout, you may want to change the segment sizes to look something like: [12][2][5][3][3][31]. That would learn about 30 times faster (which, for the number of segments, is quite quick), greatly helping your RR@H performance. -- Kuuran
Fighting battle 33 ... ph.mini.Archer 0.6.6,arthord.micro.Muffin 0.6.1 RESULT = arthord.micro.Muffin 0.6.1 wins 350 to 0 Fighting battle 34 ... ph.mini.Archer 0.6.6,davidalves.net.DuelistNano 1.0 RESULT = davidalves.net.DuelistNano 1.0 wins 350 to 0 Fighting battle 35 ... ph.mini.Archer 0.6.6,jep.nano.Hotspur 0.1 RESULT = jep.nano.Hotspur 0.1 wins 350 to 0 Fighting battle 36 ... ph.mini.Archer 0.6.6,myl.micro.Predator 1.50 RESULT = myl.micro.Predator 1.50 wins 350 to 0 Fighting battle 37 ... ph.mini.Archer 0.6.6,mz.AdeptBSB 1.03 RESULT = mz.AdeptBSB 1.03 wins 350 to 0 Fighting battle 38 ... ph.mini.Archer 0.6.6,ntw.Sigsys 1.6 RESULT = ntw.Sigsys 1.6 wins 350 to 0 Fighting battle 39 ... ph.mini.Archer 0.6.6,ratosh.Wesco 1.4 RESULT = ratosh.Wesco 1.4 wins 350 to 0 Fighting battle 40 ... ph.mini.Archer 0.6.6,rz.Apollon 0.23 RESULT = rz.Apollon 0.23 wins 350 to 0 Fighting battle 41 ... ph.mini.Archer 0.6.6,strider.Festis 1.2.1 RESULT = strider.Festis 1.2.1 wins 350 to 0 Fighting battle 42 ... ph.mini.Archer 0.6.6,myl.nano.Kakuru 1.20 RESULT = myl.nano.Kakuru 1.20 wins 350 to 0 Fighting battle 43 ... ph.mini.Archer 0.6.6,myl.micro.Predator 1.50 RESULT = myl.micro.Predator 1.50 wins 350 to 0 Fighting battle 44 ... ph.mini.Archer 0.6.6,myl.micro.NekoNinja 1.30 RESULT = myl.micro.NekoNinja 1.30 wins 350 to 0 Fighting battle 45 ... ph.mini.Archer 0.6.6,kcn.percept.PerceptBot 2.3
I think you've got a bug. --David Alves
Executing battles ... Fighting battle 0 ... ph.mini.Archer 0.6.6,md.November 1.0 RESULT = ph.mini.Archer 0.6.6 wins 3594 to 1969 Fighting battle 1 ... ph.mini.Archer 0.6.6,lrem.Spectre 0.4.4 RESULT = ph.mini.Archer 0.6.6 wins 3903 to 1263 Fighting battle 2 ... ph.mini.Archer 0.6.6,dummy.micro.HummingBird 2.14 RESULT = ph.mini.Archer 0.6.6 wins 3993 to 1928 Fighting battle 3 ... ph.mini.Archer 0.6.6,shrub.Vapour src124 RESULT = ph.mini.Archer 0.6.6 wins 3539 to 2121 Fighting battle 4 ... ph.mini.Archer 0.6.6,dmp.nano.Eve 3.41 RESULT = ph.mini.Archer 0.6.6 wins 5047 to 1067
I think it is not a bug in my code. I compiled it using JDK 5.0, so maybe it throws exceptions in your JRE. Probably I will be able to fix that quickly. --Ph
I have seen that with one of my bots as well. 350 to nil... I don't think there's anything wrong with Archer. But what's wrong I don't know. =) -- PEZ
I'm using 1.4.2. --David Alves
I'll upload version compiled with -source 1.4 version soon. --ph