I'm back again (2007-05-21) and working on the next Mega Bot. The temporary name is ArcherMax?, as it's based on Archer and I want it perform much better (read: 1900+ RR@H rating, at least for now). As for now the main focus is the gun (testing on TargetingChallenge2K7/ReferenceBots). The next thing to add will be probably WaveSurfing (thanks to the new tutorial should be quite easy to start implementing).
The second column is weighted number of hits of virtual bullets (real bullets are weighted more, as written above). So it used mostly HeadOn? and GF (unsegmented), and Circular a bit at the beginning. As Archer uses the HighlySegmentedGFGun?, it probably means that it is too much segmented for RaikoMicro.
Thanks for your suggestion about hitting WaveSurfers using very low RollingAverage, but I don't know how to use it. My GF guns use guess factors arrays (like int gfs = new int for non-segmented gf gun). How can I adapt it to using RollingAverage? Would it be a good way to have double gf and doing PaulEvans?' RollingAverage function with some weight and low depth on it?
Here is an example I snipped from Caffeine's current CVS branch. This is from within the wave update loop.
It just iterates through the array. The array here is stored within a wave, as its easier in my opinion.
@Voidious - your advice was very helpful, and besides adding an AntiWSGun? with rolling average snippet by Chase-san I fixed VirtualGunManager? so it's not-so-much fooled by surfers.
By the way, I also added a DynamicallySegmentedGun?, which with "splitters" only for distance, velocity and acceleration performs in some situations much better than all other ArcherMax?'s guns. I'm going to add many more, like time since last stop etc.
That's pretty nice result for only few days of coding, so the next thing to improve will be movement.
Sure, there is huge room for improvement, and I'll certainly try to use it. The DynamicSegmentationGun? looks very promising, as written earlier. We'll see how it'll perform after adding more splitters.
Now about the movement. Stats are in MovementChallenge2K6 format, and are quite good IMHO (of course still not comparable to the top bots).
Voidious, your WaveSurfing/Tutorial was very helpful during development of WaveSurfing movement for ArcherMax?. Thanks! I tweaked it to keep distance, use segmentation and evaluate stop position.
I'm somewhat frustrated with the drop against FloodHT and in APMC (and quite satisfied with WSC results). I changed distancing, segmentation, and added rolling averages. Do you have any more tips?
My tip would be: Only focus on WSC bots until you get the scores higher. You can get 99+ against Bot A quite easily if your WaveSurfing is polished and bug free; 98 against Bot B and 95-96 against Bot C should follow with just a bit more segmentation, I think. Komarious is a more polished (still MiniBot) version of the BasicSurfer code and gets over 99 against Bot A. You can look at Komarious/Code, but it's a little obfuscated because of being a MiniBot.
Until you have your basic WaveSurfing working well, it will be very hard to tune it correctly against the other bots. I'd really really focus on Bot A and try and figure out why he is ever able to hit you. =) A lot of us have gone through this phase, myself included, and the advice is always the same: focus on the simple targeters first. DrawingBot is a big help for debugging, especially for WaveSurfing, to make sure your predictions and everything else are working right. Good luck!
I didn't post anything here for a long period of time, and it seems that my updates will take quite long. Anyway, they will come.
Voidious: I didn't know about replay feature before. It's very nice. The only problem is that it doesn't save paintings done in onPaint. That's not very good, because I still don't know why these WSC bots hit me at long distances.
The change was preloading HOT-hit. There is still a lot to do - performance in real battles is not satisfactory, so I won't release it publicly at the moment. After polishing basic WS as you suggest, I'll try to get it working against more advanced targeters, and we'll see if it's strong enough for a release.