Robo Home | Changes | Preferences | AllPages

Bot Name





PluggableRobot (which in turn extends AdvancedRobot)

What's special about it?

It's the robot that the PluggableRobot architecture was built to support. Hopefully one day that might be considered special.

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

You can't yet. I want to improve it some more before I release it.

How competitive is it?

It's not done yet, so it's not that competitive. It beats the SampleBots, of course. I've also been pitting it against SpareParts with good success.

How does it move?

It uses a variation of AntiGravityMovement. The enemy robot exerts an attractive or repulsive force on RabidWombat, depending on how far away it is, in order to maintain a particular distance from the enemy. (It's pretty much working on [Hooke's law].) That distance grows if RabidWombat is losing and shrinks if it's winning, so that it'll run away or close in for the kill as appropriate. Walls exert a repulsive force. Bullet dodging is done with force vectors as well.

How does it fire?

It has a virtual gun array containing (currently) a head-on targeting gun, a LinearTargeting gun, a CircularTargeting gun and a GuessFactorGun. (I suppose the LinearTargeting gun is probably redundant.) It fires Waves (for GuessFactorTargeting) and VirtualBullets (for tracking the success of the various guns) every turn and fires the real bullets with the best gun. Stats decay over time so that it will adapt more readily to changes in enemy behavior. I might add a PatternMatching gun to the array, but if I did I'd probably have to change things around a bit. Currently, all my guns pretend to fire every turn, which from what I understand would be pretty slow for a PatternMatching gun.

How does it dodge bullets?

For the moment, it assumes that the opponent is using head-on targeting and runs away from that spot. I'm still somewhat undecided on the final bullet dodging strategy.

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

RabidWombat is a one-on-one only bot.

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

RabidWombat is a one-on-one only bot.

What does it save between rounds and matches?

Currently, it saves gun accuracy, guess factor and energy stats between rounds and nothing between matches. I'm currently working on a testing harness that will allow me to see how tweaks affect a number of performance metrics not reported by the RobocodeResults? class.

Where did you get the name?

It sounded cool. Its initials happening to be RW didn't hurt, either.

Can I use your code?

For now, RabidWombat is closed source. I intend to open it up eventually, after I see how well I can get it to perform, or when I get tired of it, whichever comes first.

What's next for your robot?

Does it have any WhiteWhales?

What other robot(s) is it based on?

PluggableRobot was developed in parallel to support RabidWombat. Other than that, it wasn't directly based on any other robot, although I've culled many ideas from the wiki. I'm trying to be good about giving attribution in the source, so when it's released you can see where I got ideas.

Comments, questions, feedback:

Segment your GF gun on LateralVelocity, and the linear gun will be redundant. Also segment it on change in enemy's heading, and circular targeting will be redundant (though I'm not sure whether that one would be useful). -- Simonton

For a GF-gun to replace CircularTargeting, you need both heading and change of heading. As alternative also LateralVelocity and AdvancingVelocity could be used. I still have to see a GF-gun though with more than 75% hitrate against SpinBot. CircularTargeting does in most cases make the LinearTargeting obsolete, as the hitrate against f.e. Walls would be the same for both methods. -- GrubbmGait

True dat. -- Simonton

You'd also need bullet time (and a very fine grained one, at that) for either combination, but the strength of GuessFactorTargeting doesn't lie in getting high hit rates against SpinBot =) -- Voidious

True dat, too.

Thanks for the advice, guys. I've been thinking about modifying my guns so that I can use them to provide possible firing angles that the enemy might be using and compare that against the actual hits. Basically, RabidWombat would be dodging its own guns. The problem with that strategy is when it's up against another robot with a virtual gun array; pitting RabidWombat against itself with that setup would have them constantly switching guns and never settling on any one dodging method. Anyone else have experience with making a robot dodge its own guns? -- RobertWalker

In general, I think dodging your own guns will give you what seems like a pretty powerful RandomMovement, but not the same level of true bullet dodging as WaveSurfing with PrecisePrediction. If you're going to the trouble of simulating guns and dodging them, it doesn't seem like much of a step up to just do true WaveSurfing, where you use onHitByBullet to update the data in the gun you're dodging instead of just simulating how you'd make it learn. But I think you'll find that you learn a lot trying to implement the fresh ideas you come up with yourself, so I say go for it and let us know how it works out ;) -- Voidious

See Vyper, Thorn, and GrubbmGrb for examples of how good a non-surfing dodging system can perform. I hope you find the WaveSurfing Tutorial useful; I'm sure it could be improved, so please do give feedback on it. As for more advanced surfing systems that you might be able to learn from, I'd recommend Dookious (of course =)), CassiusClay, and Chalk as great OpenSource surfers with clean code. Kev's WaveSerpent, Alcatraz's Cyanide, and David Alves' PhoenixOS? are probably good references, too, but I can't vouch for them as much just because I haven't looked at them as much. -- Voidious

Most of the bigger ones, ergo the ones listed above can be confusing, misleading, badly formatted, or are just confusing. Thought koduos to PhoenixOS? and Chalk. Dookious is just to big in my opinion for someone just starting into it to try and make out. My suggestion however is GresSuffurd as its structure is simple, and at the same time, it models closely to the tutorial bot, making it easier to understand. --Chase-san

PhoenixOS? isn't bad. One of these days I might even go through and comment it. =) --David Alves

Before I go delving into those, I should probably mention that RabidWombat uses AntiGravityMovement. So do any of the above-mentioned bots also use AntiGravityMovement? Has anyone done OneOnOne bots with AntiGravity bullet dodging? -- RobertWalker

Speaking of the rumble, does the latest Robocode client allow you to run a "local rumble" based on just the bots that you have? I haven't been brave enough to download the newest version. -- RobertWalker

As far as white whales go, my testing standard has always been Freya for melee and GrubbmGrb for duels. Freya 0.31 was one of the first bots I downloaded, and GrubbmGait the first robocoder I conversed with. I think those tanks will give you a good run but are beatable without being a demigod of Robocode. -- Martin

ACtually the first robot I downloaded was Dustbunny and RaikoMX, and I attempted to beat MX with a chopped version of dustbunnies anti-gravity. Good times.. --Chase-san

Hmm, this actually sounds like an interesting topic for its own page... I'm thinking WorthyOpponents... --RobertWalker

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