Comparing Results Between Shielders
The highlighted comment was edited in this revision. [diff]
So as I was putting together my own bullet-shielding-only robot Spitfire, it occurred to me there are a few instances we need to think about if we want to compare performance between shielders. 1) When opponent is at low energy. 2) When opponent is too close. 3) Any other scenario where the robot developer may be tempted to do something other than shielding for special situations.
For mine, I currently try to shield right up until the opponent runs out of energy. If opponent stops firing before running out of energy, I don't fire either. The one time I do fire first is when the opponent is disabled and there are no more opponent waves in play. I never move, accept for a little step out and back in when firing. If opponent is too close for my shielding, I just get hit.
Shielding Robot | APS | Survival | Pairs Won | Specialization | Notes |
---|---|---|---|---|---|
jk.precise.EnergyDome 1.1 | 56.24 | 63.19 | 58.6% | 20,957 | |
jk.precise.EnergyDome 1.5 | 58.78 | 65.73 | 61.3% | 24,095 | |
rsim.micro.uCatcher 0.1 | 30.65 | 41.41 | 27.8% | 8,620 | |
rsim.mini.BulletCatcher 0.4 | 67.02 | 78.06 | 82.5% | 4,043 | (1) |
xander.cat.Spitfire 1.0 | 32.31 | 43.41 | 33.3% | 18,109 | (2) |
xander.cat.Spitfire 1.1 | 40.08 | 50.16 | 42.3% | 22,313 | |
wiki.BasicBulletShielder 1.0 | 19.08 | 28.11 | 14.7% | 7,419 |
Notes:
- Has light-weight second mode that takes over when shielding fails or when opponent is low energy.
- A bit handicapped by slow firing response. Only fires first when opponent disabled and no active waves in play.
No problem. The one I made is definitely the bottom of the pack. But I had only decided to make a very simple to show how its done to others. It only fires when the enemy is disabled.
The only way I think I can improve it thought, is to profile what kind of shot the enemy is firing and adjusting to it.
Yup, EnergyDome uses a VG to match which type of HOT/GF0 calculation they are doing, and also keeps an offset tally in case they consistently shoot slightly to the side. I've actually considered going all out and using a Kd-Tree to try to predict how much offset they will shoot with, but I'm a bit scared as to what the results might be :-p
It also doesn't run away under any circumstances, and is very careful to stay at GF0 for the ramming kill.
When I first experimented with Bullet Shielding, what I was trying to achieve was a rammer which closed in using shielding and 0.1 powered bullets, and switched to power 3 bullets at point blank range.
Attack with movement and defend with targeting. The opposite of the Wave Surfing/GuessFactor combination.
But it was so hard to predict where incoming bullets were heading I gave up. Until you showed that competitive Bullet Shielding is possible.
The trick is to give them a really easy target that makes their targeting predictable. Ramming has a big spike somewhere around GF0, but if they start moving laterally and you follow them you aren't at exactly GF0 any more for the waves that hit you, so who knows where they will shoot.
If the opponent uses only real waves, then you can try to plot a course where waves always hit at GF0.
If virtual waves are used, it gets trickier. You have to guess with which bullet power virtual waves are being fired. That could be estimated by analysing onHitByBullet and onBulletHitBullet events.
If other targeting strategy, like pattern matching, is being used, then it could also be estimated with onHitByBullet and onBulletHitBullet events.
If multiple bullet powers are used at the same time, then staying still seems a better alternative than ramming, as all deterministic strategies converge to head-on targeting. Who would guess SittingDuck movement is a viable strategy?
Another note: If shielding is integrated into another robot, the best system isn't necessarily the one that would produce the best bullet-shielding-only score, but rather the one that, against it's opponents, either works really well or fails miserably. It's problematic if it produces a lot of ~90 scores, as there is no good way to know if this is better than your normal drive and gun.
Why not just compare the version with shielding to the version without shielding?
I think perhaps a better measure of how useful they would be when integrated into a bot is 'percentage of pairings above x%', where x is somewhere between 95 and 98. Thoughts?