Neuromancer/Version History

From Robowiki
< Neuromancer
Revision as of 12:13, 3 October 2018 by Skilgannon (talk | contribs) (7.2)
Jump to navigation Jump to search


  • Increase surfing bins from 360 to 720
  • Fix bug that always gave an extra bullet bonus to enemy energy in onBulletHitBullet/onHitByBullet
  • Fix bug that only did enemy bullet power predictions training from 3rd person bullet hits. Now also do 1st person bullet hits for training.

7.1 APS: 72.11 Survival: 75.66 PL: 2 losses

  • 1v1: APS: 85.77 Survival: 93.38 PL: 27 losses
  • Sample movement pattern at multiple distances
  • Slow down even more around corners

7.0 APS: 72.4 Survival: 79.3 PL: 0 losses

  • 1v1: APS: 86.79 Survival: 93.99 PL: 18 losses
  • Slow down around corners

6.9 APS: 72.39 Survival: 77.25 PL: 1 losses

  • 1v1: APS: 86.76 Survival: 93.92 PL: 20 losses
  • Aim at middle of peak, instead of halfway between the anticlockwise side of the peak and what the first bin with that maximum was.

6.8 APS: 72.12 Survival: 76.39 PL: 0 losses

  • 1v1: APS: 86.77 Survival: 93.99 PL: 20 losses
  • Enforce a minimum wall stick of 121 even when enemy is close

6.7 APS: 72.27 Survival: 77.65 PL: 0 losses

  • 1v1: APS: 86.62 Survival: 93.94 PL: 19 losses
  • 6.6 uncovered that a small part of the precise prediction was using fixed field size. The refactoring caused it to completely break outside the 800x600 area, instead of just have inaccurate surfing (which 6.5 and earlier had).
  • Cleaned up / deleted lots of code that recent refactoring has let me lose dependency on

6.6 - buggy in melee, something like ~68%

  • Don't get stuck against walls when there are no waves to surf
  • Some refactoring to support PredictionPaths instead of just endpoints - debugging graphics are way cooler now!

6.5 APS: 71.73 Survival: 72.71 PL: 2 losses

  • 1v1: APS: 86.47 Survival: 93.74 PL: 25 losses
  • Add bullet shadows, which supplement bot shadows in melee

6.4 APS: 71.73 Survival: 73.29 PL: 1 losses

  • 1v1: APS: 86.16 Survival: 93.26 PL: 33 losses
  • Back to 6.1
  • Gun kernel from 6.2
  • A bit of refactoring - this is more a sanity release to make sure nothing is broken

6.3 APS: 71.61 Survival: 75.24 PL: 1 losses

  • Back to 5.8
  • Lots of successful components from 5.9 to 6.2, with a few bugs fixed
    • Fix enemy wave center
    • Drastically reduce garbage creation in gun, avoiding the potential bug in 5.8c
    • Scan weighting in both gun and melee that doesn't get really large when distance is 0
    • Time-consistent weighting of enemy waves

6.2 APS: 71.19 Survival: 73.84 PL: 2 losses

  • 1v1: APS: 86.24 Survival: 93.25 PL: 26 losses
  • Back to 5.8
  • Apply some of the lessons since 5.8 - fix firelocation, reduce garbage creation
  • Change the scan weighting in the gun kernel
  • Fire 2 power bullets in 1v1, instead of scaling with distance
  • If we shoot at a cluster with 80+% of a single bot's scans overlapping, increase the bullet power (still needs tuning)

6.1 APS: 71.76 Survival: 74.21 PL: 2 losses

  • 1v1: APS: 86.26 Survival: 93.18 PL: 28 losses
  • Tune movement KNN kernel
  • Tune weighting of enemy vs waves danger
  • Tune enemy danger calculation
  • Tune wave weight calculation
  • Disable gunheat waves in melee

6.0 APS: 71.15 Survival: 69.05 PL: 3 losses

  • 1v1: APS: 86.36 Survival: 93.16 PL: 30 losses
  • Put back the performance enhancing bug which make it stay still less in melee - need a better way to incorporate this, maybe in the danger function
  • Don't try to reduce bullet power if the enemy energy is too much higher than ours

5.9 APS: 71.35 Survival: 72.56 PL: 2 losses

  • 1v1: APS: 86.28 Survival: 93.49 PL: 34 losses
  • Fix time with firelocation of enemy waves
  • Add gunheat waves (so not just missing waves in melee, but also faster reactions in 1v1)
  • Change weights in movement attributes to better dodge simple guns
  • Remove a performance enhancing bug that the gunheat waves should make redundant

5.8 APS: 71.82 Survival: 75.43 PL: 0 losses

  • 1v1: APS: 85.75 Survival: 94.22 PL: 36 losses
  • Less aggressive bullet power reduction, and only in 1v1 (to get that survival bonus)
  • Drastically reduce memory consumption by clearing cached KNN results once they are no longer useful

5.7 - big drop (~2APS), removed early

  • Predict enemy bullet power in order to maintain an energy advantage and get better survival - not sure how bad the bullet damage reduction will be though
    • It turns out that bullet damage is still important =)

5.6 APS: 71.67 Survival: 67.47 PL: 2 losses

  • Back to 5.4b
  • Fix a bug with enemy gunheat tracking when there were missed scans (ie. melee)

5.5 APS: 71.42 Survival: 69.64 PL: 1 losses

  • 1v1: APS: 86.11 Survival: 92.69 PL: 30 losses
  • Add multiple tree views to surfing to try to get more diverse data (from a non-concave search space)

5.4b APS: 71.67 Survival: 71.27 PL: 2 losses

  • 1v1: APS: 86.23 Survival: 92.68 PL: 29 losses
  • Better attempts at tuning gun and movement attributes for both 1v1 and melee
  • b: Add 1uS wait each turn to avoid the ThreadDeath when running at max with the window not minimized


  • 1v1: APS: 85.51 Survival: 92.11 PL: 26 losses
  • Re-tune and tweak the gun parameters for stronger 1v1 and melee performance
    • Well, that didn't work, worse results in 1v1

5.2.1 APS: 71.42 Survival: 67.61 PL: 1 losses

  • Increase the number of sampled points back to 32

5.2 - about 0.5% lower

  • Fix bad string comparison (== instead of .equals) in enemy wave creation
  • Reduce number of sampled points from 32 to 16 - whoops

5.1 APS: 71.42 Survival: 69.8 PL: 1 losses

  • Fix off-by-1 bug for enemy data collection in surfing
  • Add time based attributes to surfing - accel and time-last-10
  • Correctly interpolate firelocations

5.0 APS: 71.33 Survival: 69.78 PL: 2 losses

  • Fix minor bug where I wasn't raising bullet power for rambots
  • Rework movement stats and data collection to do post-wave-fire interpolation on all of the enemy location/velocity/headings so that I have a better idea of what they are targeting, so I know where and how they will shoot better. This shouldn't change 1v1 score at all, but rather bring melee surfing one step closer to 1v1 surfing in terms of the accuracy of the data being used.

4.9 APS: 71.27 Survival: 67.29 PL: 2 losses

  • Tweak gun attributes, and re-add the time-since-direction-change
  • Fix movement attribute bug, where latVel attribute was signed

4.8 APS: 71.11 Survival: 68.48 PL: 2 losses

  • Be less strict with gunheat tracking when wall-hits are possible

4.7 APS: 71.12 Survival: 68.55 PL: 2 losses

  • Getting up to speed on code again after a hiatus, and found some bugs:
    • using == instead of .equals in enemy name comparison - might not be an issue, but why risk it?
    • never weighting perpendicular movement unless moving towards the enemy, and end up closer than the closest. Should be perpendicular if approaching targetability - so within 30% of closest enemy.

4.6 APS: 70.26 Survival: 69.79 PL: 2 losses - considerable drift since release!

  • Use some of the tunings from 4.2 to boost melee performance while keeping 4.3 execution speed and bugfixes

4.5 (unreleased)

  • Some gun-tuning experiments - no real improvements

4.4 APS: 69.76 Survival: 69.32 PL: 2 losses

  • Fix hit-wall behaviour in the wavesurfing simulator

4.3 APS: 69.37 Survival: 69.89 PL: 2 losses

  • Speed up surfing when there are lots of waves by pre-calculating the precise-prediction paths and then re-using them for each wave.
  • Fix a gunheat tracking bug which would sometimes cause the first enemy wave to be missed.
  • Roborumble scores: APS: 83.77 Survival: 90.1 PL: 42 losses

4.2 APS: 69.79 Survival: 74.68 PL: 1 losses

  • Speed up the gun PIF even more (it is already the translated PIF) by using a single array to hold each round's worth of x,y,t data. This should improve cache-locality of PIF data. Now to speed up surfing...
  • Roborumble scores: APS: 83.25 Survival: 89.83 PL: 43 losses

4.1 APS: 69.75 Survival: 74.53 PL: 0 losses

  • Fix a bullet power rolloff-as-energy-gets-low bug in 4.0 - the rambot settings and regular settings were reversed.
  • Roborumble scores: APS: 83.36 Survival: 89.9 PL: 40 losses

4.0 APS: 69.52 Survival: 65.88 PL: 2 losses

  • Add 'relative to nearest enemy' symmetry to the PIF - this should make it equivalent to GF in 1v1, and help melee as well. The assumption is that enemies move relative to their nearest enemy. If the lateral velocity of the situation is opposite to that of the historical PIF data, the advancing/retreating data is reversed (well, a very complex equivalent for fast-PIF) so that when they moved towards their enemy in the history it corresponds with moving towards the enemy in the PIF as well.

3.9 APS: 69.53 Survival: 73.64 PL: 0 losses

  • Give everybody a GF0 seed shot (weighted very low)

3.8.7 APS: 69.61 Survival: 73.02 PL: 1 losses

  • Back to 3.8.4, but incorporate changes from 3.8.6

3.8.6 APS: 69.47 Survival: 72.37 PL: 2 losses

  • Make distance 100 have a probability of 1, not the closest enemy
  • Fix a bug which would throw exceptions at the end of battles.

3.8.5 APS: 69.34 Survival: 71.82 PL: 2 losses

  • Use proper logic in the gun to account for the chance that if the closer enemy is hit by the bullet, the further one can't be hit because the bullet will be gone.

3.8.4 APS: 69.54 Survival: 72.8 PL: 1 losses

  • Accidentally removed the weight-by-distance in 3.8.3... add that back. Although it isn't quite as statistically 'pure' now

3.8.3 APS: 69.21 Survival: 70.89 PL: 2 losses

  • Use proper OR logic for weighting enemies in the target-everybody gun. (Although it could also account for the order in which enemies would be hit by the bullet... but that is a lot more work and O(n^2) runtime)
  • Add back the optimisations, but make them conservative enough that they couldn't affect the score at all.

3.8.2 APS: 69.65 Survival: 72.29 PL: 2 losses

  • Disable optimisations

3.8.1 APS: 69.53 Survival: 71.69 PL: 1 losses

  • Don't be quite as aggressive with those logging optimisations
  • Don't surf waves that have no hits within my MEA

3.8 APS: 69.6 Survival: 71.81 PL: 1 losses

  • Back to 3.6
  • Some major surfing speed optimisations: only log hits to bins that are within my MEA.
    • Next step is to only surf waves that have hits logged within 1 MEA, and ignore all others.

3.7 APS: 69.71 Survival: 72.71 PL: 1 losses

  • Check rebuild path for out-of-bounds using my RotatedRect class

3.6 APS: 69.82 Survival: 73.08 PL: 1 losses APS: 0.3% above 3.4

  • Back to 3.4
  • Slightly higher bullet power

3.5 APS: 71.2 Survival: 95.66 PL: 2 losses

  • Improve the targeting missed scan interpolation to use heading/velocity info and predict with that, then correct the error with regular x/y interpolation

3.4 APS: 71.84 Survival: 96.35 PL: 1 losses

  • Higher bullet power for distance

3.3 APS: 70.86 Survival: 97.48 PL: 1 losses

  • Back to 3.1
  • Keep track of which bots' predictions I am aiming for and adjust my bullet power for their energy and distance. Previously I was doing this for all bots in a range of GF+-1 from where my gun was aimed.
  • More conservative bullet power. Going for that survival score.

3.2 APS: 70.14 Survival: 96.02 PL: 2 losses

  • Target those who have energy and who inflict damage. This is a survivalist and hoarding strategy, so that hopefully only weak bots will be left behind for me to mop up.

3.1 APS: 71.22 Survival: 96.09 PL: 1 losses

  • Take into account if I will be closest in minimum risk

3.0 APS: 71.22 Survival: 96.08 PL: 1 losses

  • Back to 2.8
  • Better fireLocation and fireTime interpolation
  • Recalculate wave dangers when new hit data is available
  • Separate out positional danger elements from surfing danger, and weight the positional danger higher to compensate
  • Roborumble scores: APS: 83.1 Survival: 90.6 PL: 41 losses

2.9 APS: 71.19 Survival: 95.83 PL: 2 losses

  • Keep track of how much bullet damage each enemy gives and add this to their energy in minimum-risk danger
  • Weight positioning higher in minimum-risk, now 1/3 of surfing weight instead of 1/5

2.8 APS: 71.33 Survival: 95.89 PL: 1 losses

  • Try to do the same number of PIFs for everybody by getting a cluster double the size of what I need, then predicting until I either exhaust the cluster or have built clusterSize/2 PIFs. (Note: PIFs are excluded based on out-of-bounds as well as end-of-round, this was built into the original gun)

2.7 APS: 70.97 Survival: 95.8 PL: 2 losses

  • Don't fire enemy waves at the beginning before gunheat is 0

2.6 APS: 70.95 Survival: 95.77 PL: 2 losses

  • New and better "when to fire" decision: take into account predicted hits at the angle the gun is currently pointed, less conservative than 2.5,2.4
  • 1v1: APS: 82.7 Survival: 89.82 PL: 46 losses

2.5 APS: 70.79 Survival: 95.96 PL: 2 losses

  • Back to 2.3
  • Aim from next location
  • Allow bullet power to go up to 2.95 (instead of 2.45)
  • Use point-to-point distance for weighting non-wave movement options, instead of point-line. (Still use point-line in the decision for the closest bot)
    • Whoops: accidentally included experimental, very conservative "when to fire" code

2.4 APS: 70.73 Survival: 96 PL: 1 losses

  • Aim from next location
  • Put a tiny peak at the centre of uniform kernel
  • Allow bullet power to go up to 2.95 (instead of 2.45)
  • Make movement test points rotate with heading
    • Whoops: accidentally included experimental, very conservative "when to fire" code

2.3 APS: 70.79 Survival: 95.61 PL: 2 losses

  • Weight targets by 1/startDistance instead of 1/startDistance^2

2.2 APS: 70.34 Survival: 95.24 PL: 2 losses

  • Back to 2.0
  • Negate the differences between bots caused by different inverse-dist-to-kd-tree points

2.1 APS: 70.24 Survival: 95.35 PL: 2 losses

  • Better wall segmentation, hopefully

2.0 APS: 70.35 Survival: 95.21 PL: 2 losses

  • Whoops - I was waiting for gun to align to previous tick's aim. Now fire as soon as I have no gun turn remaining from last tick.

1.9 APS: 70.35 Survival: 95.5 PL: 2 losses

  • Back to 1.5
  • Fix bug in gun - int/int rounding to zero always in my enemiesAlive attribute
  • Fix bullet power not going all the way to 0 bug (fixed in 1.7)
  • Fix bug in movement - check for 'nearest to enemy' wasn't excluding that bot, so 0 was always closest distance

1.8 APS: 70.15 Survival: 95.06 PL: 2 losses

  • In gun, weight hits by time-to-hit instead of hit-distance (this way accounts for gun turn, gun cooldown etc in weight, not just position)
  • In movement weight closer waves higher
  • Use 16 move test points instead of previous 32

1.7 APS: 70.21 Survival: 95.26 PL: 2 losses

  • Back to 1.5 (1.6 is too slow, promising but not feasible in computationally limited environment)
  • Improved wave danger function - don't take positioning into account in wave danger, and weight separate positioning danger higher
  • Let my bullet power go right down to 0.1 - it was being stopped at a min of 0.45 before...

1.6 APS: 69.06 Survival: 93.51 PL: 4 losses

  • Use a random movement path generator, rate them and follow the best
  • Weight them based on where I will be when the enemy fires and when all waves hit

1.5 APS: 70.27 Survival: 95.3 PL: 2 losses

  • 1.4 mixed up my 'last location' which is used to get the surfing details right, so fix that

1.4 APS: 70.18 Survival: 95.25 PL: 2 losses

  • Update my location/info in onScannedRobot as well so that when I project the enemy location it is accurate

1.3 APS: 70.25 Survival: 95.28 PL: 2 losses

  • Use enemy gunheat to position the firetime of enemy waves (in time, not space), before I was just using gunheat as a filter

1.2 APS: 70.19 Survival: 95.28 PL: 2 losses

  • Fix a bug in onBulletHitBullet, where it used my bullet instead of theirs (and subsequently couldn't find the wave and didn't log anything)
  • Fix a bug which manifested after the above fix, I was using my location instead of the bullet location for the GF angle

1.1 APS: 70.13 Survival: 95.04 PL: 2 losses

1.0APS: 69.88 Survival: 94.89 PL: 2 losses

  • Fix a gun bug that would make me shoot HOT if time-since-scan > BFT. Remember, if your wave radius can be negative, don't compare squared distances!!!

0.9 APS: 70 Survival: 95.11 PL: 3 losses

  • Don't log enemy waves if the bot is further than 1.5*closest at time of fire
  • Add distance-from-corner to enemy guns in movement

0.8 APS: 69.56 Survival: 94.78 PL: 4 losses

  • Use the endpoints of the precise prediction from the surfing as the minimum-risk evaluation points, instead of the target points

0.7 APS: 70.06 Survival: 95.18 PL: 2 losses

  • Add 'distance from corner' to gun attributes
  • Make base bullet power higher - hopefully trade some survival for APS

0.6 APS: 69.57 Survival: 94.99 PL: 3 losses

  • Adjust bullet power based on what bots are in GF +-1 from the current gun position - bullet power is now more aggressive.
  • Account for the extra delay from needing to let the gun cool when doing PIF

0.5 APS: 69.14 Survival: 94.74 PL: 4 losses

  • 0.4 with some exception caught. Also logging all exceptions to file now.
  • Aim at the centre of peaks - a second attempt (this time with rounding)

0.4 APS: 67.87 Survival: 93.17 PL: 13 losses

  • Revert the movement changes - back to one thing at a time it seems =\
  • Only add data to the gun Kd-Tree if it is likely that it will be useful to the targeting - ie. delay it until waves would hit, or bot dies and the bullet has travelled above some threshold distance. This is to eliminate false starts on the PIF and give me more targeting solutions sooner.

0.3 - APS: 69.07 Survival: 94.76 PL: 4 losses

  • Cut off some of the uncertainty in where/when they fired by taking into account when their gunheat would have become 0.
  • Shoot at the centre of any peaks in the VCS bins, instead of the first edge

0.2 - APS: 69.38 Survival: 95.05 PL: 4 losses

  • Better enemy energy tracking, fixed some energy bonus bugs
  • Try to take into account being hit once and firing a bullet between consecutive scans
  • Track enemy gunheat to prevent nonexistant waves being fired
  • Aim bullets at more than just the nearest target (weighted by inverse squared distance)
  • Increase gun bins from 360 to 1024

0.1 - APS: 67.71 Survival: 93.49 PL: 6 losses

  • Initial release - firepower needs a lot of work, as well as move/gun attributes and enemy energy tracking.