Monday, September 11, 2006

Robocode

One of my colleagues at work is facilitating a Robocode competition. Robocode is a Java-based framework for developing virtual robots. Once developed, these robots are placed in a “battleground” where they attempt to defeat each other. Please see http://robocode.sourceforge.net/. We are going to have a bracketed competition of 1v1 this coming Friday and then a meelee competition where everyone is put on the board.




I've spent close to 25 hours so far learning how it works and developing my robot. The hardest part so far has been the geometry that is required to direct the robot, interact with the surroundings, run the radar, and aim its gun.

Have you looked at a Unit Circle lately? Do you remember the Law of Sines/Cosines (SSS, SAS), the Pythagorean Theorem? I sure haven't. My math knowledge after many years of non-use has declined to a horrid state. The programming I do at work doesn't involve any geometry so this exercise has been enjoyable. Jennie even sat down and helped me with one problem that still vexes me.

I've decided on a way-point sytem for the bot to used during its navigation. Basically I picked a bunch of spots on the battlefield, put them in an ordered collection, then when the bot starts up it merrily goes on its way from point to point. Nothing fancy, but it will appear at first to be random and I doubt anyone here has put in the time to do pattern matching yet. I still need to add code to retreat in the opposite direction if the realizes it is going to get too close to the other bot.

In addition to the gun, the bot has a radar providing it with information about opponents when the radar pings them. This also must be controlled by code I've written.

My bot's name is 'UnderDog' I don't feel it will do very well as there are some very smart people in my office. We'll see though. I did 'pimp' my bot by adding some short audio clips that will be played at the appropriate times. One of my favorites is: here

Here's a quick video of another persons bot.

No comments: