[Home]PluggableRobot

Robo Home | Changes | Preferences | AllPages

Difference (from prior major revision) (minor diff, author diff)

Changed: 14c14
I'm almost ready to release it. Watch this space.
PluggableRobot/Source

Changed: 26c26
Sure, when I release it. I'm just about ready to do so. I'm having some problems with setting up the Eclipse build so that Robocode will be able to find it when loading RabidWombat. (If you've got ideas about this, let us know on the Eclipse page!)
Sure, help yourself to the source code. I would like to be able to make this into a JAR that can just be dropped into another project, but Robocode doesn't seem to let you do this in development mode. :(

Changed: 44c44
* I define a listener interface for each of the Robocode events, and any objects which implement the interfaces and register themselves with the bot will be notified of those events. The really nice thing is that PluggableRobot gives much better control over the order in which notifications are given; listeners are notified of events in the order that they are registered, and each listener gets the events in the order that the corresponding listener interfaces are declared. So a class with a declaration like
public class MyClass implements ScannedRobotListener, DeathListener
will get notified of the ScannedRobotEvent *before* the DeathEvent?. Pretty handy. All of this happens inside a custom event test as discussed on the EventManagement page. I don't actually make the robot do anything at this stage; this is just for data collection and processing.
* I define a listener interface for each of the Robocode events, and any objects which implement the interfaces and register themselves with the bot will be notified of those events. The really nice thing is that PluggableRobot gives much better control over the order in which notifications are given; listeners are notified of events in the order that they are registered, and each listener gets the events in the order that the corresponding listener interfaces are declared. So a class with a declaration like
public class MyClass implements EventListener.ScannedRobot, EventListener.Death
will get notified of the ScannedRobotEvent *before* the DeathEvent?. Pretty handy. All of this happens inside a custom event test as discussed on the EventManagement page. I don't actually make the robot do anything at this stage; this is just for data collection and processing.

Bot Name

PluggableRobot

Author

RobertWalker

Extends

AdvancedRobot

What's special about it?

It's not a standalone robot, really, but a base robot which you can extend. It provides a pluggable architecture and sophisticated event management. I developed it in parallel with my robot that is based on it, RabidWombat.

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

PluggableRobot/Source

How competitive is it? How does it move? How does it fire? How does it dodge bullets? How does the melee strategy differ from one-on-one strategy? How does it select a target to attack/avoid in melee?

It's just an architecture upon which a robot can be built. Without extension, it's pretty much indistinguishable from SittingDuck.

What does it save between rounds and matches?

Nothing.

Where did you get the name?

It's a robot design for a pluggable architecture. PluggableRobot made sense.

Can I use your code?

Sure, help yourself to the source code. I would like to be able to make this into a JAR that can just be dropped into another project, but Robocode doesn't seem to let you do this in development mode. :(

What's next for your robot?

The componentization, EventManagement and debug graphics parts are all done. I may want to include some persistence code.

Does it have any WhiteWhales?

Since it doesn't fight on its own, no.

What other robot(s) is it based on?

None directly, although I've culled some ideas from the wiki. The EventManagement page shows some discussion I had with others here that resulted in code that went into it, but PluggableRobot is basically an original creation.


Comments, questions, feedback:

I think all the big bots use something like this? I mean Shadow does, my (bigger) bots do, who else? Mine in particular handles paint and robot color functions, and in Genesis tracks time, data and properties loading. It overlays it own methods for onScannedRobot, handles the radar and does many many other things I mostly forgot about, and it all does this with the data from a interface called 'Constants' (meaning colors, propertie file name, property names and numbers, etc. --Chase-san

It's not too surprising that the same people that enjoy programming for fun would also tend to build their bots with more modular designs, though some are certainly more "pluggable" than others. (Dookious is pretty clean code, IMO, but it would be easier to implement a new Wave-based gun than a new PatternMatching gun.) In addition to all the usual reasons for doing so (ie, in a profession), with Robocode it has the additional benefit of keeping me more motivated to work on my bots. PrairieWolf is a classic (one of the Ancients) that uses some kind of pluggable design for its MultiMode strategies. -- Voidious

Yeah, it does not surprise me that modularity would be a popular topic. Here's a bit more about how PluggableRobot works. Basically, PluggableRobot allows you to register Listeners, Components and Painters.

-- RobertWalker

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited November 3, 2007 0:07 EST by RobertWalker (diff)
Search: