You only score 70% rz.HawkOnFire, which is a HeadOnTargeting bot, so it appears your wavesurfing code has some bugs. You might want to try the WaveSurfingChallenge to help debug your bot. Also don't forget to use RobocodeGL, it's a huge help. Good luck and welcome back! --David Alves
Thanks David, yes there maybe many some bugs,but it score 70% rz.HawkOnFire is right reasonable to the current Pear's WaveSurfing,it thinks all bot use a guess factor gun. And thanks for RobocodeGL, it really a cool tool, It let me to see my waves flying(This is my first do robocodeGL in Pear). Cool~~~~~~~~~ ;] -- iiley
It depends on the flavour of your wave surfing if you'll be able to get 99.9%-ish against HawkOnFire. But if your flavour is uncomprimised peak-avoiding surfing then 70% indicates bugs. -- PEZ
Oh~~~I tested some surfers,they did very good, but is all surfers has some trick to HeadOnTargeting Bot. Or there is some mistake of my understanding of WaveSurfing. Lacrimas's movement without trick did not good either.Now same to Pear. -- iiley
Some WaveSurfers have special cases for HOT. But not all. CassiusClay hasn't. But then again, CC has no special cases anywhere. =) Anyway, Lacrimas style of wave surfing isn't the same kind of surfing that's used by the top bots. Maybe if you read the CassiusClay/Butterfly page you'll see what I mean with "pure" peak avoiding surfing. -- PEZ
Thank you, I think i have to look the successful WaveSurfing movement much more. Can't imagine a "pure" peak avoiding surfing (I think old Lacrimas and Pear's movement should be them) can beat HOT so well. ~~ -- iiley
YALT doesn't have any special case code for HOT bots... other than initializing the enemy hits array as if it had been hit once with HOT. It scores 98-99.7% depending on which version of YALT you use. --David Alves
1941! Congratulations! Still have a lot of work to do on trashing those simple targeters (if that's what you want to do), but Pear is strong against the mid range of bots. -- PEZ
Thanx, I focus on the surfing against simple targeters this moment,you know Pear's WaveSurfingChallenge score,it is not a good surfer.Maybe many bugs. Yeah,it rank higher than my old Lacrimas now. A good beginning ;] -- iiley
Steady improvements! Looks like your surfing is starting to work. Some of those HOT bots are left full of regrets. =) Maybe it's time you payed some attention to your gun? It's probably full of old non-asserted assumptions. -- PEZ
Yes, surfing was starting to work, but it can't get over 99% against WaveSurfingChallenge BotA?, i think i could keep improve the movement for a time. -- iiley
What is a "pure Descartes reference frame"? Google doesn't seem to know, and neither do I. :-P --David Alves
It should be "Cartesian co-ordinates". -- iiley
Hu~~~~~~~``1993.33 after 553 battles, near to The2000Club .~ ;] But i can't judge is my movement or my gun is weak this moment~;[ --iiley
and almost past SandboxDT! Great work! Btw. Lacrimas is still in the top-20, altough you haven't changed this bot is a long time. I think this shows how strong this bot was and is. --Loki
Yeah! But you seem to going the same path as DT does. By raw strength! Add some finess to your surfing and you'll be challenging Mue for the crown. By the way. Was the change in surfing style the only change you made with this version? I wouldn't think it should matter if you go for the indents or avoid the peaks... Maybe you have something in the code left from Lacrimas that works better with goto-style surfing? -- PEZ
Thank you Loki, PEZ, now 1997.05 after 612, higher than DT now, yes i want to do a surfing with the same style of yours(most of the top surfers), and i want to predict my movement accurately, so i surf around the wave center, do not stop, just clockwish or unclockwish, But i cant let it move well against rammers, you can see Pear before this version lost too much for rammers(even DevilFISH), it can not escape well, so today i tested the old goto-style surfing, it did very better when enemy is close to me, but i can't judge is it better when i far from enemy.However it cannt get more than 99 against WSCBotA. -- iiley
I don't think you need to change your style of surfing. SilverSurfer surfs pretty well using goto-style. Evasion is tricky with a surfer, no doubt. Though CC doesn't do anything particular when in close combat. Only against rammers it steepens its evasion angle. Note that CC doesn't think DevilFISH is a rammer though. If your goto-style surfing helps you against rammers and close combat, stick with it. Perfection against HOT is mostly a matter of getting those bugs out. -- PEZ
Yes, I think so. Only maybe goto-style did worse against PM-guns, There must be bugs in my surfing, it did not as good as other surfers against simple guns. -- iiley
Of course there are bugs in your surfing. Bugfree surfing means an automatic 2020+ rating. -- PEZ
How high would a surfer with HOT score? -- Alcatraz
Yeah I don't know about that 2020 thing... Maybe "bugfree surfing and a good gun and good near-wall behavior means an automatic 2000" :-P --David Alves
Not too high I think. But it could be tested of course... I could make a version of CC fire with HOT and that would be a check. Even if CC's surfing isn't [bugfree] yet, it still works pretty OK. Broken surfing works if it's broken the right way. =) About your literal interpretations of what I said.... Bugfree surfing with a reasonably bugfree implementation of a good gun strategy; 2020+. At least. -- PEZ
Hey!!! once a top after 63 battles. ;] -- iiley
Way cool. 63% against Shadow. That must be some kind of record. -- PEZ
Can see how excellent Butterfly style is, I just changed the surfing mode, goto-style, my old ahead-back style, very different score. -- iiley
It really is Shadow style I think. Or old-school Shadow at least. But I think it depends on implementation more than style. The stop position is of course crucial for Shadow / Butterfly. SilverSurfer uses goto-style and handles the dive-in protection by setting the movement vector to zero if moving fully would bring it too close to the enemy. It's equvalent. The important thing is to deal with it. -- PEZ
Only 65 battles so far, but most of those results are very impressive. -- Alcatraz
In my old ahead-back style, my bot cannot stop, usually shake his body on the right position, I think it does matter before, but maybe, now i think it had less velocity index of 0 segment, version 0.57 use goto-style, some times stops. Maybe the stop time cause some thing. -- iiley
SilverSurfer makes sure it stops when it has reached its destination. This to make sure the bot width is minimal when the bullet passes. -- PEZ
You've definately sorted out some bugs:
Fighting battle 9 ... tide.pear.Pear 0.58,rz.HawkOnFire 0.1 RESULT = tide.pear.Pear 0.58 wins 4291 to 0Too bad the server disregards that battle. Some bots (CC included) makes sure they take a small blow in the end of the match if it seems they are going to shut out the poor opponent. Nothing I can really recommend though. Probably HawkOnFire will probably finally hit Pear if it gets enough battles to try.
-- PEZ
Yeah, I know the minimal width now, I had never think of this before, Pear before 0.56 always drive as fast as he can when reach his destination, so i can see some times it hit some close peak. But i dont think always stop when the bullet passing me is the best way, some times you must have a high start velocity, especially the close fighting. --iiley
Well, maybe it is a contingency, in my testing, Pear 0.58 can't get more than 99 against WSCBotA. -- iiley
I know a lot about SilverSurfer/WaveSuffering, but some of the details I don't know. What I do know is that SilverSurfer might be the best close-combat bot in existance. Maybe Axe has some special case about not stopping when it's close combat. SilverSurfer just oodles of special cases. -- PEZ
Actally you, iiley, and Axe are a bit similar in your remarkable attention to detail. -- PEZ
About not making 99+ against WSCBotA. It could be something particular with stationary enemies. Not saying that that is the case though. -- PEZ
Pear download link is broken, it's my RR@H client is hanging when it tries to download... err, nevermind--David Alves
I upload it to the robocoderepository, and changed the participats page. -- iiley
Consider running a TargetingChallenge/FastLearning instead of a normal TargetingChallenge... since it consists of 35 round battles it's a better indicator of performance in the RoboRumble --David Alves
Yes, I am running it already, Running season 14 now, result come soon. ;] -- iiley
;[, only got 89.05 in FastLearning?, a bad gun. -- iiley
Hey! 2020! Congrats Tide personnel (iiley & Xiemin, right?)! -- Axe
Thank you, that's right, me and Xiemin. :) -- iiley
Answering some questions & comments above:
Aha, good comments, Axe, PEZ always give me big encouragement, thanks him very much. ;] The distance of < 150, you are right, WaveSurfing is hardly useful, I think this is a problem in Pear 0.58, it surfs all distance, so it lost too much to some rammers, i should fix this in next version. -- iiley
That probably wont help u against rammers, SS also has a particular casing to deal with rammers, i try to run-like-hell from them... -- Axe
Yes, it is a intractable problem, i maybe have to has a particular dealing too. Pear 0.57 has one.:) -- iiley
Just saw that Pear 0.58 wins the PremierLeague. Nice!! -- iiley
For your information CassiusClay never stops surfing as long as there are waves in the air to surf. When there's no waves in the air CC chooses either forward or reverse direction whichever brings it farthest from the enemy. The latest test version of CC has a bit of a dive-in problem, but 1.9.9.09 didn't and it was among the strongest around when it comes to close combat. Maybe surfing isn't particularly meaningful at distances < 150. But introducing special cases might mean introducing bugs so I rather avoid it if I can. Special casing for rammers I have found necessary though. What I do is that I don't wait for the rammer to get close before I try run away at steep angles. -- PEZ
iiley 89.05 in TC35 isn't a bad gun. Look what guns you have behind you. SandboxDT 2.11 is almost 2 points behind! Yet, a few lessons learnt in the Fierce Battle (tm) between Tityus and its spawned competitor Raiko could probably boost your gun. I haven't looked at your gun code, but what Jamougha proved to us was that:
-- PEZ
Thank you very much,PEZ:) i am just thinking how to improve my gun, that's great informations, i will have a try about it. -- iiley
That Pear is getting more and more indigest. PoisonedPear? should be a better name... :) -- Axe
Aha~~Cool name,maybe make a Virulent Fruit Series bots. Later Lichee, Watermelon, oh, i eats fruit now, not smoke.;} -- iiley
iiley, I wish you best of luck with improving your gun. It could mean quite a few rating points for you to bring it up on par with the top guns. Also you might want to takea look at my wall segmentation. I think it's the best around. After all, Jamougha started to use it too, which must mean something. =) Even though Jam doesn't wall segment as heavily as I do. -- PEZ
Oh~ your wall segmentation, I had noticed that, that is different from i had seen before, but had not read it clearly, then i will reread it clearly. Aha, Pear's gun segmentation become more and more like Bee. I must do some new try i think then. -- iiley
Back to 0.58 to see does i made some worse. -- iiley
It seems that i really did some thing worse, 0.58 is the best version, after it i make it down. -- iiley
Why do you think we call it WaveSuffering? =) -- PEZ
Like SilverSurfer's theme picture, i think ;]. -- iiley
Like SilverSufferer?'s theme picture you mean? -- Kawigi
It is about a arithmetic different from RollingAverage, you know if you continuously rate a value in RollingAverage, your value will be like "newValue = oldValue*0.99 + 0.01", in about 5 times continuously, the value will be about 0.49, it increases slower and slower.And they is the difference to EISS that it increases faster and faster like "newValue = oldValue*2"(first oldValue must bigger than zero). Example first oldValue = 0.01, first rate it will increase 0.01, seconds will be 0.02, if you want decrease it, you can set "newValue = oldValue*(1/2)". I think this is useful for hit factors for WaveSufering?. If you are hit by a Simple Gun, the certain factors will be continuously rated, it will be a very large value, then you can always avoid them. -- iiley
1st: tide.pear.Pear 0.58 3166 1300 260 1386 220 0 0 26 8 0 2nd: tide.pear.Pear 0.61.8 1402 400 80 851 70 0 0 8 27 0 1st: tide.pear.Pear 0.58 3155 1200 240 1475 239 0 0 24 11 0 2nd: mue.Ascendant 1.0 2058 550 110 1286 112 0 0 11 24 0I think there must be some very good thing in 0.58. -- iiley
I think you should be careful when drawing conclusions from a single 35 round battle. In my experience the score shares obtained in these battles vary by 20 to 30% (of course only when both bots are able to hit each other). --Mue
Very nice iiley, but can you do this?
1st: abc.tron3.Shadow 3.52 84547 30100 6020 42469 5947 10 0 603 398 0 2nd: mue.Ascendant 1.0 67080 19900 3980 39022 4177 1 0 398 602 0Doesn't mean much in the rumble, but it's nice for one's ego... :) --- ABC
Wow thats a beating, i really have to look into long battle performance ... --Mue
Yeah, i know that Mue, i posted that just want to say i improved for days, but my old version seems stronger, that score i'd tested several times, on average 0.58 did better than 0.61.8 against top bots. That means not, although, i'm testing a long battle, i think Pear 0.58 must can't do good agasint Ascendant 1.0. -- iiley
wiki.Pear 0.61Bee only got 2042 score, then i konw my large problem was my movement, thanks PEZ's Bee let me know this. -- iiley
1st: tide.pear.Pear 0.58 78173 26750 5350 40790 5265 18 0 537 465 0 2nd: mue.Ascendant 1.0 72280 23250 4650 39743 4633 3 0 465 535 0Pear 0.58 wins a little margin in 1000 rounds. -- iiley
I want to got 2040, my last goal of Pear. God, please!!! -- iiley
2042.5 after 700 battles, Thank you God, kiss you!!! -- iiley
Maybe this time (0.62.1) you reduced the segment a bit too much. =) That's good of course since now you're starting to home in on where the segmentations should be. Anyway, might I suggest you try segmentations like: 3 velocity, 4 distance, 3 acc, 5 time_since_vchange and 4 wall proximity? Here "time since velocity change" should be measured in fractions of the travel time for your next bullet to hit your enemy and be divided something like TIMER_SLICES = { 0.1, 0.3, 0.7, 1.2 }
(that's from Bee). And "wall proximity" should be measured in "my" way:
public double wallDistance(double direction, Rectangle2D fieldRectangle) { double targetDistance = distanceFromTarget(); for (double gf = 0; gf < 2; gf += 0.01) { if (!fieldRectangle.contains(PUtils.project(gunLocation, startBearing + middleBin * bearingDirection * direction * gf, targetDistance))) { return gf; } } return 2; }(That's a method in the Wave class used by Bee.) I slice that wall distance up like
WALL_SLICES = { 0.15, 0.35, 0.65, 0.95 }
.
It would be an interesting experiment even if it proves not to work for Pear.
-- PEZ
Thank you for the good detail, maybe it can be a good experiment in Pear's Gun, And the "time since velocity change" was really clever:), Pear 0.62.1 did not reduced many segments in Gun, just in surfing stuff segments, I am focusing the movement recently, it's a experiment of my movement. -- iiley
Ah, when I had written my suggestion I realised you were probably talking about movement. But you can revisit it when you turn some attention to your gun. =) -- PEZ
By the way. Time since velocity change can be a good surfing parameter. -- PEZ
er~~~In my testing,more surfing parameter would be wrong, but Time since velocity change could be a important parameter i had never tested in my surfing, it may give Pear a improvement. -- iiley
Do you use a fast learning stat buffer in combination with the one you describe above? -- PEZ
yup, but not any on fast stat buffer, about the times of the statist's dimension like this:
fastBuffer = new Statist[DIST_D]; distVeloBuffer = new Statist[DIST_D][VELOCITY_D]; normalBuffer = new Statist[DIST_D][VELOCITY_D][BEARING_D]; dvbwBuffer = new Statist[DIST_D][VELOCITY_D][BEARING_D][WALL_D]; slowBuffer = new Statist[DIST_D][VELOCITY_D][BEARING_D][WALL_D][MOVETIME_D]; bigSlowBuffer = new Statist[DIST_D][VELOCITY_D][BEARING_D][WALL_D][MOVETIME_D][WALL_D];I think it can learn very fast and when times goes by, it learn subtly. But the segments have to be improved. -- iiley
Yes, but you should probably add an unsegmented buffer as well. Otherwise you might need to learn really simple targeting the hard way at each distance index. -- PEZ
AHa, i made a mistake, I posted the targeting's stat buffer, yeah, in movement, i have a unsegmented buffer, and less dimension than my targeting. -- iiley
Yes, Pear, I do love eating you. Years after your last version update, you still kick major butt in the PremierLeague! Not to mention an awesome TargetingChallenge2K6 score. -- Voidious
Anyone know why Pear redefines the events? --Chase-san
That is because we have this [ai-code|http://www.ai-code.org] robot platform, we were tring to make a adapter to make Tide robots(like Pear) can be easily ported to robocode and AI-Tank. --iiley
I know we never "met", but - does this mean you're back to Robocode, or just stopping by for now? Pear is still quite strong, particularly its gun, as seen in the TargetingChallenge2K6 and TargetingChallenge2K7. -- Voidious
Oooooo, I see. --Chase-san
Just, some times back here to see some thing, miss here. :) After our ai-code company closed, i don't have any chance/time/interesting to back to robocode, i'm waiting to see a new revolution technic to beat down the current king-technic WaveSurfer bots. The main technic is stopped at GuessFactor Gun + WaveSurfer Movement for years, am i right?, i have no idea what will be the next, maybe some day it comes out, you guys will do it, or me? Anyway, very expecting the next revolution, like the PatternMatching time, GuessFactor time, Wave time, Random Move time, WaveSurfer time, exciting times.:). --iiley
DynamicClustering has been pretty reliable (no one has gone at it hard lately, but many of top bots use it), and if Simonton has anything to say about it there is gonna be another PatternMatching time. --Chase-san
I think GuessFactors and WaveSurfing will be integral parts of Robocode forever, but that doesn't mean there's nothing new going on. Any form of precise bullet dodging will be called WaveSurfing and a GuessFactor is just about the most elegant way to describe a firing angle. There are 9 bots in the top 20 that don't fit the traditional GuessFactorTargeting / VisitCountStats / WaveSurfing setup: WaveSerpent (no bins in its surfing), Shadow (DynamicClustering gun / surfing), Chalk (DynamicClustering gun / surfing), X2 (DynamicClustering for gun, at least), SilverSurfer (unique gun), Lukious (DynamicClustering gun / surfing), Toad (DynamicSegmentation? for gun), Ali (log-based gun), and Engineer (NeuralTargeting and NeuralMovement? / surfing). There's still plenty of room for innovation while still making use of GuessFactors and WaveSurfing! =) By the way, DynamicClustering == TronsGun.
I don't know if there is room in Robocode 1v1 for any more revolutions, but Robocode 2 is not so far off. =)
-- Voidious
Thanks Chase-san and Voidious, interesting, i think i'v missed the good things, Robocode 2? -- iiley
Well, Fnl now has official control of the Robocode project on SourceForge?, so he has been releasing some new versions of Robocode with lots of nice development features: debugging graphics built in, many nice interface changes, integrating the RoboRumble, and lots of other stuff. Anyway, he started a discussion about Robocode 2 a few months ago on Robocode/Future. We haven't discussed it much lately, but I think he's still planning to do it eventually. -- Voidious
I have talked to Fnl on this actually, and he seems to be prepared to do it. He has some nice Server/Client?/Gui? things going on there. I don't think it will be all to RC1 compatible like most the talks we're attempting to have it be. --Chase-san