Robo Home | FloodHT | Changes | Preferences | AllPages

FloodHT (maybe nearly 1.0?) Hype

It's been awhile, but in the traditions of FloodHT, I've rewritten this bot from the bottom up and I'm working out alot of quirks still. For the record, this is at least the 4th time I've rewritten FloodHT's architecture (the third one looked more like the FloodGrapher bot and read dynamically loaded properties from a FloodScript? file). I'm keeping the design simple and organized this time, and hopefully it will turn out to be maintainable, too (so I don't rewrite the architecture for it a 5th time). The next release will be trying some new things (for me, anyways) in one-on-one, but will be much more focused on the melee / teams facet where I've learned so much since releasing FloodHT 0.8.

Melee Strategy

If this bot isn't top-10 melee material, I made it wrong. Without data, it's still underperforming Coriantumr in normal-length battles, hopefully this can be remedied soon. The long-battle story is different, however, and I suspect this is because of experimentation with new melee-centered segmentations. Specifically, I've managed to create a (drum roll, please) working antigravity segmentation that seems to be effective in keeping it alive in the start of battles once it kicks in. Getting the early performance I need with the long-term performance I get from this may be something I could solve with SplitTargeting, but SplitTargeting isn't really ready for production yet.

Melee Update: I have changed some fundamental things about the movement, so it still needs to be tweaked a good amount in my opinion, but mostly for the sake of proving the gun, I decided to do an ABC-style 10000-round melee battle against the 9 best melee robots I happened to have on my hard drive at the time. Results:

Bot ScoreSurvivalL. Surv.BulletBonusRam Bonus1sts2nds3rds
Aleph 0.34 39743242846650 15327091096463353860 172616051124
FloodHT 37506892556500 13797099153663397122263 153610561228
SandboxDT 2.71 37241062752000 13023079511445734961 66 1452841 1407
Shadow 2.42 35571512526000 12249084926759193178 21 13691169932
Coriantumr 1.1 34696792442450 89550 88419851652180423 100013331099
GlowBlowMelee 1.432316492322850 72540 79415041514542 52 826 10081082
Nimrod 0.55 27540541809450 53820 847778397293061214614 862 863
Tron 2.02 27218261857400 59940 757479446991870436674 792 732
Entangled 0.3 26937101946650 57240 654005315563649609639 982 880
SandboxLump 1.52 23646011417550 19800 880931432922840187221 321 661

I also happen to know that my own bot got 1085 4th-place finishes and fewer than 1000 of everything else, including only 577 last-place finishes. Against this group, that's spectacular, but if you read into the numbers, you'll see a few things:

Melee Update again: Some more work at balancing some parts of my risk function, gave this slightly lucky round:
Bot Score SurvivalL. Surv.BulletBonusRamBonus1sts2nds3rds
FloodHT 117930809004140309071970130 464732
Aleph 0.34 1173408515036902679617040 0 413954
SandboxDT 2.71 115580858504680237841243220 523238
Shadow 2.42 1024847370026102460315683 0 293328
Coriantumr 1.1 101894725002610252751479300 293931
GlowBlowMelee 1.488613 627001890228261180150 212728
Nimrod 0.55 86964 566502340265341358747 262826
Entangled 0.3 81725 59000234019358936 854 262919
Tron 2.02 79396 539002070221591207562 231326
SandboxLump 1.52 73299 43900630 27258141970207 1319

This is with all data scrubbed beforehand (for FloodHT and both Sandboxes), and it's looking good :-) I wish I were outsurviving Aleph and DT, but if I can beat them anyways, then I guess I can live with that ;-)

Team Strategy

This is still being implemented, but I've done a good amount of (yet unreleased) experimentation with teams, and I think it's safe to say this will be a top-10 team, too (of course, that just means it will be at least as good as version 0.8 - if it underperforms ArmyOfShiz, I've also messed something up). Most of this work has yet to be done, however, I have a load of code to port and adapt to FloodHT's architecture.

OneOnOne Strategy

This is still up in the air and is likely to be somewhat incomplete or even inadequate by current standards. I have some rudimentary WaveSurfing implemented as well as a Raiko-like movement, and currently I'm not sure which I'll release it with (maybe it'll be FloodHTRRGC??) I was originally trying to make a FloodMovement-based implementation of WaveSurfing, but it was slower than I liked and didn't apparently perform better (maybe it would against some other bots). It could be sped up considerably by simplifying the movement simulation code (which is a direct port of a subset of robocode.peer.RobotPeer?, since it's open-source now. I wanted to make a RobotPeer? originally, but unfortunately I can't find a way to instantiate one without extra objects being created and without throwing a NullPointerException in the constructor). But I digress. Basically, this is still TBA. I could also build a DT 2.01-style adaptivity on top of the Raiko movement, which I've done before, but it's hard to balance well.

Update: I've been working out the Wave-Surfing deal and FloodHT finally shows FloodGrapher the profile that I've been dreaming about FloodHT having since I started work on SandboxFlattener. I think it's been sped up a good amount, too, but could be much more so. One of these days I'll have to take a good look at what I did wrong in FloodAGF?, the test bot where I tried to implement this before everyone and their pet turtle were doing it. I so wish I could have come up with this and made it work before watching other people develop it. I've also experimented with several brands of HOT avoidance, but they mostly give me the side effect of two spikes on either side of gf 0 :-p

So the results so far are that it beats FloodMini with roughly 76% of the score over 500 rounds, It only allows FloodGrapher (with the default settings I think) 15 wins in 500 rounds. This doesn't make it spectacular amongst wave surfers, but hopefully it's good enough to at least play in their league. Best of all, the SandboxFlattener finally Flattens the Sandbox:

Bot ScoreSurvLastBulletBonRamBon1sts2nds3rds
FloodHT17152570011409031126416011486 0
DT 1.61137194300860 7634922 2 086 1140

Some of you are probably wondering why I'm testing with SandboxDT 1.61 rather than a recent version. Those people just [don't understand] what Robocode used to be like. SandboxDT 1.61 was #1 in one-on-one (and Melee for most of this time) from 3 months before I even looked at Robocode until at least 4 months after I started (and it wasn't that no one was trying to beat him, because every version of DT for a year before that was on top in its time, this one just went a particularly long time on top, and it essentially finished on top - some version of Cigaret was over it on the ER for a day before it got enough data to beat it again, but when DT was actually updated to 1.71, it was already #1 on the ER. Also, just to show how solid of a bot DT 1.61 was, it also seems to be one of the most resiliant against my wave-surfing from that era

Bot ScoreSurvLastBulletBonRamBon1sts2nds3rdsNotes
FloodHT463361495029902470635401500 2992010-
DT 1.713201610050201017933196231 302022990First version with VirtualGuns (none of which hit me apparently)
- - - - - - -- ----
DT 1.81262738500 1700146721398201713290First version with wall smoothing. This meant that the original 1.61 movement was trashed, and I think the movement in the next couple versions wasn't really up to the same standard in general (but certainly made room to lead to something better)
- - - - - - -- ----
FloodHT5037816200324026929394662 0 3241760-
DT 1.91292018800 176016988163220 0 1773240This is the version FloodHT 0.8 was built to beat. FloodHT 0.8 actually did officially beat it in a couple of competitions, but only because it had pre-saved data on it.
- - - - - - -- ----
FloodHT4671515150303024900361420 0 3051970-
DT 2.01310109850 197017313186510 0 1983030This was the first version that had adaptive movement, but Sedan beat it, which made its reign the shortest-lived in the series. The experimental bot that became Sedan didn't beat 1.91.
- - - - - - -- ----
FloodHT4136512700254023039305728 0 2542460This is where it starts getting a little close, but since DT fires so much lighter than most other bots of this time period, roughly tying its survival was basically beating it
DT 2.113484312300246017897217960 2462540In response to Sedan, Paul improved his gun - he found the answer to Cigaret's movement, either because he couldn't find the answer to FloodMini's gun or because he thought he already had it.
- - - - - - -- ----
DT 2.413898413900278019687261700 2782220Movement has changed, and some other stuff. This may have been the one that Shadow first topped.
FloodHT3883511100222022832267011 0 2222780Didn't have versions 2.22 and 2.31, this is the first one that looked like it was beating me, and it only just barely did.

In the last day in a half, I caught up with the 2 years' worth of Robocode that I couldn't get for all this time. More later. Here's what FloodGrapher says:


Unless I get SplitTargeting up to snuff pretty soon, FloodHT will be sporting a fairly typical segmented GuessFactorTargeting algorithm. It feels funny calling it typical, because my first segmented GF gun was state-of-the-art before it got to the point this one is. It uses way too many segmentations, really, and it uses different segmentations for 1-on-1, melee, and itself (the team story isn't locked down yet, but at this point, I expect it to look like melee). I'd say the most exciting part is the anti-grav segmentation for melee. I'm pretty sure it's the first of its kind. I should try to add one to SplitTargeting if I ever try to apply it to melee.

When is it coming?

Hard to say at this point, it could be this week or it could be a month from now. I'm just poking it with new stuff all the time. I might release a final 0.9 version just as a heads up on where development is first, if I feel like I'm at an ok stopping point but not finished.

It was about time ;-) Ranking somewhere in the lower sub-top in one-on-one and melee, outperformed by your own micro and minibots in melee and in teams not even in the top-10 anymore (thanks to yourself). If anyone is able to breach the wall set by Rozu and ABC in melee, is will be you, regarding Shiz and Coriantumr. Looking forward to your release . . . -- GrubbmGait

When is it coming? If you already had a victory (a lucky one, probably ;)) against Aleph, why not releasing that 0.9 version?

I did some experiments with an anti-AG gun, but never went all the way with it. I would need to restructure my current gun classes. Keep in mind that movement is the most important factor in the rumble, though. The amount of gun data you collect in 35 rounds is minimal, my current gun only starts to really kick ass after around 100 rounds. -- ABC

If a gun could be that good quickly, it makes a big difference. The difference, assuming good movement, is that when you get to the point of being up against one opponent where one of you will probably have to go, it's what makes it so that you live with next to no net damage and the other bot dies. One main reason I'm not in a releasable state is that I need to lock down my saved data story, which could have a noticeable additional impact on its melee standing (both battles posted above were with clean data, though, as well as clean data for everyone else). Expect to see this out in the next 2 weeks, though, when I have team code ported and data storage figured out. -- Kawigi

I agree a good gun makes a difference, but is it really that big? How do you explain Tron 2.02 scoring higher than DT? -- ABC

It is not only important how you do against other topbots, but also how efficient you eradicate the simple and mediocre bots. Pitch in two topbots (lets say the new FloodHT and Aleph) with 8 mediocre bots (ranking 30-70) and lets see how the topbots compare then. -- GrubbmGait

For sure, beating the simple bots by big margins is one of Tron's advantages, no GF gun can reach my gun's effectivness against pattern moving bots. But there are also some negatives effects of the random way the rumble chooses bots for melee. If you run a melee battle with one top bot and 9 simple bots, it will result in a much bigger score difference than if you run that same top bot with a mix of goood/bad opponents. It will probably still win compared to the simple bots, but the margin will be much smaller than in the first battle. I think that contributes to the lack of stability of the melee rankings. If I keep my melee rumble client running, the rankings never really stabilise like they do in 1on1, bots will keep changing positions forever... -- ABC

Exactly like has been suggested, my explanation to Tron outscoring SandboxDT is the gun. This FloodHT has the same problem - it roughly ties Tron against a more varied group at best, and certainly doesn't perform as well against the sample bots (not that I've tested with everyone, but watching Shadow win 100 rounds out of 100 against all the sample bots has always impressed me - my best with Coriantumr was in the neighborhood of 90/100 and Shiz doesn't have the gun to do much better than 65-70).

It might be appropriate to bring up Paul Evans's observation on the importance of targeting (which applies to melee like it does in one-on-one) - if your gun is better than your movement, your LRP looks like Tron's. If your movement is better than your gun, it looks more like HawkOnFire's (you'll just have to trust me for now, since we can't see the LRPs ;-)).

What this really might mean is what has been suggested elsewhere - the proportion of very good melee bots in the RR@H is still low enough that a form of targeting that works best against the best isn't as effective in the rankings. This wouldn't be the case in the old ER format (so much), since the robot will advance if it does better against other robots of similar ranking. -- Kawigi

What gun is v0.9 using, could you already ramp up SplitTargeting? -- GrubbmGait

Nope, just a segmented GF gun. -- Kawigi

Robo Home | FloodHT | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited June 30, 2005 17:28 EST by Kawigi (diff)