From Robowiki
Jump to navigation Jump to search

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

  • I should be more careful: conceptually, it's not much of a step up. Getting WaveSurfing working bug-free can quickly become late nights full of WaveSuffering! Ask anyone... -- Voidious
  • Also, if you dodge your own gun, persey, enemy mirror movement could make it impossible to hit them! --Chase-san
    • Hmm, I think I've been effectively dissuaded. Time to devour that WaveSurfing tutorial... -- RobertWalker
  • Dodging HeadOnTargeting and Linear / CircularTargeting alone would have great effect on your performance. It is not a bad idea to try that first just 'to get the hang of it'. After that the WaveSurfing/Tutorial is an excellent next step. (I like small steps) -- GrubbmGait

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

  • Just curious - have you looked since the full rewrite? The movement rewrite is like 1.3x and since... I acknowledge it was a horrible mess before, but I'm pretty happy with it now. Definitely the truth that the best surfers are complex, though. -- Voidious

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

  • Yah, I found the PowerNeededToKill rather nice, though it had a clause that wasn't needed. --Chase-san

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

  • My original attempts at bullet dodging and WaveSurfing were in a modified AntiGravity system, but my code got much simpler and I got much better results when I finally ditched the AntiGravity stuff. It's certainly possible to do it, though. -- Voidious
  • The main problem I've had with anti-gravity bullet dodging is that one tends to run directly away from the bullets instead of moving to the side... of course, this means you just get pummeled into a corner until you're dead. No fun. -- Ne
    • True, unless you only use the component of the force that is perpendicular to the enemy, which is what I'm doing. -- RobertWalker
  • A quick backlink search on AntiGravityMovement reveals that TheArtOfWar uses AntiGravityMovement in both OneOnOne and Melee, so maybe I should look closer there. I could make completely different movement systems for OneOnOne versus Melee, but I'd rather not because 1) it's a lot more work, of course, and 2) my current AntiGravityMovement is actually working pretty well in OneOnOne. Granted it's not beating Dookious or CassiusClay or anything, but then I wasn't expecting it to because I'm pretty new to Robocode. However, with only very basic bullet dodging (running away from HeadOnTargeting), it's regularly beating some bots that I thought would waste it, such as SpareParts and MakoHT, which appears the land RabidWombat in the middle of the RoboRumble OneOnOne pack. Not bad for a newbie bot, I think. Since I'm not really expecting to topple any of the Robocode Goliaths out there, I'm actually pretty pleased with this.
    • (Edit Conflict) A lot of times, what you want to do with Robocode comes down to how much of your life you're willing to sacrifice for programming Java tanks. =) Sounds like AntiGrav 1-on-1 movement works well for what you want to do right now. TheArtOfWar is an ancient tank, once one of the absolute greatest and still quite capable in melee. At the higher levels, you definitely need specialized 1v1 or Melee movement to stay competitive, of course. -- Voidious
      • I have a wife and baby, so I think you can probably guess how much time I have for Java tank programming. :) -- 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

  • I don't know how to setup a "local rumble", but there is a program called RoboLeague that might suit your needs. It's really a must-have Robocode utility, IMO. I use it with 1.07, I'm not sure how it will work with later versions, but we'll need to get it working with 1.3 because I absolutely need to have RoboLeague! -- Voidious
    • Hmm, I'll have to give RoboLeague a look. Thanks for the tip. I'm thinking of just going ahead and unleashing RabidWombat into the RoboRumble wild and seeing how it does. It's currently using the Rules class, though, which I'd have to address.
      • You can grab the Rules source from the cvs, ergo here: Then just put it into your package itself, updating the package as needed. --Chase-san

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

There are no threads on this page yet.