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