Difference between revisions of "Wave Surfing"

From Robowiki
Jump to navigation Jump to search
(reformatted)
m (Minor edit.)
 
(8 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Template:Stub}}
+
{{Youtube|dqHmp_kMz-U}}
  
A movement which focuses on the enemy waves, and not the enemy. The general idea consists in "surf" the enemy waves, and like human surfers, try not to be caught by the waves peaks "breaking" over you.
+
A form of precise bullet dodging movement used primarily in [[One on One|1v1]]. A [[Waves|Wave]] is a mechanic used to represent all possible locations of a bullet.  Through observation of waves and bullets, one can try to project the relative dangers of each area of a wave in the air -- i.e., the likelihood that the enemy fired at various angles. (Note that Robocode bots cannot see bullets in the air.)
  
There are many different implementations of the idea, including:
+
== History ==
  
* '''True Surfing''' - Continually re-evaluates moving forwards or backwards, "surfing" enemy waves similarly to a real surfer.
+
[[User:ABC|ABC]] was the first to implement true Wave Surfing in a Robocode bot when he added it to [[Shadow]] in mid-2004. As of April, 2010, the top 40 duelists in the [[RoboRumble]] use a form of Wave Surfing.
* '''GoTo-Style''' - Calculates the range it could get to before the closest wave "breaks", and goes to the safest part of the wave (or all waves).
 
* '''Shrapnel Surfing''' - Calculates the most dangerous part of the oncoming wave(s), and moves furthest from that area.
 
* '''Reverse/Forward Sensors''' - A form of True Surfing that does *not* use Precise Prediction, but tries to approximate similar results.
 
  
Precise Prediction - Using very precise prediction code to get extremely exact results from your WaveSurfing. Could be used in any of the WaveSurfing methodologies.
+
== How it works ==
 +
* Detect an [[Energy Drop|energy drop]] to know that a bullet was fired.  Create a matching Wave.
 +
* Gather data from <code>onHitByBullet</code> or <code>onBulletHitBullet</code>, always matching to the correct Wave, to learn what firing angles the enemy gun uses in different situations.
 +
* For the nearest bullet(s) in the air, use [[Precise Prediction|precise prediction]] to deduce the areas of the wave(s) your bot could reach.
 +
* Try to move to the safest reachable spot on each wave.
 +
 
 +
== Styles of surfing ==
 +
 
 +
* [[/True Surfing|True Surfing]] - Decide each tick whether to move forward, backward, or stop.  By far the most common form of wave  surfing, it is used by many bots including [[BasicSurfer]], [[Diamond]], and [[Shadow]].
 +
* [[/GoTo Surfing|GoTo Surfing]] - Calculate the safest spot on the nearest wave(s) and move there directly.  [[DrussGT]] uses this method.
 +
* [[/Melee|Melee Surfing]] - Surfing waves fired by multiple bots simultaneously.  [[Neuromancer]] uses this method.
  
 
==See also==
 
==See also==
 +
* [[Wave Surfing Tutorial]]
 
* [[Waves]]
 
* [[Waves]]
 +
* [[Energy Drop]]
 +
* [[Precise Prediction]]
 +
* [[Flattener]]
 +
* [[Gun Heat Waves]]
  
 
+
[[Category:Movement]]
[[category:Movement]]
 

Latest revision as of 18:19, 31 December 2012

Youtube
Youtube has a video of Wave Surfing in action: click here to watch

A form of precise bullet dodging movement used primarily in 1v1. A Wave is a mechanic used to represent all possible locations of a bullet. Through observation of waves and bullets, one can try to project the relative dangers of each area of a wave in the air -- i.e., the likelihood that the enemy fired at various angles. (Note that Robocode bots cannot see bullets in the air.)

History

ABC was the first to implement true Wave Surfing in a Robocode bot when he added it to Shadow in mid-2004. As of April, 2010, the top 40 duelists in the RoboRumble use a form of Wave Surfing.

How it works

  • Detect an energy drop to know that a bullet was fired. Create a matching Wave.
  • Gather data from onHitByBullet or onBulletHitBullet, always matching to the correct Wave, to learn what firing angles the enemy gun uses in different situations.
  • For the nearest bullet(s) in the air, use precise prediction to deduce the areas of the wave(s) your bot could reach.
  • Try to move to the safest reachable spot on each wave.

Styles of surfing

  • True Surfing - Decide each tick whether to move forward, backward, or stop. By far the most common form of wave surfing, it is used by many bots including BasicSurfer, Diamond, and Shadow.
  • GoTo Surfing - Calculate the safest spot on the nearest wave(s) and move there directly. DrussGT uses this method.
  • Melee Surfing - Surfing waves fired by multiple bots simultaneously. Neuromancer uses this method.

See also