EvBotNG/Version History

From RoboWiki
< EvBotNG
Revision as of 02:48, 6 November 2017 by Beaming (Talk | contribs)

Jump to: navigation, search




new framelib

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


  • added euclidean distance calculation function


new framelib

Logic change

  • anti-rammer improvements attempt

Bot performance in retrospect:

  • melee is still bad
  • 1on1 performance is the overall best (but actually by tiny bit compared to v11.3)


new framelib

Logic change

  • gunTreePoint weights redone
  • added bullet velocity as coordinate for gunTreePoint

Bot performance in retrospect:

  • melee is still bad
  • 1on1 performance is the overall best


new framelib

Logic change

  • gunTreePoint weights redone


  • off-line analysis tracks target bot name
  • kdTree switched to weighted one, to simplify logic

Bot performance in retrospect:

  • melee is still bad
  • 1on1 performance is the overall best


new framelib

Logic change

  • use kdTreeGun(100) instead of kdTreeGun(10) for flattener


  • can log kdtree points for off-line analysis

Bot performance in retrospect:

  • melee is still bad
  • 1on1 performance is slightly improved vs v11.0


new framelib


  • list safe removal of fighterBot waves from myWaves list
  • bug fix: virtual waves were fired twice, and were not properly removed

Bot performance in retrospect:

  • melee is still bad
  • 1on1 performance is slightly improved vs v10.9


new framelib

  • 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

Bot performance in retrospect:

  • melee improve a lot
  • 1on1 performance is slightly improved vs v10.8 but still not as good as v10.7. Looks like virtual bullets are bad idea for 1on1, or finite number of virtual waves. Need to do benchmarks.


new framelib

Logic change

  • add virtual bullets to virtual wave only for the first 200 tics


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

Bot performance in retrospect:

  • melee still very bad
  • 1on1 performance is slightly dropped by about 0.5% in APS


new framelib

Logic change - different kdTreePoint calculation formula

Enhancements - fixed center of mass formula (still unused)

Bot performance in retrospect:

  • melee still very bad
  • 1on1 performance is slightly better than v10.6


new framelib

  • 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

Bot performance in retrospect:

  • melee still very bad
  • 1on1 performance is slightly better than v10.5


new framelib

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

Bot performance in retrospect:

  • melee still very bad
  • 1on1 performance is slightly better than v10.4


new framelib

Enhancements - speed up of gun performance evaluation - nicer guns report

Bot performance in retrospect:

  • melee still very bad
  • 1on1 performance is slightly better than v10.3


new framelib

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

Bot performance in retrospect:

  • melee still very bad but not sure I can trust small enhancement
  • 1on1 performance is slightly worse than v10.2, but surprisingly APS against top bot improved. Maybe I should have some logic for virtual wave enabling.


new framelib

Logic modification - fixed bugs in bullets' safety corridor logic - remove safety corridor requirement to be large

Enhancements - added bulletShieldGun (currently unused)

Bot performance in retrospect:

  • melee still very bad but there are enough battles to trust this number
  • 1on1 performance is slightly better than v10.1, but still a bit worse than v9.9


new framelib

Logic modification - less agressive survival

Bot performance in retrospect:

  • melee still very bad, but quite better that v10.0, looks like survival is way better
  • 1on1 performance is slightly better than v10.0, strangely I do not get APS gain against strong bots, as I was getting in v10.0, but overall performance increased. Almost on pair with v9.9

TODO: need to investigate what helps against top bots (DrussGT, Diamond) as in v10.0 but make it worse against a weaker bots and overall


new framelib

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

Bot performance in retrospect:

  • melee still very bad, but quite better that v9.9
  • 1on1 performance is slightly worse than v9.9, survival increased about 1%


Disable waveSurfer, back to exactPath motion

Bot performance in retrospect:

  • melee still very bad
  • 1on1 performance is slightly better than any other versions, quite better than surfer versions



  • Still using new experimental waveSurfer motion

new framelib

Logic modification - visited stats danger, enables only if unknownGun perfroming better than a threshold

Enhancements - added new method getBestGunAgainstBot

Bot performance in retrospect:

  • melee performance untested
  • 1on1 performance is slightly better than any other surfer version v9.7, v9.6, and v9.5, but it still not as good as v9.4



  • Still using new experimental waveSurfer motion
  • updated bot properties

new framelib

  • 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

Bot performance in retrospect:

  • melee performance untested
  • 1on1 performance is slightly better than surfer version v9.6, but it was in rummble for limited time with only 370 pairings



  • Still using new experimental waveSurfer motion
  • new framelib
  • 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

In retrospect: - melee performance untested - 1on1 performance is slightly better than surfer version v9.5



  • Using new experimental waveSurfer motion
  • new framelib
  • Fixed wave surfer logic. Consider all points on a wave, not just the first one

in retrospect: - melee performance untested - 1on1 performance is slightly worse but better than the surfer version v9.3


  • switched off experimental waveSurfer, back to exactPath motion
  • new framelib
  • enhancement: prevent aligning of the bot along x-axis when it reaches final point

in retrospect: - melee performance miraculously improved, I think something glitch in the rumble - 1on1 performance is the best among all versions. Just a touch better than v9.2



  • Using new experimental waveSurfer motion
  • new framelib
  • 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

in retrospect: - melee performance not tested - 1on1 performance is worst by about 2%, bots often stops on a wave cross, so next wave has smaller MEA. Need to think how to surf more than 1 wave


  • new framelib
  • 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
    • as result kdTree guns were crap
  • added calcFlipedLateralVelocityPositionFromCoord to utilize game symmetry
  • when adding git to the tree, adding a mirrored to latteral velocity hit too.

in retrospect: - melee performance plunged down. It was dropping from 6.1 but this one the worst. I do not get it at all :( Especially given that 1on1 is the best. - 1on1 performance is the best among all versions


  • new framelib
  • 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


  • new framelib
  • added cached versions of MEA and gunTreePoint calculations
  • isWithinMEA moved to the base gun as isFiringSolutionWithinMEA

in retrospect: - melee performance increased a bit, but still lower than v8.8. Shall I remove physical MEA check? - 1on1 performance is the same as v8.9


  • new framelib
  • 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

in retrospect: - melee performance droped quite a lot, looks like mea calculation are too cpu intensive. - 1on1 performance slightly increased a bit


  • new framelib
  • 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

in retrospect: melee performance stays almost the same with a tiny increase, 1on1 performance unexpectedly dropped a bit


  • kdtree guns changed. High order kdTrees are removed, several low order are added
  • new framelib
  • added functions to calculate battle field constrained MEA
  • kdTree coordinates calculated VERY different now

in retrospect this version is better than 8.6, though not is good as some previous ones.


  • changed kdTree guns order from high to low, to use kdTree cache, there is no change in guns otherwise
  • new framelib
  • kdTree type guns are using cache (expect less skipped turns)
  • guns report their hit names with histogram

in retrospect: performance dropped quite significantly in 1on1 and melee, maybe kdTree cluseter caching is not such a great idea. As far as I see, neighbors selection is very fast already.

Caching had a bug as result extra calculations and no cache use at all. It was fixed in v8.8


  • new framelib
  • fixed double counting of realHits

in retrospect: similar performance in 1on1, slightly worse in melee


  • new framelib
  • 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


realHits(1) -> realHits(10) for all enemy guns

in retrospect: - 1on1 almost the same performace as 8.0, but a tiny bit worse than 7.9, which is weird since logic is the same. - melee is worse than 8.2 by a noticeable bit


Melee gun is the same as v6.1 except 1on1melee, 1on1 is the same. Tuning melee guns to match v6.1 closer.

In retrospect: 1on1 is a bit worse than 7.9. Melee is much better.


Melee gun is changed, 1on1 is the same.

In retrospect: melee performance get a bit worse than in 8.0


1on1 opponent gun switched: gunList.add( new realHitsGun(10) ) --> gunList.add( new realHitsGun(1) ); On some gui rounds it helped a lot but not in RoboRunner. Let's see how roborumlbe will react on it.


In retrospect: so fat this version is the best in 1on1 APS performance, almost 1% APS boost wnen compared to any other versions. Melee performance went down. Looks like melee is CPU limited.

  • new framelib
  • 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.
  • when stats are downloaded, call to API asks for bare minimum


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.

  • new framelib
  • 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


In retrospect: in this version 1on1 performance dropped, melee improved (i think because of the reduced cpu load of kdTree search)

  • new framelib
  • disabled hit GF spill to nearby bins, i.e. no smoothing


In retrospect v7.6 is so far the best of mine in 1on1 with APS 78.7 and one of the worst in melee. I am guessing wave danger change affected melee negatively.

  • added back HoT and Circular gun to 1on1 situation
  • new framelib
  • 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.


  • new framelib
  • 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.
  • experimental: 1on1 enemy bot equipped only with real hits gun


  • new framelib
  • Added ability to track at which GF enemy hits my bot, consequently I can avoid such GF even if the gun is unknown
  • added realHitsGun to enemy gun array at all stages
  • improved statistics graphics


  • new framelib
  • find a bug introduced somewhere around v7.0: the lateral velocity sign was stripped off in the gun kdTree coordinates calculations.
  • note: APS wise v7.2 is about the same as v7.1
  • historical stats do plot now, fun to see APS vs version number


  • new framelib
  • retuned GF and Bullets weights for wave danger. GF has a bit higher weights.
  • added scripts to collect literumble stats


  • new framelib
  • retuned GF and Bullets weights for wave danger. GF has much smaller weights.
    • looks like it is worse against rambots but otherwise higher scores
  • added code to fetch stats from the rumble web site


  • new framelib
  • 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


  • new framelib
  • wave danger components reweighted


Circular gun back to enemy 1on1 list. Otherwise my APS drops against circular targeters.

  • new framelib

Check performance of unknownGun. If it high, my guess about enemy guns is no good and I should avoid them less.


  • new framelib
  • changed gun list with more kdTree. Circular gun is removed from 1on1


using more of kdTree gun in melee and 1on1, new frame lib


New framework. With reworked kdTree and guess factors logic.

v6.4 still was not as good as v6.1 in melee, but may be this is due to new bot inclusion.


After dust settled v6.3 is still down in APS 65.8% vs 67.46, also places wise it moved from 10th to 14th again. So I am reverting melee gun set to be the same as in v6.1. No changes in 1on1 relevant settings.


Note the v6.2 was a disaster for melee, the bot moved from 10th to 14th place (the bot lost 1.5% in APS and 3.6% in survival). In 1on1 performance is just a bit better same, at least it was on 80th place and still is, occasionally popping to 79th.

I attribute the lose in melee to the bad choice of guns, looks like addition of the accelerated circular gun is the bad idea. The revised gun list is matching v6.1 set closely, though still not the same.


Main change in 1on1 surf only oldest (hopefully closest) wave, help against GF statistics aiming guns.

Proper circular gun with accelerating target

using frame lib v6.2


Disable fancy bullet energy search. I.e. back to v5.5 bullet logic.


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


Revert bullet energy back for the case of melee, 1on1 stays the same as in 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.


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.


New framework.

bug fix: distance to the wall ahead was not assigned for enemy bots stat points

  • botStatPoint now contains timeSinceVelocityChange
  • KdTree has new dimention: timeSinceVelocityChange


New framework.

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.


New framework.

Added KdTree gun with distance, bulletSpeed, lateral speed, and acceleration coordinates.


New framework.

Slightly decreased gun performance weight.


New framework.

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.


New framework.

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


New framework.

Weight due to gun performance redone/increased.

Redone the logic for the best firing solution based on weight distribution.


New framework.

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.


New framework.

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.


New framework.

Increased bullet energy a bit, v4.2 change greately increased survival in melee, but APS dropped by about 1%.


New framework.

x.x5 exploit redone to round to smaller side

Modified bullet energy vs distance formula to die off quickly, it improves survival


New framework.

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.


New framework.

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.


New framework.

Bullet and bots shadows are taken in account.


New framework.

Each GF gun has its own threshold for goodness decision. As result decaying GF guns fire now.


New framework.

Retune the point at which GF guns return results.


New framework.

New assistedGFGun gun. It is added to array of virtual guns for the master bot in all fight types and for enemy bots in 1on1 situations.


New framework.

Reverting to v3.1. I.e., replacing circular accelerating gun back to just circular. It gives a bit worse performance in both melee and 1on1.

Makefile adds source files to jar.


New framework.

Replaced all occurrences of circular gun with circular accelerating one.


New framework.

Master bot uses in melee only linear and head on guns, except when it comes to 1on1


New framework.

Remove attractive potential from energetic but non firing bot.


New framework.

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.


New framework.

Reverted target selection logic to v2.6

If a point is the closest to enemy, this enemy danger raius 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 somenone else. But some no so advance bot fire at any target in a view (walls, crazy, etc ).


New framework.

Redone target selection logic


New framework.

Revert back number largest number of bots when I fire a wave to everyone: 10->4


New framework.

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


New framework.

Fixed bug, with double counting of the master bot gun shots, which was introduced in v2.3


New framework. Extended guns set firing in 1on1


new framework

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.


new framework

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.


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 oposite of the previous wave. This gun tries to exploit it.


New framework. Undo orthogonal motion. It seems to be a weaker motion


New framework. 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.


Enemy fires guess factors gun too, new decaying stats guess factor gun, on 1on1 motion more orthogonal to the line to the enemy.


New framework with guess factor gun. Some optimization to reduce unnecessary CPU load.


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.


New framework with added random gun


New framework with added random gun


New framework with fixed circular gun


New framework with circular gun


Inspire of my initial hope melee performance dropped, I think this due to bugs in the target weights selection. Will see if this one helps.

1on1 performance improved, but there is only one target.


Versions of 0.6 - 1.0 skipped, since v1.0 is quite different

Framework lib v1.0, I expect drastic improvements in melee.


Using v0.6 framework lib


Using v0.5 framework lib

v0.4 - 0.1

lost in history since the frame work was taken from IWillFireNoBullet robot. So see its version history, as well as, framework lib history log.

Personal tools