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.
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:
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:
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 ;-)
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.
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:
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
|DT 1.71||32016||10050||2010||17933||1962||31||30||202||299||0||First version with VirtualGuns (none of which hit me apparently)|
|DT 1.81||26273||8500||1700||14672||1398||2||0||171||329||0||First 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)|
|DT 1.91||29201||8800||1760||16988||1632||20||0||177||324||0||This 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.|
|DT 2.01||31010||9850||1970||17313||1865||10||0||198||303||0||This 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.|
|FloodHT||41365||12700||2540||23039||3057||28||0||254||246||0||This 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.11||34843||12300||2460||17897||2179||6||0||246||254||0||In 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.41||38984||13900||2780||19687||2617||0||0||278||222||0||Movement has changed, and some other stuff. This may have been the one that Shadow first topped.|
|FloodHT||38835||11100||2220||22832||2670||11||0||222||278||0||Didn'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.
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.
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
Nope, just a segmented GF gun. -- Kawigi