Both the gun and movement are unique (I think) in using using segmentation without VisitCountStats.
WaveSerpent is 3rd in the rumble right now.
WaveSurfing with Precise Prediction. I've done my share of suffering, and I'm pretty sure it's now completely bug free (and it has the top BarracudaChallenge score to back me up). Unlike most other surfers, WaveSerpent doesn't use bins; it records a list of GuessFactors it has been hit at instead. It then tries to maximize the distance from hit factors while surfing, with a large punishment for being within one bot width of a hit location. There are several segmentation schemes that are weighted and layered on top of each other. The movement is especially strong against more basic guns.
WaveSerpent uses a DynamicClustering gun. Instead of looking at every past scan of the other robot, it segments them on the other bot's velocity and acceleration. This makes the gun quite a bit faster, and seems to help its scores too.
It currently can't fight in melees.
It saves guess factor and surfing data between rounds.
A wave serpent is a type of tank in a tabletop battle game my friends and I used to play. And, of course, the name sounds cool :).
Sure, it's released under the terms of the RWPCL.
I've used many ideas throughout the wiki, specifically from:
DookiSerpent is uses WaveSerpent's movement and the gun from Dookious. It shows that WaveSerpent's movement is really strong (it's only a couple points behind Dookious), but the gun still needs some work.
Although capable of high wave surfing challenge scores, I can't seem to get WaveSerpent to get a score greater than 30 against FloodHT. If anyone is brave enough to look through my extremely messy and unexplained code and give advice, I'd appreciate it. -- Kev
This might not be the whole reason, but without looking at your code much at all (just a glance, and then setting isMC == 1), I can tell you that your distancing is probably a huge culprit in the MovementChallenges. Watch CassiusClay or Dookious, or probably anyone getting high scores there, and you'll see that they all stay pretty far away, while WaveSerpent pretty much just keeps whatever distance it is at currently. Staying close has pros and cons in a real battle, but against a learning gun in an MC situation, it's just a huge disadvantage. I'd try that first before worrying much about it. -- Voidious
I too think distancing is important, but for different reasons. Yes, of course against any non-trivial gun you'll get hit less if you stay away, but you'll hit less yourself too so there's no real reason in real battles to stay far away. However, trying to control you distance and make it so you fight most of the battles from the same distance is good for learning purposes. Especially for a WaveSurfer. Your targeting will benefit from it too against the majority of bots.
I haven't checked your code but I am still dead sure that what keeps your bot from really high ratings is bugs. It always is. Try the movement challenge and something like this:
@Voidious - 17. @Kev - I found the bin smoothing function in RaikoMX very important. I think that's a great bot to look at. And graphical debugging was also great. Good luck with WaveSerpent. -- Alcatraz
Well, I didn't mean to optimize your distancing for the challenges - obviously, how it performs in real battles is all that matters. But since you were looking for the reason you couldn't get high scores against FloodHT, I'd say the distancing is probably a strong reason. Since you can probably count on your gun being stronger than the majority of RoboRumble opponents, you will likely benefit from staying a bit on the "far away" side in real battles, too. But what PEZ says is true - it's all about the flawless implementation with WaveSurfing. It's a lot easier to get decent scores in the CurveFlatteningChallenge and such than it is to hold Barracuda to ~50 points every time, at least in my experience. -- Voidious
Thanks for the advice all, I really appreciate it. The next version of WaveSerpent has simple distance control and replaces bins and bin smoothing with an interesting AntiGravity style approach. I'm getting 99+ scores vs. WaveSurfingChallengeBotA now. I still haven't found any bugs in the wave surfing code, but my previous direction finding algorithm was horrible and got WaveSerpent occasionally stuck in corners, most likely the culprit of low MovementChallenge scores. -- Kev
Mad bullet-dodging skill :):
|2nd: rz.HawkOnFire 0.1||14||0||0||14||0||0||0||0||35||0|
|2nd: radnor.DoctorBob 1.42||56||0||0||56||0||0||0||0||35||0|
Still hasn't faced everyone, but... 2062!!! Friggin' awesome work dude. I think it'd be officially 5th, since CC 2pi.08 got 2067. Rock on, congrats! -- Voidious
Thanks!!! And there was I thinking it might go up 15 points :). Having precise, bug free, and KISS wave surfing really makes a difference. I found a lot of inaccuracies in WaveSerpent's old movement (the most embarrassing being it segmenting movement data on the other robot's wall ahead instead of its own). -- Kev
Very nice! --David Alves
When i run WaveSerpent against CopyCat? (MirrorMovement) it suddenly sits still. Is it supposed to do that, or is it just because CopyCat? doesn't fire when it has low energy (and so WaveSerpent doesn't have to move)? --Starrynte
That's right, WaveSerpent currently isn't in the melee rumble, and the latest version isn't melee compatible. However, Logic uses almost the same melee gun and movement as WaveSerpent, so it acts pretty much the same. I'm not to sure what caused it to stop against CopyCat?. WaveSerpent automatically stops against bots on the later rounds if it hasn't been hit yet (to avoid the other bot getting a score of zero, which don't count for the rumble). So if you put WaveSerpent in a one round match it will stop automatically. Besides that, I can't think of anything that would make it stop. When there are no waves to surf, WaveSerpent tries to get into a good position by moving away from walls and the other bot. -- Kev
Looks like you've solidified that #4 position, congrats! (I know you had it before, but it was very very close.) Funny seeing everyone messing with BulletHitBullet? events after Simonton mentioned gaining points with it in WeeksOnEnd. =) -- Voidious
Yeah, nice improvement. I think this issue was on almost everyones to-do list, but Simonton triggered us to increase its importance. It is quite an easy gain on movement (9 points for me) -- GrubbmGait
Thanks! I had no idea bullet collisions were that common in battles, or that it would be so easy to implement learning from onBulletHitBullet? (I only just figured out you can use getX() and getY() for bullets). -- Kev
I'm glad you're trying pattern matching in your VG array. Pattern matching is my favorite :). I'll be interested to see how it turns out. -- Simonton
Pretty well! I see green scores against 2k bots such as Garm, PhoenixOS?, X2, GresSuffurd, RaikoMX, PulsarMax, Lukious, PowerHouse, and Engineer. It looks like a good pattern matching works well at killing surfers and getting those PL wins. -- Kev.
Are you aware of how much memory your bot uses? I had to push the heap space up to 512MB and java was taking 500 megs of it, and right now robocode sits around 30 megs by itself with sample bots. -- Ntroutman 2007-09-08
Congrats on the rating jump, dude, really awesome! -- Voidious