Changelog

v12.7

new framelib

v12.6

new framelib

gunTreePoint: undo increased weight of average lateral speed. Back to v12.3

gunTreePoint: use last lateral speed change time instead of round number

Bot performance in retrospect:

melee is still bad

1on1 performance is the best ever though by only a small margin

v12.5

new framelib

Logic change

gunTreePoint: increased weight of average lateral speed

gunTreePoint: lateral speed average is lateral at every time

Bot performance in retrospect:

melee is still bad

1on1 performance is about 1%APS worse than v12.4

v12.4

new framelib

Logic change

using round number (instead of number of bots) as dimension for gunTreePoint

Improvement

added setRealHitWidth method

Bot performance in retrospect:

melee is still bad

1on1 performance is a bit worse than v12.3

v12.3

new framelib

Logic change

Flattener enabling threshold is higher

Bot performance in retrospect:

melee is still bad

1on1 performance is almost as good as v11.9a.

v12.2

new framelib

Logic change

non learning guns flattener redone

Improvement

added safety net against supplied zero bot danger width

Bot performance in retrospect:

melee is still bad

1on1 performance is better but not is good as v11.9a. Needs more work on flattener.

v12.1

new framelib

Logic change

retune flattener

Bot performance in retrospect:

melee is still bad

1on1 performance is better but not is good as v11.9a. Needs more work on flattener.

v12.0

new framelib

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

Bot performance in retrospect:

melee is still bad

1on1 performance plunged down. I blame new flattener

v11.9a

new framelib

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

Bot performance in retrospect:

melee is still bad

1on1 performance is the best but only by little

v11.9

new framelib

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

Bot performance in retrospect:

melee is still bad

1on1 performance is the best but only by little

v11.8

new framelib

Logic change

using average lateral velocity instead of average speed for kdTree parameters

Bot performance in retrospect:

melee is still bad

1on1 performance is the best but only by little

v11.7

disable profiling output

new framelib

Logic change

added danger for slow motion while on the wave

Enhancements

added profiling toggle

Bot performance in retrospect:

melee is still bad

1on1 performance is the best but only by little

v11.6

new framelib

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

Bot performance in retrospect:

melee is still bad

1on1 performance is fixed though it is a bit lower than v11.4

v11.5

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

Enhancements

added euclidean distance calculation function

Bot performance in retrospect:

due to the bug hopefully fixed in v11.6 APS dropped, strangely not as much as I would expect for such severe bug

v11.4

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)

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

v11.2

new framelib

Logic change

gunTreePoint weights redone

Enhancements

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

v11.1

new framelib

Logic change

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

Enhancements

can log kdtree points for off-line analysis

Bot performance in retrospect:

melee is still bad

1on1 performance is slightly improved vs v11.0

v11.0

new framelib

Enhancements

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

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.

v10.8

new framelib

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.

Bot performance in retrospect:

melee still very bad

1on1 performance is slightly dropped by about 0.5% in APS

v10.7

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

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

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.

v9.5

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

v9.4

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

v9.3

THIS VERSION IS NOT MELEE CAPABLE DUE TO MOTION CHANGE

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

v9.2

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

v9.1

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

v9.0

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

v8.3

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

v8.2

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.

v8.1

Melee gun is changed, 1on1 is the same.

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

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

v7.9

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

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.

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

v7.7

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

v7.6

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.

v6.9

v6.8

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

v6.7

new framelib

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

v6.6

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

v6.5

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.

v6.4

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.

v6.3

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.

v6.2

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

v4.9

v4.8

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

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

v4.6

New framework.

Weight due to gun performance redone/increased.

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

v4.2

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

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.

v3.7

New framework.

Bullet and bots shadows are taken in account.

v3.6

New framework.

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

v3.5

New framework.

Retune the point at which GF guns return results.

v3.4

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.

v3.3

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.

v3.2

New framework.

Replaced all occurrences of circular gun with circular accelerating one.

v3.1

New framework.

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

v3.0

New framework.

Remove attractive potential from energetic but non firing bot.

v2.9

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.

v2.8

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

v2.7

New framework.

Redone target selection logic

v2.6

New framework.

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

v2.5

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

v2.4

New framework.

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

v2.3

v2.2

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

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.

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

v1.9

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

v1.8

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.

v1.7

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

v1.6

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

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.

v1.4

New framework with added random gun

v1.4

New framework with added random gun

v1.3

New framework with fixed circular gun

v1.2

New framework with circular gun

v1.1

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.

v1.0

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

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

v0.6

Using v0.6 framework lib

v0.5

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.