Difference between revisions of "Dookious/DookiCape"
m (removing "Movement" category, adding "Movement Implementations" category) |
m (no longer "the best movement in terms of points" =)) |
||
Line 1: | Line 1: | ||
== Background information == | == Background information == | ||
− | Count Dooku travels through space on a Geonosian Solar Sailer; thus, Dookious's movement class was originally called "[[Dookious/DookiSailer|DookiSailer]]". After a full (and slightly painful) rewrite, it is called [[Dookious/DookiCape|DookiCape]]. It is a WaveSurfing movement. It is one of the best movements in the RoboRumble | + | Count Dooku travels through space on a Geonosian Solar Sailer; thus, Dookious's movement class was originally called "[[Dookious/DookiSailer|DookiSailer]]". After a full (and slightly painful) rewrite, it is called [[Dookious/DookiCape|DookiCape]]. It is a WaveSurfing movement. It is one of the best movements in the RoboRumble. |
== Challenge results == | == Challenge results == |
Latest revision as of 21:49, 22 April 2009
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.
Challenge results
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.