This is crossposted from the Thumper thread in the regular forum - it was in response to David's post about the algorithm that Thumper shot's are using to detect hits. I'm crossposting it as it probably is more appropriate here, since it's a bug rather than a balance comment.
The short version here is that there is a bug with the algorithm that will result in a substantial number of Thumper hits going undetected when the Creep is moving closer to the center of the Thumper.
Details, reproduction instructions and the full crosspost below:
I'm afraid there actually is a bug in the code that you posted - or not so much in the code, but in the algorithm. What's happening here is a collision test between a moving point and an expanding donut (creep centroid and donut area), and the problem is that it's not robustly dealing with a special case - that if you're simply checking overlap, the objects may pass through each other entirely between overlap checks and never trigger a "hit".
Imagine the following situation, using generic units:
Frame N: The current radius of the ThumpShot is 1, and the previous radius is .5 The Creep's centroid is currently at radius 1.1, but is heading towards the thumper at .15 radii/frame. Since the Creep is not within the .5-1 radius interval, there is no hit.
Frame N+1: The current radius of the ThumpShot is now 1.5, and the previous radius is 1. The Creep's centroid is now at radius .95. Since the Creep is not within the 1-1.5 interval, there is no hit.
Key: Black dot is the centroid of a creep. "Donut" with red stripes is the donut that is currently getting checked for overlap. I would have made the stripes purple, but I don't like jelly donuts. Note that the centroid overlaps the donut in neither instance.
This is likely to occur especially often with speedy creeps, but in theory could happen to nearly any Creep that ends up just outside the radius in one frame - even a small movement closer to the center can take it within the radius of the last ThumpShot.
To verify that this is happening, I did a test on "Down The Chute", configuring the starting grid with just a single thumper as follows: From the last acceleration pad by the entrance chute, I placed the thumper two hexes out in the direction of the bottom-right edge. This results in a situation where the creeps are traveling towards the center of the thumper (and hence decreasing their radius) for nearly an entire hex (they're out of range for part of the time). I also placed a bunch of towers near the exit to buy a bit more time to watch.
If you watch this situation for several waves, you should see several Creeps that are clearly having their centroid pass through the wave which are escaping without a scratch. Since the bug is timing dependent, it could potentially take a few tries to encounter this (though it actually seemed to be occuring on a relatively high % of hits in which the creep was approaching the Thumper's center). It's actually easiest to spot on the slower moving creeps, as they spend more time approaching the thumper's center.
Since roughly 50% of Thumper hits should be on creeps moving toward it rather than away from it, depending on how often this bug is hit (and unfortunately, it's being hit pretty often from my non-scientific observations) it could be severely negatively impacting Thumper damage. I would be willing to bet that it's also responsible for some of the observations of "Thumper Wave Nullification".
EDIT: I just noticed that this also happens in reverse - occasionally creeps will get double hit while moving away from the Thumper. It's even remotely possible that they could be triple hit. In the test case I'm using, in addition to seeing some misses that shouldn't occur, you should also see some creeps being one-hit by the thumper when they otherwise should be able to survive the hit. This means that on the whole, this bug may not actually be adversely impacting Thumper damage output - but at the same time, it's certainly responsible for some of the perceived unreliability of the tower. Generally people are going to notice the tower whiffing and not notice the tower hitting twice.
EDIT: Here's how I set the board up for my test. Remember that since this is a timing based issue, it may take a while to clearly observe a miss. I find that the first wave of slow movers is the easiest to spot a miss on (since it's usually more clear that a miss wasn't due to them moving out of range too quickly to be hit)

You should follow me on twitter here!
Oh yes, I know that the rings can miss in that fashion... and also that they can double or even triple hit! In fact, you could "miss" only once but "bonus hit" more than once. In practice it seems about even, and so that works out just about right.
Blasters also miss! I could never get the sniper to be 100% accurate because even with leading the target (which is harder to do than I thought), changes in direction... right? :) Shows why when being hunted... ZIG ZIG a lot!
The point of the code was to show that there was no "cancelation" effect. Essentially the thumpers hit about the right percentage of the time. I thought about making it perfect but then when I saw the behavior, I was like... that feels less mechanical and works out about the same or slightly better in the average case.
Where it doesn't work out is in fast moving creeps. They tend to miss more and not make it up on the other end. But... that's okay too because they are also being missed more by other shot types too!
But good analysis!
-- David
This is probably the phenomenon that causes the observed "cancellation" though.
The problem here is that I don't think it's entirely intuitive for a wavefront to "miss" - zigging and zagging doesn't really help one dodge an earthquake, after all - so when people are seeing the Thump-Waves missing the creeps, they're finding explanations (such as cancellation) because the wave just missing doesn't make as much sense.
Balance wise, it's a wash (since you get the double and triple hits too), and the added computational expense of making the check more robust may very well not be worthwhile. I do think it contributes to the perception of the Thump towers being underpowered though (although I also think that the check against the centroid is problematic there, since it results in a lot of situations where the player perceives a "hit" that isn't occuring due to a wave overlapping a portion of the Creep other than the centroid)
Yeah... I get you on the perception part.
I could make it accurate.... or close to it. Shouldn't affect the balance but improve the perception. I'll look into that.
-- David
Regarding misses of other towers vs misses of the thumper, I wouldn't really call it the same thing. It's one thing to have a blaster, which has a fixed turning speed and fixed firing speed, miss a speedy creep, it's another to have thumper wave actually contact a creep but not damage it. I think everyone can understand implicitly that if a creep times itself just right so that it passed by a thumper between wave pulses and doesn't get damaged that's just something you have to deal with, but to actually hit a creep and not damage it is disconcerting.
Also, I'm not so sure it counts as a "wash" necessarily that sometimes you miss and sometimes you double hit. I mean, your total damage overall will balance out, but when you're talking killing creeps vs not killing creeps it doesn't necessarily add up and can lead to you losing the level. Say, for example, that you have a thumper such that one hit from a thumper will kill a creep. A number of creeps pass by, and half the creeps get double hit and half the creeps get missed. Well now you've just lost the level because half the creeps just made it to the exit! The "extra" damage here has simply been wasted because the creeps would have died from a single hit anyway. This is mainly a problem with repulsars, if you don't have anything else that can hit a repulsar, then leaking one past your thumper because it "missed" when it should have hit is a huge problem because you have to rely on it to do the damage it's supposed to do, and even though other repulsars might get double hit, that's not necessarily helping you.
Overall I think it's simply inconsistency that's a problem. You should be able to predict with relative certainty that your maze is going to work because you understand how much damage your towers are doing and how fast and powerful the creeps are.