Difference between revisions of "Watermelon"

From Robowiki
Jump to navigation Jump to search
(version 6a, bugfixing and minor changes)
Line 9: Line 9:
 
| movement        = [[Wave Surfing]]
 
| movement        = [[Wave Surfing]]
 
| released        = 12 June 2009
 
| released        = 12 June 2009
| current_version = 6
+
| current_version = 6a
| download_link  = http://synapticflame.googlepages.com/synapse.Watermelon_6.jar
+
| download_link  = http://synapticflame.googlepages.com/synapse.Watermelon_6a.jar
 
}}
 
}}
  
Line 26: Line 26:
 
[[Guess Factor]]s are 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, except if they have too few visits.
 
[[Guess Factor]]s are 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, except if they have too few visits.
  
A rolling average ensures that the bot accomodates adaptive targeters.
+
A rolling average ensures that the bot accommodates adaptive targeters.
  
 
== Firing ==
 
== Firing ==
  
[[Guess Factor]] gun, segmented on every combination of velocity, acceleration, distance, and lateral wall-distance. Segments are chosen based on the ratio of their maximum value to their average value, except if they have too few hits.
+
[[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 accomodates adaptive targeters.
+
A rolling average ensures that the bot accommodates adaptive targeters.
  
 
== Radar ==
 
== Radar ==

Revision as of 09:18, 13 June 2009

/Development

Watermelon
WatermelonStockPhoto.jpg
Author(s) Synapse
Extends AdvancedRobot
Targeting GuessFactor Targeting (traditional)
Movement Wave Surfing
Released 12 June 2009
Current Version 6a
Download

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.

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 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, except if they have too few visits.

A rolling average ensures that the bot accommodates adaptive targeters.

Firing

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.

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

Watermelon6DebugGraphics.png

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.

What I'm Working On

Branched Surfing

Currently the danger from the second-soonest-arriving wave's danger is added proportionally to the current wave's danger, weighted by arrival proximity and by bullet power. I'd like to try branching, which could enable me to find a safer location on both of the next two waves.