Robo Home | Changes | Preferences | AllPages

just use a simple aiming strat, head on, or linear iteration, doesn't matter. give the triggerbullet a "triggertime", which is the number of frames it will fly before it reaches the assumed enemy position. when it reaches the point, it "triggers". now, save the info where you have been, relative to your enemy. next time, when the situation is equal, use the same aiming type, assume the enemy will evade the same way, and correct your aiming angle... now, you either choose to remeber every situation as exact as possible (long learning time, large data file, and maybe a GREAT hit-ratio), or just save the angle, or just save nothing and remember the last correction value.. like all my aiming-techniques, this works well against some bots, and sucks against others...


Isn't that a form of pattern matching? Although, probably not as good. -- Tango

You think everything sounds like pattern matching Tango. =) Well, everything is in a way. Targeting is always about finding the pattern to your opponents movement. But PatternMatching as used most often in Robocode lingo means the specific action of matching your enemys' very recent movement against historic data and replay that section of the history. The above sounds much more like BlackWidows' targeting though I think BlackWidows' trigger function is better because it checks the bullets distance against the distance from your fireing position to the current enemy position. (As described in AngularTargeting/Factored). Much like VirtualBullets. Using a trigger time makes it vulnerable for any errors in your BulletTravelTime estimation (which is always faulty for all bots with a bit more complex movement than SittingDuck). That said, the targeting in BlackWidow obviously isn't better than fireing randomly in a 360 degree arc so don't use its targeting code... -- PEZ

I tend to agree with Tango, it's a rather contrived pattern matcher from where I stand. Though if your movement is deterministic this is potentially a very good way to pattern match. -- Kuuran

I think that maybe HoD should be a bit more specific about this. Cause even re-reading it I can't see the pattern matching here. And if it's there, what would make it "not as good"? -- PEZ

No, it doesn't make it worse, it just makes it a variant of pattern matching. The idea is he's matching the pattern of the dodge movements over the bullet travel times, in the sense we mean. -- Kuuran

To me it sounds more like angular targeting and the rest is just segmenting it. (All sitting here like we're in an art show trying to identify what the artist meant by something...) -- Kawigi

I still think it sounds more like a factored gun, possibly segmented. And all guns work with the dodge movements over the bullet travel time, don't they? -- PEZ

Yes and no, most guns don't use bullet firing as their zero time like this one seems to. Might be factored. I guess we'll need to wait for an elaboration -- Kuuran

Whatever do you use for zero time if not the time of firing? I'm curious now. -- PEZ

Triggerbullet description, part 2 : robot a ) take this, bastard ! fire(3)

robot b ) ha, fooled ! ahead(40)

....some round later....

robot a ) hrhr...we're in the same situation as we were some rounds ago when he fooled me with his ahead(40);, so this time i'll aim 40 pixels ahead of him...NOW TAKE THIS ONE, CRAPPY PIECE OF CODE..gunturnleft(whateveritneeds) fire(3)

robot b) *crash*

the triggertime is just a little helper. at the moment the bullet triggers (the moment it would have hit if the enemy is sitting duck), you calculate where it should have been fired to hit. then, next time, (same disstance, enemy's bearing is the same or whatever criteria you want to use), assume it's avoidmove will be the same and correct your aiming. HoD

Yeah, that's basically what I understood the first time. Sounds like pattern matching to me... --Kuuran

=) Well, maybe heavy segmentation is a sort of pattern matching.

As for what I use for zero-time. Normally when patternmatching I try to match as far back from before the firing as possible and make that zero-time... -- Kuuran

But still, it's where your enemy moves after you fire that's important, in'it? Of course you can't pattern match forward in time. So the match must be performed backwards from the firing time. But the estimate is always done with firing as zero time. Not? -- PEZ

Isn't this exactly the same thing as Waves? Sounds like it to me; once the bullet reaches the 'predictedtime' you're calculating the angle difference between where the enemy was (headon) and where the enemy is, and recording that. Waves and VirtualBullets do exactly the same thing. The difference seems to be that you are recording this on a 'situation' basis, rather than a general curve implementation. Sounds interesting; how does the bot store and access these situations in the heat of battle? -- Vuen

With hindsight, it seems to me this idea was basically DynamicClustering before the concept became more widespread/documented. The only real difference I can see here, is that in the original description here it gives the provision that it could measure dodging relative to where linear or other things would aim, instead of relative to head-on angle like 'traditional' DynamicClustering-GuessFactor guns do. It's interesting to read older pages like this that the random page link takes me too. -- Rednaxela

I don't think this description can be considered DynamicClustering, it says nothing about how you choose the similar situation to get the firing angle from. To me it's just a description of the virtual bullet (or wave) concept. -- ABC

Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited August 21, 2008 0:44 EST by ABC (diff)