Difference between revisions of "Horizon/Version History"

From Robowiki
Jump to navigation Jump to search
(Copying version history from old wiki + v1.1)
 
(Lots of changes in this release)
Line 1: Line 1:
Changes in v1.1:
+
* '''1.1.1''': ''The "Optimization" release.''
 +
** '''Release: 2009-08-17'''
 +
** '''Rating: ??.?? APS (??th), ????.? Glicko-2, ???? PL'''
 +
** Krabb's Optimization (don't recurse in wave danger calculation if danger is already greater than current minimum) speeds up the surfing considerably.
 +
** In the movement, GF arrays are now cached with each wave so that they don't have to be recalculated every tick. (Technically, this means that the bot doesn't consider data obtained since the wave was fired, but that shouldn't make much of a difference.)
 +
** Changing the wave weighting factor from 2.0 to 4.0 (i.e. the second wave counts 1/4 of what the first wave does).
 +
** Corrected a bug that prevented both the movement and gun from using the wall distance backward as a clustering dimension.
 +
** Adding a time dimension to the movement and gun to deal with adaptive targeting and movement, respectively.
 +
** Changed the movement to use precise predicted max escape angles for GF -> bearing offset calculations, like the gun.
 +
** Making the normal firepower stronger and the low-energy firepower weaker.
 +
 
  
 
* '''1.1''' ''The "20: GOTO 10" release.''
 
* '''1.1''' ''The "20: GOTO 10" release.''
 
** '''Release: 2009-08-15'''
 
** '''Release: 2009-08-15'''
** '''Rating: ????.?? (??th)'''
+
** '''Rating: 82.34 APS (18th), 2078.5 Glicko-2, 1414 PL'''
 
** Lots of refactoring--code is now extremely clean, and much of it has additional documentation. YAGNI has been applied mercilessly, with virtually all unused code simply deleted.
 
** Lots of refactoring--code is now extremely clean, and much of it has additional documentation. YAGNI has been applied mercilessly, with virtually all unused code simply deleted.
 
** '''GOTO SURFING!''' Well, sort of. The implementation is simple, but it should be reasonably bug-free. (Yeah, right.)
 
** '''GOTO SURFING!''' Well, sort of. The implementation is simple, but it should be reasonably bug-free. (Yeah, right.)
Line 10: Line 20:
 
** The gun now does a better job with its special case for HOT against disabled opponents. It uses a field called <code>epicDisabledOpponentShotFired</code>. Yes, really.
 
** The gun now does a better job with its special case for HOT against disabled opponents. It uses a field called <code>epicDisabledOpponentShotFired</code>. Yes, really.
 
** Graphical debugging is now turned on in release versions, because it wasn't really slowing anything down (especially when compared to the slug-like wave surfing precise prediction).
 
** Graphical debugging is now turned on in release versions, because it wasn't really slowing anything down (especially when compared to the slug-like wave surfing precise prediction).
 +
  
 
----
 
----
  
 
''... non-logged versions, up to 1.03 ...''
 
''... non-logged versions, up to 1.03 ...''
 +
 +
----
 +
  
 
----
 
----
Line 22: Line 36:
  
 
----
 
----
 +
  
 
* '''1.0beta11''' ''The "Accurate wave detection" release.''
 
* '''1.0beta11''' ''The "Accurate wave detection" release.''
Line 27: Line 42:
 
** '''Rating: 1974.39 (30th)'''
 
** '''Rating: 1974.39 (30th)'''
 
** Now accounts for wall hits, bullet hits, and bullet energy bonuses when determining whether the enemy fired.
 
** Now accounts for wall hits, bullet hits, and bullet energy bonuses when determining whether the enemy fired.
 +
  
 
* '''1.0beta10a''' ''The "Bugfixes for bugfixes" release.''
 
* '''1.0beta10a''' ''The "Bugfixes for bugfixes" release.''
Line 33: Line 49:
 
** Bugfix: Lateral velocity wasn't being initialized at the start of each round.
 
** Bugfix: Lateral velocity wasn't being initialized at the start of each round.
 
** ''Above [[SandboxDT]]!''
 
** ''Above [[SandboxDT]]!''
 +
  
 
----
 
----
Line 41: Line 58:
  
 
----
 
----
 +
  
 
* '''1.0beta10''' ''The "Bugfixes, bugfixes, and more bugfixes" release.''
 
* '''1.0beta10''' ''The "Bugfixes, bugfixes, and more bugfixes" release.''
Line 49: Line 67:
 
** "Stop" is now interpreted as moving in the previous direction, something I've meant to change for a long time.
 
** "Stop" is now interpreted as moving in the previous direction, something I've meant to change for a long time.
 
** Firepower is more aggressive.
 
** Firepower is more aggressive.
 +
  
 
* '''1.0beta9a''' ''The "That was the dumbest thing I've ever done" release.''
 
* '''1.0beta9a''' ''The "That was the dumbest thing I've ever done" release.''
Line 54: Line 73:
 
** '''Rating: 1916.15 (44th)'''
 
** '''Rating: 1916.15 (44th)'''
 
** This time released with the correct gun...
 
** This time released with the correct gun...
 +
  
 
* '''1.0beta9''' ''The "Refactoring is the lesser of two evils" release.''
 
* '''1.0beta9''' ''The "Refactoring is the lesser of two evils" release.''
Line 63: Line 83:
 
** The attribute weights have been changed significantly in both the movement and the gun.
 
** The attribute weights have been changed significantly in both the movement and the gun.
 
** ''Oops! This version was released with Raiko's gun!''
 
** ''Oops! This version was released with Raiko's gun!''
 +
  
 
----
 
----
Line 75: Line 96:
 
* Yeah, that's the good news... =) It does tell me why I couldn't seem to get above 50th place, though. And I now know that [[The 2000 Club]] is a lot closer than I originally thought. -- [[AaronR]]
 
* Yeah, that's the good news... =) It does tell me why I couldn't seem to get above 50th place, though. And I now know that [[The 2000 Club]] is a lot closer than I originally thought. -- [[AaronR]]
 
----
 
----
 +
  
 
* '''1.0beta8GF''' ''The "Do I need a new gun?" release.''
 
* '''1.0beta8GF''' ''The "Do I need a new gun?" release.''
Line 80: Line 102:
 
** '''Rating: 1942.47 (40th)'''
 
** '''Rating: 1942.47 (40th)'''
 
** Same movement as 1.0beta8, but with the gun from [[GFTargetingBot]]/[[BasicGFSurfer]]. I am trying to see how my movement compares to that of [[BasicSurfer]]. If this release performs better than 1.0beta8, I will know that my gun needs a lot of work.
 
** Same movement as 1.0beta8, but with the gun from [[GFTargetingBot]]/[[BasicGFSurfer]]. I am trying to see how my movement compares to that of [[BasicSurfer]]. If this release performs better than 1.0beta8, I will know that my gun needs a lot of work.
 +
  
 
* '''1.0beta8''' ''The "Yet Another Tweak Release" release.''
 
* '''1.0beta8''' ''The "Yet Another Tweak Release" release.''
Line 88: Line 111:
 
** Surfs three waves instead of two, and ranks later waves higher than before.
 
** Surfs three waves instead of two, and ranks later waves higher than before.
 
** Several other minor tweaks to the surfing.
 
** Several other minor tweaks to the surfing.
 +
  
 
----
 
----
Line 98: Line 122:
  
 
----
 
----
 +
  
 
* '''1.0beta7''' ''The "More tweaks" release.''
 
* '''1.0beta7''' ''The "More tweaks" release.''
Line 103: Line 128:
 
** '''Rating: 1883.98 (56th)'''
 
** '''Rating: 1883.98 (56th)'''
 
** 1.0beta6 reduced my rating somewhat, but not as much as I thought it might. For this release, I replaced my pulled-out-of-the-air constants with empirically determined ones. If this doesn't bring the rating back up enough, I'll revert to 1.0beta5.
 
** 1.0beta6 reduced my rating somewhat, but not as much as I thought it might. For this release, I replaced my pulled-out-of-the-air constants with empirically determined ones. If this doesn't bring the rating back up enough, I'll revert to 1.0beta5.
 +
  
 
* '''1.0beta6''' ''The "Tick waves" release.''
 
* '''1.0beta6''' ''The "Tick waves" release.''
Line 109: Line 135:
 
** A highly experimental release, I just wanted to see what making the gun fire a wave every tick does to the rankings, other than lower my score against surfers.
 
** A highly experimental release, I just wanted to see what making the gun fire a wave every tick does to the rankings, other than lower my score against surfers.
 
** Features a whole bunch of new constants with values I determined via the process of "pulling IEEE 754 64-bit floating point doubles out of the air".
 
** Features a whole bunch of new constants with values I determined via the process of "pulling IEEE 754 64-bit floating point doubles out of the air".
 +
  
 
* '''1.0beta5''' ''The "Tweak" release.''
 
* '''1.0beta5''' ''The "Tweak" release.''
Line 116: Line 143:
 
** A couple of small tweaks chosen using empirical data.
 
** A couple of small tweaks chosen using empirical data.
 
** ''Above [[BasicGFSurfer]]!''
 
** ''Above [[BasicGFSurfer]]!''
 +
  
 
* '''1.0beta4''' ''The "New distance function" release.''
 
* '''1.0beta4''' ''The "New distance function" release.''
Line 123: Line 151:
 
** Fixed bug in 1.0beta3 anti-rammer code that made the bot fire at close range even when its health is very low.
 
** Fixed bug in 1.0beta3 anti-rammer code that made the bot fire at close range even when its health is very low.
 
** Now larger than 6000 bytes!
 
** Now larger than 6000 bytes!
 +
  
 
* '''1.0beta3''' ''The "Anti-rammer" release.''
 
* '''1.0beta3''' ''The "Anti-rammer" release.''
Line 129: Line 158:
 
** Fires with HOT at close range.
 
** Fires with HOT at close range.
 
** Now runs instead of sidestepping when faced with a linear or circular rammer.
 
** Now runs instead of sidestepping when faced with a linear or circular rammer.
 +
  
 
* '''1.0beta2''' ''The "Anti-pattern-matcher" release.''
 
* '''1.0beta2''' ''The "Anti-pattern-matcher" release.''
Line 135: Line 165:
 
** Added time-since-acceleration factor to surfing.
 
** Added time-since-acceleration factor to surfing.
 
** Firepower in 1.0beta was too aggressive, energy management is now more like the pre-1.0 releases.
 
** Firepower in 1.0beta was too aggressive, energy management is now more like the pre-1.0 releases.
 +
  
 
* '''1.0beta''' ''The "This is why it is still a beta" release.''
 
* '''1.0beta''' ''The "This is why it is still a beta" release.''
Line 142: Line 173:
 
** Completely reworked clustering factors, with [[Horizon/Questions|advice]] from [[Voidious]].
 
** Completely reworked clustering factors, with [[Horizon/Questions|advice]] from [[Voidious]].
 
** Many, many more refactoring changes...
 
** Many, many more refactoring changes...
 +
  
 
* '''0.9.8.2a'''
 
* '''0.9.8.2a'''
Line 148: Line 180:
 
** Added a new clustering factor, "time since direction change", to the gun only.
 
** Added a new clustering factor, "time since direction change", to the gun only.
 
** Surfs perpendicular to the firing location of the current wave rather than the enemy's current location.  
 
** Surfs perpendicular to the firing location of the current wave rather than the enemy's current location.  
 +
  
 
* '''0.9.6'''
 
* '''0.9.6'''
Line 154: Line 187:
 
** Preloads one hit at guess factor 0 to improve score against HOT.
 
** Preloads one hit at guess factor 0 to improve score against HOT.
 
** More refactoring.  
 
** More refactoring.  
 +
  
 
* '''0.9.5.1'''
 
* '''0.9.5.1'''
Line 160: Line 194:
 
** Wavesurfing uses same clustering as gun.
 
** Wavesurfing uses same clustering as gun.
 
** Lots of refactoring  
 
** Lots of refactoring  
 +
  
 
* '''0.9.2.1''' ''Yes, there is a big gap between those versions, there were a lot of things that I added and then took out.''
 
* '''0.9.2.1''' ''Yes, there is a big gap between those versions, there were a lot of things that I added and then took out.''
Line 166: Line 201:
 
** Now has a single low-rolling-depth gun without the virtual bullets array.
 
** Now has a single low-rolling-depth gun without the virtual bullets array.
 
** Better segmentation of the gun.  
 
** Better segmentation of the gun.  
 +
  
 
* '''0.8.6'''
 
* '''0.8.6'''
 
** '''Rating: ??? (96th)'''
 
** '''Rating: ??? (96th)'''
 
** Public release
 
** Public release

Revision as of 06:37, 17 August 2009

  • 1.1.1: The "Optimization" release.
    • Release: 2009-08-17
    • Rating: ??.?? APS (??th), ????.? Glicko-2, ???? PL
    • Krabb's Optimization (don't recurse in wave danger calculation if danger is already greater than current minimum) speeds up the surfing considerably.
    • In the movement, GF arrays are now cached with each wave so that they don't have to be recalculated every tick. (Technically, this means that the bot doesn't consider data obtained since the wave was fired, but that shouldn't make much of a difference.)
    • Changing the wave weighting factor from 2.0 to 4.0 (i.e. the second wave counts 1/4 of what the first wave does).
    • Corrected a bug that prevented both the movement and gun from using the wall distance backward as a clustering dimension.
    • Adding a time dimension to the movement and gun to deal with adaptive targeting and movement, respectively.
    • Changed the movement to use precise predicted max escape angles for GF -> bearing offset calculations, like the gun.
    • Making the normal firepower stronger and the low-energy firepower weaker.


  • 1.1 The "20: GOTO 10" release.
    • Release: 2009-08-15
    • Rating: 82.34 APS (18th), 2078.5 Glicko-2, 1414 PL
    • Lots of refactoring--code is now extremely clean, and much of it has additional documentation. YAGNI has been applied mercilessly, with virtually all unused code simply deleted.
    • GOTO SURFING! Well, sort of. The implementation is simple, but it should be reasonably bug-free. (Yeah, right.)
      • Please note: I am aware that the new movement is very slow. This is because it is doing full recursive precise prediction against 2 waves (i.e. if it predicts 13 ticks in 3 directions, it will be doing (3*13) * (3*13) ticks of precise prediction every tick). We'll see if it's worth it score-wise.
    • The radar lock should never, ever, ever, really-I-mean-it ever slip now.
    • The gun now does a better job with its special case for HOT against disabled opponents. It uses a field called epicDisabledOpponentShotFired. Yes, really.
    • Graphical debugging is now turned on in release versions, because it wasn't really slowing anything down (especially when compared to the slug-like wave surfing precise prediction).



... non-logged versions, up to 1.03 ...




Nice. I was planning to add these things to my surfing as soon as I get the current bugs out. Is this open source? Is the "wave detection" in one nice clean place I could rip out & steal ... er ... I mean ... model my own code after? -- Simonton

  • Absolutely, my code is completely free to use. Look at the event handlers in the movement component, that is where all the code for the enemy bullet-fire detection is. The only thing is that the wall hit detection/damage calculation I took from Dookious, so give some credit to Voidious too. -- AaronR
  • You may want to add one more feature, and that is to only accept EnemyWaves being fired when their GunHeat is 0. It eliminates 95% of wallhit waves. Of course, I also have the accurate tracking of enemy energy, using bullet bonus and bullet damage. -- Skilgannon


  • 1.0beta11 The "Accurate wave detection" release.
    • Release: 2007-10-24
    • Rating: 1974.39 (30th)
    • Now accounts for wall hits, bullet hits, and bullet energy bonuses when determining whether the enemy fired.


  • 1.0beta10a The "Bugfixes for bugfixes" release.
    • Release: 2007-10-18
    • Rating: 1971.63 (34th)
    • Bugfix: Lateral velocity wasn't being initialized at the start of each round.
    • Above SandboxDT!



Umm... for the 400th time in a row, that was dumb. I just noticed a bug that explains why the scores didn't go up as much as they should have when I released 1.0beta10. I made the bot treat "stop" as moving in the previous direction, but I forgot to initialize the direction variable at the start of each round. By Java convention, a variable is automatically initialized to 0 if it is not set by the user code; unfortunately, my code can't handle a lateral direction of 0 in some spots (it is always supposed to be 1 or -1, that was the point of the change in the first place). A result of having the direction variable set to 0 is that my bot doesn't move some of the time. In other words, under certain conditions, Horizon is a sitting duck for two or three enemy shots at the beginning of every round!

Stupid! Stupid! Stupid!



  • 1.0beta10 The "Bugfixes, bugfixes, and more bugfixes" release.
    • Release: 2007-10-13
    • Rating: 1962.98 (37th)
    • MAJOR bugfix: believe it or not, lateral velocity was being calculated incorrectly in the gun.
    • And another significant bug: int-to-double-and-back-again conversions were messing with the "time since acceleration" attribute, in the movement and gun.
    • "Stop" is now interpreted as moving in the previous direction, something I've meant to change for a long time.
    • Firepower is more aggressive.


  • 1.0beta9a The "That was the dumbest thing I've ever done" release.
    • Release: 2007-10-12
    • Rating: 1916.15 (44th)
    • This time released with the correct gun...


  • 1.0beta9 The "Refactoring is the lesser of two evils" release.
    • Release: 2007-10-12
    • Rating: 2030.11 (20th)
    • A major refactoring: the clustering code is now in its own class instead of integrated into the movement and gun code, and should be somewhat faster.
    • Reverted to surfing only two waves, and ranking later waves much lower as before. However, the danger calculation now uses the minimum of the next wave dangers instead of the average.
    • The gun's log now goes ten times deeper; hopefully this will do a better job at hitting the 90%-plus of rumble bots without adaptive movements.
    • The attribute weights have been changed significantly in both the movement and the gun.
    • Oops! This version was released with Raiko's gun!



Ouch, that hurts. That really, really hurts.

Compare 1.0beta8GF to 1.0beta8: [1]

So, "yes"? =) --David Alves

I'd be glad that it isn't your movement, after all the work you've put into it =). -- Skilgannon

  • Yeah, that's the good news... =) It does tell me why I couldn't seem to get above 50th place, though. And I now know that The 2000 Club is a lot closer than I originally thought. -- AaronR


  • 1.0beta8GF The "Do I need a new gun?" release.
    • Release: 2007-10-05
    • Rating: 1942.47 (40th)
    • Same movement as 1.0beta8, but with the gun from GFTargetingBot/BasicGFSurfer. I am trying to see how my movement compares to that of BasicSurfer. If this release performs better than 1.0beta8, I will know that my gun needs a lot of work.


  • 1.0beta8 The "Yet Another Tweak Release" release.
    • Release: 2007-10-03
    • Rating: 1889.59 (54th)
    • Reintroduced a graphical debugging system...
    • ... and removed a mildly PerformanceEnhancing bug caused by the old one. (Back before 0.9.5.1, waves were lined up correctly, but it didn't look like it because of the bug in Robocode's drawing, which made me change my wave handling code to make it *look* like they were lining up...)
    • Surfs three waves instead of two, and ranks later waves higher than before.
    • Several other minor tweaks to the surfing.



Well, that just goes to show that tweaking really does make a difference. Remember, the only change between 1.0beta6 and 1.0beta7 was to modify a few constants.

Compare 1.0beta7 to 1.0beta6: [2]

Compare 1.0beta7 to 1.0beta5: [3]



  • 1.0beta7 The "More tweaks" release.
    • Release: 2007-09-27
    • Rating: 1883.98 (56th)
    • 1.0beta6 reduced my rating somewhat, but not as much as I thought it might. For this release, I replaced my pulled-out-of-the-air constants with empirically determined ones. If this doesn't bring the rating back up enough, I'll revert to 1.0beta5.


  • 1.0beta6 The "Tick waves" release.
    • Release: 2007-09-23
    • Rating: 1840.24 (69th)
    • A highly experimental release, I just wanted to see what making the gun fire a wave every tick does to the rankings, other than lower my score against surfers.
    • Features a whole bunch of new constants with values I determined via the process of "pulling IEEE 754 64-bit floating point doubles out of the air".


  • 1.0beta5 The "Tweak" release.
    • Release: 2007-09-23
    • Rating: 1868.85 (59th)
    • Major bugfixes in the danger and precise prediction functions of the surfing.
    • A couple of small tweaks chosen using empirical data.
    • Above BasicGFSurfer!


  • 1.0beta4 The "New distance function" release.
    • Release: 2007-09-22
    • Rating: 1835.51 (69th)
    • Rewrote the distance functions for the movement and the gun, to make tweaks easier.
    • Fixed bug in 1.0beta3 anti-rammer code that made the bot fire at close range even when its health is very low.
    • Now larger than 6000 bytes!


  • 1.0beta3 The "Anti-rammer" release.
    • Internal release: 2007-09-22
    • Rating: ??? (Not released)
    • Fires with HOT at close range.
    • Now runs instead of sidestepping when faced with a linear or circular rammer.


  • 1.0beta2 The "Anti-pattern-matcher" release.
    • Release: 2007-09-22
    • Rating: ??? (Not in rumble long enough to get a stable rating)
    • Added time-since-acceleration factor to surfing.
    • Firepower in 1.0beta was too aggressive, energy management is now more like the pre-1.0 releases.


  • 1.0beta The "This is why it is still a beta" release.
    • Rating: 1802.48 (85th)
    • Surfs multiple waves.
    • Surfing now has a stop position, in addition to left and right.
    • Completely reworked clustering factors, with advice from Voidious.
    • Many, many more refactoring changes...


  • 0.9.8.2a
    • Rating: 1857.25 (60th)
    • Fixed a bug related to data tracking in the movement code.
    • Added a new clustering factor, "time since direction change", to the gun only.
    • Surfs perpendicular to the firing location of the current wave rather than the enemy's current location.


  • 0.9.6
    • Rating: 1852.62 (60th)
    • Chooses clusters at fire time instead of current time, in both movement and gun.
    • Preloads one hit at guess factor 0 to improve score against HOT.
    • More refactoring.


  • 0.9.5.1
    • Rating: ??? (70th)
    • Replaced segmentation with DynamicClustering or something like it.
    • Wavesurfing uses same clustering as gun.
    • Lots of refactoring


  • 0.9.2.1 Yes, there is a big gap between those versions, there were a lot of things that I added and then took out.
    • Rating: ??? (101st)
    • Removed most melee code.
    • Now has a single low-rolling-depth gun without the virtual bullets array.
    • Better segmentation of the gun.


  • 0.8.6
    • Rating: ??? (96th)
    • Public release