Difference between revisions of "Diamond/Version History"

From Robowiki
Jump to navigation Jump to search
m (clarify the bug fix)
(Diamond 1.8.1 - another stab at surf algorithm changes to maximize MEA)
Line 6: Line 6:
 
}}
 
}}
 
----
 
----
 +
* '''1.8.1''' - 7/22/2012
 +
** Try again at wave surfing algorithm changes to maximize escape angles.
 
* '''1.8.0''' - 7/21/2012
 
* '''1.8.0''' - 7/21/2012
 +
** '''{{RumbleStatsDefault|link=http://darkcanuck.net/rumble/RatingsDetails?game=roborumble&name=voidious.Diamond+1.8.0|rumble=RoboRumble|scorelabel=APS|score=89.8|rank=1st|win=918|loss=1|plrank=1st|glicko2=2189|score2label=Survival|score2=97.09}}'''
 
** Finish up some misc code cleanup. Pretty happy with the current state of Diamond's code base from all the 1.7.x refactoring.
 
** Finish up some misc code cleanup. Pretty happy with the current state of Diamond's code base from all the 1.7.x refactoring.
 
** Inadvertently fixed a bug where non-decaying surf stats retained their decay weightings from the decaying surf stats. Sadly, there's a good chance I've tuned around this and thus will lose points for fixing it.
 
** Inadvertently fixed a bug where non-decaying surf stats retained their decay weightings from the decaying surf stats. Sadly, there's a good chance I've tuned around this and thus will lose points for fixing it.

Revision as of 02:55, 23 July 2012

Diamond Sub-pages:
DiamondVersion History - DiamondHawk

  • 1.8.1 - 7/22/2012
    • Try again at wave surfing algorithm changes to maximize escape angles.
  • 1.8.0 - 7/21/2012
    • RoboRumble ‒ APS: 89.8% (1st), PL: 918-1 (1st), Survival: 97.09%
    • Finish up some misc code cleanup. Pretty happy with the current state of Diamond's code base from all the 1.7.x refactoring.
    • Inadvertently fixed a bug where non-decaying surf stats retained their decay weightings from the decaying surf stats. Sadly, there's a good chance I've tuned around this and thus will lose points for fixing it.
  • 1.7.59 - 7/21/2012
    • RoboRumble ‒ APS: 89.86% (1st), PL: 918-1 (1st), Survival: 97.21%
    • Disable perceptual gun once we have 3 data points in main gun instead of after 4 shots fired.
  • 1.7.58 - 7/20/2012
    • RoboRumble ‒ APS: 89.75% (1st), PL: 918-1 (2nd), Survival: 97.09%
    • Update to latest perceptual gun (from 1.7.48).
  • 1.7.57 - 7/19/2012
    • RoboRumble ‒ APS: 89.71% (1st), PL: 917-0 (1st), Survival: 97.04%
    • Refactored guns a bit and fixed a few bugs along the way.
    • Always use perceptual gun for first 4 shots instead of removing it from VG after 4 shots.
  • 1.7.56 - 7/19/2012
    • RoboRumble ‒ APS: 89.83% (1st), PL: 915-1 (2nd), Survival: 97.13%
    • Re-tuned enemy hit percentage thresholds.
  • 1.7.55 - 7/17/2012
    • RoboRumble ‒ APS: 89.6% (2nd), PL: 914-2 (2nd), Survival: 96.87%
    • Increased enemy hit percentage thresholds.
  • 1.7.54 - 7/17/2012
    • RoboRumble ‒ APS: 89.82% (2nd), PL: 913-1 (2nd), Survival: 97.2%
    • Normalize enemy hit percentage by precise bot width instead of distance and re-tune hit percentage thresholds.
  • 1.7.53 - 7/15/2012
    • RoboRumble ‒ APS: 89.84% (2nd), PL: 912-1 (1st), Survival: 97.19%
    • Lowered decay rate in surf stats.
  • 1.7.52 - 7/15/2012
    • RoboRumble ‒ APS: 89.8% (2nd), PL: 912-1 (2nd), Survival: 97.14%
    • Tweaks to kernel density in Main Gun.
    • Virtual Guns tweaks:
      • Normalize on precise bot width instead of distance. (And still also precise MEA.)
      • Change formula used to log hits to one that smooths across all firing angles.
  • 1.7.51 - 7/15/2012
    • RoboRumble ‒ APS: 89.69% (2nd), PL: 913-1 (2nd), Survival: 97.06%
    • Another tweak to surfing kernel density.
  • 1.7.50 - 7/14/2012
    • RoboRumble ‒ APS: 89.44% (2nd), PL: 911-1 (2nd), Survival: 96.81%
    • Rollback to 1.7.47.
    • Tweak to kernel density in surfing.
  • 1.7.49 - 7/13/2012
    • RoboRumble ‒ APS: 89.31% (2nd), PL: 910-1 (2nd), Survival: 96.78%
    • Another tweak to bullet power selection.
  • 1.7.48 - 7/11/2012
    • RoboRumble ‒ APS: 89.33% (2nd), PL: 910-1 (2nd), Survival: 96.83%
    • Re-tuned perceptual gun.
  • 1.7.47 - 7/10/2012
    • RoboRumble ‒ APS: 89.45% (2nd), PL: 907-2 (2nd), Survival: 96.89%
    • Re-tuned main gun again against general rumble population with fading KNN weights after fixing a huge bug in my WaveSim KNN classifier.
  • 1.7.46 - 7/8/2012
    • RoboRumble ‒ APS: 89.36% (2nd), PL: 908-2 (1st), Survival: 96.78%
    • Rollback to 1.7.44.
    • Tweak to bullet power selection.
  • 1.7.45 - 7/7/2012
    • RoboRumble ‒ APS: 89.37% (2nd), PL: 905-2 (3rd), Survival: 96.64%
    • Increase decay rate in surf stats.
  • 1.7.44 - 7/6/2012
    • RoboRumble ‒ APS: 89.4% (2nd), PL: 906-1 (2nd), Survival: 96.63%
    • Revert gun to 1.7.38 settings.
    • Another tweak to distancing dangers.
  • 1.7.43 - 7/5/2012
    • RoboRumble ‒ APS: 89.12% (2nd), PL: 906-2 (2nd), Survival: 96.42%
    • Re-tuned main gun against top half of rumble (as attempted with .40 and .41).
  • 1.7.42 - 7/4/2012
    • RoboRumble ‒ APS: 89.22% (2nd), PL: 905-3 (3rd), Survival: 96.44%
    • Re-tuned main gun again after fixing huge bug in the genetic algorithm.
  • 1.7.41 - 7/3/2012
    • RoboRumble ‒ APS: 89.09% (2nd), PL: 906-2 (3rd), Survival: 96.33%
    • Reverted to old perceptual gun.
    • Tuned main gun a little more.
  • 1.7.40 - 7/3/2012
    • RoboRumble ‒ APS: 89.06% (2nd), PL: 904-2 (3rd), Survival: 96.35%
    • Back to 1.7.38.
    • Re-tuned main and perceptual guns with new test bed collected with Diamond's current code base.
  • 1.7.39 - 6/30/2012
    • RoboRumble ‒ APS: 89.26% (2nd), PL: 904-1 (2nd), Survival: 96.53%
    • Hard rollback to 1.7.29.
    • Keep fixes to bullet shadow merging and angle normalization.
    • Keep fix to removing waves one tick too soon.
  • 1.7.38 - 6/30/2012
    • RoboRumble ‒ APS: 89.2% (2nd), PL: 904-1 (1st), Survival: 96.41%
    • Revert attribute weights (for now).
    • Fix bug where waves are removed 1 tick too early. Could have been missing some bullet hits in surfing and would slightly affect precise intersections.
    • Tweaks to how near-zero velocities are handled, mostly impacting the gun.
    • Use more scans in Main 1v1 gun used in Melee battles.
  • 1.7.37 - 6/28/2012
    • RoboRumble ‒ APS: 89.24% (2nd), PL: 901-3 (3rd), Survival: 96.45%
    • Revert Melee gun to 1.7.35.
    • Add "fading" attribute weights to (KNN) Main Gun. Each weight has an initial value, a final value, and a timeframe over which it shifts to the final value (and stays there). Tuned with WaveSim and genetic algorithms.
  • 1.7.36 - 6/25/2012
    • MeleeRumble ‒ APS: 70.42% (2nd), PL: 331-2 (1st), Survival: 95.26%
    • Another tweak to how I normalize scan weights in Melee gun.
  • 1.7.35 - 6/25/2012
    • MeleeRumble ‒ APS: 70.95% (1st), PL: 332-0 (1st), Survival: 95.87%
    • More melee gun changes:
      • Drop the mirrored displacement vectors.
      • Use the same k for all enemies in KNN.
      • Normalize weighting by inverse scan distance per enemy. (i.e., each enemy gets same total weight.)
  • 1.7.34b - 6/24/2012
    • MeleeRumble ‒ APS: 69.78% (4th), PL: 332-1 (1st), Survival: 94.63%
    • Revert surfing behavior to 1.7.29.
    • A couple changes to Melee gun:
      • For each displacement vector projected into a firing angle, also project the "mirror" version, with enemy turning the opposite direction.
      • In kernel density, weight by inverse scan distance.
  • 1.7.33 - 6/24/2012
    • RoboRumble ‒ APS: 89.12% (2nd), PL: 901-2 (2nd), Survival: 96.39%
    • Revert to 1.7.31.
    • Tighten up how angles are normalized in surfing danger and shadow calculations.
  • 1.7.32 - 6/23/2012
    • RoboRumble ‒ APS: 88.92% (2nd), PL: 900-3 (2nd), Survival: 96.25%
    • Remove clause to outright ignore firing angles that are under bullet shadows in surf dangers.
    • Add shadows for breaking waves again.
  • 1.7.31 - 6/23/2012
    • RoboRumble ‒ APS: 89.17% (2nd), PL: 901-2 (2nd), Survival: 96.41%
    • Revert wave breaking surf shadows.
    • Switch to an integral danger formula and subtract the exact danger covered by bullet shadows.
  • 1.7.30 - 6/22/2012
    • RoboRumble ‒ APS: 89.29% (2nd), PL: 901-2 (2nd), Survival: 96.53%
    • As enemy waves break over Diamond, cast shadows over firing angles that already would have hit.
    • Fix a super rare (until now) bug in how bullet shadows are merged.
  • 1.7.29 - 6/20/2012
    • RoboRumble ‒ APS: 89.34% (2nd), PL: 902-1 (2nd), Survival: 96.58%
    • Revert (incorrectly applied) margin of error in decaying surf stats.
    • Change how distances are factored into surfing danger calculations.
  • 1.7.28 - 6/18/2012
    • RoboRumble ‒ APS: 88.98% (2nd), PL: 901-2 (2nd), Survival: 96.24%
    • Back to old surfing.
    • Add margin of error to threshold for decaying surf stats.
  • 1.7.27 - 6/17/2012
    • RoboRumble ‒ APS: 89.03% (2nd), PL: 897-3 (2nd), Survival: 96.3%
    • Tweak to attack angle control.
  • 1.7.26 - 6/17/2012
    • RoboRumble ‒ APS: 89.09% (2nd), PL: 899-1 (2nd), Survival: 96.35%
    • Try new surfing algorithm again after fixing a huge bug in it.
    • More misc refactoring.
    • Fixed a melee bug in the Anti-Surfer gun.
  • 1.7.25 - 6/15/2012
    • RoboRumble ‒ APS: 89.14% (2nd), PL: 898-2 (2nd), Survival: 96.41%
    • Revert to old surfing algorithm.
    • Revert to old (non-surf simulating) Anti-Surfer gun.
    • Keep new precise MEA stuff, with a couple more minor tweaks.
  • 1.7.24 - 6/15/2012
    • RoboRumble ‒ APS: 88.61% (2nd), PL: 898-1 (2nd), Survival: 96.05%
    • Fixed a couple bugs in wall smoothing from out of bounds, which happens now from the precise MEA code.
    • Fixed a new bug in melee movement.
  • 1.7.23 - 6/15/2012
    • RoboRumble ‒ APS: 88.72% (2nd), PL: 897-2 (2nd), Survival: 96.18%
    • Precise MEA calculation lets bot move through walls. This is much more important now that:
      • My movement predictor accurately predicts bots getting stuck on walls, instead of sliding along them.
      • Precise MEA dictates what destinations the movement chooses.
    • Note: This and other precise MEA changes also affect the gun, so it's a little hard to evaluate purely. I think this is the right surfing algorithm, though, so I'll stick with it and tweak as long as I can get close to 1.7.20's rating.
  • 1.7.22 - 6/15/2012
    • Pulled
    • Revert bullet power changes.
    • Major change to surfing algorithm. Tries to maximize escape angles instead of circular orbiting.
  • 1.7.21 - 6/13/2012
    • RoboRumble ‒ APS: 88.69% (2nd), PL: 896-2 (2nd), Survival: 95.77%
    • Instead of firing high power at rammers, fire 2.95 in any situation where the expected probability to hit with power 2.95 is higher than 0.2. (Based on normalized hit rate and current distance and precise max escape angle.)
  • 1.7.20 - 6/13/2012
    • RoboRumble ‒ APS: 88.98% (2nd), PL: 896-2 (2nd), Survival: 95.98%
    • Refactored some precise MEA stuff. Fixed a huge and stupid bug affecting my Anti-Surfer gun.
  • 1.7.19 - 6/12/2012
    • RoboRumble ‒ APS: 88.86% (2nd), PL: 896-2 (2nd), Survival: 96%
    • Revert the VG smoothing change.
    • Fix a bug in precise MEA calculation caused by unrelated refactoring.
  • 1.7.18 - 6/11/2012
    • RoboRumble ‒ APS: 88.91% (2nd), PL: 897-1 (2nd), Survival: 96.26%
    • Real rammer detection before firing 3.0 bullets.
    • Don't smooth hits across bot width when counting hits in Virtual Guns.
  • 1.7.17 - 6/10/2012
    • RoboRumble ‒ APS: 89.09% (2nd), PL: 896-2 (2nd), Survival: 96.33%
    • MeleeRumble ‒ APS: 70.7% (2nd), PL: 331-0 (1st), Survival: 95.66%
    • Movement predictor accounts for wall hits correctly, and has been rigorously tested.
    • Account for wall hits in enemy wave detection, including detecting Robots.
    • Distancing tweaks and fire 3.0 bullets at bots with high advancing velocity, both motivated by performance vs rammers.
    • Disable "smooth away" behavior - reverse direction of wall smoothing when very close to enemy.
  • 1.7.16 - 6/10/2012
    • RoboRumble ‒ APS: 88.95% (2nd), PL: 897-1 (2nd), Survival: 96.35%
    • Simpler and more robust solution to the wave crossing issue. If second wave has already reached us by the time we finish surfing the first, replay predicted movement log from the first wave and check for intersections with the second wave.
  • 1.7.15 - 6/10/2012
    • RoboRumble ‒ APS: 88.96% (2nd), PL: 897-1 (2nd), Survival: 96.39%
    • Fixed a minor bug in handling of crossing waves.
  • 1.7.14 - 6/10/2012
    • Pulled
    • More movement / surfing refactoring.
    • Fixed another (rare) NPE in movement wave interpolation
    • Fixed a very obscure (and old) bug in the surfing's precise intersection.
    • If second wave has passed before I finish surfing the first wave for some movement options, discard second wave surf dangers for all movement options. Previously, missing the wave meant zero danger just for that movement option, which is obviously wrong.
  • 1.7.13 - 6/9/2012
    • RoboRumble ‒ APS: 88.94% (2nd), PL: 896-1 (2nd), Survival: 96.38%
    • Switched to my own new precise predictor (including 1.7.1+ decel through zero rules).
  • 1.7.12 - 6/9/2012
    • RoboRumble ‒ APS: 88.82% (2nd), PL: 896-1 (2nd), Survival: 96.24%
    • Fixed NPE in movement wave interpolation.
    • Started refactoring surfing.
    • Don't predict one tick before checking for precise intersection in surfing.
  • 1.7.11 - 6/8/2012
    • RoboRumble ‒ APS: 88.85% (2nd), PL: 894-2 (2nd), Survival: 96.36%
    • Much smarter and cleaner wave interpolation.
    • Everywhere a past location is used in gun and movement, interpolate it.
  • 1.7.10 - 6/6/2012
    • MeleeRumble ‒ APS: 70.11% (3rd), PL: 329-0 (1st), Survival: 95.18%
    • More movement refactoring. Separated out Melee and 1v1 movement and misc cleanup.
    • For each tick that an enemy isn't scanned, interpolate a gun wave for that tick.
  • 1.7.9 - 6/4/2012
    • RoboRumble ‒ APS: 88.88% (2nd), PL: 896-0 (1st), Survival: 96.41%
    • MeleeRumble ‒ APS: 70.69% (2nd), PL: 329-0 (1st), Survival: 95.71%
    • Log traditional GFs to the flattener instead of precise GFs, which I accidentally switched to in 1.7.5 with the wave processing refactor.
  • 1.7.8 - 6/4/2012
    • Pulled
    • When an enemy wave is detected but we skipped the turn 2 ticks ago, interpolate the wave to be marked as the firing wave, instead of just not having a wave at all.
      • Note: The old movement code would just use a list index, like waves.get(2), so it had some resilience to this. I switched to fetching the correct wave by fire time, for clarity, but never considered how much of an issue it would be for skipped turns. Hopefully this is better than what I used to have anyway.
    • Only calculate Bullet Shadows for firing waves.
    • Fix an old bug where Bullet Shadows were not properly recalculated after onBulletHitBullet.
    • Fix a couple new Melee movement bugs.
  • 1.7.7 - 6/4/2012
    • RoboRumble ‒ APS: 88.53% (2nd), PL: 894-2 (2nd), Survival: 96.03%
    • Fixed an NPE in the wave processing after a skipped turn.
  • 1.7.6 - 6/4/2012
    • RoboRumble ‒ APS: 88.66% (2nd), PL: 894-2 (2nd), Survival: 96.15%
    • Fix bug in movement: using enemy location instead of my location for distance last 8/20/40 ticks attributes.
    • Polish some source/target/abs bearing stuff (mainly affecting imaginary waves).
  • 1.7.5 - 6/4/2012
    • RoboRumble ‒ APS: 88.72% (2nd), PL: 893-2 (2nd), Survival: 96.26%
    • Started refactoring movement. Data management and wave processing is looking a lot better, and a lot more is in common with the gun now. Still a lot to do...
  • 1.7.4 - 6/2/2012
    • RoboRumble ‒ APS: 88.99% (2nd), PL: 894-1 (2nd), Survival: 96.44%
    • More refactoring and optimizations of gun wave processing.
    • Fixed some minor bugs in scan interpolation.
    • Added a new Perceptual Gun to the VG array for the first 4 shots of the battle. Over the first 4 shots of ~16,000 battles vs ~500 bots, has a hit rate of 25.61%, vs 20.88% for the Main Gun.
  • 1.7.3 - 6/1/2012
    • MeleeRumble ‒ APS: 70.34% (2nd), PL: 328-1 (2nd), Survival: 95.2%
    • Refactored wave processing and scan interpolation in the gun.
  • 1.7.2 - 5/31/2012
    • RoboRumble ‒ APS: 88.84% (2nd), PL: 891-2 (2nd), Survival: 96.38%
    • Most of the way through gun refactoring / testing, started getting into some wave management.
  • 1.7.1 - 5/28/2012
    • MeleeRumble ‒ APS: 70.51% (2nd), PL: 330-1 (2nd), Survival: 95.49%
    • Fixed major new bugs in the alternate-source melee wave creation, as well as an old bug that used accel and distance last X ticks of the source instead of the target.
  • 1.7.0 - 5/28/2012
    • MeleeRumble ‒ APS: 68.71% (6th), PL: 325-4 (6th), Survival: 94.06%
    • Began a major code cleanup / refactoring / unit testing effort, starting with the gun.
    • Fixed a bug in error logging that would try to write over quota and get Diamond disabled (!).
  • 1.6.18 - 5/19/2012
    • MeleeRumble ‒ APS: 69.56% (5th), PL: 329-2 (1st), Survival: 94.45%
    • Fix a melee bug in the new Anti-Surfer gun.
    • Note: Diamond is 3+ years old now, wow!
  • 1.6.17 - 11/21/2011
    • RoboRumble ‒ APS: 88.73% (2nd), PL: 887-2 (3rd), Survival: 96.28%
    • Bullet power tweaks.
  • 1.6.16 - 10/30/2011
    • RoboRumble ‒ APS: 88.29% (2nd), PL: 839-1 (2nd), Survival: 95.55%
    • Tweaks to decaying surf stats.
    • Remove slight reluctance to disable flattener when it's enabled, which required enemy hit percentage to fall 1% below the normal threshold.
  • 1.6.15 - 10/18/2011
    • RoboRumble ‒ APS: 88.28% (2nd), PL: 838-0 (1st), Survival: 95.6%
    • Flattener tweaks.
  • 1.6.14 - 10/3/2011
    • RoboRumble ‒ APS: 88.21% (2nd), PL: 832-1 (1st), Survival: 95.56%
    • Revert VG changes.
  • 1.6.13 - 10/2/2011
    • RoboRumble ‒ APS: 88.23% (2nd), PL: 831-1 (2nd), Survival: 95.59%
    • Virtual Guns fires multiple virtual bullets per gun.
    • Tweaks to Anti-Surfer gun.
  • 1.6.12 - 9/24/2011
    • RoboRumble ‒ APS: 88.18% (2nd), PL: 830-1 (2nd), Survival: 95.49%
    • Changed how flattener hit percentage threshold is calculated - including a real margin of error calculation.
    • Tweaks to flattener.
  • 1.6.11 - 9/18/2011
    • RoboRumble ‒ APS: 88.03% (2nd), PL: 829-1 (2nd), Survival: 95.36%
    • Tweak to how I wait until gun is turned.
  • 1.6.10 - 9/15/2011
    • RoboRumble ‒ APS: 87.97% (2nd), PL: 828-2 (2nd), Survival: 95.56%
    • Lower hit percentage threshold for enabling decaying surf stats.
    • Tweaks to Anti-Surfer gun.
  • 1.6.9 - 9/10/2011
    • RoboRumble ‒ APS: 87.95% (2nd), PL: 827-2 (2nd), Survival: 95.53%
    • Tweak to non-decaying surf stats.
  • 1.6.8 - 9/9/2011
    • RoboRumble ‒ APS: 88.02% (2nd), PL: 826-1 (2nd), Survival: 95.57%
    • Overhaul of decaying and flattener surf stats.
  • 1.6.7 - 9/5/2011
    • RoboRumble ‒ APS: 87.85% (2nd), PL: 825-2 (2nd), Survival: 95.41%
    • Augmented Anti-Surfer gun with some enemy surfing simulation.
      • Calculate farthest reachable spots on nearest wave.
      • Assume that enemy will move to safest spot in that range.
      • Restrict firing angles to those reachable from safest spot/time.
    • Tweaks to flattener, surf stat decay rates, and some other boring movement internals - most of which were just to streamline things.
    • More refactoring and cleanup. Giant / ugly / overloaded constructors are out; chaining is in! =)
  • 1.6.6 - 9/1/2011
    • RoboRumble ‒ APS: 87.98% (2nd), PL: 824-1 (2nd), Survival: 95.58%
    • Rollback to 1.6.4.
    • Decrease hit percentage thresholds for enabling flattener.
    • Increase weight of flattener in surf stats.
    • Tweaks to flattener config.
  • 1.6.5 - 8/31/2011
    • Pulled
    • Estimate danger of future firing situations presented to enemy in Wave Surfing predictions. (Inspirations from Talk:Wave Surfing#The Next Level discussions.)
  • 1.6.4 - 8/28/2011
    • RoboRumble ‒ APS: 87.99% (2nd), PL: 814-3 (3rd), Survival: 95.54%
    • Lots and lots of code cleanup and refactoring.
    • Converted to Rednaxela's tree (thanks!) - Diamond is much faster now.
    • Fixed a strange bug with "myLocation" in both gun and movement that might have been adversely affecting a lot of things. I think it was also responsible for an NPE that Diamond was hitting. (Not the "getOthers()" one, which I haven't reproduced since upgrading to 1.7.3.2.)
    • Improved logging of exceptions and semi-expected error cases.
  • 1.6.3 - 8/23/2011
    • RoboRumble ‒ APS: 87.78% (2nd), PL: 814-2 (2nd), Survival: 95.35%
    • Don't throw away already created shadows from BulletHitBullet's destroyed bullet.
    • Log exceptions to error.log (and rethrow).
    • A bit of misc refactoring / cleanup.
  • 1.6.2 - 8/22/2011
    • RoboRumble ‒ APS: 87.78% (2nd), PL: 814-2 (2nd), Survival: 95.41%
    • When casting shadows, ignore any wave that has processed a bullet hit.
    • On BulletHitBullet, remove fired bullet from list.
    • Note: 1.6.1 recalculated bullet shadows from onBulletHitBullet, but would have come up with the exact same ones anyway. Doh!
  • 1.6.1 - 8/21/2011
    • RoboRumble ‒ APS: 87.73% (2nd), PL: 812-4 (3rd), Survival: 95.27%
    • Recalculate bullet shadows after BulletHitBullet's.
    • Fix a long-standing but very rare ArrayIndexOutOfBoundsException in movement.
    • Note: Source is now in the JAR - redownload if you want it/missed it.
  • 1.6.0 - 8/20/2011
    • RoboRumble ‒ APS: 87.94% (2nd), PL: 814-2 (3rd), Survival: 95.57%
    • Rollback to 1.5.34.
    • Account for Bullet Shadows in Wave Surfing dangers.
    • Update graphics:
      • Show bullet shadows (green) on enemy waves.
      • Polish gun gfx a bit, including finally removing displacement vectors in duels.
    • Note: Source is now in the JAR - redownload if you want it/missed it.
  • 1.5.38 - 3/24/2011
    • RoboRumble ‒ APS: 87.03% (2nd), PL: 812-4 (3rd), Survival: 94.65%
    • Updated to a stronger perceptual gun. Uses 500 data points / GuessFactors, fires at the GF for the point nearest to the current situation.
  • 1.5.37 - 3/17/2011
    • RoboRumble ‒ APS: 87.26% (2nd), PL: 794-4 (6th), Survival: 94.9%
    • Limit perceptual gun to 2 shots, which my WaveSim tests say is the magic number. (4.25% increase in accuracy of first 2 shots in 1000 battles.)
    • Updated perceptual gun (just because I changed some of the DNA stuff).
  • 1.5.36 - 3/15/2011
    • RoboRumble ‒ APS: 87.08% (2nd), PL: 792-4 (6th), Survival: 94.79%
    • Disable perceptual gun after 5 shots fired.
  • 1.5.35 - 3/14/2011
  • 1.5.34 - 2/16/2011
    • RoboRumble ‒ APS: 87.29% (2nd), PL: 792-4 (3rd), Survival: 94.98%
    • Main Gun re-tuned. Again.
    • Note: Fixed two more bugs, this time in Diamond's distance formula used in WaveSim. I think I'm bug-free now with my WaveSim setup.
  • 1.5.33 - 2/13/2011
    • RoboRumble ‒ APS: 87.17% (2nd), PL: 789-4 (4th), Survival: 94.75%
    • Main Gun again re-tuned with genetic algorithms.
    • Note: This one's after fixing a significant bug in the new WaveSim and refining my GA stuff a bit.
  • 1.5.32 - 2/11/2011
    • RoboRumble ‒ APS: 86.91% (2nd), PL: 785-7 (6th), Survival: 94.64%
    • Another Main Gun re-tuning with GA and a different test bed.
  • 1.5.31 - 2/8/2011
    • RoboRumble ‒ APS: 86.96% (2nd), PL: 785-6 (6th), Survival: 94.65%
    • Re-tuned parameters of Main Gun with some genetic algorithms - all attribute weights, max KNN cluster size, and how quickly it ramps up to max size.
  • 1.5.30 - 2/2/2011
  • 1.5.29 - 2/1/2011
    • RoboRumble ‒ APS: 87.4% (2nd), PL: 784-4 (3rd), Survival: 94.99%
    • Rollback to 1.5.25.
    • Scans weighted by inverse distance in 1v1 Main Gun.
  • 1.5.28 - 1/31/2011
    • RoboRumble ‒ APS: 87% (2nd), PL: 781-4 (5th), Survival: 94.84%
    • Reverted weighting gun scans by inverse distance.
  • 1.5.27 - 1/31/2011
    • RoboRumble ‒ APS: 87.03% (2nd), PL: 780-4 (5th), Survival: 94.69%
    • Reverted squared virtuality.
    • Reverted attribute weights to a previous dev version.
  • 1.5.26 - 1/30/2011
    • RoboRumble ‒ APS: 86.89% (2nd), PL: 780-5 (6th), Survival: 94.68%
    • More 1v1 Main Gun tweaks:
      • Kernel density always tests fixed angles, instead of only when the clusters get big.
      • Increased from 59 angles across old school MEA range to 89 angles across precise MEA range. (The angles that dictate the kernel density are only across this range, anyway.)
      • Scans now weighted by inverse distance.
      • Ramps up to max cluster size faster.
      • Gun heat attribute (which I call "virtuality") now squared instead of linear in distance formula.
      • Re-tuned attribute weights.
  • 1.5.25 - 1/23/2011
    • RoboRumble ‒ APS: 87.21% (2nd), PL: 777-7 (6th), Survival: 94.88%
    • Majorly tweaked 1v1 Main Gun using my WaveSim util.
      • Added a bullet power attribute.
      • Increased max GF used in wall distances.
      • Adjusted distribution of acceleration attribute (accel now covers 2/3 of the range instead of 1/2).
      • Finely tuned all attribute weights.
    • Note: Testbed was ~1400 battles (30 seasons of 47 bots) vs mostly mid-range random movers. Increased hit percentage from 14.04 to 14.71.
  • 1.5.24 - 1/6/2011
    • RoboRumble ‒ APS: 87.14% (2nd), PL: 777-7 (6th), Survival: 94.85%
    • Switched guns to use traditional, orbital wall distance (from one based on precise max escape angle) in 1v1.
  • 1.5.23 - 1/5/2011
    • RoboRumble ‒ APS: 87.12% (2nd), PL: 777-6 (6th), Survival: 94.92%
    • Anti-Surfer gun now uses GuessFactors instead of Displacement Vectors in 1v1.
    • Reduced log depths in the Anti-Surfer gun.
    • Note: 0.5 APS improvement across 9 of my toughest matchups, mostly against Ascendant and (an old) DrussGT.
  • 1.5.22 - 6/4/2010
    • RoboRumble ‒ APS: 87.06% (2nd), PL: 775-8 (7th), Survival: 94.82%
    • Tweaked bullet power guessing (for imaginary surfing).
  • 1.5.21 - 5/29/2010
    • RoboRumble ‒ APS: 87.12% (2nd), PL: 763-6 (6th), Survival: 94.9%
    • Revert to 1.5.19.
    • Remove (negative weighted) bullet hits from Anti-Surfer gun.
  • 1.5.20 - 5/27/2010
    • RoboRumble ‒ APS: 87% (2nd), PL: 765-3 (3rd), Survival: 94.8%
    • Restore VG bias.
  • 1.5.19 - 5/26/2010
    • RoboRumble ‒ APS: 87% (2nd), PL: 762-6 (5th), Survival: 94.87%
    • Revert to 1.5.17.
    • No Virtual Guns bias towards Main Gun.
    • Non-behavioral: polished surfing graphics; enhanced tracing system; misc refactoring.
  • 1.5.18 - 5/17/2010
    • RoboRumble ‒ APS: 87.03% (2nd), PL: 762-6 (6th), Survival: 94.5%
    • Fix how I wait until gun is turned. When gun heat == 0, re-aim with last tick's wave and check if gun turn remaining is within half a bot width of chosen firing angle.
    • Only re-evaluate Virtual Guns after a firing wave is logged.
  • 1.5.17 - 5/12/2010
    • MeleeRumble ‒ APS: 70.83% (2nd), PL: 292-0 (1st), Survival: 95.63%
    • RoboRumble ‒ APS: 87.14% (1st), PL: 765-5 (5th), Survival: 94.97%
    • Fixed an obscure infinite loop bug in precise intersection code that was exposed by imaginary waves + super close ranges. When normalizing angles, I assumed the danger range would never be larger than Math.PI / 2.
    • Imaginary surfing tweaks:
      • Avoid potential rounding errors in a few places.
      • If enemy's projected location is closer than a bot width (surfing 2 ticks ahead), use current location.
    • Added the beginnings of a code tracing system (as part of debugging the infinite loop).
    • Some miscellaneous refactoring.
    • Note: Pretty much a "make sure I didn't break anything" release. My current test bed indicates I might have, but hopefully it's just not that reliable. =)
  • 1.5.16 - 5/9/2010
    • RoboRumble ‒ APS: 87.02% (2nd), PL: 761-5 (5th), Survival: 94.83%
    • Revert to surfing 2 waves.
    • Surf an imaginary wave based on gun heat observation 1-2 ticks before detecting energy drop. (Thanks to Rednaxela for coming up with this idea and sharing it!)
  • 1.5.15 - 5/8/2010
    • RoboRumble ‒ APS: 86.88% (2nd), PL: 762-6 (6th), Survival: 94.78%
    • Revert change to cluster size.
    • Surf 3 waves.
  • 1.5.14 - 5/7/2010
    • RoboRumble ‒ APS: 86.89% (2nd), PL: 762-5 (4th), Survival: 94.62%
    • In surfing, raise the limit on cluster size relative to total number of scans.
  • 1.5.13 - 5/5/2010
    • RoboRumble ‒ APS: 86.97% (2nd), PL: 765-2 (3rd), Survival: 94.88%
    • Further simplified/tweaked recent scans.
    • Fixed calculation of when wave has completely passed in precise intersection code.
    • Added two alternate color schemes, each used randomly in 5% of battles.
  • 1.5.12 - 5/1/2010
    • RoboRumble ‒ APS: 86.88% (2nd), PL: 760-7 (7th), Survival: 94.64%
    • Simplified and tweaked recent scans in surfing stats.
  • 1.5.11 - 4/29/2010
    • RoboRumble ‒ APS: 86.92% (2nd), PL: 761-4 (4th), Survival: 94.76%
    • Reverted changes to wave sorting.
    • Note: Performance enhancing bug? Or maybe just bad luck. Probably just leave it for now.
  • 1.5.10 - 4/28/2010
    • RoboRumble ‒ APS: 86.74% (2nd), PL: 759-5 (5th), Survival: 94.6%
    • Polished gun graphics and cleaned up the code a lot.
    • In surfing, sort waves by time to impact instead of distance to impact. Much less likely to be fooled by Chase Bullets.
    • Note: Big thanks to PrairieWolf for helping me discover the answer to this code comment: // TODO: figure out what causes this - chase bullets?. PW has helped me many times before with weird edge cases, too. He's like a Swiss Army Knife!
  • 1.5.9 - 4/23/2010
    • RoboRumble ‒ APS: 86.94% (2nd), PL: 760-5 (3rd), Survival: 94.79%
    • Decreased weights of recent scans and flattener in surfing.
    • Eliminated one distancing function from surfing.
  • 1.5.8 - 4/14/2010
    • RoboRumble ‒ APS: 86.86% (2nd), PL: 761-2 (2nd), Survival: 94.78%
    • Fixed one more tiny/obscure flaw in how bullet hits are matched to waves in surfing.
    • Changed gun's gun heat attribute to be cleaner and technically correct instead of the hacky way I've done it all this time.
  • 1.5.7 - 4/13/2010
    • RoboRumble ‒ APS: 86.95% (2nd), PL: 757-4 (4th), Survival: 94.79%
    • More 1v1 bullet power tweaks:
      • Remove if (distance < 250) then bulletPower = 2.499 clause.
      • Tweaks to bullet power at low energy.
    • Fixed rounding error in surfing when matching onHitByBullet and onBulletHitBullet info to correct wave.
  • 1.5.6 - 4/13/2010
    • RoboRumble - Pulled
    • Tried to fix a rounding error, but introduced a much bigger bug that ignores every single bullet hit (ie, never collects any data).
  • 1.5.5 - 4/10/2010
    • RoboRumble ‒ APS: 86.73% (2nd), PL: 759-3 (1st), Survival: 94.14%
    • Tweaks to 1v1 bullet power:
      • Remove if (distance > 700) then bulletPower = 1.499 clause.
      • Default power to 1.95 (was 1.999).
    • Notes: Much to my amazement, these changes result in a 0.8% APS improvement vs my 48-bot test bed of mid-level bots (avg ~79 APS against them). About 60% of that from the default to 1.95. Even 1.94 or 1.96 showed no improvement. Very odd!
  • 1.5.4 - 3/16/2010
    • RoboRumble ‒ APS: 86.3% (2nd), PL: 754-6 (6th), Survival: 93.65%
    • A few tweaks to Main Gun.
    • Switched to zlib license.
  • 1.5.3 - 3/7/2010
    • RoboRumble ‒ APS: 86.22% (2nd), PL: 750-7 (7th), Survival: 93.67%
    • Virtual Guns system also cares about how far off the aim angle is (instead of just a boolean hit or miss).
  • 1.5.2 - 2/24/2010
    • RoboRumble ‒ APS: 86.25% (2nd), PL: 754-5 (6th), Survival: 93.68%
    • Decrease Anti-Surfer gun cluster size further, to 4.
  • 1.5.1 - 2/16/2010
    • RoboRumble ‒ APS: 86.23% (2nd), PL: 754-5 (5th), Survival: 93.53%
    • Tweaks to Anti-Surfer gun - mainly, decreasing cluster size from 30 to 12.
  • 1.5.0 - 2/11/2010
    • MeleeRumble ‒ APS: 70.6% (1st), PL: 287-0 (1st), Survival: 95.41%
    • Various tweaks to melee gun attributes and weights.
  • 1.49 - 10/25/2009
    • MeleeRumble ‒ APS: 70.49% (1st), PL: 287-0 (1st), Survival: 95.2%
    • RoboRumble ‒ APS: 86.29% (2nd), PL: 753-5 (5th), Survival: 93.65%
    • Various tweaks to Wave Surfing stats.
  • 1.48 - 10/23/2009
    • RoboRumble ‒ APS: 86.05% (2nd), PL: 734-7 (5th), Survival: 93.49%
    • Rollback to 1.473.
    • Remove k-means clustering component of 1v1 gun.
  • 1.474 - 10/22/2009
    • RoboRumble ‒ APS: 85.65% (3rd), PL: 730-9 (8th), Survival: 93.18%
    • When calculating precise intersection, predict slamming on the brakes once the wave has passed the center of the bot.
  • 1.473 - 10/22/2009
    • RoboRumble ‒ APS: 85.95% (3rd), PL: 730-11 (8th), Survival: 93.33%
    • Precise intersection back on.
    • When calculating precise intersection, predict slamming on the brakes as soon as the wave starts intersecting the bot.
  • 1.472 - 10/21/2009
    • RoboRumble ‒ APS: 85.56% (4th), PL: 735-7 (6th), Survival: 93.13%
    • No precise intersection.
    • Differences from 1.462:
      • Fixed bug in bot width / bandwidth used in surfing kernel density calculations. Was dividing by precise MEA instead of traditional. This was fixed in 1.47 and 1.471, too. Sadly, this appears to hurt performance - need to investigate.
      • Using precise calculation of "front bumper" offset - i.e., knowing precisely the first tick a wave could hit the bot.
    • Notes: I expect this to perform worse than 1.471, which would confirm that the precise MEA-based bot width / bandwidth is a Performance Enhancing Bug. This will give an apples to apples comparison of the value of precise intersection.
  • 1.471 - 10/21/2009
    • RoboRumble ‒ APS: 85.57% (3rd), PL: 730-10 (8th), Survival: 93.18%
    • The real deal precise intersection. For now, only in danger calculation, not (explicitly) in distancing.
  • 1.47 - 10/19/2009
  • 1.462 - 10/17/2009
    • RoboRumble ‒ APS: 85.74% (3rd), PL: 728-11 (8th), Survival: 93.18%
    • Slightly weakened dive protection.
  • 1.461 - 10/15/2009
    • RoboRumble ‒ APS: 85.57% (3rd), PL: 725-15 (9th), Survival: 93%
    • Simplified and tweaked attack angle control.
    • Increased desired distance (550 >> 650, still static).
  • 1.46 - 10/12/2009
    • RoboRumble ‒ APS: 85.35% (4th), PL: 733-6 (6th), Survival: 93.02%
    • Fixed a bug in "smart cycling" code. (Used in some surf stats, removes point closest to point being added instead of removing oldest point.) Was using unweighted distances to find closest point.
    • More changes and additions to recent scan views, going for some diversity in distancing formulas and decay rates.
  • 1.45 - 10/11/2009
    • RoboRumble - Corrupted, but slightly above 1.444.
    • Changes to recent scans surfing stats, and added a few more recent scan views.
  • 1.444 - 10/9/2009
    • RoboRumble ‒ APS: 85.23% (4th), PL: 732-9 (5th), Survival: 92.94%
    • Normalize surf dangers by total weight given to scans in the wave.
    • Moving away is safer the same way moving closer is more dangerous. (Note: previous design was a conscious decision, not an oversight.)
  • 1.443 - 10/8/2009
    • RoboRumble ‒ APS: 85.29% (4th), PL: 731-15 (10th), Survival: 92.91%
    • Normalize surfing dangers by max weight given to any scan. No effect on relative dangers within one wave, but will hopefully make the two surfable waves be weighted more consistently.
  • 1.442 - 10/6/2009
    • RoboRumble ‒ APS: 85.28% (4th), PL: 737-8 (7th), Survival: 92.99%
    • Rollback changes to surf scan weights.
    • This should be 1.42 + some refactoring + two bug fixes.
  • 1.441 - 10/6/2009
    • RoboRumble ‒ APS: 84.64% (5th), PL: 725-19 (14th), Survival: 92.26%
    • Another change to how scans are weighted by distance in surfing: divide by distance squared.
  • 1.44 - 10/5/2009
    • RoboRumble ‒ APS: 84.97% (5th), PL: 733-12 (9th), Survival: 92.8%
    • Rollback surfing stats to 1.42.
    • Change to how surfing weights scans by distance.
  • 1.432 - 10/4/2009
    • RoboRumble ‒ APS: 85.26% (4th), PL: 734-10 (8th), Survival: 92.95%
    • Fixed a small bug in the k-means gun.
    • Give less weight to second wave when flattener is on. (Same as Dookious.)
    • More tweaks to surfing stats.
    • Added several layers to the flattener.
  • 1.431 - 10/3/2009
    • RoboRumble ‒ APS: 85.37% (4th), PL: 734-11 (9th), Survival: 93.04%
    • Tweaked surfing stats: lower weight to the new mid-range views, higher decay rates on recent scans.
  • 1.43 - 10/2/2009
    • RoboRumble ‒ APS: 85.33% (4th), PL: 733-12 (9th), Survival: 92.95%
    • Fixed a bug in / tweaked attack angle control in surfing. (I think this may explain the strange "sit still for a while" behavior sometimes displayed at start of Melee duels.)
    • Lots of changes to surfing stats.
  • 1.42 - 9/30/2009
    • RoboRumble ‒ APS: 85.44% (4th), PL: 736-7 (6th), Survival: 93.22%
    • Rollback to 1.412.
    • In 1v1, uses latest TripHammer gun (0.8498) in place of Main Gun. Changes to TripHammer since 1.39:
      • Fixed a bug in predicting enemy next location (from Diamond 1.401).
      • Instead of pulling in nearby clusters when we don't have enough data points, do KNN instead.
      • Scale the "enough data" threshold up to 250 through about 10 rounds (7500 data points).
      • If the cluster is very large, only use the 700 nearest neighbors from within that cluster.
    • Notes: Well, this was a significant enough APS boost that I'm going to keep TripHammer as my "main gun" in 1v1 matches. Yay!
  • 1.413 - 9/27/2009
    • MeleeRumble ‒ APS: 69.85% (3rd), PL: 281-0 (1st), Survival: 94.74%
    • In melee gun, instead of weighting scans by distance, weight by (bullet ticks + time since last scan).
  • 1.412 - 9/27/2009
    • MeleeRumble ‒ APS: 70.28% (1st), PL: 282-0 (1st), Survival: 95.13%
    • Bullet power like 1.40 instead of like 1.392.
  • 1.411 - 9/26/2009
    • MeleeRumble ‒ APS: 70.05% (2nd), PL: 280-1 (2nd), Survival: 95.09%
    • RoboRumble ‒ APS: 85.24% (4th), PL: 733-11 (8th), Survival: 93.17%
    • Removed "light" flattener.
  • 1.41 - 9/25/2009
    • RoboRumble ‒ APS: 85.28% (4th), PL: 735-6 (8th), Survival: 93.33%
    • Reverted to old style of melee wall distance.
    • Melee bullet power should act exactly like 1.392 now (and via sane logic).
    • Introduced a new mechanic for weighting DC scans by age:
      • A DC view can have a decay rate d.
      • Among the scans in the nearest neighbors clusters, the most recent scan gets full weight: <math>1 / {d^0} = 1</math>; the next most recent is weighted <math>1 / {d^1}</math>; and so on, raising d to the next power each time.
      • This is modeled after the relative weights of values logged to a Visit Count Stats segment using Rolling Averages. A decay rate of 2 would be very similar to a rolling average depth of 1.
      • Calculating the most similar scans is unchanged. This has nothing to do with if/how old scans are removed from the data sets - it only affects the weights of the scans being used once they're chosen.
    • Surf stats updated to weight scans by age in the recent scans and flattener views.
    • Added a "light" flattener that turns on at a lower threshold. Hoping to add some extra slight randomness without screwing up dodging.
  • 1.402 - 9/25/2009
    • MeleeRumble ‒ APS: 70.16% (1st), PL: 282-0 (1st), Survival: 94.8%
    • New style of melee wall distance calculation in gun.
  • 1.401 - 9/24/2009
    • MeleeRumble ‒ APS: 70.2% (1st), PL: 282-0 (1st), Survival: 94.78%
    • RoboRumble ‒ APS: 85.18% (4th), PL: 732-10 (8th), Survival: 92.93%
    • Reverted surfing changes.
    • Fixed a glaring bug in the gun's prediction of the enemy's next location: reversed velocity and heading parameters.
  • 1.40 - 9/23/2009
    • MeleeRumble ‒ APS: 70.39% (1st), PL: 281-0 (1st), Survival: 94.87%
    • RoboRumble ‒ APS: 84.95% (4th), PL: 733-9 (7th), Survival: 92.65%
    • Lots of changes to Wave Surfing stats.
    • Slightly increased flattener thresholds.
    • Hopefully final tweaks to melee bullet power for a while. Should act very much like 1.392 without any boneheaded logic.
  • 1.395 - 9/22/2009
    • MeleeRumble ‒ APS: 70.22% (1st), PL: 281-0 (1st), Survival: 94.75%
    • More melee bullet power tweaks.
  • 1.394 - 9/22/2009
    • MeleeRumble ‒ APS: 70% (2nd), PL: 251-0 (29th), Survival: 94.55%
    • More melee bullet power tweaks.
  • 1.393 - 9/21/2009
    • MeleeRumble ‒ APS: 70.03% (1st), PL: 281-2 (1st), Survival: 94.14%
    • Lots of bullet power changes. Fixed some bullet power mistakes introduced in 1.382 (including three <= conditions that should've been >=!)
  • 1.392 - 9/20/2009
    • MeleeRumble ‒ APS: 70.36% (1st), PL: 281-1 (2nd), Survival: 95.15%
    • RoboRumble ‒ APS: 85.02% (4th), PL: 734-9 (7th), Survival: 92.79%
    • Removed anti-grav dimension.
    • Always wait until gun is turned.
    • Speed up projections and interpolations in gun by caching sin and cos where possible.
    • Adjust gun projections to use bullet flight time-1, because bullets advance an extra time before Robocode checks for collisions. (Had this detail right in data collection, but not projection.)
    • If bullet power changes on firing tick, clear cached firing angles in Virtual Guns.
  • 1.391 - 9/19/2009
    • MeleeRumble ‒ APS: 69.06% (3rd), PL: 281-2 (1st), Survival: 93.64%
    • One more try at an anti-grav gun dimension in melee. Slightly takes bot energy into account when calculating anti-grav force, and uses the magnitude of the resulting force in addition to the bearing.
  • 1.39 - 9/18/2009
    • RoboRumble ‒ APS: 85.2% (4th), PL: 731-11 (8th), Survival: 92.86%
    • Rollback to 1.382.
    • In 1v1, uses latest TripHammer gun (0.822) in place of Main Gun. Changes to TripHammer since 1.37:
      • k = 250.
      • When there aren't many points in the nearest cluster, add in points from one or more nearby clusters. (This was the big change.)
      • In calculating kernel density, use Diamond-style if there aren't many scans to work with. This means consider the angles from the scans instead of evenly spaced angle, use a double size bandwidth, and use Gaussian kernel density.
    • Notes: Looks like TripHammer is finally on par with my KNN gun in rumble performance, which is cool to see, but not by enough to keep it in Diamond.
  • 1.383 - 9/17/2009
    • MeleeRumble ‒ APS: 68.83% (3rd), PL: 282-1 (2nd), Survival: 93.4%
    • Lowered weights of wall distance dimensions in melee gun.
    • Notes: I thought this might be good because my melee wall distance calculation is so much less sophisticated than 1v1 wall distance. But the results so far are so poor that I may try increasing the weights instead!
  • 1.382 - 9/16/2009
    • MeleeRumble ‒ APS: 69.52% (3rd), PL: 280-1 (2nd), Survival: 94.01%
    • Removed anti-grav gun dimension.
    • Tweaked melee bullet power management.
    • Aims gun more frequently in melee: every other tick instead of every 4th tick, last 4 ticks before firing instead of last 3 (was 3 instead of 4 because of a bug anyway).
    • Removed all traces of old melee target selection code.
  • 1.381 - 9/16/2009
    • MeleeRumble ‒ APS: 69.17% (3rd), PL: 281-0 (1st), Survival: 93.85%
    • Fixed the bug in the anti-grav gun dimension.
  • 1.38 - 9/15/2009
    • MeleeRumble ‒ APS: 68.82% (3rd), PL: 280-1 (2nd), Survival: 93.45%
    • Attempted an anti-grav dimension in the gun. Had a stupid bug that was either giving one of the new dimensions double weight, or (I don't think it's this) totally breaking some part of the code by having [-1,1] values instead of [0,1].
  • 1.372 - 9/14/2009
    • RoboRumble ‒ APS: 85.23% (4th), PL: 732-9 (6th), Survival: 93.03%
    • Switched back to Diamond's normal Main Gun.
    • Notes: This should be functionally equivalent to 1.34 (in 1v1) and 1.342 (in 1v1 and melee). I just want to know for sure if I've messed anything up since then before I try to figure out why TripHammer performs so poorly in the rumble.
  • 1.371 - 9/14/2009
    • RoboRumble ‒ APS: 84.82% (4th), PL: 729-13 (8th), Survival: 92.58%
    • In k-means gun, set k to 225 (from 300).
  • 1.37 - 9/13/2009
    • RoboRumble ‒ APS: 84.86% (4th), PL: 735-9 (5th), Survival: 92.59%
    • Rollback to 1.342.
    • In 1v1 matches, uses TripHammer (k-means clustering gun) in Virtual Guns array, instead of the usual "Main Gun".
  • 1.361 - 9/11/2009
    • RoboRumble ‒ APS: 85.39% (3rd), PL: 727-12 (9th), Survival: 93.12%
    • Reverted changes to my simpler / all-purpose surfing views. (In 1.36, all but the very simplest were changed to store a max of 40 scans and use the "smart cycling". Back to storing all scans.)
  • 1.36 - 9/10/2009
    • RoboRumble ‒ APS: 85.09% (4th), PL: 731-11 (6th), Survival: 92.82%
    • Rollback to 1.342.
    • Lots of additions and changes to Wave Surfing views, especially recent and flattener scans.
    • Using "remove closest to new point" instead of "remove oldest" for all surfing views that cycle out old points (internally, I call this "smart cycle"). Anti-Surfer gun still using normal cycling.
  • 1.351 - 9/10/2009
    • RoboRumble ‒ APS: 84.93% (4th), PL: 731-13 (6th), Survival: 92.54%
    • Tweaks to 1v1 wall avoidance: only look 4 ticks ahead; much tighter bound to wall considered a "wall hit" in predictions.
  • 1.35 - 9/9/2009
    • RoboRumble ‒ APS: 85.4% (3rd), PL: 729-10 (8th), Survival: 93.11%
    • Added wall avoidance to Wave Surfing (to augment existing Wall Smoothing), so it should just about never hit walls any more.
  • 1.342DL - 9/9/2009
    • RoboRumble ‒ APS: 85.3% (3rd), PL: 731-9 (6th), Survival: 92.86%
    • Gun from Dookious 1.573c.
    • Notes: Wow, Diamond's gun is stronger than Dooki's!
  • 1.342 - 9/9/2009
    • MeleeRumble ‒ APS: 69.44% (2nd), PL: 278-0 (2nd), Survival: 93.9%
    • Revert bullet power changes.
  • 1.341 - 9/8/2009
    • RoboRumble ‒ APS: 85.2% (4th), PL: 731-8 (6th), Survival: 92.79%
    • Anti-Surfer gun only collects data during 1v1 scenarios.
    • Fixed bug in melee gun introduced by 1.34 refactoring. (This was the actual cause of the melee skipped turns for 1.34.)
    • Misc tweaks to debugging graphics, mostly in gun.
    • When Virtual Guns ratings are high (1v1 only), fire higher power bullets.
  • 1.34 - 9/7/2009
    • RoboRumble ‒ APS: 85.40% (3rd), PL: 735-6 (5th), Survival: 93.02%
    • Rollback to 1.33.
    • Added an Anti-Surfer gun (and Virtual Guns system).
    • Fixed a bug in the gun's wave collection affecting close range situations.
    • Notes: Skipping turns late in melee matches. I'll probably remove data collection for the Anti-Surfer gun except in 1v1.
  • 1.332 - 9/1/2009
    • RoboRumble ‒ APS: 84.89% (4th), PL: 722-15 (12th), Survival: 92.66%
    • Added yet more views to Wave Surfing, tweaked some hit percentage thresholds.
    • Notes: It's remarkable how much the multiple views of 1.33 helped, yet how precisely similar 1.33/1.331/1.332 are with adding/tweaking the views further.
  • 1.331 - 9/1/2009
    • RoboRumble ‒ APS: 84.85% (4th), PL: 724-14 (8th), Survival: 92.54%
    • Added a couple more views to Wave Surfing.
  • 1.33 - 8/31/2009
    • RoboRumble ‒ APS: 84.9% (4th), PL: 719-18 (15th), Survival: 92.6%
    • Created a more robust system for handling multiple "views" of Wave Surfing stats. Converted and tweaked old (hard-coded) views to new system and added several more.
  • 1.323 - 8/30/2009
    • RoboRumble ‒ APS: 84.29% (5th), PL: 718-21 (17th), Survival: 92.06%
    • Rollback to 1.32.
    • Fixed a bug in Wave Surfing danger calculation: when weighting scans by inverse scan distance, forgot to pass the weights, so was using unweighted distance.
  • 1.322 - 8/30/2009
    • RoboRumble ‒ APS: 84.12% (6th), PL: 720-19 (16th), Survival: 91.83%
    • Changes to Wave Surfing:
      • When enemy hit percentage is above the threshold for which we add in recent scans, ignore all scans' distances from (i.e., similarity to) the current scan when calculating danger.
      • Remove duplicates between "all scans" and "recent scans" clusters (as in 1.274/1.275).
  • 1.321 - 8/30/2009
    • RoboRumble ‒ APS: 84.39% (4th), PL: 719-21 (17th), Survival: 92.16%
    • In Wave Surfing, lowered hit percentage threshold for adding in extra recent scans.
  • 1.32 - 8/29/2009
    • RoboRumble ‒ APS: 84.4% (4th), PL: 723-17 (13th), Survival: 92.22%
    • Tweaks to Wave Surfing attributes:
      • Against non-simple targeters, drop lateral velocity, add velocity and relative heading.
      • For relative heading, split into two values: lateral (sin) and advancing (cos) components.
      • Tweak all the weights.
    • Slightly more danger associated with moving closer to enemy.
  • 1.31 - 8/28/2009
    • MeleeRumble ‒ APS: 69.09% (2nd), PL: 275-1 (2nd), Survival: 93.84%
    • RoboRumble ‒ APS: 84.51% (4th), PL: 721-15 (12th), Survival: 92.4%
    • Slightly tweaked kernel density calculation in Melee gun. (Not much score change, but feels more right to me.)
    • Changed how Melee gun aims when it is hot (4+ ticks before firing):
      • 1.30 left the target selection code in place and aimed at that target with HOT when the gun was hot.
      • Now, completely ignore the target selection, and just aim at everyone every few ticks while the gun is hot.
  • 1.30 - 8/27/2009
    • MeleeRumble ‒ APS: 68.29% (2nd*), PL: 276-2 (2nd), Survival: 92.77%
    • Attempt at a Melee gun that targets everyone at once (a la Shadow/Melee Gun).
    • Notes: This is the second time I've tried to implement this, and I think this time I have it working right. It hasn't been producing incredible scores in my test bed, though, so I'm skeptical how well it will perform before I tweak it a bit more.
  • 1.29 - 8/26/2009
    • MeleeRumble ‒ APS: 68.14% (3rd), PL: 275-2 (3rd), Survival: 92.39%
    • Slightly decreased randomness of the Melee movement.
  • 1.286 - 8/25/2009
    • MeleeRumble ‒ APS: 68.03% (4th*), PL: 275-1 (2nd), Survival: 92.05%
    • Removed new gun dimension.
  • 1.285 - 8/25/2009
    • MeleeRumble ‒ APS: 67.68% (4th*), PL: 274-3 (2nd), Survival: 91.47%
    • In target selection, less bias towards enemies near a corner.
    • Added a heading relative to center of battlefield dimension in gun.
  • 1.284 - 8/24/2009
    • MeleeRumble ‒ APS: 68.03% (4th*), PL: 273-3 (3rd), Survival: 92.18%
    • For gun waves originating from enemies:
      • Don't fire from location of the enemy being targeted by the wave.
      • Calculate real wall distance, based on (enemy) wave source location. (1.283 just copied the wall distance values from the gun wave originating from Diamond.)
  • 1.283 - 8/23/2009
    • MeleeRumble ‒ APS: 67.45% (4th*), PL: 272-4 (4th), Survival: 91.41%
    • During melee, fires and collects gun waves from locations of every enemy bot, not just from Diamond's location.
    • Increase weight of "number of bots alive" dimension in gun.
    • Add toggling of Radar, Movement, and Gun debugging graphics via keyboard input.
  • 1.282 - 8/22/2009
    • MeleeRumble ‒ APS: 67.31% (4th), PL: 272-4 (4th), Survival: 91.13%
    • Rollback to 1.272.
    • Changed melee gun to calculate distance and relative heading values relative to Diamond instead of relative to the closest bot to the target.
  • 1.281 - 8/21/2009
    • MeleeRumble ‒ APS: 66.64% (6th), PL: 269-7 (7th), Survival: 90.11%
    • Rollback to 1.272.
    • Removed distance-last-40-ticks attribute from melee gun.
  • 1.28 - 8/20/2009
    • MeleeRumble - APS: 66.51% (6th), PL: 272-5 (5th), Glicko-2: 1673.3, Survival: 90.01%
    • Rollback to 1.272.
    • Changed all the weights in the melee gun, set intuitively with minimal testing.
  • 1.272 - 8/13/2009
    • MeleeRumble ‒ APS: 66.97% (4th), PL: 272-4 (5th), Survival: 90.75%
    • RoboRumble ‒ APS: 84.58% (4th), PL: 722-16 (13th), Survival: 92.48%
    • Add damage given risk factor.
  • 1.21 - 7/19/2009
    • RoboRumble - APS: 84.4% (6th), PL: 716-12 (16th), Glicko-2: 2121.1, Survival: 92.03%
    • Movement:
      • Surf remaining waves in the air after enemy dies.
      • In calculating wave surfing dangers, change number of scans used from Math.min(scans, CLUSTER_SIZE) to Math.min(Math.ceil(scans / 5), CLUSTER_SIZE).
    • Gun:
      • Added accel dimension.
      • Gun heat dimension uses firing-tick gun heat instead of aiming-tick gun heat.
      • Always use gun heat = 0 when aiming.
      • Actually fixed the gun wave management issues found in 1.20*. (Mainly impacts melee.)
      • A few miscellaneous tweaks and bug fixes in melee gun function.
  • 1.202 - 7/18/2009
    • RoboRumble - APS: 84.09% (7th), PL: 713-16, Glicko-2: 2115.5, Survival: 91.78%
    • More changes to gun wave management related to the 1.201 changes. (But it actually was still broken.)
  • 1.201 - 7/18/2009
    • RoboRumble - Pulled
    • Reverted bullet power changes.
    • Fixed a bug with wall distance attributes in gun: was always calculating with bullet power=3.
  • 1.20 - 7/18/2009
    • RoboRumble - APS: 83.38% (10th), PL: 707-22, Glicko-2: 2100.2, Survival: 90.56%
    • In 1v1 scenarios, uses same bullet power selection as Dookious 1.573.
  • 1.198 - 7/17/2009
    • MeleeRumble - APS: 65.82% (8th), PL: 270-6, Glicko-2: 1710.2, Survival: 87.91%
    • RoboRumble - APS: 84.06% (7th), PL: 717-11, Glicko-2: 2113.8, Survival: 91.78%
    • Functionally equivalent to 1.191.
    • Some additional debugging graphics and internal code that I wanted to keep.
  • 1.19*
    • Changes to flattener and 1v1 movement.
    • Updated debug graphics.
    • Specific details later.
  • 1.18*
    • Changes to melee movement.
    • Specific details later.
  • 1.174 - 6/3/2009
    • MeleeRumble - APS: ???%, PL: ???, Glicko-2: ???, Survival: ???%
    • Rollback to 1.171.
    • Restored damage taken risk factor in melee movement.
  • 1.173 - 6/3/2009
    • MeleeRumble - APS: 65.29%, PL: 262-5, Glicko-2: 1729.6, Survival: 87.40%
    • Rollback to 1.171.
    • Squaring perpendicularity factor.
  • 1.172 - 6/3/2009
    • MeleeRumble - APS: 65.14% (7th), PL: 163-5, Glicko-2: 1729.3, Survival: 87.19%
    • Re-enabled point generation near previous destination.
  • 1.171 - 6/2/2009
    • MeleeRumble - APS: 65.26% (7th), PL: 262-6, Glicko-2: 1731.3, Survival: 87.26%
    • Reverted conditional changes from 1.17.
    • Disabled a bunch of stuff in the melee movement that I wasn't 100% sure was helping. Will try re-enabling them one by oone to know for sure.
      • Generating possible destinations near previous destination.
      • Damage given and damage taken risk factors.
  • 1.17 - 6/2/2009
    • MeleeRumble - APS: 65.40% (7th), PL: 263-4, Glicko-2: 1734.8, Survival: 87.43
    • Only factor in perpendicularity and don't-be-targeted risk factors in certain situations (per-enemy).
    • Use cosine-based formula for perpendicularity. (I do it this way in BrokenSword, but thought of it as a code size trick. Recently concluded it's actually more correct anyway, as it models lateral velocity.)
  • 1.161 - 6/1/2009
    • MeleeRumble - APS: 65.79% (7th), PL: 260-7, Glicko-2: 1737.9, Survival: 88.08%
    • RoboRumble - APS: 83.97% (7th), PL: 685-20, Glicko-2: 2112.6, Survival: 91.53%
    • Disabled flattener.
  • 1.16 - 5/30/2009
    • RoboRumble - APS: 83.74% (9th), PL: 686-19, Glicko-2: 2109.5, Survival: 91.39%
    • Rollback to 1.122.
    • Myriad changes to Wave Surfing:
      • Tracking normalized enemy hit percentage as in Dookious, used for making lots of decisions.
      • For the recent scans taken into account, uses the last X hits instead of clearing the recent scans every few rounds. Also only enables this when enemy hit-% is above a certain threshold.
      • Distancing based on Dookious (instead of just using desired distance = 525 all the time).
      • Added a flattener, enabled with similar conditions to Dookious, but permanently enabled once it is enabled.
      • Against very simple targeters, only use 3 DC dimensions.
  • 1.15 - 5/30/2009
    • MeleeRumble - APS: 65.50% (7th), PL: 263-5, Glicko-2: 1737.3, Survival: 87.56%
    • Rollback to 1.122.
    • Threw caution to the wind and made a bunch of gut-feeling changes to both movement and gun. Didn't do much good, but was therapeutic. =)
  • 1.14 - 5/29/2009
    • MeleeRumble - APS: 65.37% (7th), PL: 265-3, Glicko-2: 1737.7, Survival: 87.59%
    • Rollback to 1.122.
    • Added corner-distance risk factor.
    • Less bias to current destination in movement.
  • 1.13 - 5/29/2009
    • MeleeRumble - APS: 65.57% (7th), PL: 263-5, Glicko-2: 1741.1, Survival: 88.19%
    • Removed gun heat consideration when switching targets in gun.
  • 1.122 - 5/28/2009
    • MeleeRumble - APS: 65.72% (7th), PL: 262-4, Glicko-2: 1744.3, Survival: 88.06%
    • Restored and tweaked damage given (anti-)risk factor.
    • Tweaked damage taken risk factor similarly.
  • 1.121 - 5/27/2009
    • MeleeRumble - APS: 65.56% (7th), PL: 263-5, Glicko-2: 1740.4, Survival: 87.95%
    • Removed risk for recent enemy locations.
    • Removed damage given (anti-)risk factor.
  • 1.12 - 5/26/2009
    • MeleeRumble - APS: 65.47% (7th), PL: 262-5, Glicko-2: 1742.7, Survival: 87.60%
    • Restored risk for recent enemy locations (from 1.072).
  • 1.115 - 5/25/2009
    • MeleeRumble - APS: 65.69% (7th), PL: 261-5, Glicko-2: 1747.0, Survival: 87.671%
    • Removed random direction change timer.
    • Tweaked risk from (Diamond's) recent locations.
    • Note: Best "bug-free" version in APS comparison. Only down .1% from 1.111 (w/performance enhancing bug), up .3% from 1.11 (bug fixed version). Good enough for me, so now I can move on with my life. =)
  • 1.114 - 5/25/2009
    • MeleeRumble - APS: 65.26% (6th), PL: 256-7, Glicko-2: 1740.4, Survival: 87.10%
    • Tweaked random direction change formula.
  • 1.113 - 5/25/2009
    • MeleeRumble - APS: 65.56% (6th), PL: 258-4, Glicko-2: 1747.1, Survival: 87.60%
    • Tweaked random direction change formula.
  • 1.112 - 5/25/2009
    • MeleeRumble - APS: 65.40% (6th), PL: 259-3, Glicko-2: 1745.0, Survival: 87.21%
    • Rollback to "bug-free" 1.11.
    • Tweaked random direction change formula.
  • 1.111 - 5/24/2009
    • MeleeRumble - APS: 65.84% (6th), PL: 259-3, Glicko-2: 1751.1, Survival: 88.50%
    • Reverting the change to current heading / random direction change code.
    • Note: Trying to figure out which of the minor changes in 1.11 caused a .4% APS drop.
    • Note #2: Yep, I've officially got a Performance Enhancing Bug on my hands.
  • 1.11 - 5/23/2009
    • MeleeRumble - APS: 65.37% (6th), PL: 258-4, Glicko-2: 1746.7, Survival: 87.17%
    • Fixed a bug in the Wave Surfing HoT avoidance (when there's no data to surf) - was marking negative GFs as dangerous, too.
    • Fixed a bug where Diamond might shoot himself disabled.
    • Fixed a bug in the current heading / random direction changing code.
    • Enhanced Wave Surfing debugging graphics, including drawing color-coded dangers along two closest waves.
    • Only executes graphical debugging code if painting is enabled. (This also fixed the buffer-overflow I was hitting when enabling paint mid-match.)
  • 1.09 - 5/23/2009
    • MeleeRumble - APS: 65.85% (6th), PL: 259-3, Glicko-2: 1752.5, Survival: 88.62%
    • RoboRumble - APS: 83.94% (7th), PL: 680-20, Glicko-2: 2115.5, Survival: 91.53%
    • Myriad Wave Surfing tweaks:
      • Changed several scan distancing dimensions: removed time since direction change, added time since velocity change, added distance last eight ticks, tweaked weights.
      • Fixed one more off-by-1 bug in the surfing (using my location from 3 ticks ago instead of 2).
      • Fixed the bandwidth used in kernel density calculations. (I'd set it to a static 0.1 as a placeholder, should be based on distance.)
      • Added a mechanic for factoring in similar scans from recent rounds in addition to similar scans from the whole match.
  • 1.08 - 5/22/2009
    • MeleeRumble - APS: 65.93% (6th), PL: 258-4, Glicko-2: 1754.0, Survival: 88.79%
    • Removed risk for recent enemy locations.
    • Added damage given (anti-)risk factor.
  • 1.072 - 5/21/2009
    • MeleeRumble - APS: 66.03% (6th), PL: 257-5, Glicko-2: 1756.5, Survival: 88.51%
    • Fixed off-by-1-bug in the movement, once and for all (I hope).
  • 1.071 - 5/20/2009
    • MeleeRumble - APS: 65.75% (6th), PL: 257-5, Glicko-2: 1753.4, Survival: 88.15%
    • Fixed a big bug adding in the risk to enemies' recent locations.
  • 1.07 - 5/20/2009
    • MeleeRumble - Pulled
    • Reverted tweak to perpendicularity factor.
    • Tweaked risk to enemies' recent locations.
    • Tweaked anti-being-targeted factor - count bots 10% closer instead of just bots closer.
    • Tried to fix the off-by-1 bug, introduced a different one.
  • 1.06 - 5/19/2009
    • MeleeRumble - APS: 65.70% (6th), PL: 258-4, Glicko-2: 1754.3, Survival: 88.61%
    • Re-introduced some risk to enemies' recent locations.
    • Tweaked perpendicularity factor.
    • Introduced an off-by-1 bug in the Wave Surfing - locations used for Enemy Wave sources and absolute bearings.
  • 1.05 - 5/19/2009
    • MeleeRumble - APS: 65.99% (6th), PL: 260-2, Glicko-2: 1758.1, Survival: 88.71%
    • Rolled back all movement changes from 1.03 and 1.04, except:
      • Greatly reduced weight of previously dominant anti-being-targeted factor.
  • 1.04 - 5/18/2009
    • MeleeRumble - APS: 65.48% (6th), PL: 258-4, Glicko-2: 1753.3, Survival: 87.91%
    • Myriad melee movement tweaks:
      • Tweaked reverse direction timer.
      • Added corner distance risk factor.
      • Greatly reduced weight of previously dominant anti-being-targeted factor.
      • Tweaked risk of enemies' recent locations: fewer, more recent points, much higher weight.
    • Risk evaluation debugging graphics now based off standard deviations, capped at -1.5/+1.5. A lot more meaningful (used to get many pure blue points when a few were super duper risky).
  • 1.03 - 5/17/2009
    • MeleeRumble - APS: 65.82% (6th), PL: 258-4, Glicko-2: 1758.5, Survival: 88.25%
    • Added some risk to enemies' recent locations.
  • 1.02 - 5/16/2009
    • MeleeRumble - APS: 65.70% (6th), PL: 259-3, Glicko-2: 1758.4, Survival: 88.05%
    • RoboRumble - APS: 83.05% (12th), PL: 676-25, Glicko-2: 2096.2, Survival: 90.52%
    • A bunch of gun tweaks, including a gun heat dimension (only used in 1v1), time since velocity change instead of direction change, and tweaked dimension weights.
    • Note: Didn't expect much rating change, but wanted to know that there wasn't, going forward.
  • 1.01 - 5/15/2009
    • MeleeRumble - APS: 65.76% (6th), PL: 260-3, Glicko-2: 1760.3, Survival: 88.55%
    • Added factor for targeting bots near corners (to take their position).
    • Removed factor that favors spots where enemies will be non-perpendicular in risk evaluation.
    • Increased weight of damage-taken factor in risk evaluation.
    • Note: Despite lower ELO, was about .3% APS better than 1.0.
  • 1.0 - 5/14/2009