Robo Home | Changes | Preferences | AllPages

How does it move?

It's a WaveSurfer using RollingAverages? (last 3 hits) with randomness and some other strange stuff thrown in..

How does it fire?

GuessFactorTargeting, using Pugilist's gun - thanks PEZ

How does it dodge bullets?

By WaveSurfing

What does it save between rounds and matches?

Between round - Pretty much everything Between battles - Nothing

Where did you get the name?

I was listening to teh album "Waking the Fallen" by Avenged Sevenfold when i started coding it.

Can I use your code?

It's there if you feel the need...

What's next for your robot?

Better wavesurfing, ill add segmentation when i like the way it moves.

Does it have any WhiteWhales?

Most probably Locke.

What other robot(s) is it based on?

It steal [[Pugilist]'s gun, its got soem helper functions from lots of people, and i am using a modified version of Paul Evans Guess class.
Now a WaveSurfer. Currently borrowing PEZ's pluggable gun (If you don't mind PEZ), i just wanted to see if my wave surfing was much cop... --Brainfade

Of course I don't mind. But I guess you will have to resist the temptation to tune the gun to get an accurate answer on how your movement measures up. =) -- PEZ

You that are stepping into WaveSurfing, iŽll recomend that u use first HeadOnTargeting bots (like HawkOnFire or NanoStalker) to test your WaveSurfing. A good WaveSurfing should be able to defeat these simple targeting bots by 99%, that was my primary goal when i started (and it helped a lot). Most of the points that WaveSurfers get come from simple targeters like HeadOn? or linear. A good advice also, is to use RobocodeGLV014 (if u arenŽt yet) to graph your waves & bins, WaveSurfing is a nest of huge potential bugs (at least for me is). -- Axe

Nest of bugs? Bugs in wave surfing? Naaah, never even heard about it... eahm right. Only problem I see when you get the wave surfing working against head on targeting is that, not too rarely, you don't allow the enemy bot even a single point, meaning the result is not accepted :) Good luck! -- Pulsar

Ok, i've loving this:

cx.Lacrimas_1.36 54.7 1 25-5-2004:20:50 26.7 28.0 
that's the new version with changed adpatation speed, and a few bits and bots tweaked. Although its no world beater, the victory over lacrimas is enough to put a smile on my face.. --Brainfade

In fact no, screw Lacrimas (nothing personal iiley) but this just blows my mind:

 pe.SandboxDT_3.02 51.6 1 25-5-2004:21:6 28.5 23.1 
I know that when DT has another crack with saved data i'll get creamed, but until i'll have an extremely smug lookign grin on my face...--Brainfade
Ok, i'm beginning to doubt a couple of bits of my code. Especially the code i use to find which are the maximum guess factors i can reach forwards and backwards in the reamining time before the wave hits. My code for workign out the most backwardly point is:

public int getBackwardsReachable(double time)
        //Works out the bearing difference from when the wave was fired
        double bearingDiff = robocode.util.Utils.normalRelativeAngle(absoluteBearing(surfing.here, this) - surfing.enemyBearing);
        //Works out my lateral velocity compared to the direction i was going when the wave was fired
        double myVelocity = surfing.direction * lateralVelocity;
        //Loop through all the possible times
        for(int i=0; i<time; i++)
            //Increase the velocity to account for acceleration
            if(myVelocity == 1) myVelocity = 2; 
            myVelocity += (myVelocity>0?-2:-1);
            myVelocity = Math.max(-8, myVelocity);
            //Work out the bearing difference for this lateral velocity for the current tick
            bearingDiff += surfing.direction*myVelocity/(this.distance(surfing.here));
        //Return index corresponding the most backwardly reachable guess factor
        return Math.max(0,Math.min(12+(int)((surfing.direction*bearingDiff/surfing.maxAngle)*12),12));

Anything there look wrong to anyone?? --Brainfade

Ummm, I don't quite follow the velocity trickery there, but it might be right. In my experience it's not necessary though. A rough estimate on how far you can travel works quite good too. But what's more important is the "time" variable you call this method with. I would remove that and instead iterate the wave forward together with the bot in the loop there and then the exit condition would be when the wave hits your iterated bot position. -- PEZ

Yeah, The velocity code tries to find the precise distance i can move forward in the time before the wave hits. It seems to be marginally better than a guess, so i just left it in there. Iterating the wave forward is on my todo list. But it requires me to drastically change my movement code, so i thought id see if i could score some cheap points by throwing in some random elements. The current version favours guess factors that give it the same lateral direction as the enemy has to it, and also tries to throw in some randomness to fool PatternMatchers?. Failed miserably though. Looks like pure surfing is a better way forward... --Brainfade

Pure surfing is a better start at least, I think. It delivers a sure answer for when you have gotten it to works. There are so many little and big bugs you can have in a surfer. When those are out and pure surfing is working you can go back and see where you can try fool those PM guns and stuff. -- PEZ

Ok, please i dont understand anymore. Where did i go wrong?? The rating details are here: http://rumble.robowiki.net/servlet/RatingDetails?game=roborumble&name=brainfade.Fallen%200.5 and teh source is included in teh package. I have some heavy losses to soem really strange bots... --Brainfade

Haven't checked the source. But your surfing is cleary broken. Watch Fallen against DevilFISH and you'll see it. Even though DF keeps hitting at GF1 over and over again, Fallen keeps driving in the same direction all the time. Maybe it is some code you have there that's supposed to make you avoid close combat that causes it? If so try removing any such code. -- PEZ

I reverted to an old version of the code and made some changes and it seems to be working much better now. I'm currently going through a last process of tweaking my raw movement. What kind of rating should i be looking for when using unsegmented statistics?? --Brainfade

Good question. I guess you can get somewhere around 1900 with that. Wait, that's what you have, in'it? =) Seriously, throw in distance and velocity segemantations and you'll boost your rating quite a few points I think. -- PEZ

Ok, here's the final version without any segmentation, and the first release i've ever done that's been extensively tested. Change the wall bouncing threshold, so now it rarely bounces. Also changed the learning speed significantly. i was previously using a rolling average of the last 3 hits, i'm not using 15. let's see if testing pays off...--Brainfade

Interesting. I'm using the last 2 hits. -- PEZ

Well, from my tests it seems to be that higher numbers work better against the whole range of opponents. I can't guarantee it'll work for you, but when your ranking has stabilized, pick a number between 15 and 20 (it made little difference in my tests and try it). The tests were over 250 rounds, but at the end of the day if it's taking a long time to get hit 15 times, then you really didnt ought to worry about it :) --Brainfade

I'll try it. Definately. Thanks! -- PEZ

Trying it now. With CC I don't expect it to work the same magic it does for Fallen though. Since you are using unsegmented stats there and are more vulnerable for contamination than I am. -- PEZ

Lost 10 points. Now I'll try going to the other extreme and roll the data as fast as can be done with rolling averages. -- PEZ

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited July 6, 2004 18:41 EST by Brainfade (diff)