-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChangelog
More file actions
973 lines (610 loc) · 26.6 KB
/
Changelog
File metadata and controls
973 lines (610 loc) · 26.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
# Changelog
TODO: Do proper wave surfer, at least for 1on1. I.e. be smarter with point
choice, some (weak) attempt done in v6.2
TODO: try to increase melee bullet power, HawkOnFire often get more bullet
damage bonus than me.
TODO: make center of the field more dangerous in melee, so bot moves closer to
the wall. simple.Wall has amaizing survival rate, with simple trick. See
voidious.Diamond too.
TODO: count only passed wave when updating firing stats.
TODO: calculate danger of a point according to angle at which all bots are
seen. The smaller the better, since I see all bots with less radar sweeps.
TODO: check linear and circular guns for the check when last points is not
available at the fire request time, so one had to extrapolate to this time.
TODO: take in account wave fired by other bots to calculate my guns stats
TODO: ramming attack if guns fail
TODO: chose best firing angle gun, the one which hits most targets
TODO: find optimal number of new variants of the path on every tick, while
yet avoid skipped turns.
TODO: increase bullet power in 1on1 to something like 1500/dist. Survival
bonus is small but bullet bonus is increases with bullet energy. So it better
aim for higher bullet damage than survival bonus.
TODO: see why in melee, the bot likes to sit still near the wall or conner, it
start to happen near v1.5. Looks it due to changes introduced in v1.4
May be add maximum staying time in a given point. Looks like survival in melee
is a bit worse for v1.4 than for v1.3
TODO: see why bot does not fire when energy drops below 1. Usually, it does
not fire when remaining energy is 0.6
TODO: take in account guess factor stats collected by other bots
TODO: move enemy firing logic to enemy gunManager
TODO: make guess factor flattener
TODO: make antiAntiGrav gun: which tries to predict enemy motion based on
anti-grav physics
TODO: improve flipLastGuessFactorGun, or make new one with cross correlation
analysis. Looks like there is anti correlation between odd/even waves.
Looks like it was quite crazy idea, though it did help to boost APS in
roborumbles.
TODO: play with fighterBot danger radius. When I changed 100 -> 200, I saw
drastic drop of APS in melee for my test set. But is seems to keep master bot
from crossfire situations, so may be I need it to depend on number of
opponents.
TODO: work on guess factor lagging gun. There are typically 3-4 wave of my
bots in the air, so when we fire, we do not know last 3-4 guess factors, so we
should look for correlation between 3-4 shots in the past. Quick octave plot
reveals that there is a correlation for the lags up to 4 (sometimes 5) even
for the top bots and than it is lost. So we should make a map
oldLaggingGF->firingGF, which is 2D distribution map and look for
correlations.
TODO: if radar looks other way, onHitByBullet -> scheduledEdrop wrongly force enemy to emmit
non existing bullet. Need to check the last scan time and scheduledEdrop time
to avoid this.
DONE: analyze missed bullets to see which gun the enemy was using. Cannot be
done, this event is not provided for enemy bullets
# v12.8
Logic change
- when look for safety shadow, allow bullet and wave to travel at least 2 tics
Improvements
- use bisection to find bullet intersecting a wave
- hit-miss tree has its own size limit
# v12.7
Bug fixes
- in the bullets shadow code: the shadow size was often overestimated
# v12.6
Logic change
- gunTreePoint: undo increased weight of average lateral speed. Back to v12.3
- gunTreePoint: use last lateral speed change time instead of round number
# v12.5
Logic change
- gunTreePoint: increased weight of average lateral speed
- gunTreePoint: lateral speed average is lateral at every time
# v12.4
Logic change
- using round number (instead of number of bots) as dimension for gunTreePoint
Improvement
- added setRealHitWidth method
# v12.3
Logic change
- Flattener enabling threshold is higher
# v12.2
Logic change
- non learning guns flattener redone
Improvement
- added safety net against supplied zero bot danger width
# v12.1
Logic change
- retune flattener
# v12.0
Logic change
- Use safety zone concept. This is for non learning guns: if a bot was not hit
in a certain place it is probably safe place. Once certain threshold is
reached, switch to anti-GF behaviour, where all visited stats are avoided.
- kdtreeGuessFactorGun added gfHit width attribute
- probability density use smallest value as a base
- realHitsGun initializes some values/attributes
Bug-fix
- gfHit coordinates are properly flipped now
# v11.9a
Logic change
- Added inferred gf hit attribute, for gf which I try to deduce from the game
symmetry
- changed calculation of decay for GF, it takes in account only round
- new function which returns tic Round number
## v11.9
Logic change
- keep track of virtual/real hits/waves
- weights of above events are a bit different
- TODO: there is double counting of virtual bullets if real hit happens
## v11.8
Logic change
- using average lateral velocity instead of average speed for kdTree
parameters
## v11.7
Logic change
- added danger for slow motion while on the wave
Enhancements
- added profiling toggle
## v11.6
Enhancements
- added calculateDangerFromEnemyWaves for dangerPathPoint
- wave danger using variable for danger not a magic number
- removed duplicate code
- bullet danger checks for a border case and normalizes more than 360 degree angles
separation
Bug-fix
- wave danger with bot corridor is properly calculated, before it was using
only statistical GF danger and no bullets danger
- fixed bot shadow function, it was not rotating bot shadow with respect to head on
angle
## v11.5
Logic change
- anti-rammer improvements attempt
- added special danger for points inside bots overlap zone
- wave danger use the full bot shadow, not just nearest gf danger
Enhancements
- added euclidean distance calculation function
## v11.4
Logic change
- anti-rammer improvements attempt
## v11.3
Logic change
- gunTreePoint weights redone
- added bullet velocity as coordinate for gunTreePoint
## v11.2
Logic change
- gunTreePoint weights redone
Enhancements
- off-line analysis tracks target bot name
- kdTree switched to weighted one, to simplify logic
## v11.1
Logic change
- use kdTreeGun(100) instead of kdTreeGun(10) for flattener
Enhancements
- can log kdtree points for off-line analysis
## v11.0
Enhancements
- list safe removal of fighterBot waves from myWaves list
- bug fix: virtual waves were fired twice, and were not properly removed
## v10.9
Logic change
- fire virtual wave only first 200 tics
- asking 1 mS Thread.Sleep if there is spare time
- gunTreePoint uses averageSpeed
- gunTreePoint uses number of bots back
## v10.8
Logic change
- add virtual bullets to virtual wave only for the first 200 tics
Enhancements
- remove bullets which miss (to update gun hit rates) only for the first 200
tics. After this time it just give small correction but consumes a lot of CPU.
## v10.7
Logic change
- different kdTreePoint calculation formula
Enhancements
- fixed center of mass formula (still unused)
## v10.6
- profiling a lot of internal functions, speed should be higher now
- added ability to add bullet to a virtual wave (disabled now)
Enhancements
- improved profiler output
- added cpuManager to calculate cpuConstant
- added timer class for future use
- aiming condition does not use time in the future
- gunTreePoint holds its cache the whole round
## v10.5
Enhancement
- remove and count bullets which do not hit target as wave approaches
- as wave approaches we can deduce which bullets will miss for sure,
if we count it, we can adjust guns hit probabilities before wave reaches,
enemy. This should help especially at the beginning of a game, otherwise 1st 3 wave
are fired with a 1st default gut on long distances.
Bug fix
- energy disabling condition was wrong, so bot disabled itself with last fire
## v10.4
Enhancements
- speed up of gun performance evaluation
- nicer guns report
## v10.3
Logic modification
- master bot fires virtual waves each tic
- relaxing corridor overlap check
- small speed up for 1on1 case
Enhancements
- profiler outputs total exec time
- a bit of speedup of profiler start code
Bug fix
- wrong gun stats report
## v10.2
Skipped
## v10.1
Logic modification
- fixed bugs in bullets' safety corridor logic
- remove safety corridor requirement to be large
Enhancements
- added bulletShieldGun (currently unused)
## v10.1
Logic modification
- less agressive survival
## v10.0
Logic modification
- smart energy management, attempt to survive instead of fire energetic bullets
Enhancements
- keep track of last fired bullet energy
- new functions:
- energyGainPerTickFromEnemy
- energyDrainPerTickByEnemy
- enemyHitRate
- gunHeat
- bulletGiveBackByEnergy
## v9.8
Logic modification
- visited stats danger, enables only if unknownGun perfroming better than a threshold
Enhancements
- added new method getBestGunAgainstBot
## v9.7
Logic modification
- enemy wave gf have contribution from real hits and visited gf, and not only real hits
Enhancements
- new helper class to do math with arrays
- getGFdanger returns probability density instead of raw numbers
## v9.6
Logic modification
- if we get hit by bullet, we immediately update firing GF danger in waves in the air
- hopefully my bot will not be hit by several bullet with the same GF in a row
Enhancements
- more efficient wave creation
- simplified wave creation
- Changed wave creation and update logic
- use a common method to calculate enemy wave danger
- added method to calculate incoming wave danger
- added draft of time decay capabilities for kdTree gun (bad round border crossing)
- record gfHit fired time for analysis
- gfHit keeps track when it was fired
- wave with bullets marks head on direction
- master bot set wave target when fires
## v9.5
- Fixed wave surfer logic. Consider all points on a wave, not just the first one
## v9.4
- enhancement: prevent aligning of the bot along x-axis when it reaches final point
## v9.3
- added waveSurfer motion (only one wave)
- fixed anti-kdTree gun array creation and storage
- show white box where the wave hits the bot path
- graphics shows current escape angle on the incoming waves
## v9.2
- fixed bug in kdTree. kdTree cluster is returned sorted from worst to best!
- this bug was introduced around v8.4, also cached cluster worked wrong way
- added calcFlipedLateralVelocityPositionFromCoord to utilize game symmetry
- when adding git to the tree, adding a mirrored to latteral velocity hit too.
## v9.1
- analyze bullet hit bullet to gain info which way enemy fires
- clean up: gunManager use of method addRealHitGF for hit by bullet cases
- waveWithBullets new method getAngleGF
## v9.0
- added cached versions of MEA and gunTreePoint calculations
- isWithinMEA moved to the base gun as isFiringSolutionWithinMEA
## v8.9
- guess factor type guns check if solution within physical MEA
- firing solution can check if it within physical MEA
- increase safety corridor overlap tolerance by just a bit
- Wave draw physical MEA
- speed up: Wave calculates MEA, posMEA, negMEA only once
## v8.8
- Fixed caching bug introduced in 8.6. There were no cache use. Which led to
longer calculations.
- Added option to bypass the cache for kdTree guns
## v8.7
- added functions to calculate battle field constrained MEA
- kdTree coordinates calculated VERY different now
## v8.6
- kdTree type guns are using cache (expect less skipped turns)
- guns report their hit names with histogram
## v8.5
- fixed double counting of realHits
## v8.4
version bump to match EvBotNG progress
- kdtreeGuessFactorGun weights points by distance
- some code clean up, should not affect performance
in retrospect:
- no performance change in 1on1 (slight enhancement)
- performance boost in melee +1.2% APS
## v7.9
- kdTree gun is smoothed too now, logically it is the same v7.6 but I hope
that CPU load is smaller. I am using gfCoverage from gfHit now.
## v7.8
In retrospect: in this version 1on1 APS performance is on pair with v7.6 (just a
bit smaller). Melee APS performance is a bit better than in v7.7,
but survival is 3% worse. Most likely it is the same as v7.7
within errorbars.
- gf guns now smoothed as it was in v7.6, kdTree is still not
- gfHit now has gfCoverage parameter related to the hit bot shadow size,
currently it is unused, but intended for kdTree smoothing
## v7.7
In retrospect: in this version 1on1 performance dropped, melee improved (i
think because of the reduced cpu load of kdTree search)
- disabled hit GF spill to nearby bins, i.e. no smoothing
## v7.6
In retrospect v7.6 is so far the best of mine in 1on1 with APS 78.7.
- Wave now have danger from real hits as GF danger values. This replaces old
virtual GF hits danger.
- Consequently, GF danger from real hits is larger than virtual bullets.
## v7.5
- Improved search of final destination: points outside of battlefield use to
be thrown and that counted as an attempt. Now such displacement rotated into
battlefield. So attempts does real search.
## v7.4
- Added ability to track at which GF enemy hits my bot, consequently I can avoid
such GF even if the gun is unknown
## v7.3
- find a bug introduced somewhere around v7.0: the latteral velocity sign was
stripped off in the gun kdTree coordinates calculations.
- note: APS wise v7.2 is about the same as v7.1
## v7.2
- retuned GF and Bullets weights for wave danger. GF has a bit higher weights.
## v7.1
- retuned GF and Bullets weights for wave danger. GF has much smaller weights.
- looks like it is worse against rambots but otherwise higher scores
## v7.0
- Calculations speed up: wave danger calculated based on GF arrays which calculated only once
- wave danger logic redone, probably need to retune coefficients between
bullets and GF dangers in a wave
- regression: removed lateral velocity logic for GF calculation.
- I need it back as well as to check logic
- improved readability of profiler output
## v6.9
- redone wave danger weights, now it takes in account combined game GFs danger
- redone probability density calculation for an array with 0 sum
## v6.8
- when normailizing enemy firing solutions, check against unknownGun
performance. If unknownGun has high stats, we have no clue about enemy guns
and should choose some other avoidance strategy. I.e. GF flattener, this part
to be done.
- some extra helper functions
## v6.7
- added ability to do anti guess factor kdTree guns
- added helper class to do array statistics
- increased corners danger radius in 1on1 situations
- if gun is hot use simple head on gun to point the gun in enemy direction
## v6.6
Improvement: Precise bullet intersection of bot body for bullet hit check.
kdTree gun now takes arguments,
kdTree uses advancing (to/from bot) velocity
## v6.5
Skipping v6.3 and v6.4. Only EvBotNG was changing but framework was not.
This synchronizes framework and EvBotNG versions.
- added nice textual plots/histograms for arrays. Very handy for debugging.
- reworked logic of kdTree nodes calculations
- guess factors are smoother now
## v6.2
- in 1 on 1 situation surf only the oldest (hopefully closest wave), this
seems to help against GF counting guns
- 1on1 point to go calculation favors orthogonal to target motion
- border uncertainty detection is almost 0 now, instead of 1.1
- Added proper circular acceleration gun
- fixed rotation rate calculation
- added MEA marker on enemy wave
## v6.1
Disable fancy bullet energy search. I.e. back to v5.5 bullet logic.
## v6.0
Added track of my score (all game types) and enemy (for 1on1 only). Using it,
attempting to optimize the APS by changing "ideal bullet energy".
## v5.5
Revert bullet energy back for the case of melee, 1on1 stays the same as in v5.4.
## v5.4
Some simplification of the KdTree coordinate code. It is more general and
located in one place now.
Modified bulletEnergy logic to pick 1.95 unless enemy is closer than 140.
This energy selection was spotted in Chase's cs.Nene 1.05 bot.
Test shows that it drastically improve score against stronger bots.
## v5.3
master bot takes gun performance from the KdTree, i.e., it does not use
overall gun performance but it is more adaptive. Rationale, some gun a better
at certain distances/situations.
## v5.2
bug fix: distance to the wall ahead was not assigned for enemy bots stat points
- botStatPoint now contains timeSinceVelocityChange
- KdTree has new dimention: timeSinceVelocityChange
## v5.1
v5.0 was better in roborumble but I lost in meleerumble. So some
readjustments:
- Reduced number of neighbors in kdtreeGuessFactorGun 1000->100.
- kdtree has new dimentions distance to wall ahead and enemies number.
## v5.0
Added KdTree gun with distance, bulletSpeed, lateral speed, and acceleration
coordinates.
## v4.9
Slightly decreased gun performance weight.
## v4.8
Do not lock radar if no firing solutions are present.
Disable
- decrease fire to minimum if we are below enemy (in 1on1 situations),
from the previous version. This gave significant drop in 1on1 APS.
Redone logic of do not fire. Essentially, I try to decrease bullet power ( to 0
if needed) to keep my energy above enemy if I am on 1on1 or no bullets in the air.
## v4.7
Energy management:
- increase fire power if we have significant surplus of energy,
- decrease fire to minimum if we are below enemy (in 1on1 situations),
- do not fire into non firing enemy, if it brings my power below the enemy
## v4.6
Weight due to gun performance redone/increased.
Redone the logic for the best firing solution based on weight distribution.
## v4.5
Added aim at everyone logic.
Commented out the fired count weight when deciding on a robot weight.
Bot weights calculated only once per tic.
Added debugging graphics: firing angles and gun performance indication.
## v4.4
Fixed gun delayed info accounting.
All gun correct the firing solution to make firing angle along the wall
if the firing bot is sufficiently close to the wall. This should waste less
bullets.
## v4.3
Increased bullet energy a bit, v4.2 change greatly increased survival in
melee, but APS dropped by about 1%.
## v4.2
x.x5 exploit redone to round to smaller side
Modified bullet energy vs distance formula to die off quickly, it improves
survival
## v4.1
Added ability to calculate overall danger of a wave from GF stats, it is not
used for now, since I do not see score improvements. But should help with bot
GF flattener in the future.
Attempt to use x.x5 power bullet detection bug in the bots based on
BasicSurfer.
## v4.0
Bullets and wave danger is calculated on the shadow and guess factors, i.e. no
real space distance calculations. This gives tremendous speed up. This new way
of calculations justifies bumping up the major version.
Safety corridors are properly taken in account for wave danger calculations.
Nice plot of the GF danger for enemy bots wave.
## v3.7
GF updates touch the range of angles covered by a bot body
Added safety corridors capabilities. I.e., bullet and bots shadows.
## v3.6
Each GF gun has its own threshold for goodness decision. As result decaying GF
guns fire now.
## v3.5
Retune the point when GF guns provide results.
## v3.4
New gun: assistedGFGun. This is the guess factor gun with segmentation on
guess factor suggested by the accelerating circular gun at the time of fire.
The idea that there is some correlations, and for some bots I see it. Mine is
certainly have some correlation on such segmentation.
Prepared to collect more statistics at the time of fire, so far it is only
distance.
## v3.3
It is bad idea to be in multiple crossfires, but this is what happens in 1 vs
4 if my bot is in the middle, it become the closest to all, thus everyone fires
at us. So, In melee when number of enemies = 4, the center of the battlefield has danger.
## v3.2
Added the circular gun which handles an accelerating bot.
## v3.1
Put a safety net around a potential problem spot. When a fictitious wave is
asked to be added from a bit which rams with me before a radar had a chance to
see it. This use to throw the "null pointer exception" which propagates for
the rest of the match.
## v3.0
Remove attractive potential from energetic but non firing bot.
## v2.9
CoreBot caches time, for getTime() calls.
If bot does not fire, it is taken in account as its reduced danger. So my bot
will come closer, if bot has no energy to fire it will ram it.
## v2.8
Reverted target selection logic to v2.6
If a point is the closest to enemy, this enemy danger radius increased, to push
away my bot from being the closest to the enemy. Should increase
survivability.
Even not the closest enemy fires at master bot sometimes, this helps with no
motion freeze when all other bots are the closest to someone else. But some
no so advance bot fire at any target in a view (walls, crazy, etc ).
## v2.7
Redone target selection logic
## v2.6
Revert back number largest number of bots when I fire a wave to everyone: 10->4
## v2.5
When counting hits and missed fire, do it only for waves which passed over a
bot. This avoid counting as missed the waves which are still in the air when
enemy dies, also for the case of virtual bullets, it does not count as a miss
the case when radar was looking away during the wave pass over the bot.
Increase number of bots to which I fire virtual waves at melee: 4 -> 10
## v2.4
Fixed bug, with double counting of the master bot gun shots, which was
introduced in v2.3
## v2.3
Proper counting stats for real enemy hits.
Take in account enemy hit stats, when calculate firing solution danger.
Circular gun use a more general method to find intercept,
it also tries to project target motion if stats are delayed.
Master bot guns are set in config which can handle different game types.
Enemy bot guns are set in config, as well.
Enemy gunManager is used to provide virtual bullets against master bot
firingSolution plots bullet quality of solution
Added safetyCorridorGun gun to push my bot to safety or random location
## v2.2
In melee radar lock now 2 clicks earlier, than before. Seems to boost score
with my test set.
Circular gun falls back to linear gun scenario, if not enough history
available.
Master bot does not fire linear gun anymore, circular one does its function.
## v2.1
Remove guess factor based guns from the enemy guns array.
These guns were introduced since v1.6 but apparently make the master bot motion more
predictive. It hearts IWillFireNoBullets roborumble stats,
up to version 2.0 the APS is lower.
Buy now enemy firing and master bot motion logic is the same as it was in
v1.6
Added enemy wave count, to implement lagging guess factor gun.
## v2.0
bug fix: guess factor use the lateral velocity from wrong time
New gun: flipLastGuessFactorGun. I note that many bots including my own
have next wave guess factor close to opposite of the previous wave. This gun
tries to exploit it.
## v1.9
Disabling mostly orthogonal to the enemy direction path search. Looks like
it drops rating IWillFireNoBullet by about 2%.
## v1.8
Fixed bug introduced in v1.7: in 1on1 my bot locked itself in a corner, due
to no danger from corner, and only shallow angle search within orthogonal direction to
the enemy.
## v1.7
Enemy bots fire guess factor gun too.
Master bot has new decaying guess factor gun.
Enemy bots also fire decayingGuessFactorGun gun at master bot.
New exact path choice in 1on1 type, try to chose points orthogonal to line to
the enemy.
## v1.6
Radar locks on target when gun is cold enough.
Gun aiming is not executed when gun is too hot.
Added guess factor gun for the master bot gun array. Apparently, in the old
EbBot the guess factor gun did not take in account the lateral velocity
direction. So this realization should outperform it.
Optimization:do not calculate path danger if it is already greater than a
known path. This should reduce CPU usage.
## v1.5
Added bullet shielders detection, and fire with offset to circumvent it.
If bot hit enemy bullet, then enemy wave which carries this bullet is removed,
since it has no danger.
Exact path is attempting to find a better path every turn, but with smaller
number of trials than full search.
All very, strange. Melee score went up, but 1on1 down.
Apparently, increasing maximalPathLength to 50 from 32. makes 1on1 motion more
predictable. Will reduce it to see the difference. Checked, looks like it does not
change anything. Maybe it because path was recalculated every tick.
Looking closely at some battles for the v1.3, I conclude that there were a
glitch in the rumble. When run locally with gui, I do not get stellar 100%
survival against bots which rumble reported as such. For example against
zyx.micro.Ant 1.1. The scores also not so awful for the v1.4 as in the rumble.
## v1.4
Attempt to reduce gun calculations:
Enemy wave directed at us only if master bot is the closest or number of
enemies >=3. Consequently enemy waves with no dangerous bullet are
disregarded.
Exact path is calculated for longer time period and is not updated every tick
any more (unless there is a fire detected or minimal path length is reached).
Added Random gun, to the guns array.
## v1.3
Fixed circularGun bug which was triggered in melee, when no consequent points
are available to figure out velocity rotation.
## v1.2
Added circularGun, enemy fires it too
## v1.1
Fixed linear gun: does not offer future positions outside the field
Fixed contribution of enemy energy to the target weight, it use to select
most energetic enemies.
Redone weight calculations for best target selection, among other things it
takes in account enemy hit rate and fire count only after some amount of
rounds (5) played.
Bot position danger includes its energy.
## v1.0
v0.7 - 0.9 are skipped since v1.0 has quite drastic changes.
Enemy fires a wave to everyone (might be too CPU intensive).
Do not fire enemy wave if its energy drop is due to the master bot hit.
Count guns success stats.
Chose gun according to its virtual hit probability.
Chose target according to distance, energy, hit probability, survival stats, etc.
Fix a bug: did not detect a bullet with energy very close to 0.1, Diamond
likes to fire such one close to the end of melee.
## v0.6
Improved enemy firing solution generation. Take in account that at fire time
they now target bot stats for the previous tick time.
My bot does not anymore slam the brake, when all enemy are dead. Since bullets
are still flying.
Keep track of bots hit rate and hit by others rate.
Longer default danger path prediction (8 -> 32) should help against rammers
## v0.5
Master bot use position in future to calculate its firing position, thus
correct path prediction of my own bullets. So far I still use only headOn and
linear guns.
## v0.4 - 0.1
lost in history since the frame work was taken from IWillFireNoBullet robot.
So see its version history.