Dookious/DookiCape

From Robowiki
< Dookious
Revision as of 16:20, 29 November 2007 by Voidious (talk | contribs) (removing "Movement" category, adding "Movement Implementations" category)
Jump to navigation Jump to search

Background information

Count Dooku travels through space on a Geonosian Solar Sailer; thus, Dookious's movement class was originally called "DookiSailer". After a full (and slightly painful) rewrite, it is called DookiCape. It is a WaveSurfing movement. It is one of the best movements in the RoboRumble; in terms of collecting RR points, it's almost certainly the best right now.

Challenge results

MovementChallenge2K6

Version WSCBotA WSCBotB WSCBotC WSC APMC CassiusClay FloodHT Shadow CFC Overall Score
1.111 99.87 98.67 95.74 98.09 38.04 48.55 64.35 30.41 47.77 61.30
0.965 99.13 98.44 96.23 97.93 36.67 47.64 63.94 32.29 47.95 60.85
0.95 99.96 98.30 96.14 98.13 37.06 45.95 63.27 31.36 46.86 60.68
0.94 99.78 98.30 95.85 97.97 36.55 46.60 65.49 31.07 47.72 60.74
0.93 99.55 98.58 96.49 98.20 37.96 47.28 63.30 29.86 46.81 60.99
0.905 97.60 98.12 95.92 97.21 35.03 43.31 60.27 30.63 44.73 58.99
0.90 99.69 97.97 95.03 97.56 38.79 46.40 66.58 31.69 48.22 61.52
0.86 99.76 98.33 96.17 98.08 37.56 45.20 59.87 29.21 44.76 60.13
0.851 99.45 98.70 96.44 98.19 30.62 44.38 52.98 27.43 41.59 56.80
0.83 99.54 97.13 92.98 96.55 37.85 43.23 55.73 29.28 42.75 59.05
0.791 * 99.44 96.48 91.61 95.84 33.52 41.57 51.71 25.28 39.52 56.29
0.72 * 99.09 97.90 93.92 96.97 33.86 38.27 58.91 26.00 41.06 57.30

* = WaveSurfingChallenge2K6 was 1,000 rounds initially, but is now 500 rounds

How it works

I went through a lot of phases in my quest to implement WaveSurfing, beginning with a version of it hacked into a highly customized AntiGravityMovement system. The current system uses PrecisePrediction, courtesy of Albert's FuturePosition class, and implements a kinda-sorta True Surfing.

For the first (closest) wave, it checks the danger (GuessFactor score) for the precise spots where the wave would intercept it if it stopped, orbited clockwise, or orbited counterclockwise. For each of these locations / times, it makes a recursive call to find the danger for each of those options on the next wave; it takes the minimum of the dangers on the second wave and adds it to the danger for that movement option on the first wave. The two dangers are weighted by how far away the wave is to the bot, some other distancing factors are multiplied in, and it moves to the safest spot.

Frankly, the second level was originally going to take the lowest score anywhere in the range of GuessFactors that Dookious could get to. The choice to only test the maximum, minimum, and "stop == 0" factors was a quick hack just to test out. It seems to consistently work better, though, for reasons that I cannot explain. :) So that is how it has been left.

The movement certainly takes ideas from a lot of parts of this wiki, including all the sub-pages of WaveSurfing. Thanks to everyone who contributed all of that info! And major props go to ABC, the inventor of WaveSurfing.