Difference between revisions of "Medina/VersionHistory"

From Robowiki
Jump to navigation Jump to search
 
(64 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
'''{{subst:rumblestats:meleerumble|rsalesc.melee.Medina 0.1}}'''
 
'''{{subst:rumblestats:meleerumble|rsalesc.melee.Medina 0.1}}'''
 
-->
 
-->
== Planned series/releases ==
+
== Planned series ==
  
; any future release - ???
+
; any future release
 
* Try incorporating [[Knight]] 1v1 movement into it to test if it is better.
 
* Try incorporating [[Knight]] 1v1 movement into it to test if it is better.
 +
* Try incorporating [[Knight]] 1v1 guns into it.
  
; 1.2 series - ???
+
; 2.0 series
* Branching (?)
+
* Surf disks instead of circles.
 +
 
 +
; 1.3 series
 +
* Try a hybrid between melee surfing movement and 1v1 surfing so the data acquired during melee is used as a strong fallback.
 +
 
 +
; 1.2 series
 +
* Maybe use it as my random gun in 1v1 + the adaptive gun.
  
; 1.1 series - ???
+
; 1.1 series
 
* Enable bullet shadow.
 
* Enable bullet shadow.
 
* Add bot shadow.
 
* Add bot shadow.
  
; 1.0 series - ???
+
; 1.0 series
 
* Re-weight MR/WS.
 
* Re-weight MR/WS.
* Tweak surfing view weightings.
+
* Try programmatic parameter tuning.
  
; 0.5 series - ???
+
; 0.6 series
 
* Add a fallback movement to avoid being cornered and to be in a good position to surf at round beginning.
 
* Add a fallback movement to avoid being cornered and to be in a good position to surf at round beginning.
 +
* Add fallback stats (HOT and LT).
 +
* Do a round of optimizations to turn it into a faster bot.
 +
* Improve bot-width intersection.
  
; 0.4 series - ???
+
; 0.5 series
* Surf disks instead of circles.
+
* Tune surfing parameters.
* Improve bot-width intersection.
+
* Tweak "probability of being shot" thing.
 +
 
 +
; 0.4 series
 +
* Tune gun parameters.
 +
* Optimize gun.
  
; 0.3 series - ???
+
; 0.3 series
 
* When a fire event occurs, examine carefully which enemy could be the target (possibly a probability distribution estimation).
 
* When a fire event occurs, examine carefully which enemy could be the target (possibly a probability distribution estimation).
 
* When a hit event occurs, examine carefully which enemy could be the target using the previous calculated probabilities.
 
* When a hit event occurs, examine carefully which enemy could be the target using the previous calculated probabilities.
 
* Handle bullet-hit-bullet event.
 
* Handle bullet-hit-bullet event.
  
; 0.2 series - ???
+
; 0.2 series
 
* Tweak MEA and bandwidth?
 
* Tweak MEA and bandwidth?
 
* Improve fire-and-hit detection and use enemy interpolation everywhere (apply hard OOP here).
 
* Improve fire-and-hit detection and use enemy interpolation everywhere (apply hard OOP here).
  
 
== Latest releases ==
 
== Latest releases ==
 +
 +
; 0.4.6
 +
* Delegate gun painting to PIF gun instead of Swarm Gun. This implies adding a listener for PIF gun.
 +
* Eliminate absurd angles like those which falls off enemy's max escape angle.
 +
 +
; 0.4.5 - 10.26.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.4.5|rumble=MeleeRumble|scorelabel=APS|score=68.81|rank=8th|win=395|loss=5|plrank=6th|glicko2=N/A|pwin=98.75|vote=0|anpp=0|score2label=Survival|score2=59.09}}'''
 +
* Add lazy gauss weighting to the scans instead of 1.0 / sqrt(distance).
 +
* Add virtuality as a gun parameter.
 +
* Increase gun K to 32.
 +
 +
; 0.4.4 - 10.26.2017
 +
* Add iterator to KdTree so I really get K closest scans (considering that I may have discarded some bad scans).
 +
* Change scan weighter to 1.0 / sqrt(distance).
 +
 +
; 0.4.3 - 10.26.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.4.3|rumble=MeleeRumble|scorelabel=APS|score=68.72|rank=8th|win=394|loss=6|plrank=7th|glicko2=N/A|pwin=98.5|vote=3.25|anpp=93.46|score2label=Survival|score2=58.59}}'''
 +
* Fix movie creation bug in 0.4.2.
 +
 +
; 0.4.2 - 10.24.2017
 +
* '''buggy release'''
 +
* Set max K for an enemy to 16.
 +
* Make it 10-dimensional with a bunch of new hand-weighted parameters.
 +
* Change the way I create the movies: before I created a movie only when it had at least 100 ticks. Now I create it when it have 20 ticks and I extend it until it have 100. Now I have to handle the case that there may be movies which, when played, are not enough for the bullet to get to the enemy. In that case I should implement an iterator for my kd-tree to get scans until I have K good movies, but it's not done yet.
 +
 +
; 0.4.1 - 10.24.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.4.1|rumble=MeleeRumble|scorelabel=APS|score=67.82|rank=10th|win=391|loss=9|plrank=9th|glicko2=N/A|pwin=97.75|vote=0|anpp=0|score2label=Survival|score2=53.58}}'''
 +
* Go back to using no enemy interpolation everywhere in TargetingLog.
 +
* Really small changes in SwarmGun.
 +
* More parameter tweaking in gun strategy.
 +
 +
; 0.4.0 - 10.23.2017
 +
* Binary search bullet-enemy intersection (processing time optimization).
 +
* Use enemy interpolation (really now) everywhere in TargetingLog.
 +
* Compute new TargetingLog attributes which are important in melee and do some refactor around there.
 +
* Start experimenting with simple 5-dimensional gun strategy.
 +
 +
; 0.3.10 - 10.24.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.10|rumble=MeleeRumble|scorelabel=APS|score=68.34|rank=9th|win=392|loss=8|plrank=9th|glicko2=N/A|pwin=98|vote=2.25|anpp=92.61|score2label=Survival|score2=55.98}}'''
 +
* Fix a bug where correct enemy wave source would not be used.
 +
 +
; 0.3.9 - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.9|rumble=MeleeRumble|scorelabel=APS|score=68.04|rank=9th|win=387|loss=6|plrank=12th|glicko2=N/A|pwin=98.47|vote=4.69|anpp=92.02|score2label=Survival|score2=55.45}}'''
 +
** Go back to SimpleTargetGuesser.
 +
 +
; 0.3.8b - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.8b|rumble=MeleeRumble|scorelabel=APS|score=68.01|rank=9th|win=391|loss=9|plrank=10th|glicko2=N/A|pwin=97.75|vote=0|anpp=0|score2label=Survival|score2=57.11}}'''
 +
** Fix enemy hit interpolation condition.
 +
 +
; 0.3.8 - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.8|rumble=MeleeRumble|scorelabel=APS|score=68.04|rank=9th|win=391|loss=9|plrank=9th|glicko2=N/A|pwin=97.75|vote=0|anpp=0|score2label=Survival|score2=56.5}}'''
 +
** Rollback stick length
 +
** Interpolate enemy hit position.
 +
 +
; 0.3.7 - 10.23.2017
 +
* '''skipped'''
 +
** Try larger stick.
 +
 +
; 0.3.6 - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.6|rumble=MeleeRumble|scorelabel=APS|score=68.27|rank=9th|win=386|loss=10|plrank=13th|glicko2=N/A|pwin=97.47|vote=0|anpp=0|score2label=Survival|score2=56.22}}'''
 +
** Use HitTargetGuesser (old behavior, logs only enemy hits).
 +
 +
; 0.3.5 - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.5|rumble=MeleeRumble|scorelabel=APS|score=68.01|rank=10th|win=392|loss=8|plrank=9th|glicko2=N/A|pwin=98|vote=0|anpp=0|score2label=Survival|score2=53.81}}'''
 +
** Increase "probability of being targeted" weight.
 +
 +
; 0.3.4c - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.4c|rumble=MeleeRumble|scorelabel=APS|score=67.88|rank=10th|win=391|loss=9|plrank=10th|glicko2=N/A|pwin=97.75|vote=0.75|anpp=91.81|score2label=Survival|score2=54.64}}'''
 +
** Decrease distance-offset bandwidth in SimpleTargetGuesser.
 +
 +
; 0.3.4b - 10.23.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.4b|rumble=MeleeRumble|scorelabel=APS|score=67.86|rank=10th|win=391|loss=9|plrank=10th|glicko2=N/A|pwin=97.75|vote=2.75|anpp=91.49|score2label=Survival|score2=52.63}}'''
 +
** Try sum-normalized.
 +
 +
; 0.3.4 - 10.22.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.4|rumble=MeleeRumble|scorelabel=APS|score=67.71|rank=10th|win=389|loss=10|plrank=10th|glicko2=N/A|pwin=97.49|vote=0|anpp=0|score2label=Survival|score2=53.4}}'''
 +
** Make target-selection probability max-normalized instead of sum-normalized.
 +
** Add "probability/degree of truth of being targeted" parameter to the view instead of weighting the scans.
 +
** Filter waves which have hits.
 +
 +
; 0.3.3 - 10.22.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.3|rumble=MeleeRumble|scorelabel=APS|score=67.4|rank=10th|win=392|loss=8|plrank=9th|glicko2=N/A|pwin=98|vote=1.25|anpp=90.79|score2label=Survival|score2=52.21}}'''
 +
** Fix condition bug in cross-hit check.
 +
** No p threshold.
 +
** Make surfing K = 5, ratio = 0.5.
 +
 +
; 0.3.2 - 10.22.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3.2|rumble=MeleeRumble|scorelabel=APS|score=67.42|rank=10th|win=225|loss=8|plrank=177th|glicko2=N/A|pwin=96.57|vote=0|anpp=0|score2label=Survival|score2=55.39}}'''
 +
** Use old weights.
 +
 +
; 0.3.1 - 10.22.2017
 +
* '''skipped'''
 +
** Sanity check.
 +
 +
; 0.3f - 10.20.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3f|rumble=MeleeRumble|scorelabel=APS|score=67.98|rank=10th|win=392|loss=8|plrank=8th|glicko2=N/A|pwin=98|vote=1|anpp=91.26|score2label=Survival|score2=53.34}}'''
 +
** Compute TargetingLog for every possible target.
 +
 +
; 0.3e - 10.20.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3e|rumble=MeleeRumble|scorelabel=APS|score=68|rank=10th|win=392|loss=8|plrank=9th|glicko2=N/A|pwin=98|vote=1.25|anpp=92.32|score2label=Survival|score2=52.62}}'''
 +
** Get enemy position at the time the enemy was shot (instead of at the time the hit occurred) when evaluating the probability of a robot being targeted.
 +
 +
; 0.3d - 10.20.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3d|rumble=MeleeRumble|scorelabel=APS|score=68.44|rank=7th|win=390|loss=10|plrank=9th|glicko2=N/A|pwin=97.5|vote=5|anpp=92.87|score2label=Survival|score2=54.75}}'''
 +
** Try traditional MEA everywhere.
 +
** Make melee surfing cluster size = 10 and ratio = 1.0.
 +
** Weight scans only according to distance to targeter and double-weight this instead of triple-weighting.
 +
 +
; 0.3c - 10.20.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3c|rumble=MeleeRumble|scorelabel=APS|score=68.7|rank=8th|win=391|loss=9|plrank=10th|glicko2=N/A|pwin=97.75|vote=0|anpp=0|score2label=Survival|score2=54.88}}'''
 +
** Fix KnnMeleeSurfer weight normalization now that every scan is weighted.
 +
 +
; 0.3b - 10.20.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3b|rumble=MeleeRumble|scorelabel=APS|score=68.7|rank=8th|win=394|loss=6|plrank=7th|glicko2=N/A|pwin=98.5|vote=2|anpp=93.58|score2label=Survival|score2=56.21}}'''
 +
** Use weights instead of probability for possible targeted enemies when the enemy shoots. Probabilities normalize nicely, but my current logic didn't expect that. Maybe I'll rethink that in the future.
 +
 +
; 0.3 - 10.19.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.3|rumble=MeleeRumble|scorelabel=APS|score=68.7|rank=8th|win=393|loss=7|plrank=7th|glicko2=N/A|pwin=98.25|vote=0.25|anpp=93.22|score2label=Survival|score2=55.79}}'''
 +
** Build a simple probability distribution for possible targeted enemies when the enemy shoots.
 +
** Build a simple probability distribution for possible targeted enemies when the bullet hits someone/another bullet.
 +
** Succesfully handle bullet-hit-bullet event.
 +
 +
; 0.2.3d - 10.17.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.2.3d|rumble=MeleeRumble|scorelabel=APS|score=69.22|rank=7th|win=395|loss=5|plrank=5th|glicko2=N/A|pwin=98.75|vote=4|anpp=94.1|score2label=Survival|score2=58.32}}'''
 +
** Lost track of important changes of 0.2 while running a backup before changing computers. Incorporate them back, 0.2.1 to 0.2.3c didn't have these changes.
 +
 +
; 0.2.3c - 10.17.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.2.3c|rumble=MeleeRumble|scorelabel=APS|score=69.22|rank=7th|win=393|loss=7|plrank=7th|glicko2=N/A|pwin=98.25|vote=11.66|anpp=92.87|score2label=Survival|score2=58.88}}'''
 +
** Fix signal.
 +
 +
; 0.2.3b - 10.17.2017
 +
* '''skipped'''
 +
** Use some heuristic to estimate more precise MEA from current lateral velocity.
 +
 +
; 0.2.2 - 10.17.2017
 +
* '''skipped'''
 +
** Use 110% of common bot width. Maybe it helps to take into account imprecision in wave position.
 +
 +
; 0.2.1 - 10.17.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.2.1|rumble=MeleeRumble|scorelabel=APS|score=68.91|rank=8th|win=393|loss=6|plrank=6th|glicko2=N/A|pwin=98.5|vote=9.27|anpp=92.64|score2label=Survival|score2=55.7}}'''
 +
** Add 1v1 movement from [[Knight]], so the impact of melee surfing only affects melee.
 +
 +
; 0.2 - 10.13.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.2|rumble=MeleeRumble|scorelabel=APS|score=68.84|rank=8th|win=391|loss=8|plrank=9th|glicko2=N/A|pwin=97.99|vote=6.25|anpp=93.73|score2label=Survival|score2=56.14}}'''
 +
** Use a simpler interpolation for the enemies.
 +
** Use enemy interpolation everywhere (mainly in TargetingLog, which causes the biggest change).
 +
** Add error parameter to the fire events, such that the pair [time, time + error] indicates the ticks that this enemy could have fired assuming the heat tracker was correct.
 +
** Use EnemyLog interpolated position as firing position.
 +
** Improve fire-and-hit checking: before, hit + fire at the same tick would pass undetected. Now it works, but I'll apply other heuristics to catch K hits at the same tick (when gun is heated) with branch-and-bound.
 +
 +
; 0.1.1 - 10.12.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.1.1|rumble=MeleeRumble|scorelabel=APS|score=67.65|rank=10th|win=390|loss=10|plrank=10th|glicko2=N/A|pwin=97.5|vote=2|anpp=92.33|score2label=Survival|score2=56.71}}'''
 +
** A bunch of tiny improvements to reduce memory allocation, garbage collection and math calls. A lot of "constant" optimization in the branch() function.
 +
** Using now a less accurate iterative predictor to generate paths.
 +
** Fixed a bug where I would merge the stats for each enemy without weighting them. This should make a huge difference.
 +
** It is still skipping a lot of turns, but way less than before. Branching in the future seems even more impossible.
 +
** Removed every gun except the PIF gun to start scaling my APS from that.
 +
 +
; 0.1b - 10.11.2017
 +
* '''{{RumbleStatsDefault|link=http://literumble.appspot.com/BotDetails?game=meleerumble&name=rsalesc.melee.Medina%200.1b|rumble=MeleeRumble|scorelabel=APS|score=50.71|rank=207th|win=205|loss=195|plrank=196th|glicko2=N/A|pwin=51.25|vote=0|anpp=65.32|score2label=Survival|score2=23.54}}'''
 +
** Medina was not dealing well with skipped turns, and I didn't notice Medina was skipping turns because I was on an alternative computer with increased CPU constant.
  
 
; 0.1 - 10.11.2017
 
; 0.1 - 10.11.2017
* '''???'''
+
* '''skipped'''
 
** First release.
 
** First release.
 
** Very simple fire-and-hit detection, a lot of room to improve.
 
** Very simple fire-and-hit detection, a lot of room to improve.
Line 46: Line 221:
 
** Minimum risk component is based on [[Monk]]'s, but simpler: perpendicularity, distance and being one of the closest to an enemy are taken into account.
 
** Minimum risk component is based on [[Monk]]'s, but simpler: perpendicularity, distance and being one of the closest to an enemy are taken into account.
 
** Initial movement is too simple, it's getting constantly cornered (unfortunately, during the game as well, but this is a harder issue).
 
** Initial movement is too simple, it's getting constantly cornered (unfortunately, during the game as well, but this is a harder issue).
** Using traditional MEA everywhere, maybe since the movement in melee is really restricted, this can be improved.
+
** Using traditional MEA everywhere. Maybe, since the movement in melee is really restricted, this can be improved.
 
** Enemy logs interpolation only when detecting a hit (not when firing, causing a lot of off-by-many-ticks waves).
 
** Enemy logs interpolation only when detecting a hit (not when firing, causing a lot of off-by-many-ticks waves).
 
** Bullet-hit-bullet events are not used.
 
** Bullet-hit-bullet events are not used.
 
** Every time an enemy gets hit, it's inferred it surely was the target.
 
** Every time an enemy gets hit, it's inferred it surely was the target.
** Every scan is inversed by distance because it's the most obvious way I can think to weight the chance of each enemy to be a target.
+
** Every scan is inversed by enemy's distance because it's the most obvious way I can think to weight the chance of each enemy to be a target.
 
** Guns from [[Monk]].
 
** Guns from [[Monk]].

Latest revision as of 01:52, 27 October 2017

Planned series

any future release
  • Try incorporating Knight 1v1 movement into it to test if it is better.
  • Try incorporating Knight 1v1 guns into it.
2.0 series
  • Surf disks instead of circles.
1.3 series
  • Try a hybrid between melee surfing movement and 1v1 surfing so the data acquired during melee is used as a strong fallback.
1.2 series
  • Maybe use it as my random gun in 1v1 + the adaptive gun.
1.1 series
  • Enable bullet shadow.
  • Add bot shadow.
1.0 series
  • Re-weight MR/WS.
  • Try programmatic parameter tuning.
0.6 series
  • Add a fallback movement to avoid being cornered and to be in a good position to surf at round beginning.
  • Add fallback stats (HOT and LT).
  • Do a round of optimizations to turn it into a faster bot.
  • Improve bot-width intersection.
0.5 series
  • Tune surfing parameters.
  • Tweak "probability of being shot" thing.
0.4 series
  • Tune gun parameters.
  • Optimize gun.
0.3 series
  • When a fire event occurs, examine carefully which enemy could be the target (possibly a probability distribution estimation).
  • When a hit event occurs, examine carefully which enemy could be the target using the previous calculated probabilities.
  • Handle bullet-hit-bullet event.
0.2 series
  • Tweak MEA and bandwidth?
  • Improve fire-and-hit detection and use enemy interpolation everywhere (apply hard OOP here).

Latest releases

0.4.6
  • Delegate gun painting to PIF gun instead of Swarm Gun. This implies adding a listener for PIF gun.
  • Eliminate absurd angles like those which falls off enemy's max escape angle.
0.4.5 - 10.26.2017
  • MeleeRumble ‒ APS: 68.81% (8th), PL: 395-5 (6th), Survival: 59.09%
  • Add lazy gauss weighting to the scans instead of 1.0 / sqrt(distance).
  • Add virtuality as a gun parameter.
  • Increase gun K to 32.
0.4.4 - 10.26.2017
  • Add iterator to KdTree so I really get K closest scans (considering that I may have discarded some bad scans).
  • Change scan weighter to 1.0 / sqrt(distance).
0.4.3 - 10.26.2017
  • MeleeRumble ‒ APS: 68.72% (8th), PL: 394-6 (7th), Survival: 58.59%
  • Fix movie creation bug in 0.4.2.
0.4.2 - 10.24.2017
  • buggy release
  • Set max K for an enemy to 16.
  • Make it 10-dimensional with a bunch of new hand-weighted parameters.
  • Change the way I create the movies: before I created a movie only when it had at least 100 ticks. Now I create it when it have 20 ticks and I extend it until it have 100. Now I have to handle the case that there may be movies which, when played, are not enough for the bullet to get to the enemy. In that case I should implement an iterator for my kd-tree to get scans until I have K good movies, but it's not done yet.
0.4.1 - 10.24.2017
  • MeleeRumble ‒ APS: 67.82% (10th), PL: 391-9 (9th), Survival: 53.58%
  • Go back to using no enemy interpolation everywhere in TargetingLog.
  • Really small changes in SwarmGun.
  • More parameter tweaking in gun strategy.
0.4.0 - 10.23.2017
  • Binary search bullet-enemy intersection (processing time optimization).
  • Use enemy interpolation (really now) everywhere in TargetingLog.
  • Compute new TargetingLog attributes which are important in melee and do some refactor around there.
  • Start experimenting with simple 5-dimensional gun strategy.
0.3.10 - 10.24.2017
  • MeleeRumble ‒ APS: 68.34% (9th), PL: 392-8 (9th), Survival: 55.98%
  • Fix a bug where correct enemy wave source would not be used.
0.3.9 - 10.23.2017
  • MeleeRumble ‒ APS: 68.04% (9th), PL: 387-6 (12th), Survival: 55.45%
    • Go back to SimpleTargetGuesser.
0.3.8b - 10.23.2017
  • MeleeRumble ‒ APS: 68.01% (9th), PL: 391-9 (10th), Survival: 57.11%
    • Fix enemy hit interpolation condition.
0.3.8 - 10.23.2017
  • MeleeRumble ‒ APS: 68.04% (9th), PL: 391-9 (9th), Survival: 56.5%
    • Rollback stick length
    • Interpolate enemy hit position.
0.3.7 - 10.23.2017
  • skipped
    • Try larger stick.
0.3.6 - 10.23.2017
  • MeleeRumble ‒ APS: 68.27% (9th), PL: 386-10 (13th), Survival: 56.22%
    • Use HitTargetGuesser (old behavior, logs only enemy hits).
0.3.5 - 10.23.2017
  • MeleeRumble ‒ APS: 68.01% (10th), PL: 392-8 (9th), Survival: 53.81%
    • Increase "probability of being targeted" weight.
0.3.4c - 10.23.2017
  • MeleeRumble ‒ APS: 67.88% (10th), PL: 391-9 (10th), Survival: 54.64%
    • Decrease distance-offset bandwidth in SimpleTargetGuesser.
0.3.4b - 10.23.2017
  • MeleeRumble ‒ APS: 67.86% (10th), PL: 391-9 (10th), Survival: 52.63%
    • Try sum-normalized.
0.3.4 - 10.22.2017
  • MeleeRumble ‒ APS: 67.71% (10th), PL: 389-10 (10th), Survival: 53.4%
    • Make target-selection probability max-normalized instead of sum-normalized.
    • Add "probability/degree of truth of being targeted" parameter to the view instead of weighting the scans.
    • Filter waves which have hits.
0.3.3 - 10.22.2017
  • MeleeRumble ‒ APS: 67.4% (10th), PL: 392-8 (9th), Survival: 52.21%
    • Fix condition bug in cross-hit check.
    • No p threshold.
    • Make surfing K = 5, ratio = 0.5.
0.3.2 - 10.22.2017
  • MeleeRumble ‒ APS: 67.42% (10th), PL: 225-8 (177th), Survival: 55.39%
    • Use old weights.
0.3.1 - 10.22.2017
  • skipped
    • Sanity check.
0.3f - 10.20.2017
  • MeleeRumble ‒ APS: 67.98% (10th), PL: 392-8 (8th), Survival: 53.34%
    • Compute TargetingLog for every possible target.
0.3e - 10.20.2017
  • MeleeRumble ‒ APS: 68% (10th), PL: 392-8 (9th), Survival: 52.62%
    • Get enemy position at the time the enemy was shot (instead of at the time the hit occurred) when evaluating the probability of a robot being targeted.
0.3d - 10.20.2017
  • MeleeRumble ‒ APS: 68.44% (7th), PL: 390-10 (9th), Survival: 54.75%
    • Try traditional MEA everywhere.
    • Make melee surfing cluster size = 10 and ratio = 1.0.
    • Weight scans only according to distance to targeter and double-weight this instead of triple-weighting.
0.3c - 10.20.2017
  • MeleeRumble ‒ APS: 68.7% (8th), PL: 391-9 (10th), Survival: 54.88%
    • Fix KnnMeleeSurfer weight normalization now that every scan is weighted.
0.3b - 10.20.2017
  • MeleeRumble ‒ APS: 68.7% (8th), PL: 394-6 (7th), Survival: 56.21%
    • Use weights instead of probability for possible targeted enemies when the enemy shoots. Probabilities normalize nicely, but my current logic didn't expect that. Maybe I'll rethink that in the future.
0.3 - 10.19.2017
  • MeleeRumble ‒ APS: 68.7% (8th), PL: 393-7 (7th), Survival: 55.79%
    • Build a simple probability distribution for possible targeted enemies when the enemy shoots.
    • Build a simple probability distribution for possible targeted enemies when the bullet hits someone/another bullet.
    • Succesfully handle bullet-hit-bullet event.
0.2.3d - 10.17.2017
  • MeleeRumble ‒ APS: 69.22% (7th), PL: 395-5 (5th), Survival: 58.32%
    • Lost track of important changes of 0.2 while running a backup before changing computers. Incorporate them back, 0.2.1 to 0.2.3c didn't have these changes.
0.2.3c - 10.17.2017
  • MeleeRumble ‒ APS: 69.22% (7th), PL: 393-7 (7th), Survival: 58.88%
    • Fix signal.
0.2.3b - 10.17.2017
  • skipped
    • Use some heuristic to estimate more precise MEA from current lateral velocity.
0.2.2 - 10.17.2017
  • skipped
    • Use 110% of common bot width. Maybe it helps to take into account imprecision in wave position.
0.2.1 - 10.17.2017
  • MeleeRumble ‒ APS: 68.91% (8th), PL: 393-6 (6th), Survival: 55.7%
    • Add 1v1 movement from Knight, so the impact of melee surfing only affects melee.
0.2 - 10.13.2017
  • MeleeRumble ‒ APS: 68.84% (8th), PL: 391-8 (9th), Survival: 56.14%
    • Use a simpler interpolation for the enemies.
    • Use enemy interpolation everywhere (mainly in TargetingLog, which causes the biggest change).
    • Add error parameter to the fire events, such that the pair [time, time + error] indicates the ticks that this enemy could have fired assuming the heat tracker was correct.
    • Use EnemyLog interpolated position as firing position.
    • Improve fire-and-hit checking: before, hit + fire at the same tick would pass undetected. Now it works, but I'll apply other heuristics to catch K hits at the same tick (when gun is heated) with branch-and-bound.
0.1.1 - 10.12.2017
  • MeleeRumble ‒ APS: 67.65% (10th), PL: 390-10 (10th), Survival: 56.71%
    • A bunch of tiny improvements to reduce memory allocation, garbage collection and math calls. A lot of "constant" optimization in the branch() function.
    • Using now a less accurate iterative predictor to generate paths.
    • Fixed a bug where I would merge the stats for each enemy without weighting them. This should make a huge difference.
    • It is still skipping a lot of turns, but way less than before. Branching in the future seems even more impossible.
    • Removed every gun except the PIF gun to start scaling my APS from that.
0.1b - 10.11.2017
  • MeleeRumble ‒ APS: 50.71% (207th), PL: 205-195 (196th), Survival: 23.54%
    • Medina was not dealing well with skipped turns, and I didn't notice Medina was skipping turns because I was on an alternative computer with increased CPU constant.
0.1 - 10.11.2017
  • skipped
    • First release.
    • Very simple fire-and-hit detection, a lot of room to improve.
    • Wave hit during danger evaluation is very stupid, waves are single-tick, often off-by-many-ticks and there is no accurate bot-wave intersection.
    • Quickly tested, brand new and hand-weighted minimum risk + true melee surfing, which is for now used in 1v1 as well.
    • It's not too optimized, it's a bit slow for now, and probably memory hungry. The only optimizations are stats caching and discarding irrelevant logs (like from an enemy which is too far from me for its data to change anything in my decisions).
    • Surfing views are really simple, accel + velocity + distance for now.
    • Minimum risk component is based on Monk's, but simpler: perpendicularity, distance and being one of the closest to an enemy are taken into account.
    • Initial movement is too simple, it's getting constantly cornered (unfortunately, during the game as well, but this is a harder issue).
    • Using traditional MEA everywhere. Maybe, since the movement in melee is really restricted, this can be improved.
    • Enemy logs interpolation only when detecting a hit (not when firing, causing a lot of off-by-many-ticks waves).
    • Bullet-hit-bullet events are not used.
    • Every time an enemy gets hit, it's inferred it surely was the target.
    • Every scan is inversed by enemy's distance because it's the most obvious way I can think to weight the chance of each enemy to be a target.
    • Guns from Monk.