Neuromancer/Version History

From Robowiki
< Neuromancer
Revision as of 11:56, 17 December 2015 by Skilgannon (talk | contribs) (4.9)
Jump to navigation Jump to search


  • 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.