Difference between revisions of "Horizon/Version History"
(Horizon 1.2) |
(Horizon 1.2.2) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | * '''1.2.2''': ''The "Insert pithy comment here" release.'' | ||
+ | ** '''Release: 2009-10-26''' | ||
+ | ** '''Rating: ?''' | ||
+ | ** The flattener is enabled if, at the beginning of a round, the enemy has fired at least 200 bullets and their hitrate is at least 9%. | ||
+ | *** This still isn't an ideal heuristic, because it has negative feedback: the more having the flattener enabled helps, the less likely it is to stay on. | ||
+ | |||
+ | |||
+ | * '''1.2.1a''': ''The "For science!" release.'' | ||
+ | ** '''Release: 2009-10-24''' | ||
+ | ** '''Rating: {{RumbleStatsDefault|link=http://darkcanuck.net/rumble/RatingsDetails?game=roborumble&name=ar.horizon.Horizon+1.2.1a|rumble=RoboRumble|scorelabel=APS|score=82.51|rank=15th|win=711|loss=29|plrank=25th|glicko2=2083.6|score2label=Survival|score2=89.9}}''' | ||
+ | ** The last release went slightly down in rating (relative to 1.1.3), but I think that's just because the flattener was turning on at the wrong times. This is a control release, identical to the last version except with the flattener set to never enable, to baseline my future experiments. | ||
+ | ** This release still includes all of the various bugfixes, tweaks, and possibly-breaking refactorings from the previous versions. If this version performs significantly worse than 1.1.3, ''then'' I have a problem... | ||
+ | |||
+ | |||
+ | |||
+ | * '''1.2.1''': ''The "Smooooooth" release.'' | ||
+ | ** '''Release: 2009-10-24''' | ||
+ | ** '''Rating: {{RumbleStatsDefault|link=http://darkcanuck.net/rumble/RatingsDetails?game=roborumble&name=ar.horizon.Horizon+1.2.1|rumble=RoboRumble|scorelabel=APS|score=82.13|rank=17th|win=717|loss=22|plrank=19th|glicko2=2076.3|score2label=Survival|score2=89.66}}''' | ||
+ | ** Reverting the clustering changes from 1.2 but keeping the caching fix. | ||
+ | ** Testing a flattener. | ||
+ | *** In the GF array calculation, non-hit waves are weighted a fixed 30% as much as hit waves. | ||
+ | *** The flattener is toggled if the robot dies in round 4 or later. (This overly-simple heuristic will probably be replaced in the next version.) | ||
+ | *** If the flattener is enabled, the movement also weights GFs on inverse time-since-recording. | ||
+ | ** Bugfix: GF arrays are now normalized, so that individual weighting of recordings doesn't affect the total weighting in the danger calculations. | ||
+ | ** ''Random note: over 10,000 bytes for the first time. This, of course, means absolutely nothing.'' | ||
+ | |||
+ | |||
* '''1.2''': ''The "Clustering? Who needs it?" release.'' | * '''1.2''': ''The "Clustering? Who needs it?" release.'' | ||
** '''Release: 2009-10-17''' | ** '''Release: 2009-10-17''' | ||
− | ** '''Rating: ?''' | + | ** '''Rating: {{RumbleStatsDefault|link=http://darkcanuck.net/rumble/RatingsDetails?game=roborumble&name=ar.horizon.Horizon+1.2|rumble=RoboRumble|scorelabel=APS|score=79.77|rank=36th|win=683|loss=56|plrank=54th|glicko2=2030.8|score2label=Survival|score2=86.37}}''' |
** Testing a different way of creating GF arrays from scan data that doesn't actually use clustering at all. It seems to skip more turns, but this is very inconsistent. | ** Testing a different way of creating GF arrays from scan data that doesn't actually use clustering at all. It seems to skip more turns, but this is very inconsistent. | ||
** Cached GuessFactor arrays in the movement are recalculated when a bullet-hit or bullet-hit-bullet event occurs. | ** Cached GuessFactor arrays in the movement are recalculated when a bullet-hit or bullet-hit-bullet event occurs. |
Latest revision as of 06:07, 26 October 2009
- 1.2.2: The "Insert pithy comment here" release.
- Release: 2009-10-26
- Rating: ?
- The flattener is enabled if, at the beginning of a round, the enemy has fired at least 200 bullets and their hitrate is at least 9%.
- This still isn't an ideal heuristic, because it has negative feedback: the more having the flattener enabled helps, the less likely it is to stay on.
- 1.2.1a: The "For science!" release.
- Release: 2009-10-24
- Rating: RoboRumble ‒ APS: 82.51% (15th), PL: 711-29 (25th), Survival: 89.9%
- The last release went slightly down in rating (relative to 1.1.3), but I think that's just because the flattener was turning on at the wrong times. This is a control release, identical to the last version except with the flattener set to never enable, to baseline my future experiments.
- This release still includes all of the various bugfixes, tweaks, and possibly-breaking refactorings from the previous versions. If this version performs significantly worse than 1.1.3, then I have a problem...
- 1.2.1: The "Smooooooth" release.
- Release: 2009-10-24
- Rating: RoboRumble ‒ APS: 82.13% (17th), PL: 717-22 (19th), Survival: 89.66%
- Reverting the clustering changes from 1.2 but keeping the caching fix.
- Testing a flattener.
- In the GF array calculation, non-hit waves are weighted a fixed 30% as much as hit waves.
- The flattener is toggled if the robot dies in round 4 or later. (This overly-simple heuristic will probably be replaced in the next version.)
- If the flattener is enabled, the movement also weights GFs on inverse time-since-recording.
- Bugfix: GF arrays are now normalized, so that individual weighting of recordings doesn't affect the total weighting in the danger calculations.
- Random note: over 10,000 bytes for the first time. This, of course, means absolutely nothing.
- 1.2: The "Clustering? Who needs it?" release.
- Release: 2009-10-17
- Rating: RoboRumble ‒ APS: 79.77% (36th), PL: 683-56 (54th), Survival: 86.37%
- Testing a different way of creating GF arrays from scan data that doesn't actually use clustering at all. It seems to skip more turns, but this is very inconsistent.
- Cached GuessFactor arrays in the movement are recalculated when a bullet-hit or bullet-hit-bullet event occurs.
- Note: Despite what the console output says, this release still does not include a flattener. That's for the next version.
- 1.1.3: The "Finally" release.
- Release: 2009-10-13
- Rating: RoboRumble ‒ APS: 82.34% (15th), PL: 720-19 (16th), Survival: 89.7%
- Replacing the "bullet non-dimension" Performance Enhancing Bug from 1.1.2b with a bullet-fired weighting in the GF array construction.
- Fixed a long-standing bug that prevented the bot from firing at exactly GF +1.0 or -1.0.
- Fixed another long-standing bug in which, in certain cases, Horizon would think that its own bullets hitting the enemy was the enemy firing.
- 1.1.2b: The "Moth necromancy" release.
- Release: 2009-10-12
- Rating: RoboRumble ‒ APS: 82.07% (17th), PL: 707-31 (27th), Survival: 89.55%
- Removing the time-dimension bug, one of the two reintroduced in 1.1.2a. This will tell me which of the bugs was improving performance.
- 1.1.1x: The "GAAAAAAAHHH" release.
- Release: 2009-10-11
- Rating: RoboRumble ‒ APS: 81.89% (19th), PL: 705-34 (35th), Survival: 89.31%
- This is a rerelease of 1.1.1b under a different name, to validate the score.
- This is most likely the final release that will have multiple versions entered in parallel in the Rumble.
- 1.1.2a: The "Undead moths" release.
- Release: 2009-10-09
- Rating: RoboRumble ‒ APS: 81.99% (18th), PL: 708-32 (30th), Survival: 89.43%
- This version is a branch from 1.1.2. I have some new modifications in the Horizon trunk that would almost certainly enhance performance (e.g. more accurate wave detection), but I want to release this version without confounding variables.
- 1.1.2a includes some clustering-weight-related bugs--possibly of the performance-enhancing variety--that were removed in 1.1.2. These were the only non-refactoring changes that I could find in that version, so in theory this version should perform exactly like 1.1.1b. We'll see...
- This version replaces 1.1.2 and is being entered side-by-side with 1.1.1b.
- 1.1.2: The "Ooh, look at the pretty code" release.
- Release: 2009-09-09 (how repetitive)
- Rating: RoboRumble ‒ APS: 81.82% (21st), PL: 717-28 (25th), Survival: 89.15%
- Revert to 1.1.1b.
- Major refactoring of the stat buffer code; rereleasing to make sure I didn't break anything too badly.
- I'm now using SVN for all my bot development, which I should have been doing a long time ago.
- This version replaces 1.1.1c and is being entered side-by-side with 1.1.1b.
- 1.1.1c:
- Release: 2009-08-19
- Rating: RoboRumble ‒ APS: 81.48% (24th), PL: 703-36 (31st), Survival: 88.97%
- Version 1.1.1c keeps the changes in 1.1.1b and re-adds the time clustering dimension for the movement and gun.
- This version replaces 1.1.1a and is being entered side-by-side with 1.1.1b.
- 1.1.1b:
- Release: 2009-08-19
- Rating: RoboRumble - APS: 82.66% (16th), PL: 712-25 (21st), Glicko-2: 2083.2, Survival: 90.25%
- Version 1.1.1b re-adds the firepower, wall distance backward, and wave weighting changes, which I perceive to be "safe".
- It is being entered into the rumble side-by-side with 1.1.1a, so that I don't lose the rankings from that version if this version turns out to decrease its performance.
- This version took a while to release because the Repository was broken, as usual.
- 1.1.1a: The "Golden rule of testing" release.
- Release: 2009-08-17
- Rating: RoboRumble - APS: 82.27% (19th), PL: 704-33 (32nd), Glicko-2: 2075.1, Survival: 90.4%
- I made too many changes at once in 1.1.1, and apparently broke something. I'm rolling back all the non-optimization changes, and will be reintroducing them incrementally.
- Version 1.1.1a contains only Krabb's optimization and the GF array caching.
- 1.1.1: The "Optimization" release.
- Release: 2009-08-17
- Rating: 80.41 APS (33rd), 2039.5 Glicko-2, 1404 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.
- 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