Basically, this is just surfing using a pattern matching algorithm for keeping track of movement data, however instead of searching for the deepest match, you search for the shallowest. As searching the shallow end is a great deal easier, this could be several times quicker then a pm gun. I however have few plans to produce a bot using this method as all ym attempts at PM have gone down in flames.
I see what you're saying about the shallowest match being faster to find, but wouldn't that also mean that it is more inaccurate? It would be interesting to see how well this performs. I'm actually going to try to implement something similar in Chimera but I'm running into speed problems (running PM on everyone is a bit taxing on memory). Perhaps this method could speed things up a bit. I suppose it doesn't have to be accurate if it gets the general area right... say, within 2-3 bot widths. -- Ne
Is this basically AntiPatternMatching? As in, you aim a PatternMatcher at yourself and dodge it? Since most bots aren't using a PatternMatcher, it seems like using PatternMatching based surfing would yeild nothing more than a powerful random movement against non-PM guns, similar to how GF-surfing yeilds random movement from the perspective of a PM gun. In either case, the way you're dodging bullets has nothing to do with how they're actually aiming. -- Voidious
You could say the same thing about standard surfing Voidious, which doesn't do so hot against PatternMatchers?. Though my description is a little light, what I mean is that it still dodges places you've been 'hit' at before, cept using PM instead of GF. Though the how eludes me, I had a solution but I would have to dig out my journal again (not hard but I have work that I would like to do). --Chase-san
A more random way of doing it (considering Voidious's description), that would confuse the heck out of both PM and GF targeting systems would be to combine the two methods. Essentially my idea is to find the weighted average (based on which method you are hit more accurately with) and avoid that location by staying a certain distance from it. Essentially you avoid the mean by attempting to stay 2xMax from it. If you're using a large VG array to find these points, it could get a bit hairy... and you would have to specify a threshold such that you do not consider points under a certain weight. Otherwise you might just try to stay as far as possible from a bullet and end up in the same GF bin every time. -- Ne
I accomplished something like this by writing a class that converted the angle at which a VG aims into wave surfing dangers with a spike in that area. Then I used a weighted max function to combine all the dangers from the VGs with normal wave surfing dangers, something like danger[i] = max(someWeight * waveSurfingDangers[i], weight1 * vg1Dangers[i], weight2 * vg2Dangers[i], ...). When I sold my computer I was in the process of experimenting with how to calculate weights dynamically, but never really found a sweet spot. The method in LifelongObsession is, every time I see a bullet, run a RollingAverage like weightX = (depth * weightX + vgXDangers[actualBulletGF]) / (depth + 1). That will give preference to VGs that are predicting correctly (if they do so consistently), but otherwise strongly favors wave surfing. -- Simonton
Ahh, I know why you are all thinking this kinda crazy. Its finding the lowest match and move to the area, not moving away from it, though matches are less, neh, however, its just as possible to use the deepest match ala the standard patternmatching system, and just run from it, which might return better results. The bullet hit system would be 'simular' to that found in a DynamicClustering surfer, such as Chal, or more likely one that uses the play forward methodology such as Shadow (does Ali do it that way?). --Chase-san
Well, I don't think this idea is "crazy", but if I did, that wouldn't be the reason =) I don't see why you'd want to move towards a shallow match but away from a deep one? Isn't any match you find (in any way) pointing at where the enemy is probably firing? Ali doesn't use log-based surfing, it just uses CassiusClay's surfing, but Chalk (and Lukious, and pretty sure Shadow) use log-based surfing. Actually, based on what I can glean from your most recent comment, I don't think I have any idea how your PatternSurfing? is supposed to work =) But that doesn't mean it won't. -- Voidious