Difference between revisions of "Watermelon"
Line 20: | Line 20: | ||
== Movement == | == Movement == | ||
− | Uses [[Wave Surfing]], implemented in a | + | Uses [[Wave Surfing]], implemented in as straightforward a manner as I can manage. I used [[User:Simonton|Simonton]]'s non-iterative [[Wall Smoothing]] code, and my own future position prediction. It took forever to realize that the future prediction needs to call the wall smoothing function for each imaginary tick, but I finally got it. |
− | |||
− | |||
Bot width is considered, averaging the danger from covered bins. There's no dive-in protection; bot width takes care of that. | Bot width is considered, averaging the danger from covered bins. There's no dive-in protection; bot width takes care of that. |
Revision as of 00:55, 12 June 2009
Watermelon | |
Author(s) | Synapse |
Extends | AdvancedRobot |
Targeting | GuessFactor Targeting (traditional) |
Movement | Wave Surfing |
Released | 4 June 2009 |
Current Version | 5 |
Download |
Contents
Structure
It's built on a modular framework, coded cleanly. If I ever retire this bot I might release the source to the community. Occasionally I'll post snippets for free - see Watermelon/Code. Currently developing in Eclipse. Early on I used an educational IDE called BlueJ (its interface is a UML diagram, very pretty). I test by running battles against a few favorites, including CigaretBH and some others. For more specific testing I post a release to RoboRumble and see what happens.
Movement
Uses Wave Surfing, implemented in as straightforward a manner as I can manage. I used Simonton's non-iterative Wall Smoothing code, and my own future position prediction. It took forever to realize that the future prediction needs to call the wall smoothing function for each imaginary tick, but I finally got it.
Bot width is considered, averaging the danger from covered bins. There's no dive-in protection; bot width takes care of that.
Guess Factors are segmented by velocity and acceleration.
Firing
Guess Factor gun, segmented on velocity and acceleration. Up next: Automatic Segmentation.
Radar
Uses the same radar in melee and in 1v1 conflicts - turns the radar just past the furthest angle that the least recently seen bot could have reached since it was last spotted.
Debug Graphics
Paints waves for enemy bullets and its own bullets, with brighter segments where the bins are fuller. Also marks precisely predicted future positions.
What I'm Working On
Automatic Segmentation
I'm converting both the gun and the movement to automatically select a segmentation, based respectively on the following:
- whether that segmentation has enough data to be useful
- how many axes it involves
- how spiky it is (ratio of maximum to average)
The general strategy behind this is outlined on the old wiki at AutomatedSegmentation.
Saving Data
This one's a tough one - with the sheer quantity of bots in the rumble, and stored data stops being portable pretty quickly. I think the best approach may be just to dynamically alter the rolling average and not save data at all.