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.)
How it works
- Detect an energy drop to know that a bullet was fired. Create a matching Wave.
- Gather data from
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.