View source for Talk:EnergyDome

From Robowiki
Jump to navigation Jump to search

Contents

Thread titleRepliesLast modified
Expected bullets off a bit first 100 ticks of first round322:12, 24 February 2013
Looking forward to this.2815:09, 21 February 2013
Comparing Results Between Shielders1402:43, 21 February 2013
Tao quote221:31, 18 February 2013

Expected bullets off a bit first 100 ticks of first round

Skilgannon -- I'm playing around with trying to shield against a slightly different targeting approach where you have to factor in robot turn (generally for robots that don't set the gun to adjust for robot turn). An example robot would be several of the oog.* robots, such as Fuatisha. EnergyDome can shield against these robots, and quite well. However, I generally can't get over a score of about 85%. The problem is, for the first 100 ticks or so, if the opponent is moving, the expected aim is off by about 0.005 radians. After 100 ticks or so, it's dead on for the rest of the 35 rounds. Those first 100 ticks or so and the error that comes with it is enough for me to miss those shielding shots and the reason for my less than perfect score. I'm curious, did you not run into this same phenomenon? How does EnergyDome deal with this so successfully? Is it that your shadow is broad enough to cover the error, whereas mine is not?

Skotty07:52, 24 February 2013

I was having very iffy performance against bots that don't use setAdjustGunForRobotTurn(true); until I discovered I was taking the delta-heading from the wrong tick - it should be lastEnemyHeading - lastLastEnemyHeading, rather than a tick even further back. If that isn't the issue, I'm not sure what is - it could be that my shadow is slightly broader, but DrussGT only gets ~70% vs. Fuatisha, so clearly at least there my shielding isn't enough to completely shut it out. Unless I've got a bug in my integration code...

Skilgannon09:37, 24 February 2013
 

I'm wondering if maybe, even though not as pronounced as on some other systems like Wompi's, if maybe I am experiencing a few hidden skipped turns due to garbage collection or something. However, the problem seems to persist even when paint is turned on, which I thought eliminated time restrictions, so maybe not. What I am definitely going to do is find an opponent I can modify to print out additional diagnostic information to help figure out why the discrepancy exists. If I find anything interesting, I'll post on it.

Skotty19:35, 24 February 2013
 

I think I have it figured out. I move slightly against shots where opponent is not moving. Looks like I was just moving too much, which overly polluted the data of some opponents.

Skotty22:12, 24 February 2013
 

Looking forward to this.

I look forward to seeing your implementation. I tried making one at one time. It isn't a simple trick to get down. But I wonder if this could actually decrease your score against some robots that you already get 100% against. Like ones that have near head on targeting that never landed on your surfing, but might bypass your shield.

Chase13:26, 18 February 2013

It can. But not by much more than a few percent, and your average score is still much better with it than without it. And I highly suspect that we'll soon see a generation of bots with bullet defenses intertwined with their movements much more than they currently are.

I actually feel a bit jealous about the current adding-bullet-shielding-to-megabots trend. A while ago I noticed GeomancyBS getting ~99% against Nene and other ridiculously high scores, and I wondered why other high-end bots weren't shielding. It was going to be my secret weapon, but now I guess I'll just have to find something else. :(

Sheldor14:37, 18 February 2013
 

Well Nene also uses Raiko's gun, which was written back in 2004, long before bullet shielding or even surfing was a thing. It just has a strong movement. I had considered using BulletShielding for awhile to, at the time that GeomancyBS came out. But at the time I wasn't able to get it to work.

These days I might be able to, but I hadn't really given it much thought again before this latest round.

Chase14:44, 18 February 2013
 

Sorry Sheldor. I guess I kind of let the cat out of the bag. I did briefly think about how nice it would be to get my score up closer to Diamond and DrussGT and then add bullet shielding in an attempt to briefly steal the top spot, but truth is, despite much effort, I have had very little success improving my wave surfing and guess factor targeting beyond where they are now.

I doubted that Skilgannon and Voidious would bother with trying to add bullet shielding, as they are more wave surfing and guess factor targeting purists who might not like the idea of adding an alternate behavior and/or risking losing a little score against non-vulnerable opponents, but I think the score boost for XanderCat was a little more than anyone was expecting and the temptation may be too much for them. :)

Skotty15:07, 18 February 2013
 

You're right on that it was something of a purity issue of me. It just felt like an ugly thing to implement. There is at least one other technique we already ignore, which is preloading data about specific opponents. But it's not "impure" in the same way and I could see myself adding Bullet Shielding augmentation to Diamond, but probably never preloading.

Voidious15:37, 18 February 2013
 

It's less of a 'purity' issue for me than it is a very difficult problem to integrate the two 'correctly' without losing score against anybody. I'm very willing to integrate this into DrussGT, but I feel that this is almost exploiting a bug similar to the x.x5 bullet power issue, as in I don't mind integrating it, as long as it doesn't cause any scores to decrease relative to current DrussGT levels, because it is so easy to work around that a new-gen smarter rumble population would effectively give me a lower relative score if I integrated this and was willing to compromise my score against non-vulnerable bots in the process.

Skilgannon15:47, 18 February 2013

Bullet Shielding is an exploitable strategy, like all other crush-the-weak strategies.

It will probably increase APS score and decrease PL score.

MN16:11, 18 February 2013

Well, from here my PL can only go down :-p I think I might be able to work it so that it doesn't actually lose me points against anybody, even those the bullet shielding doesn't work against, by dodging any bullet that the shield doesn't catch before a hard decision is made. We'll see.

Skilgannon20:52, 18 February 2013
 

I don't see any way multi-mode Bullet Shielding could ever not decrease your score against bots that aren't susceptible to it. So it's purely a matter of accepting the cost as worth the benefit. The extreme case that might mitigate it for me is if I already beat everyone badly enough to still average > 50 APS even with the feature, but who knows if/when that might change.

Voidious16:20, 18 February 2013
 

Agreed. I don't see it as a bug, but at the same time it just feels naughty to use it, like maybe someone should give me a spanking for adding it to XanderCat. In fact, if active folks wanted to make a play nice agreement to not use it, I would remove it from XanderCat without complaint.

I don't feel the same way about bullet shadows or on-the-move shielding like MoxieBot uses. Both of those techniques I think are quite clever and well within the spirit of the competition. It's just the stand-still shielding that feels dirty.

Skotty19:46, 18 February 2013

Btw, I don't think he means a bug in Robocode, but a bug in other bots. Like shooting at bullet powers of the form ((x * 0.1) + 0.05) takes advantage of a bug in the original BasicSurfer that a lot of bots are based on.

Voidious20:05, 18 February 2013
 

I wouldn't mind such an agreement. Since generally it would save me having to implement it in a bot. Even though I just got an implementation working.

Chase20:41, 18 February 2013
 

I think I would mind it. :-) Though I have no plans to implement it myself yet. It just kind of offends my sense of what techniques are worthy of banning. Pre-loading bot specific data, on the other hand, I feel I could make a legitimate case for (but wouldn't at this point).

Voidious20:44, 18 February 2013
 

What Voidious said. I'm quite happy to implement this, and actually would feel negligent if I didn't, since it would let people get away with sloppy targeting that doesn't attempt to avoid this technique. However, because I expect this to be something which is fixed in most re-releases and new bots joining the rumble, I don't want the integration to be something that in the long run will cost me points.

Skilgannon20:48, 18 February 2013
 

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Users.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page.

Return to Thread:Talk:EnergyDome/Looking forward to this./reply (14).

 

I don´t see anything naughty about Bullet Shielding. It is only exploiting a vulnerability in deterministic targeting strategies.

Any deterministic targeting strategy has a counter dodging strategy which can dodge it almost perfectly. The same is true for counter Bullet Shielding strategies, which can shield predictable guns near perfectly.

But it works both ways. Deterministic dodging or shielding strategies also have counter targeting strategies which can achieve near 100% hitrate against them.

MN21:04, 18 February 2013
 

But hard-coding opponent´s names is something I really don´t like and will never put in Combat.

It removes all the challenge in classifying which strategy opponents are using. And breaks when a new competitor enter the rumble, even if it is weak.

Impact can defeat LittleBlackBook simply because it entered the rumble after the last release.

MN21:17, 18 February 2013
 

When BulletCatcher came around I thought: "Clever thinking, well executed", took my countermeasures and moved on. With MoxieBot I thought: "I want to be able to do this too". But I like to win, and not to 'not loose', so I won't let my movement dictate where to shoot. Passive bulletshielding, making use of the accidental shadows created by the gun, is the way to go for me. Although my first attempts at even creating the environment to start develop it horribly failed with version 3.3 and some more till 3.10.
I can't and won't dictate others what they should and should not use. I can only decide for myself, and conform myself to the rules of the community. But don't forget that a too strict 'ruleset' could stop innovation, making the rumble a tweak-competition.

GrubbmGait23:26, 18 February 2013
 
 

Nice work. Looks like I´ll have to implement anti Bullet Shielding in Combat.

MN15:59, 18 February 2013

Done. Combat 3.19.0 is scoring 99,86% against EnergyDome and 99,97% against MoxieBot.

I hope anti Bullet Shielding doesn´t generate side effects.

MN15:09, 21 February 2013
 

I think it would be fun to release my own bullet-shielding-only robot to compare against the other bullet shielders, but at the same time I'm not sure I want to skew rumble results further by adding more bullet shielding.

Skotty03:01, 19 February 2013

Eh, I wouldn't worry about that. :-) The bots you're "skewing" are from inactive bot authors, too, so it seems silly to sacrifice any of your own Robocode experience for people that aren't even paying attention.

Voidious03:05, 19 February 2013
 

Or bots no longer in development. Like Nene. Which is actually a nice test bot for this, since it is an otherwise strong robot.

Chase03:11, 19 February 2013

Surely you're going to put your own gun on Nene eventually?

Skilgannon06:16, 19 February 2013
 

I was going to, but Nene got very bloated and its structure isn't as good as I would have liked. I can try to retrofit my current development gun on it, but I am not sure how well that would work.

I am currently writing a new robot to see if I can correct some of those issues. I found that migrating its movement is somewhat difficult. So I might just rewrite that too, but this time with a better idea how a good movement is put together.

Chase07:26, 19 February 2013
 

That´s why we have a secondary PL ranking. This ranking system is designed to not be affected by the presence of specialist bots.

MN16:40, 19 February 2013
 

Interesting stuff with bullet shielding lately... it's getting me a bit interested in coming back to robocode perhaps

Just thought I'd chime in to note, PL ranking isn't resistant to all kinds of specialists. One could argue that a bot which barely but consistently beats non-surfers, but is great against surfers, is a specialist of sorts.

Rednaxela16:49, 19 February 2013

It is not immune if thats what you mean. But no system is.

The biggest weakness with PL (Copeland) is if you submit a bunch of exactly equal specialist bots (clones), whoever they specialize against (scores above 50%) suffers. But no one is doing this.

MN17:58, 19 February 2013
 

That would be great. I hope you do, it would always be fun to see what you can do with it.

Chase16:59, 19 February 2013
 
 

Comparing Results Between Shielders

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.

Skotty19:08, 19 February 2013
Edited by 2 users.
Last edit: 02:43, 21 February 2013
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:

  1. Has light-weight second mode that takes over when shielding fails or when opponent is low energy.
  2. A bit handicapped by slow firing response. Only fires first when opponent disabled and no active waves in play.
Skotty19:37, 19 February 2013

Whoops! Thanks Chase. I didn't realize BasicBulletShielder was in the rumble already.

Skotty19:49, 19 February 2013
 

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.

Chase19:51, 19 February 2013
 

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.

Skilgannon20:27, 19 February 2013

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.

MN20:58, 19 February 2013

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.

Skilgannon08:23, 20 February 2013
 

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?

MN14:11, 20 February 2013
 

And combine it with MaxRisk? :)

Chase22:46, 19 February 2013

Surpass MaxRisk.

And then, maybe squeeze the code into the smallest codesize class as possible.

MN01:23, 20 February 2013

I doubt you would be able to get any smaller than a minibot. But it sounds like it could be very successful. Good luck.

Sheldor13:58, 20 February 2013
 
 
 
 

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.

Skotty19:43, 19 February 2013

Why not just compare the version with shielding to the version without shielding?

Sheldor14:01, 20 February 2013

Different bots might gain different amounts from shielding based on what they got against susceptible bots in the first place. Since it can be tough to integrate a different person's shielding into your bot, this way we can compare shielding effectiveness without doing a ton of integration work.

Skilgannon15:26, 20 February 2013
 
 

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?

Skilgannon11:50, 20 February 2013
 

Btw, I love the Tao Teh Ching quote. =) I've actually been thinking about the book a lot lately and recently opened it for the first time in years. I read it a bunch when I was ~18, but looking back I feel like I understood nothing at all about it. My mindset over the last 2-3 years feels much more in tune with its principles.

One thing I love about the Tao Teh Ching and Zen is that as science progresses, they actually seem even more on point. Unlike some other religions which are constantly fighting against science. (No offense anyone!)

Voidious16:31, 18 February 2013

Heh, I actually came across that via Sun Tzu's The Art of War, I was trying to find a fitting quote and his work (along with Machiavelli's) came to mind. I'd also argue that Tao/Zen isn't a religion, but rather, at least as it was intended, a philosophy. Although anything taken seriously enough can become a religion, I guess.

Skilgannon20:58, 18 February 2013
 

They are extremely influential literature.

Only they all focus in a zero-sum mentality, which is dangerous when taken blindly as a philosophy.

MN21:31, 18 February 2013