Reading up on network protocols, I learn that if TCP misses a packet, everything is held up until that's resolved, which can result in a 1000 ms interrupt. Whereas UDP has a chance of not arriving. For something like a spell cast that has to be received, TCP seems the obvious choice, but is there the possibility of a sudden lag spike that has to be factored into the engine to hide it? Notably, only activating the spell on every machine when it's arrived on all of them. Presumably this wouldn't stop UDP, so UDP position updates can proceed as normal?
Or could one use a repeated UDP request, something like sending the spell notification three times at intervals and, on the client, only activating it the once and ignoring duplicate requests?