It uses WaveSurfing.
It uses two guess factor guns, one is tuned to hit wave surfers (and adaptive movements in general) and the other should hit everyone else. While the bot tries to determine, which gun is better in hitting the current opponent, both guns are used as virtual guns (slightly biased towards the general purpose gun). After a decision has been reached, the better gun is used exclusively.
WaveSurfing as i understood it is practically a dodging strategy.
Its an one-on-one bot. Never tested melee, so its probably throwing exceptions at that.
It saves nothing between battles. Between rounds targeting and movement information is stored.
While imagining it's rise to the top of RoboRumble of course :-)
Not at the moment. I'll think about publishing it when i'm satisfied with the bot and it's code structure.
Version 1.2.5 is at 2085 with 700+ battles! Man, this is both impressive and depressing. =) Really good work! -- PEZ
That score hardly seems fair! Anyway, congrats on improving the already best bot. -- Alcatraz
Can you share some on how your anti-surfer gun works? I've been experimenting some with anti-surf-gunning and I just get zero or negative results from it. Frustrating! -- PEZ
In my GF experiments I remember noticing that an unsegmented (and/or very fast learning) gun would score better against surfers than a highly segmented one. -- ABC
Interesting! I'll experiment with that some. -- PEZ
Hehe, i obviously made the same observation as ABC. I use a less segmented (not unsegmented!) fast adapting gf gun as anti surfer gun. I also tried to choose a good gf bin instead of the best, choose the worst or a bad bin, and a lot of other things i dont remember right now (deviating from gf scheme). None of these worked as good. Three things i learned during these experiments:
Maybe its time to use a wave surfing movement for trying to predict how the opponent will move. In theory all the data wave surfing movements use for decisions are available to both bots. Of course that would not lead to 100% hit ratio (as no two wave-surfing implementations are equal) but maybe it will do better than gf-guns (since wave surfing is about avoiding gf guns). Maybe just calculating the precise interval of reachable gfs and chosing a bad one would suffice. Actually all this stuff is still on my to-try-list, i just dont have much time at the moment. --Mue
I know Shadow is slow, it currently uses log based methods for both targeting and movement, and PM-like decision making for the targeting. But still, have you tried running 1000 rounds against Cigaret lately? ;) -- ABC
Yeah. Shadow isn't too bad compared to the Cigarets. -- PEZ
What's really frustrating you is probably that Shadow beats Ascendant. =) -- PEZ
Shadow's slowness affects me in every test I make, but I don't mind as long as it wins in the end :). About your conclusion that Shadow is really hard to hit no matter what gun, could it be that the fact that my gun catches surfers better than GF guns catch me influences that conclusion? Have you made some tests comparing Shadow in challenge mode to other surfing movers (like your own, f.e.)? I'm still to test a version with bee's gun in the rumble... -- ABC
But, surely, when you test Shadow you remove those deeply nested wait loops, don't ya? =) Testing Shadow in challenge mode is a good idea. I think I'll do that using my gun and compare to DT and CC?. -- PEZ
Please post the results when you have them. -- Mue
Finally i found some time to do the test proposed by ABC. I ran some 1000-round battles with Ascendant and Shadow in TargetingChallenge mode vs bots in MovementChallenge mode. The results calculated according to the TargetingChallenge rules:
|Ascendant TC||Shadow TC|
|guess factor gun||anti surf gun||both guns|
|vs Shadow MC||54.791||63.924||65.019||66.321|
|vs Sandbox MC||72.844||65.988||72.380||68.888|
|vs Ascendant MC||59.666||88.974||88.795||82.760|
Conclusion: My targeting is ok, it hits Shadow almost as good as Shadow hits itself. The movement is the problem, and a rather big one actually. I never had thought that Ascendant is such an easy target ... --Mue
Very interesting results! That means my movement and your gun would probably make a killer combination. -- ABC
Maybe :-). I'd actually like to try this combination. But you have to keep in mind that i only tested vs Shadows and Ascendants targeting. And in this setup Shadows movement is clearly superior. Most other guns must have problems hitting A, since Shadow seems to be the only bot that beats it.
Sadly its not easy to plug my targeting into other bots at the moment. So what do you think? Care to try this combination? If yes, i'd try to make the targeting plugable (sort of :-) this weekend and make it available. --Mue
Yes, I would very much like to do that test. If it works (the gun+movement combinations are never totally predictable), it will give me a measure of how much I need to work on my gun, and how much you need to work on your movement... -- ABC
I don't think there's too much wrong with Ascendant's movement. It's anti-surfer gun setup is way interesting though! I must experiment more with that. -- PEZ
I just finished extracting targeting code (still a lot of classes :-). Its uploaded at:
I wrote a class
TargetingAdapter that provides all the methods needed to plug the targeting into a bot (there are some comments included to tell how to use them). Most of these methods are forwarding events to knowledge management, which is also used in A's movement and thus not targeting specific. So its possible that some of these events dont affect targeting at all (i'm just to lazy to figure out which ones :-). I probably should mention the
onExecute() method, which should be called directly before calling
execute() on the robot. Knowledge management uses this to keep track of the old position/velocity etc. of the robot. Its included because i'm again not sure whether targeting uses this information somewhere. The method doing all the work is
doGun(targetName). For best results it should be called after the movement has done all its stuff.
Ah, almost forgot: if this new bot grabs the #1 spot, which i actually expect it to, i'd prefer to remove it after some days (when the score has stabilized). Dont want to kick Ascendant off the throne myself ;-) --Mue
Way cool!!!!!!! I have been wanting to try your gun together with Butterfly for very long. I can't wait to use your adepter. Wait... I didn't wait. =)
Oops, already found a bug in
ROLLING_FACTOR needs to be 0.02f instead of 0.2f. Sorry! Bugfix is uploaded to same URL. --Mue
Hehe :-). I just wanted to propose that test (CC's movement + A's gun) and i'm curious where it will end up. I was already writing a mail to you with the classes attached, because you where unable to resolve that URL last time. Good to see that this problem doesn't exist anymore. --Mue
Did you pit it against Shadow? If it did beat that bot i'll reintroduce the bug in Ascendant and do some testing vs Shadow :-). Versus all other bots you are probably used to such results anyway. --Mue
My movement needs attention! -- PEZ
Yes, it beats Shadow (and Ascendant), I made a 1000 round test with the bugfixed version and it won with around 53% score. I'll post detailed results when I get home. -- ABC
Here are the tests I made:
1st: abc.tron3.AShadow 78480 27350 5470 40266 5311 82 0 548 452 0 2nd: abc.tron3.Shadow 3.55.1 67031 22600 4520 35697 4138 75 0 454 547 0 1st: abc.tron3.AShadow 86779 28350 5670 46661 6080 18 0 568 433 0 2nd: mue.Ascendant 1.2.5 72852 21650 4330 42174 4694 3 0 434 567 0
Lets see how it does in the Rumble. -- ABC
Looks like I'm 3 points ahead of you in movement and 22 behind in targeting. I'll just have to test if this is exactly the same movement version I used in Shadow 3.55.1, it's been a long while since I touched Shadow's code... -- ABC
It is, and looks like movement is more important in the PL. -- ABC
Yeah, an OK gun and top notch movement is what it takes. But that's probably just a coincidence. With more movements to challange Shadows' it would of course come down on the gun again. -- PEZ
You'r right, my gun is also a big factor, it is still as good as (or better than) other top guns against wave surfers. -- ABC
Wow, thats definitely some monster of a bot. Going to #1 while not suffering a single defeat. And it shows that i can make A the king of PremierLeague by improving the movement (yeah, easier said than done, i know :-). --Mue
And I suspect the movement I used is from Shadow 3.55.3, I did a couple of small tweaks that lost me some points from 3.55.1 to 3.55.3. If only I could remember what I changed... -- ABC
I know that feeling :-). Its been more than once that i wished i had cvs installed. --Mue
No problem (especially since you offer to run the challenge yourself :-), here it is: http://mue.sonar-echo.de/mue.Ascendant_1.2.6TC.jar
I admit im somewhat curious too. If it turns out too bad, i just might start experimenting with targeting again, instead of messing up the movement (no progress there yet). --mue
Good timing =) ... I'm about to go out for a bit, so I'll leave the 500-round TC runnng while I'm gone. Should get at least 1 season done to post tonight. (Well, GMT -5 tonight.) Thanks! -- Voidious
Seems that code you removed worked even if you could not understand it. -- PEZ
Hm, got that impression too. Did not expect the movement to be that volatile... --mue
I like this robot! It has a nice approach towards WaveSurfing in my opinion, because it waits for the enemy to fire rather than just moving, and it also manages to get out of deadly zones pretty quickly which makes it tough to beat. I also think that the way it fires makes other surfers very vulnerable because it makes them stay at one place (is it intended?). I am currently trying to learn how good robots behave, at first, they all look the same (complex, bullet dodging, etc...), but now that I know a bit more, I can categorize them a bit better, and I found this robot's movement very unique. -- AvihooI
Thank you :-). In normal matches Ascendant should move, even if there is no bullet in the air. Just some special circumstances (like the start of the first round) will make it wait non-moving for the opponent to fire.
Concerning the gun im not sure i understand you correctly. There is a part of the gun that is designed to hit adaptive movements like wave surfing. I have not looked at that part for quite some time, while just recently there has been some discussion about that topic in the wiki (AntiSurferTargeting). So i think there are other bots that do better at hitting wave surfers (Shadow, Dookious, maybe CassiusClay and possibly some other bots i'm not aware of right now). And about making the opponent stop to evade the bullets: it definitly happens, if the opponents movement decides that stopping has the best chance to evade an incoming bullet. And as long as that works, i'd consider it a success on the movement side. The targeting is not designed to force movements into such a pattern, it just tries to hit as often as possible by looking at the very recent history of the opponents movement. Ascendant never misses its target intentionally. --mue
Keep in mind that the opponent can't see the bullets, anyway - for any bullet that misses him, he has no idea where it was, so he isn't really reacting to it (even if it looks like he is). If Dookious is better at hitting surfers than Ascendant, it's not by much, but thanks =) I would probably just add Pear, and maybe Toad, to that list of good AntiSurfer guns, and I would say I probably fear Shadow's gun the most (as a WaveSurfer). -- Voidious
I just thought that Ascendant creates some sort of targetting impression, and then does something a bit more complex. -- AvihooI
Am I reading this right - "movement also considers to stop moving when surfing waves", and lost 5 points? I'm sure the segmentation could be tuned slightly based on different surfing code, but you better believe that I'm running some tests with the removal of the stop option =) -- Voidious
I was also somewhat surprised, but i'm getting used to that :-). I think i've read somewhere that several other top bots seem to consider this option. So now im curious what your tests will show. If it does help Dookious considerably, there might be a bug hidden in my 'stop'-implementation... --mue
Well, I ran 2 seasons of the MC2K6 with no "stop" option... here's the comparison:
|Bot Name||WSCBotA||WSCBotB||WSCBotC||WSC||APMC||CassiusClay||FloodHT||Shadow||CFC||Overall Score|
|Dookious 0.90||99.69||97.97||95.03||97.56||38.79||46.40||66.58||31.69||48.22||61.52||1 season|
|Dookious 0.90*||99.61||97.50||94.54||97.21||38.04||46.17||66.24||30.73||47.71||60.98||2 seasons, no stop|
So there was a small difference, but nothing drastic, and I think that the segmentation would require different tuning because of the slightly different behaviors near zero velocity. (Feel free to delete/condense the above table if you don't like it widening the page here, of course...)
Ok, it obviously makes things slightly worse for Dookious, for every bot of the MC2K6. I have to admit though that i'm not sure, whether the MovementChallenge can predict the effect on the rumble in this case. Probably because i've not yet been experimenting much with that challenge ;-). Whats you experience with this? Maybe stopping does not hurt vs an immobile opponent that fires only slow bullets, but in a real fight ... ? --mue
My experience is that the MC2K6 scores seem much less accurate with respect to RoboRumble rating than TC scores, so it's tough to say. But I didn't have time to tinker too much yesterday, and running 2 MC2K6 seasons was easy to do while I was out ;) The fact that it was lower vs every bot makes me think it would be a decrease in performance in the RR, too, but I still say that it could probably be segmented away in either case. I'll play with it some more, though. -- Voidious
I'm a bit surprised by two things in your recent versions: first, I'm surprised you didn't already have wall distance segmentation in Ascendant's movement; second, I'm surprised that it hurt your score so much, although I could understand that it might need some tuning before you got it working nicely. I'm wondering, what kind of wall segmentation were you using? Do you know if it's the same style that PEZ uses in CassiusClay? I found his way to be much more effective than simple distance-to-nearest-wall, and he mentioned that Jamougha picked up that method, too. (Although I guess you might be required by RWPCL to go open source if you looked :-P).
On a side note, I wouldn't mind seeing a new AscendantRRGC posted sometime, if you get the chance. PEZ gave me the OK to post a version with his latest Bee gun, which I'll be doing this evening, probably. It's exciting to think there may still be more than 2-3 points in my gun...
My wall segmentation assumes that Ascendant is going in a perfect circle around the opponents current position. Then the maximum guess factor is calculated, that can be reached this way without bumping into a wall. This value is used to determine the wall segment. By looking at the minimum guess factor the other wall segment (for walls behind the bot) is determined. I dont know though how CassiusClay does these things, and i cannot check because i might be required to go open source then (nah, im just too lazy ;-). I know that this wall segmentation is not completely useless, since it did better in my testbed. Actually i was somewhat surprised too that this did not translate into points in the rumble. Ah well, its time to get this flattening stuff right and then i'll look into wall segmentation again. Maybe its as simple as not using wall segmentation vs simple guns...
Thanks for posting the RRGC version - your gun is (still) awesome! I'll be posting Dookious RRGC for 0.965 before bed tonight, and hopefully those latest TC scores will be reflected in the rumble rating. (I fixed some bugs that affected gun and movement, so it's kinda tough to tell with the latest version of Dookious.) And by the way, yes, that's the style of wall distance segmentation I was referring to in CassiusClay... -- Voidious
Thanks, nice to see that my gun is still up there :-). Will be interesting to see where Dookious RRGC will end up. But keep in mind that the different ratings in RRGC do not necessarily carry over if that gun is used on a wave surfer. If the wave surfing works some bots will practically never hit the wave surfer, so it does not matter how fast your gun is crushing these bots. I remember that some time ago we tested the combination of Ascendants movement and Bee. It ranked very close to Ascendant in the rumble (i think one or two points below), other than one might expect just looking at the RRGC score. --mue
I thought the experiment was CC's movement and Ascendant's gun? In any case, I certainly agree that it is different on a WaveSurfer; on the other hand, "1 or 2 points" seems very important to me/Dookious? right now =) I'm a bit surprised that Dookious 0.965 went down 5 points in the RRGC, but oh well. If you're interested, I'd be game to try an Ascendant/Dookious cross sometime (Dooki's pluggable like CC), but I have the feeling that Ascendant is better in both movement and gun right now, anyway. -- Voidious
Oh, your right of course, it was CC's movement and Ascendants gun. I only kept the bottom line in mind, which was that the rating difference came almost exclusively from the movement. And i get your point about that "1 or 2 points" :-). I think it would be interesting how a Ascendant/Dookious cross would perform. I just want to fix that movement stuff first, until it performs like 1.2.6 did. This is somehow frustrating me right now, things look fine vs my testbed, but do worse in the rumble. And i did not find a single bot yet, that the results differ seriously enough against to point out to me what could cause this. Looks like i might have to revert completely to 1.2.6 code and start refactoring all over again with releasing every small change to the rumble, which im not really looking forward to... --mue
Yeah, I can imagine your frustration that everything since 1.2.6 has ranked lower than that version! And I find it similarly difficult to gain ground on Ascendant in the movement department - there's not many specific bots that I can use to benchmark my progress. It's something like Ascendant scores better against 220 opponents, Dookious better against about 200, and a few are exactly equal - so it's hard to figure out what will gain points against some without losing points against others. But such are the challenges involved in trying to take the throne... =) -- Voidious
I posted an RRGC version of the 0.98/1.0 gun - I'll be curious to see how it does. Assuming it still trails Ascendant's gun, which I think it will, I'd love to see a cross with Dookious's movement and Ascendant's gun sometime. Dookious is pluggable exactly like CassiusClay, so it should be easy enough to do. I can't think of a good name for the cross-tank, but maybe you can. =) No pressure or rush on it, though, it just seems like a fun experiment to try sometime. I'm curious how much (if any) synergy there is between our guns and movements; it seems possible that mixing the gun/movement either way could be worse than each of our individual tanks. -- Voidious
Some time ago i made Ascendants gun plugable so that it could be installed on Shadow. This was the same gun Ascendant is using now (i did not change anything there for quite some time). I digged that zip-file up again and uploaded it to:
There is an explanation some paragraphs above about how to use it. So if you want, you can mount this gun on Dookious an release it. I'm also interested in the result, because it could give a hint on how far im behind Dookious in movement. Got to admit though, that i dont have a good name at hand for that cross-bot either. --mue
Cool, I'll take a look at putting that together soon, thanks. The only name I can think of is "Tyranus" (or "Tyranius"), since Count Dooku "ascended" to the level of "Sith Lord" and became "Darth Tyranus". I guess I'll go with one of those - the name doesn't really matter much anyway... -- Voidious
Although none of the bots are mine I kind of like Ascendious. -- Florent
Well, "Ascendious" sounds a little goofy to me, so I'm going with "Tyranius"... thanks for the suggestion, tho ;) Granted, this isn't representative of most RR opponents, but these results are very interesting (and odd):
--- 1st: wiki.Tyranius 45405 15750 3150 23259 3243 2 0 315 185 0 2nd: mue.Ascendant 1.2.6 32454 9250 1850 19352 2002 0 0 185 315 0 Tyranius wins with 58.32% of score, 63% of rounds. --- 1st: wiki.Tyranius 36429 11250 2250 20512 2407 9 0 225 275 0 2nd: voidious.Dookious 0.98 35733 13750 2750 16956 2272 4 0 275 225 0 Tyranius wins with 50.48% of score, 45% of rounds. --- 1st: abc.Shadow 3.66d 41548 15900 3180 19557 2895 15 0 321 180 0 2nd: wiki.Tyranius 29072 9000 1800 16616 1655 0 0 184 318 0 Shadow wins with 58.83% of score, 63.6% of rounds. ---I would run 500 against CassiusClay and Pear, but I'm not really feeling that patient. =) I've posted Tyranius: [Tyranius 1.0] ... I'll enter it later tonight, since I don't feel like running my RR@Home client right now. And, of course, I'd like to remove it after a few days, as you guys did with FlyHighLittleButterfly.
I have to agree about Ascendious; it sounds strange even to my non-english ears :-). And i also think that Tyranius should be only temporarily in the rumble. Concerning the results:
Ascendant being susceptible to Tyranius is no big surprise to me. I know that my anti surfer gun works very well vs my own movement, probably much better than vs any other wave surfer.
The second result can be considered a draw. There is still some randomness, even in 500 round battles. Interesting though, that Dookious wins on survival. I dont really know what to make of this, maybe A's gun is using up the energy a little faster than Dookious' gun.
Cant comment on the result vs Shadow, because i dont know how Dookious or Ascendant would fare on their own (i know Ascendant gets crushed, but i have no exact numbers at hand). What i do know is, that Shadows movement evades both my guns pretty well (probably better than any other surfer). So it looks like Shadows gun is not fooled to the same extent by Dookious' movement. --mue
Hey mue, did that Tyranius experiment have any maddening effect on you? =) I know I am probably more addicted to Robocode than you (or anyone?) at the moment, but I have been going crazy since then trying to find any points at all in my gun, with virtually zero success. Maybe God's punishing me for letting Robocode get in the way of my studies or something... -- Voidious
Well, i already knew before Tyranius that there is some catching up to do for me. So any traces of madness would have to be ascribed directly to Dookious :-). But to be honest, i dont feel mad. I've certainly been releasing some more versions recently, but there was not much work involved on my part. I'm just ticking off some items on my todo list, that are easy to implement.
I think you should not be concerned about that lack of progress. I've already been stuck much longer than a week at certain points (and other robocoders too). Its just a part of robocode, and after all, you need to give some others a chance to catch up :-). --mue
Heh, well, I appreciate your comments there ;) I really should just take a break from Dookious, but sometimes that's easier said than done. (By the way, I didn't mean mad like "angry", I meant mad like "crazy", in case you didn't know that =)) -- Voidious
Hey Mue, just wanted to say it's good to see you releasing new versions again. I'm also curious what kind of changes to bullet detection you could be working on? I account for life gain / loss from bullets hitting, and I try to account for wall damage, but I guess I figured you already did that stuff... -- Voidious
Well, basically i was aware of that stuff :-). I've just known for some time, that Ascendant doesnt detect bullets occasionally until they hit. So i did some debugging, found and removed some bugs and refactored the bullet detection along the way. I'd say i got it close to perfect in 1.2.24, meaning that there were neither phantom bullets nor undetected bullets during some longer battles. Too bad the rating is still worse than it was with the original bullet detection (must be the movement change then...). --mue
It's not as round a number as 2000 or 2100, but congrats on cracking the 2090 barrier from someone who knows first hand how steep the hill gets at that point... Disregarding the versions of Phoenix with pre-loaded VirtualGuns data, it's a very close race for the #2 spot between you two. Now go crack 2100 before the MostCompetitiveRobocoderEver =) -- Voidious
Never! ;-) --David Alves
Hey thanks, Voidious. Actually i'd assume that Ascendant reached 2090 more by the rating drift than by real improvement. Sadly i've got virtually no time for robocoding right now. So i only managed to release some minor changes that were already implemented but still in need of testing. I'll probably should add though, that it looks like i'll have more time for this next month which should allow me to experiment with more serious changes. We'll see how this works out... --mue
The once proud Ascendant, went from 1st, to 2nd to 3rd.. then to 7th? What happened? Did some secret I missed out on, get around and well it seems a good couple people hit the 2100. --Chase-san