Robo Home | Changes | Preferences | AllPages

History | AscendantRRGC
A mega bot designed for one-on-one using WaveSurfing and VirtualGuns. I read about WaveSurfing when i tried to figure out how to improve the movement of Hyperion. After i finally started to implement it and realised how much work there is behind that, i decided to leave Hyperion as it is and make a new bot instead. Apart from the movement this bot is identical to Hyperion (for now).

This is no longer true. The targeting system is now completely different from the one used by Hyperion (well, until i release a new version of Hyperion).

How does it move?

It uses WaveSurfing.

How does it fire?

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.

How does it dodge bullets?

WaveSurfing as i understood it is practically a dodging strategy.

How does the melee strategy differ from one-on-one strategy?

Its an one-on-one bot. Never tested melee, so its probably throwing exceptions at that.

What does it save between rounds and matches?

It saves nothing between battles. Between rounds targeting and movement information is stored.

Where did you get the name?

While imagining it's rise to the top of RoboRumble of course :-)

Can I use your code?

Not at the moment. I'll think about publishing it when i'm satisfied with the bot and it's code structure.

What's next for your robot?

What other robot(s) is it based on?

It is based on Hyperion. I read a lot about WaveSurfing in this wiki, and took the general idea from it.

Where can I get it?


-- Mue

comments, suggestions, questions:

old comments:

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

Thanks :-). Actually i was looking for a way to beat Shadow. But after noticing the somewhat better test result i just had to try the change in the rumble, although it performs worse vs Shadow. --Mue

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:

  1. Shadow is really hard to hit, it almost doesnt matter which targeting method is used
  2. the result of a 1000 rounds battle is more random than i expected (the results vs Shadow differed by up to 3%)
  3. Shadow is awfully slow (especially if there are 1000 rounds to fight :-)

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

Thanks! I've considered the wavesurfing-turned-backwards option, but it feels like too much work. Maybe of I find thsoe OceansOfSpareTime some day I'll go that way. =) -- PEZ

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

I know that there are other bots that are even slower than Shadow. But these dont beat Ascendant, so ist not that frustrating because there is no need to run battles with them ;-) --Mue

What's really frustrating you is probably that Shadow beats Ascendant. =) -- PEZ

Yep, thats definitely the major source of that frustration :-). The only comfort is that all other bots i tested lose to Shadow as well. --Mue

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 TargetingAdapter. ROLLING_FACTOR needs to be 0.02f instead of 0.2f. Sorry! Bugfix is uploaded to same URL. --Mue

Umm... OK. I just released FlyHighLittleButterfly using the buggy version of the adapter. I'll fix that right away. -- PEZ

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

Cool, I'll upload AscendingShadow? later today. Some quick tests indicate it beats everything I put it against, and I still haven't tried the bugfixed version. :) -- ABC

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

Very interesting. Maybe the TargetingChallenge results above do not tell the whole story... --Mue

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's the same targeting points that the RRGunChallenge shows, in'it? -- PEZ

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

Hey Mue, I'd love to see some TargetingChallenge2K6 scores for Ascendant sometime. (I'd even run them myself if you posted a TC-enabled version!) -- Voidious

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...)

-- Voidious

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...

-- Voidious

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...

Concerning RRGC: I think i can release a current version of AscendantRRGC. Im curious too what the rating will be now. But dont hold your breath, it might take a day or two :-) --mue

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.

-- Voidious

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

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited December 1, 2007 20:47 EST by Skilgannon (diff)