Precise MEA
Wall segments only avoids shooting walls after the gun learns how the opponent reacts to it. So at least in the first round a gun can shoot walls.
First round, an opponent dodges the first bullet at factor 1.0. Then it gets close to walls, factor 1.0 (imprecise) is unreachable, it crashes on the wall and "dodges" the second bullet at factor 0.0. There is only 1 wave in the history, so a GF gun without precise MEA will use factor 1.0 (imprecise) and shoot the second bullet at the wall (and make your bot look stupid).
Now, which of the two is better, cropping or scaling, varies with the opponent.
True, but I'd say it can be learned away much much quicker than 1 round even, especially when tick-waves are used.
About cropping or scaling, yeah... I'd say the tradeoff comes down to a matter of low-distortion (fewer assumptions) versus fast-learning (reduced segmentation needed). The best choice depends on all sorts of circumstances. With 1) a sufficiently large number of rounds, 2) good wall segmentation, and 3) non-learning opponents, cropping will just about always be better. Conditions #1 and #3 may frequently not be the case though, so yeah.
What I have been thinking about trying when I get around to actively robocoding again, is including both scaling and cropping, and use both for deciding each shot. Possibly ways to do it would be averaging the probability curve for both, or picking the one that gives the strongest prediction, among other possibilities.
Are tick-waves any good against surfers? Intuitively, they should perform worse, so I never tried.
They seem to work well against surfers. I recall someone, I think rednaxela, saying that this is due to surfers usually not simulating non-firing waves. I currently use them, but I do weight firing waves higher (Diamond uses an oscilating virtuality attribute that weights waves closer to firing waves higher)
I certainly use them against surfers, but accuracy against top surfers is kind of a black art anyway. =) It's worth noting just how much data there is in virtual waves - you're talking about 1 data point every 15 ticks vs 1 every tick. That goes a long way in making up for the fact that they shouldn't be as relevant. And yeah, I use virtuality as one of the attributes in my KNN distance function, so I prefer waves closer to firing time when selecting data points.