Robo Home | Changes | Preferences | AllPages



Voidious and PEZ, assembled by Bayen




BasicGFSurfer is the merge between two bots: PEZ's GFTargetingBot and Voidious' BasicSurfer. More info can be found there.

More info can also be found at Kawigi's GuessFactorTargeting Tutorial and on Voidious' WaveSurfing Tutorial.

What's special about it?

Nothing, it is the basic, bugfree, implementation of a WaveSurfer with GuessFactorTargeting

Great, I want to try it. Where can I download it?


How competitive is it?

It is ranked just in the top-50 with 1865 points

How does it move?

basic WaveSurfing

How does it fire?

basic segmented GuessFactorTargeting

How does it dodge bullets?


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

Not aware of melee

What does it save between rounds and matches?

Between rounds anything usefull, between matches nothing.

Where did you get the name?

Well, I think that is rather clear, isn't it.

Can I use your code?

This comes from the tutorials, so it is in the jar. Public domain. The authors all enjoy credits though.

What's next for this robot?

Nothing. It fullfills its purpose as it is.

Does it have any WhiteWhales?


What other robot(s) is it based on?

Reread this page, it is mentioned at the top.

Comments, questions, feedback:

This bot is stronger than expected. -- GrubbmGait

Yeah, it's stronger than my Squirrel, which was SUPPOSED to take that code and improve it but all it did was make it worse :(. --Bayen

I don't think the tutorials are under the RWPCL, I fiugured the code was just to use and abuse for anything thats sports your fancy. (not that my bots aren't under the RWPCL anyway) -- Chase-san

PEZ put GFTargetingBot under the RWPCL, but I consider the WaveSurfing/Tutorial to be available to use however you want. -- Voidious

I lifted the RWPCL licensing now. The code is in the public domain. Of course I do believe very hard in OpenSource and would encourage anyone to use it anyway. -- PEZ

I put Squirrel's code in the jar, so that makes it open source, right? Anyway, I don't think anyone would really want to use my code, for two reasons. It's extremely messy, and Squirrel isn't that good. Oh well --Bayen

Hmm, when i run Plains against BasicGFSurfer, i sometimes get a

wiki.BasicGFSurfer 1.0: Exception: java.lang.ArrayIndexOutOfBoundsException: 5
java.lang.ArrayIndexOutOfBoundsException: 5
    at wiki.GFTWave.setSegmentations(BasicGFSurfer.java:386)
    at wiki.BasicGFSurfer.onScannedRobot(BasicGFSurfer.java:102)
    at robocode.peer.robot.EventManager.onScannedRobot(Unknown Source)
    at robocode.peer.robot.EventManager.processEvents(Unknown Source)
    at robocode.peer.RobotPeer.tick(Unknown Source)
    at robocode.peer.RobotPeer.turnRadar(Unknown Source)
    at robocode._AdvancedRadiansRobot.turnRadarRightRadians(Unknown Source)
    at wiki.BasicGFSurfer.run(BasicGFSurfer.java:51)
    at robocode.peer.RobotPeer.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Also, on two of the rounds, BasicGFSurfer is stopped.
Round 3 initializing....
Let the games begin!
Round 3 cleaning up.
Round 4 initializing....
Let the games begin!
wiki.BasicGFSurfer 1.0 has been stopped.  No score will be generated.
Round 4 cleaning up.
Round 5 initializing....
Let the games begin!
wiki.BasicGFSurfer 1.0 has been stopped.  No score will be generated.
Round 5 cleaning up.
Round 6 initializing....
Let the games begin!
Round 6 cleaning up.

I can see why - it has MAX_DISTANCE set to 900, but technically the maximum distance should be 1000 - BOT_WIDTH (because it measures from center of the bot) on an 800x600 field (like a 3/4/5 right triangle). If you are as far away as possible, it will be a higher index than the stat buffer is initialized with. Really, the safest thing to do would be to calculate MAX_DISTANCE based on battlefield width and height. Hopefully, that stoppage thing is also related. I'll update the GFTargetingBot tutorial; somebody should release a BasicSurfer 1.1 =) -- Voidious

Bugfixed version 1.01 available. Made a more robust fix than just increasing the distance, without any effect on distances < 900. MAX_DISTANCE remains 900.

int distanceIndex = Math.min(DISTANCE_INDEXES-1, (int)(distance / (MAX_DISTANCE / DISTANCE_INDEXES)));
-- GrubbmGait

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited October 10, 2007 22:40 EST by GrubbmGait (diff)