Welcome to my world (of pain
).
CI is based on a client-server architecture (that’s how multiplayer games are possible). The server makes all gameplay decisions, the client is just a dumb rendering terminal. In order for the client to know what to draw, the server sends the appropriate information over the network. But here’s the catch: sending ALL information ALL the time would be prohibitively expensive in terms of network bandwidth. So the server only sends the essentials, and the client runs an approximate simulation to work out the rest.
Position is one of those things that the client needs to simulate – it may be close, but it doesn’t always match the server’s value. When it comes time to spawn new projectiles, however, it had better match, because otherwise you’d see projectiles in a different place than where they really are (and quite possibly be killed by an “invisible” projectile)
Since the Slob generates projectiles as a result of being hit, it can only use whatever information the server sends to it at the time of impact. Impact location is sent (this is new to CIU, previous games didn’t even send that), but enemy location isn’t.
Theoretically, this could be fixed by having the server also send the enemy’s location, but that would have to be done for every impact (not just the Slob), increasing the bandwidth usage permanently for something with such a small/rare pay-off.