[Home]Perpy

Robo Home | Changes | Preferences | AllPages

Bot Name

Perpy

Author

Jp

Extends

AdvancedRobot

What's special about it?

Nothing, really. It's just a simple newbie bot that uses a few different targeting methods in a virtual guns array, while doing simplistic wavesurfing

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

http://www.robocoderepository.com/BotDetail.jsp?id=3001

How competitive is it?

Not very. At time of writing, it was around 216 in the Rumble.

How does it move?

It simply moves in a wide arc around its target, while doing basic "goto" wavesurfing - it determines whther it would be safer to go straight or reverse based on statistical data about how the enemy is firing

How does it fire?

It uses four different guns in a virtual guns array - currently, a circular targeting gun, a head-on-targeting gun, a guessfactor gun, and a broken pattern matcher. As of September 21, the pattern-matching gun isn't as broken, though.

How does it dodge bullets?

Wavesurfing

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

Its a one-on-one bot - it doesn't do melee very well at all.

As of Perpy 13.0, this is no longer true - Perpy now works in melee, but not well. Firstly, he just spins his radar, rather then getting a radar lock. Secondly, he does not use his pattern matcher or GF gun in melee (Until there's only one bot left). Thirdly, he uses a sort of antigravity movement to avoid other bots, instead of his more normal perpendicular movement. Finally, he ignores energy management in melee.

How does it select a target to attack/avoid in melee?

Closest target.

What does it save between rounds and matches?

As of Perpy 11.0, it saves GF targeting data, wavesurfing data, and VG hitrate data between rounds, and nothing between matches. As of Perpy 13.0, it saves dynamic distancing data.

Where did you get the name?

Because it moves perpendicular to the opponent - when I came up with the concept, it was sort of revolutionary, seeing as I'd never seen RoboWiki before then. :P

Can I use your code?

Go ahead, it's nothing special.

What's next for your robot?

Fixing my wavesurfing

Does it have any WhiteWhales?

Any decent bot, really. I've wanted to at least do decently against wcsv.Engineer for a while, now, but that's more because it was the first decent bot I downloaded. I would also like to beat Loki's bot Freya. Pity she's designed more for melee then one-on-one.

---

Version history:

Version 16.0 - Many wavesurfing bugfixes, Perpy now stays further away from enemy bots. I'm considering reintroducing wallbouncing, with checking to make sure opponents can't take advantage of it.

Version 15.0 - More changing of energy management, removed some of the wall bouncing - Perpy used to bounce if his heading was going to change too much - changed the number of lateral velocity segments, made some changes to wavesurfing prediction that seems to have it working better. This may regain some of the points I lost with 12.0 through to 14.0. Hopefully.

Version 14.0 - Changed around some of the energy management when 13.0 sunk massively in the rumble.

Version 13.0 - Added far better melee capabilities, as well as segmented the GF gun on lateral velocity.

Version 12.0 - You didn't see this one, but it added an energy-management system and fixed a few bugs.

Version 11.0 - Perpy now saves some data between rounds (Using a static variable) and uses "goto style" wavesurfing - its movement is now significantly improved. Its also a lot slower now, so I'll have to look into speeding it up a bit.

Comments, questions, feedback:

Looks like you broke something in v9.0, it dropped more than 200 points. -- GrubbmGait

Yeah, I noticed that. 10.0 fixs it - I changed the way the wavesurfing worked so that it only considered a few bins either side, rather then all of them. That made it very prone to getting stuck in local minimums and getting hammered by HOT. I'v definitely got to improve the movement - it's the big problem with it right now, I believe. --Jp

You're still not really surfing. Your score against rz.HawkOnFire will be above 99% when you get the bugs out. I'd recommend taking a look at it using graphical debugging. You can see David Alves/Free Code for some helpful code to draw onto the screen with. I'd also be happy to take a look at the code if you want to publish the source. Good luck! --David Alves

Yeah, I would definitely agree with David on this one. That's not to say you don't have the idea right, but you certainly have some things to work out before you uncover the true power in WaveSurfing. I actually did look at your source a little to try and find a problem, but nothing jumped out at me yet. (@David: The source is in the .jar, by the way.) -- Voidious

Oy... this code is gonna take a while to read. I'd strongly suggest you break your code up into multiple source files. I'll take a look at it tomorrow. --David Alves

Another quick bit of advice: make absolutely sure that your movement predictions are absolutely accurate. If they aren't nothing else will work correctly. --wcsv

I have been doing some graphical debugging, and the waves look right. It looks like I'm putting hits into the right wavesurfing bin, but there are some problems with my prediction code, I believe. It works fine when not near walls, but it doesn't seem to handle wallsmoothing properly sometimes, and I'm not overly sure why. That is, my predicted path with wallsmoothing isn't the same as my actual path with wallsmoothing.

Yeah, the source code is fairly ugly - a word of warning, those comments aren't neccessarily correct. Some of them are a little out of date. Breaking it up into multiple blocks may be a good idea, David.

Probably my problems with prediction are the cause of my wavesurfing troubles, so I'll continue trying to debug it. --Jp

I've got midterms this week so I don't have time to look over your code right now, but I had a similar problem with PowerHouse for a while. It turned out that I was calculating my max turn rate in degrees rather than radians. The first thing i'd check is that you didn't make a similar mistake in your prediction somewhere. --wcsv

Back when I started I was getting absolutely dominated by one of wcsv's other, earlier bots, Stampede2. Though I eventually beat Freya 0.31 in one on one, I've still never consistently beaten it in melee. Usually close, but just out of reach. -- Martin

The bot isn't available for download. -- Martin

That's weird... I definitely uploaded it. Trying to download it from the webpage doesn't give me an error, but I don't seem to get a file, either... Maybe it's something weird with the repository. I'll see if I can get that fixed, but I don't have direct access to the machine that it's stored on right now. I should be able to SSH into it if I can remember the damned hostname, though. :P --Jp

It seems to work for me, now that I've had a closer look. Maybe the Repository had a bit of a blip a while ago? --Jp

Just a note - the CS class that originally used Robocode to get us doing AI stuff recently ran a tournament with the bots we wrote for the practical... and Perpy won! Both the one-on-one section and melee. Really, though, nobody else was as obsessed with Robocode as I was. The only other two 'decentish' bots included a rambot, and a linear-targeting bot with perpendicular movement.

Nevertheless, I got a significant quantity of chocolate out of it, so all's well that ends well. :)

Also, I seem to have fixed the bug with prediction in my latest version of Perpy, but his movement isn't much better - in fact, it's worse against simple targeters then 11.0, which seems to have been the high point so far. Clearly, I've got some more problems with my wavesurfing. I'll have to graph out where I'm putting hits and what the danger of various bins are. --Jp


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited November 10, 2006 2:14 EST by Jp (diff)
Search: