Six additional stat buffers added to movement. (There's now 26 total in main set, 3 more in extra flattener.)
New buffers include four new attributes among their segments.
I've staggered the RollingAverage depths among the 14 "high segmented" buffers.
Removed weighting of different buffers among main buffers. (Extra flattener buffers are still weighted.)
1.542 - Pulled
Re-release of 1.522.
Note: Wanted to make sure no part of my rating jump was from switching my clients from Robocode 1.1.3 to 1.1.5. Turns out it was a large factor in those rating jumps.
1.541 - Rating: 2114 (1st), PL: 507-0 (1st)
Rollback to 1.534.
Lots of tweaks to WaveSurfing segmentations and weights.
More tweaks to dive protection - trying to find a sweet spot that avoids any catastrophes in the WaveSurfingChallenge while not crashing the RoboRumble rating.
1.531 - Pulled
Some tweaks to the new dive protection.
1.53 - Pulled
Finally fixed some issues with dive protection in the WaveSurfing that have been around since the rewrite.
1.522 - Rating: 2108 (1st), PL: 503-0 (1st)
Take distance and reachable escape angle into account in normalizing hit percentages, instead of just approximated bullet time.
Tweaks to normalization constants in enemy hit-% tracking.
1.521 - Rating: 2108 (1st), PL: 500-3 (3rd)
A constant in the hit percentage normalization is changed so that all hit percentages will be a bit higher. This affects all the hit-% thresholds in movement.
Note: 1.52 changed how the hit percentages are calculated but left the thresholds unchanged, so it will take some time and tuning to get everything back in line.
1.52 - Rating: 2107 (1st), PL: 500-3 (3rd)
Instead of tracking enemy's ranged hit-% (hit percentage beyond a threhold distance), normalize all enemy hits over a "typical" bullet flight time. This is the hit percentage used to trigger various movement decisions. This new calculation should achieve the same desired results, conceptually, but more accurately and over all available data.
1.512 - Rating: 2110 (1st), PL: 502-1 (1st)
Fixed a minor issue with the precise escape angle caching I introduced in 1.51.
1.511 - Pulled
In VirtualGuns, use distance instead of bullet time as one of the factors.
Note: If I hadn't used escape angle as a factor, bullet time would be better than distance, but the difference between distance and bullet time is already accounted for in escape angle.
Data also weighted by total (precise) escape angle at fire time.
1.50 - Rating: 2108 (1st), PL: 497-3 (3rd*)
Rollback to 1.497.
Minor tweaks to WaveSurfing danger calculation: enemy waves weighted by bulletDamage(bulletPower) instead of just bulletPower, and inversely weighted by timeToImpact instead of distanceToWave.
Note: I will be a little surprised if these have any significant performance impact, but I do believe these tweaks are more "correct" than the old code. Versus something like ChaseBullets, they might help.
1.499 - Rating: 2109 (1st), PL: 499-2 (1st*)
Same idea as 1.498, hopefully tweaked a little better.
1.498 - Pulled
The intensity with which distancing is factored into WaveSurfing dangers is now dependent on the enemy's hit percentage.
1.497 - Rating: 2112 (1st), PL: 499-0 (1st)
A few distancing tweaks.
1.496 - Rating: 2112 (1st), PL: 498-0 (1st)
Rollback to 1.493.
All hit percentages used for decisions in the movement are now normalized to the "power 2" equivalent, by multiplying them by (bulletVelocity(avg enemy power) / bulletVelocity(2)). I've done this for the ranged percentages in the flattener for a while, but now all other parts use it, too.
Thanks go to Kev, as I believe he was the first one to mention doing this to hit percentages.
Tweaks to many of the hit percentage thresholds used in movement decisions.
1.495 - Rating: 2107 (1st), PL: 489-2 (2nd*)
More tweaks to hit percentage thresholds in movement decisions.
1.494 - Pulled
Tweaks to hit percentage thresholds in movement decisions.
1.493 - Rating: 2109 (1st), PL: 496-0 (1st)
In tracking enemy ranged hit percentage, used for adjusting flattener and distancing, discard bullet hit bullets instead of counting them as misses. In turn, raise hit percentage thresholds slightly.
1.492 - Rating: 2109 (1st), PL: 497-0 (1st)
Rollback to 1.49.
Increased most hit percentage thresholds (those above 5%) in movement by 1%.
1.491 - Rating: 2110 (1st), PL: 496-1 (1st*)
Recompile / rerelease of 1.472.
1.49 - Rating: 2104, PL: 496-1 (2nd)
Rollback to 1.472.
Proper handling of onDeath. (Thanks to David Alves.)
1.483 - Rating: 2104 (1st), PL: 495-1 (1st*)
Rollback to 1.472.
Tweak to distancing factor in WaveSurfing dangers: applies distancing factor on both waves instead of just the closest one.
1.482 - Rating: 2100 (1st)
Reverted a couple changes from 1.481.
Added an anti-getting-cornered factor into WaveSurfing dangers.
Miscellaneous changes to WaveSurfing weights and segmentation.
1.475 - Rating: 2110 (1st)
Rollback to 1.472.
Changes to Main Gun:
Higher rolling depth in fast learning buffers.
Lowered the (weighted) visits threshold before a buffer achieves max weight.
1.474 - Rating: 2113 (1st)
Changes to Main Gun:
Reverted fast learning buffers to previous weight (1/4 of main buffers).
Decreased rolling depth in fast learning buffers from 10 to 8 (weighted) visits.
Slight changes to fast learning buffers' segmentations, including addition of wall distance segment.
1.473 - Rating: 2113 (1st), PL: 485-0 (1st)
Changes to Main Gun:
Doubled the weight of the fast learning buffers (now 1/2 of main buffers).
Doubled the rolling depth (but it's still very low).
1.472 - Rating: 2115 (1st), PL: 487-1 (1st)
Rollback to 1.462.
Changes to Main Gun:
Much higher weighting to fast learning buffers (weighted about 1/4 of main buffers instead of negligible).
Much lower rolling depth in fast learning buffers. Still many times higher than AntiSurfer gun, but with fewer segments, the expiration time is probably the same or less for a given segment.
1.471 - Rating: 2107 (1st), PL: 480-1 (1st)
Rollback to 1.462.
Replaced distance last eight ticks segment with distance last 25 ticks. Used my Segmentation Research to find some good slices.
1.47 - Rating: 2104 (1st), PL: 480-1 (1st)
Rollback to 1.462.
Changes to Main Gun segmentation: replaced time since velocity change and distance last eight ticks segments with time since max speed and time since (near) zero speed segments.
1.465 - Rating: 2100 (1st)
Tweak to new distancing setup.
1.464 - Rating: 2101 (1st), PL: 480-0 (1st)
Rollback to 1.462.
Experimental change to how distancing is factored into WaveSurfing danger calculations.
1.463 - Rating: 2109 (1st)
Several miscellaneous flattener tweaks.
1.462 - Rating: 2114 (1st), PL: 480-1 (1st)
More tweaks to flattener thresholds.
1.461 - Rating: 2110 (1st), PL: 481-0 (1st)
Slightly lowered thresholds for enabling flattener.
1.46 - Rating: 2113 (1st), PL: 477-4 (4th)
Rollback to 1.453.
Tweaks to hit percentage thresholds to enable flattener; also adjusts threshold proportionally to bulletVelocity(average enemy bullet power) instead of a very ugly, hackish way that subtracts average enemy bullet power from a max threshold. (Thresholds before and after this change are the same at bullet power = 2.)
1.456 - Rating: 2105 (1st), PL: 481-1 (1st)
Rollback to 1.453.
More tweaks to attack angle control... (One last time, for now.)
1.455 - Rating: 2106 (1st), PL: 478-2 (2nd)
Rollback to 1.453.
Second closest surf wave weighted significantly higher than before (when flattener's off).
1.454 - Rating: 2106 (1st), PL: 478-2 (2nd)
Tweaks to distancing.
1.453 - Rating: 2106 (1st), PL: 479-1 (1st)
Tweaks to attack angle control and threshold between subtle and aggressive distancing.
1.452 - Rating: 2105 (1st), PL: 478-2 (2nd)
More tweaks to attack angle control.
1.451 - Rating: 2101 (1st), PL: 478-2 (2nd)
Tweaks to attack angle control.
1.45 - Rating: 2106 (1st), PL: 480-0 (1st)
Adjustments to attack angle control code; replacing many-branched if statements with simple formulas.
Attempt at refining the AntiSurfer gun and mask calculation. Uses precise prediction for most recent firing wave to find range of possible GuessFactors on only that wave, applies those dangers to approximate ranges on aiming wave.
1.44 - Rating: 2111 (1st), PL: 479-0 (1st)
Rollback to 1.43
Testing a pretty radical change (well, addition) to the AntiSurfer gun. It tries to take into account the dangers (from a simulated enemy surf buffer) of the waves in the air when aiming.
Got rid of negative weighted bullet hits in AntiSurfer gun buffers.
Added initial bias for Main Gun (1 hit for Main Gun, 1 miss for AntiSurfer gun).
VirtualBullets in first 3 rounds are weighted less, gradually increasing to full weight. Rationale is that there is less data for the guns at this point, so whether a gun hits or not is less indicative of whether it is the right gun to use.
VirtualBullets weighted inversely proportional to bullet power, similarly to how they are weighted proportional to distance.
1.431 - Pulled
Significantly lowered hit-percentage threshold at which I apply a penalty to the AntiSurfer gun's VirtualGuns rating. (Strongly suggested by David Alves.)
1.43 - Rating: 2110 (1st), 476-2 (1st)
Rollback to 1.41.
Segmentation changes to Main Gun.
1.421 - Rating: 2100 (1st)
More tweaks to flattener
1.41 - Rating: 2106 (1st), PL: 477-1 (1st)
Fixed a bug in movement: was moving perpendicular to wave's original absolute bearing; should be using (and was already predicting) current absolute bearing to wave source.
1.40 - Rating: 2104 (1st), PL: 477-1 (1st)
Rollback to 1.3666.
Tweaks to movement segmentations and flattener.
1.37 - Rating: 2101 (1st), PL: 477-1 (1st)
Rollback to 1.3666.
Changes to AntiSurfer gun, using separate buffers for bullet hits (negatively weighted) and (traditional) wave based targeting data.
1.369 - Rating: 2107 (1st), PL: 473-3 (3rd)
Recompile / rerelease of 1.25.
1.368 - Rating: 2102 (1st)
1.3666 with precise escape angle calculation for gun from 1.25.
Note: A bit mashed together, I'll clean it up if it works...
1.367 - Rating: 2106 (1st)
Dookious 1.161 movement with Dookious 1.3666 gun.
Note: Testing to see if I have broken the gun through refactoring involved in movement rewrite.
1.3666 - Rating: 2105 (1st)
Restored some specific anti-rammer movement code when a rammer is close.
Don't consider "stop" movement option for second wave in movement.
Fixed super tiny bug in rammer detection.
Fixed minor bugs in surf prediction.
1.362 - Rating: 2106 (1st)
Restored partial "smooth away" functionality, as it was last implemented in old Dookious code and in 1.32.
1.361 - Rating: 2106 (1st), PL: 474-3 (3rd)
Fixed bug in movement: prediction was correctly orbiting wave sources, but movement angle orbited current enemy location!
1.36 - Pulled / Replaced
Narrowed distance threshold for finding correct bullet when hit, for updating movement stats. Previously, it could have easily been finding the wrong bullet if it misdetected a wave being fired. (Rare, but it can happen.)
Dropped "smooth away" behavior for good.
Don't surf waves that have already hit the tank or another bullet
1.352 - Rating: 2104 (1st), PL: 469-1
Fixed a bug in movement that would match bullet hits to non-firing waves, probably corrupting stats.
Note: Left the bug in place in the gun, for now, for consistency of comparisons.
1.351 - Rating: 2094 (2nd)
Use distance to wave source instead of distance to enemy in main surfing method. (More importantly, this matches up with prediction code and old Dookious code.)
1.35 - Pulled / Replaced
More tiny tweaks to prediction code.
Return of the "smooth away" behavior in movement.
The velocity threshold for just using the previous orientation instead recalculating it set to 0.1 (like old Dookious) from 1.0.
1.34 - Rating: 2098 (2nd), PL: 475-2 (3rd)
Dropped the "smooth away" stuff from 1.32 / 1.33.
Back to using all three movement options for 2nd wave.
Fixed two prediction bugs, one from the smooth away issues and another that was already there.
Fixed windowed bin scores - need to divide by number of bins.
Found / fixed a typo-ish bug that would've affect AntiSurfer gun tricks from 1.27*. Noted to retry those with it fixed.
Note: WaveSurfingChallenge scores are very very solid with this version. I hope it translates to the movement being generally bug free!
1.33 - Pulled
Fixed the movement feature I implemented in 1.32.
Removed "stop" movement option from second wave calculations in movement (to match old Dookious code, for now).
1.32 - Rating: 2089 (3rd)
Restored the one movement feature I was hoping I could safely drop in the rewrite: closer than a certain distance (decided dynamically), WallSmooth? away from enemy instead of towards it. (And correctly predict this behavior.)
1.31 - Pulled
Changes to make new movement same as old movement:
Track an enemy surf buffer which records bullet hits just like an enemy surfer.
When aiming the AntiSurfer gun, check which side has the "safest" spot and which side has the "most dangerous" spot from enemy surf perspective. If they're on opposite sides, restrict aiming choices to safer side.
Ratings roll much more slowly. (1.22 rolling depth was half of 1.161, accidentally; 1.22 is 5x the depth of 1.161.)
When logging hits and misses, weight data proportional to distance (closer shots weigh less).
Bin smoothing in AntiSurfer much stronger within bot width, like Main Gun.
WikiTargeting style data saving in Main Gun's highest segmented buffer.
Aim head-on until within 4 ticks of gun being cool.
1.22 - Rating: 2096, PL: 472-5 (4th)
Gun now (again) correctly calculates window of GuessFactor bins instead of jusing using 1 bin on either side.
In Main Gun, use much stronger smoothing within bot width window instead of just ignoring it.
AntiSurfer Gun now much more closely resembles that of 1.161:
Decrement values on bullet hits.
Weight of non-firing waves set to 1/20 (from 1/10).
1.21Rating: 2090 (3rd), 472-5 (3rd)
Fixed rammer detection bug.
1.20 - Rating: 2024
Rewrote the gun from (darn near) scratch. Much clearer (and less!) code, also much faster to execute.
Gun still lacks data saving and onBulletHit? aspect of AntiSurfer gun. Other than that, should be very close to 1.161 and 1.18 in the gun department. We'll see what happens...
Note: Thought everyone was a rammer, so fired 3.0 bullets at all times, even at low energies.
Tried using some gun segments from [Segmentation Research]?.
1.161 - Rating: 2103 (1st), 475-1 (2nd)
Tweak to precise GF1 calculation: don't use WallSmoothing in precise prediction of GF=1/-1 if the enemy wouldn't hit the wall before reaching max escape angle the "normal" way.
1.16 - Rating: 2100 (1st), 433-3 (3rd)
Removed heading-change-last-eight-ticks segment from Main Gun.
Note: Over 2 seasons vs 80% of the RoboRumble contestants, this version appears to give about a 1 point advantage over 1.121. This will also help to evaluate my TestBed.
1.124 - Rating: 2089 (1st), PL: 431-2
Rollback to 1.121.
Segmentation tweaks to WaveSurfing stat buffers, including a couple of new ones.
Small (different) adjustment to distancing - variable tweak to make distancing less of a factor in danger evaluations when beyond the "fear distance" threshold.
Reverted everything to 0.965 as base for this version.
Movement changes:
A little more "afraid" to move closer (at all distances).
Gave slight weight to a movement option that will result in being farther away. (Before, would only give weight to the fact that one might bring us closer.)
Consider distance to enemy bot's current position in distancing. (Before, only considered distance to wave source.)
Slight adjustments to BinSmoothing and segmentations.
0.971 - Rating: 2069 (2nd), PL: 420-3 (2nd)
Reverted time-since-Vchange segmentation to 0.965.
Reverted weighting of surf stat arrays to 0.965.
0.97 - Rating: 2065 (2nd), PL: 417-5
Movement changes:
Minor distancing tweaks.
Some reworking of segmentations: added several new stat arrays, adjusted weights, adjusted BinSmoothing, and modified how time since velocity change is calculated.
Turned on data saving.
0.965 - Rating: 2071 (1st*), PL: 423-2 (3rd)
Fixed the typo-ish bug introduced in 0.963's method which gets the "windowed" bin score. (It was setting both the low and high indexes the same, so it was only considering a bin along the edge, instead of all bins from one edge to the other.)
0.964 - Pulled
Reworked how target direction is handled throughout Dookious's wave tracking, fixing obscure but long-standing bugs in this system.
0.963 - Rating: 2049 (5th), PL: 420-3
Bug fixed in wave tracking. When target is below a certain velocity, Dookious uses the last direction instead of their current direction (calculated by that tick's data); the bug was causing it to reverse the orientation in some cases when it shouldn't, and not reverse it in some cases when it should. Change affects both movement and gun, but primarily the gun, since the movement velocity threshold is 0.1 while the gun's is 1.0.
Two small flaws (maybe not quite "bugs") fixed in gun:
"Start time" of gun waves was off by 1 tick (was 1 too soon). (Lined up visually in RobocodeGL, but were off by 1; fixed in movement in 0.945.)
If Dookious disabled himself by firing a shot, all gun waves after that were marked as "firing" instead of "non-firing", which affected the weight of the waves if/when they hit. (Obscure logic bug.)
Restored 0.95 movement. (Negligible rating difference, major difference in PL score.)
Disabled data saving for both gun and movement.
0.962 - Rating: 2071 (1st*), PL: 416-7 (5th)
Bug fixed in data restoration.
0.961 - Pulled
(My first attempt at) data saving added for gun and movement GuessFactor data.
0.96 - Rating: 2069 (2nd), PL: 417-6 (3rd)
More miscellaneous movement tweaks:
Adjusted the weights of segmentation sets.
Gave more weight to staying farther away/not moving closer.
Weights 2nd wave a little more heavily.
0.95 - Rating: 2069 (2nd), PL: 419-3 (2nd)
Miscallenous movement tweaks.
Slightly lowered round-10+ threshold for enabling curve flattener; small tweak to flattener.
Scrapped AntiSurfer gun's new segmentations, copied segmentations from Main Gun with rolling depth of 2.
0.811 - Rating: 2015
Restored head-start to rating of Main Gun.
0.81 - Rating: 2013
Gun changes:
Segmentation tuning of Main Gun.
Significant segmentation changes to AntiSurfer gun, including addition of orbital turn rate segment (where orbiting turn rate = 0, and turn rates are relative to that).
Put some actual effort into the VirtualGuns system. (...instead of trying to cripple AntiSurfer gun enough that the Main gun would be unhindered at the cost of AntiSurfer prowess.)
0.80 - Rating: 2032 (8th), PL: 408-6 (6th)
Gun tweaks:
Wait until gun is turned to shoot.
Raise velocity threshold for using "last orientation", instead of re-calculating based on current heading/velocity. (Dookious was easily confused by a -1.0/1.0 vibrating movement pattern before.) This will also affect movement, but probably not significantly.
0.791 - Rating: 2029 (9th), PL: 405-6 (6th)
Fixed flaw in WaveSurfing. (Waves break for more than 1 tick!)
Fixed anti-rammer wall stick. (Should be shorter than regular one, but was set to same.)
Miscellaneous changes to WaveSurfing segmentation.
0.79Rating: 2003 (11th), PL: 406-5 (4th)
Gun changes:
Use power 3 bullets if VG rating over 35% or if very close to enemy.
Don't use direct aim against rammers!
Movement changes:
Anti-rammer movement. (Credit to PEZ for idea of decreased wall stick length.)
Fixed wall distance segmentation in movement.
Distancing adjustment when flattener enabled. The flattening decision is almost becoming a multi-mode type choice in Dookious.
Miscellaneous segmentation & code tuning.
Note: I consider this a movement update version, despite the small gun changes.
0.78 - Rating: 2008 (11th), PL: 404-6 (6th)
Miscellaneous gun tuning. (Best Dookious gun yet, I think.)
Both guns down to a single (significant) stat buffer.
Misc tuning of gun.
0.76 - Rating: 2007 (11th), PL: 406-5 (4th)
Fairly major overhaul of guns.
Adjust for enemy wall hits in EnemyWaves creation.
Note: A bit of a benchmark release... may lose some points in RoboRumble rating, but I would like to see where the gun is at after a lot of changes to it.
0.75b - Rating: 1998 (12th), PL: 403-7 (6th)
Restored movement from 0.72.
0.75 - Rating: 1989
Use "next X/Y" instead of "current X/Y" as source of gun waves (finally).