Difference between revisions of "WaveSerpent"

From Robowiki
Jump to navigation Jump to search
(migrating from old wiki)
 
(Fix rating)
 
(3 intermediate revisions by 3 users not shown)
Line 9: Line 9:
 
| author          = [[User:Kev|Kev]]
 
| author          = [[User:Kev|Kev]]
 
| extends        = [[AdvancedRobot]]
 
| extends        = [[AdvancedRobot]]
| targeting      = [[Dynamic Clustering|Dynamic Clustering]]
+
| targeting      = [[GuessFactor Targeting|GuessFactor Targeting]]
 
| movement        = [[Wave Surfing|Wave Surfing]]
 
| movement        = [[Wave Surfing|Wave Surfing]]
| current_version = 1.4
+
| current_version = 2.11
 
| license        = [[RWPCL]]
 
| license        = [[RWPCL]]
| download_link  = http://darkcanuck.net/rumble/robots/kc.serpent.WaveSerpent_1.4.jar
+
| download_link  = http://robocode-archive.strangeautomata.com/robots/kc.serpent.WaveSerpent_2.11.jar
 
| isOpenSource    = yes
 
| isOpenSource    = yes
 
| isOneOnOne      = yes
 
| isOneOnOne      = yes
Line 22: Line 22:
 
; What's special about it?
 
; What's special about it?
  
: Both the gun and movement are unique (I think) in using using [[segmentation]] without [[Visit Count Stats]].
+
: The movement is unique (I think) in using using [[segmentation]] without [[Visit Count Stats]].
  
 
; How competitive is it?
 
; How competitive is it?
  
: WaveSerpent is 6th in the rumble right now.
+
: WaveSerpent is currently 7th in the general [[RoboRumble|rumble]].
  
 
== Strategy ==
 
== Strategy ==
  
 
; How does it [[Movement|move]]?
 
; How does it [[Movement|move]]?
: [[Wave Surfing]] with [[Wave Surfing/Precise Prediction|Precise Prediction]]. I've done my share of [[Wave Suffering|suffering]], and I'm pretty sure it's now completely bug free (and it has the top [[Barracuda Challenge]] score to back me up). Unlike most other surfers, WaveSerpent doesn't use bins; it records a list of [[GuessFactor|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.
+
: [[Wave Surfing/True Surfing|True Surfing]] with [[Wave Surfing/Precise Prediction|Precise Prediction]] and [[Waves/Precise Intersection|Precise Intersection]]. Instead of using [[VisitCountStats]] [[WaveSerpent]] records lists of [[GuessFactor|GuessFactors]] it has been hit at and tries to avoid them. There are numerous [[segmentation]] schemes that are dynamically weighted and layered on top of each other. Also, the movement uses anti-aliasing between segments.
+
 
 
; How does it fire?
 
; How does it fire?
  
: WaveSerpent uses a [[Dynamic Clustering]] 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.
+
: WaveSerpent uses two [[GuessFactor]] guns in a [[VirtualGuns]] array. Both guns use anti-aliasing between segments and have many different buffers weighted and layered on top of each other. One gun is tuned to hit surfers by rolling stats quickly and having the buffers weighted dynamically. The other does not have dynamic weighting or rolling.
  
; How does it [[DodgingBullets|dodge bullets]]?
+
; How does it [[Dodging Bullets|dodge bullets]]?
  
 
: Wave Surfing
 
: Wave Surfing
Line 47: Line 47:
 
; What does it save between rounds and matches?
 
; What does it save between rounds and matches?
  
: It saves guess factor and surfing data between rounds.
+
: Guess factor and surfing data between rounds.
  
 
== Additional Information ==
 
== Additional Information ==
Line 53: Line 53:
 
; Where did you get the name?
 
; Where did you get the name?
  
: 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 :).
+
: A wave serpent is a type of tank in a tabletop battle game my friends and I used to play.  
  
 
; Can I use your code?
 
; Can I use your code?
Line 61: Line 61:
 
; What's next for your robot?
 
; What's next for your robot?
  
* Get in [[The 2100 Club]].
+
:* Take the throne?
* Experiment with [[Dynamic Clustering]] for surfing.
+
:* Add melee capabilities.
* Eventually do a complete rewrite.  
 
  
 
; Does it have any [[White Whale|White Whales]]?
 
; Does it have any [[White Whale|White Whales]]?
  
: [[Pattern Matching|Pattern Matchers]] and [[Wave Surfing|Wave Surfers]] I guess...
+
: [[Pattern Matching|Pattern Matchers]].
  
 
; What other robot(s) is it based on?
 
; What other robot(s) is it based on?
  
: I've used many ideas throughout the wiki, specifically from:
+
: I've used many ideas from throughout the wiki, specifically from:
:* The [[CassiusClay/Butterfly]] description, which helped me figure out what Wave Surfing is and how to do it. I also snuck some looks at [[CassiusClay]]'s code.
+
:* [[CassiusClay]], which initially helped me figure out how Wave Surfing works. WaveSerpent also uses a pluggable code structure similar to [[CassiusClay]]'s and a RobotPredictor based off of the one by [[PEZ]].
:* The pattern matching gun is a version of the one found in [[SeaSerpent]].
+
:* It uses [[Wall Smoothing/Implementations/Non-Iterative|non-iterative WallSmoothing]] and [[Proper Handling of OnDeath|the proper handling of onDeath()]], both by [[David Alves]].
:* It uses [[Wall Smoothing/NonIterative | non-iterative WallSmoothing]] and [[Proper Handling of OnDeath| the proper handling of onDeath()]], both by [[David Alves]].
+
:* The conditions for deciding when to use the curve flattener and energy management were both inspired by [[Dookious]]
 +
:* It uses precise wave intersection utilities based off of [[Skilgannon]]'s.
 +
:* The idea of using anti-aliasing came from [[Rednaxela]].
 
: It was indirectly influenced by:
 
: It was indirectly influenced by:
 
:* [[Kawigi]]'s [[GuessFactor Targeting Tutorial]], which helped me figure out the basics of [[GuessFactor|GuessFactors]].
 
:* [[Kawigi]]'s [[GuessFactor Targeting Tutorial]], which helped me figure out the basics of [[GuessFactor|GuessFactors]].
 
:* [[RaikoMicro]] and [[Tityus]] showed me good ways to segment data early on.
 
:* [[RaikoMicro]] and [[Tityus]] showed me good ways to segment data early on.
:* The wiki entry on [[Melee Strategy]] helped me build [[Logic]]'s melee behavior.
 
:* [[Coriantumr]] and [[HawkOnFire]] are strong melee bots I looked at.
 
  
 
; Experiments
 
; Experiments

Latest revision as of 02:48, 1 August 2017

Sub-pages:
Version History - RRGC - DookiSerpent - Archived Talk 20090520
WaveSerpent
Author(s) Kev
Extends AdvancedRobot
Targeting GuessFactor Targeting
Movement Wave Surfing
Current Version 2.11
Code License RWPCL
Download

Background Information

What's special about it?
The movement is unique (I think) in using using segmentation without Visit Count Stats.
How competitive is it?
WaveSerpent is currently 7th in the general rumble.

Strategy

How does it move?
True Surfing with Precise Prediction and Precise Intersection. Instead of using VisitCountStats WaveSerpent records lists of GuessFactors it has been hit at and tries to avoid them. There are numerous segmentation schemes that are dynamically weighted and layered on top of each other. Also, the movement uses anti-aliasing between segments.
How does it fire?
WaveSerpent uses two GuessFactor guns in a VirtualGuns array. Both guns use anti-aliasing between segments and have many different buffers weighted and layered on top of each other. One gun is tuned to hit surfers by rolling stats quickly and having the buffers weighted dynamically. The other does not have dynamic weighting or rolling.
How does it dodge bullets?
Wave Surfing
How does the melee strategy differ from one-on-one strategy?
It currently can't fight in melees.
What does it save between rounds and matches?
Guess factor and surfing data between rounds.

Additional Information

Where did you get the name?
A wave serpent is a type of tank in a tabletop battle game my friends and I used to play.
Can I use your code?
Sure, it's released under the terms of the RWPCL.
What's next for your robot?
  • Take the throne?
  • Add melee capabilities.
Does it have any White Whales?
Pattern Matchers.
What other robot(s) is it based on?
I've used many ideas from throughout the wiki, specifically from:
It was indirectly influenced by:
Experiments
  • DookiSerpent 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.
  • WaveSerpentRRGC uses WaveSerpent's gun and the movement from Raiko for the RR Gun Challenge.