In many cases, shooting without prediction is satisfactory. This is the case when the animats are close by, or running directly in the line of fire (forward or backward). The prediction works very well for these cases.
At a distance, the prediction skills are surprisingly good—particularly on the other bots. Prediction is particularly good in large areas, where few turns are necessary to move around. Estimating the velocity of enemies using a moving average gives good results. However, this needs to be biased toward the most recent velocity observations (that is, 80% / 20%).
When two animats are on the same level, the prediction of the movement is essentially one dimensional, because only left and right turns are needed. When the animats are on different levels, this becomes 2D prediction because the view needs to be tilted up and down. Naturally, this is not as effective. For example, running toward a staircase will cause Predictor to shoot on the same level, not taking into account the stairs. Colin does a bit better from this respect, because it won't actually shoot when the enemy is heading toward a wall. However, the assumptions made to correct the velocity when enemies encounter walls are often just as wrong as the naive estimates!
That said, the prediction is also conceptually limited to reactive patterns. Using dodging tactics (for instance, keeping mostly still, but staffing back and forth only to avoid incoming projectiles) proves very effective at avoiding damage from blaster shots. Having higher-level understanding of the situation (both spatially and temporally), humans can break such patterns by shooting at the same spot.