Difference between revisions of "Watermelon"
(Version 7 released) |
(→What I'm Working On: Anti-Mirror-Bot strategy) |
||
Line 52: | Line 52: | ||
== What I'm Working On == | == What I'm Working On == | ||
− | === | + | === Anti-Mirror-Bot Strategy === |
− | + | Maintain a transformation matrix mapping my position to the enemy's. If the matrix changes very little, they're mirroring me. Feed my future position and the matrix to the gun to deliver the death. | |
[[Category:Bots|Watermelon]] | [[Category:Bots|Watermelon]] | ||
[[Category:1-vs-1 Bots|Watermelon]] | [[Category:1-vs-1 Bots|Watermelon]] | ||
[[Category:MegaBots|Watermelon]] | [[Category:MegaBots|Watermelon]] |
Revision as of 17:54, 17 June 2009
Watermelon | |
Author(s) | Synapse |
Extends | AdvancedRobot |
Targeting | GuessFactor Targeting (traditional) |
Movement | Wave Surfing |
Released | 16 June 2009 |
Current Version | 7 |
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 precise prediction for future positions. 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 determined by Autoselected Segmentation.
A rolling average ensures that the bot accommodates adaptive targeters.
Firing
Where to Fire
Guess Factor gun, segmented on every combination of velocity, acceleration, time since last reversal, and lateral wall-distance. Segments are chosen based on the ratio of their maximum value to their average value, with a strong penalty for having too few hits. A rolling average ensures that the bot accommodates adaptive targeters.
How Hard to Fire
If the selected firing segment has enough hits, and a hit rate over 25%, fire a strong bullet, varying by how good the segment really is. If the enemy is close, fire stronger bullets. If energy is too low, scale all these back proportionally to how little energy I have.
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.
Waves are labeled with the applicable segmentation axes.
White Whales
- Toa - energy management makes it a really tough nut to crack - it stops firing when it determines it would do better to let me fire my gun empty, and about half the time that's what happens. Then, when I run out of energy to fire, I'm killed by the inactivity timer and it gets the survival bonus. :-(
What I'm Working On
Anti-Mirror-Bot Strategy
Maintain a transformation matrix mapping my position to the enemy's. If the matrix changes very little, they're mirroring me. Feed my future position and the matrix to the gun to deliver the death.