Difference between revisions of "WaveSerpent"
Jump to navigation
Jump to search
m (cleanup) |
(Fix rating) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
| author = [[User:Kev|Kev]] | | author = [[User:Kev|Kev]] | ||
| extends = [[AdvancedRobot]] | | extends = [[AdvancedRobot]] | ||
− | | targeting = [[ | + | | targeting = [[GuessFactor Targeting|GuessFactor Targeting]] |
| movement = [[Wave Surfing|Wave Surfing]] | | movement = [[Wave Surfing|Wave Surfing]] | ||
− | | current_version = | + | | current_version = 2.11 |
| license = [[RWPCL]] | | license = [[RWPCL]] | ||
− | | download_link = http:// | + | | 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? | ||
− | : | + | : The movement is unique (I think) in using using [[segmentation]] without [[Visit Count Stats]]. |
; How competitive is it? | ; How competitive is it? | ||
− | : WaveSerpent is | + | : 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]]. | + | : [[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 [[ | + | : 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 [[Dodging Bullets|dodge bullets]]? | ; How does it [[Dodging Bullets|dodge bullets]]? | ||
Line 47: | Line 47: | ||
; What does it save between rounds and matches? | ; What does it save between rounds and matches? | ||
− | : | + | : 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 | + | : 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? | ||
− | * | + | :* Take the throne? |
− | * | + | :* Add melee capabilities. |
− | |||
; Does it have any [[White Whale|White Whales]]? | ; Does it have any [[White Whale|White Whales]]? | ||
− | : [[Pattern Matching|Pattern Matchers]] | + | : [[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: |
− | :* | + | :* [[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]]. |
− | + | :* 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/Non Iterative|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. | ||
− | |||
− | |||
; 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?
- What other robot(s) is it based on?
- I've used many ideas from throughout the wiki, specifically from:
- 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.
- It uses non-iterative WallSmoothing and 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:
- Kawigi's GuessFactor Targeting Tutorial, which helped me figure out the basics of GuessFactors.
- RaikoMicro and Tityus showed me good ways to segment data early on.
- 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.