Sorry that, I checked the results again, Dalek 0.97 actually beat SandboxDT and Cigaret but did not beat DuelistMini in the eternal-rumble. However, it's quite impressive. I know Dalek 0.97 did not include the data in jar, so maybe next turn it will climb up to #2 or #1. -- iiley
And now it's time to congratulate you on the #3 position! I tried Dalek 0.97 seconds after you had uploaded it and I immediately noticed it seemed much stronger than 0.96. Can you tell us some of what you did to the bot to give it that extra boost? iiley told me he has checked the detailed results of Dalek in the last rumble and that it actually beat SandboxDT and Cigaret. Maybe my money on you to be the first to catch that #1 spot from DT was well spent? =) -- PEZ
Thanks for the encouraging words, guys. I was surprised to get to #3. I was expecting a fall or at best to stay where I was. How do you know I don't include data in the jar? As for what I did from version 0.96 to 0.97, the main one is that I have tailored my movement against some of the top bots. Ironically, I expected to beat DuelistMini but not SandboxDT or Cigaret. Chance, as always, plays a role. So luck is part of the reason I got to where I am. I figure I had better enjoy being #3 while I can. From the outside it may appear as if Dalek is a strong bot getting ever stronger, but to me it looks as though I am desperately hanging on by my fingernails, grabbing at any chance to get a few points off a particular adversary. Despite all my efforts SandboxDT still beats me by about 5 points per round in 10k round battles. -- Tad
Modest as always. =) Only 5 points down per round against DT is good. I think that makes Dalek the second best 1-v-1 bot in the world. Since you ask that question about how we know we now also know you have not started saving data between rounds at all. =) Which means you have a 'very big improvement of your bot left to do. I envy you that! It won't help you beat DT in battle, but I think it might be enough to snatch that #1 ER spot. I'm pretty sure of it actually. Since your bot is such a good learner and since it uses StatisticalTargeting you will boost your scores against all those micros/minis that can't afford saving data. Go get'em! I'm keeping my fingers crossed here in sunny Stockholm. -- PEZ
I cut and paste movement profiles of the top bots into the java source. This is ugly, I know, but it has got me this far. I know Dalek is not the 2nd best 1 vs 1 bot because Cigaret, Avipes, LauLectrik and SandboxDT all beat it in 10k round battles. I think Predator beats it too. Here in rainy Sydney I know that things don't look so rosy for Dalek. --Tad
Ahhh. Too bad you didn't have that card still to play... BTW. To view the contents of a .jar just run "unzip -l" on it (or drag it and drop it into a WinZip? window.) -- PEZ
Just to make it very clear, supposing you had 3 sectors: 0, 1 and 2, and that the virtual bullet hit scores for these 3 sectors were 6, 4 and 5. Then the average sector would be (6x0 + 4x1 + 5x2)/(6 + 4 + 5) = 0.9. The sector for the mode would be simply 0, as this got the most hits. I suspect that the average may work better when there is a small number of hits and that the mode comes into its own with more hits, but this is just a theory at the moment. If the mode value repeats eg { 3, 4, 4, 4, 2 } then I take the average of the first and last occurrence, ie sector 2 in the example. --Tad
I ran a couple of quick calculations (50 rounds) counting 1(fired) per bullet fired and 1(hit) per HitEvent?. Aspid is getting a 12% hits against SandBoxDT?, and LauLectrik is getting a 12.25%. -- Albert
I've tried it against PrairieWolf, SandboxDT and a few other top bots and it seems to be equipped with a best in breed gun. -- PEZ
No, I only fire virtual bullets when I fire a real one. Otherwise bullet avoiding bots would be very hard to hit. -- Tad
Yes, that's what I do as well. Though my scheme I call VirtualGuns since it really tracks the success of different guns rather than bullets. My reason for not firing off the virtual guns more often is partially because I want to be able to deal with dodgers. But mainly because my current pattern matching gun consumes a lot of turn time. If it wasn't because of the latter I would just keep track of when virtual and real guns are fired at the same time. -- PEZ
Thanks, David. It looks like Paul, you and I are substantially doing the same thing with targeting. It would be interesting to compare who does it best and why.
I accept your point about hit rates. I got a figure for my hit rate against SandboxDT in the range 400-500. It is not very impressive: 11.0%. I'm not sure how accurate it is. --Tad
DuelistMicro gets about 8.6%, so I'd guess that 11% is quite good. That measurement was made on a standard 800x600 battlefield - it'd probably be lower on 1000x1000. Interestingly enough, firing directly at DT gets over 12%... David Alves
Marshmallow Gets 12.4% on DT at this range on a 800x600 field (measured over 100 rounds). It could be that it often fires directly at DT, it has three guns that could do that (one of which is a HeadOnTargeting gun). -- PEZ
I have to correct that. Marshmallow doesn't yet filter out the results if its cowboy guns in the statistics collected. Those guns fire weak bullets and as such have a higher hit ratio. I'll try to filter them away and see what the "real" ratio is. -- PEZ
Dalek has spawned a discussion thread at https://www.robocoderepository.com/jive/thread.jsp?forum=31&thread=1202. --Tad
My data-gathering bot StatistRobot Gets 12.92% on DT at range 491-810,13.76% at range 251-490,23.02% at range 91-250,34.61% at range 0-90(500 rounds) I will upload the VB Statistic Graph. Its aiming system is not wave system,in fact it is a similar to DuelistMicro's VB system. -- iiley
Hmmm... Perhaps my percentages are wrong then - if your system is similar then we should be getting similar numbers... --David Alves
It isn't that StatistRobot fires weak bullets? Then the hit rate should be higher and SandboxDT might choose not to dodge for weak bullets. (If, indeed, it dodges bulets.) -- PEZ
DuelistMini's numbers vs. DT:
Range 1 (110-280) : 28-33%
Range 2 (280-485) : 24-25%
Range 3 (485-715) : 22-24%
These numbers are the hit rate of the best *virtual* bullet. Real bullets may not do as well, since the virtual bullet collision code is different than the real bullet collision code. --David Alves
I haven't a clue of how the real bullet code is written, but Marshmallow happens to have a very exact match between real and virtual bullet hit rates. I know Marshmallow is a TopSecret? bot (David's label) but I might consider publishing it's VirtualBullets code if anyone is interested. -- PEZ
I'm interested. :-) My virtual bullet collision code is
if(Point2D.distance(targetX, targetY, bulletX, bulletY) < 40){...}
I picked 40 since the bots are 36 pixels square, so they are between 36 and 36 * root 2 (about 50.9) pixels "wide" depending on whether you are shooting at them horizontally/vertically (36) or from a diagonal (50.9) --David Alves
I dodge that problem by using a circle (Ellipse2D). Check out Marshmallow/CodeSnippets. -- PEZ
Hmmm... Perhaps my percentages are wrong then - if your system is similar then we should be getting similar numbers... --David Alves
I think the hit ratios are not the same although using the same aiming system but with different movements.:) -- iiley Yes, I agree. --Tad
java.awt.geom.Line2D boundingLine = new java.awt.geom.Line2D.Double(); //x and y are the current coordinates of the bullet, lastX and lastY are the previous coordinates: boundingLine.setLine(lastX, lastY, x, y); java.awt.geom.Rectangle2D.Float boundingBox = new java.awt.geom.Rectangle2D.Float(); //here, x and y are the coordinates of the robot, width is the width of the robot, //height is the height of the robot. boundingBox.setRect((x - (double)(width / 2)) + 2D, (y - (double)(height / 2)) + 2D, width - 4, height - 4); if (BoundingBox.intersectsLine(boundingLine)) //it's a hit!--Kawigi