@mrtricky Imagine an internet FPS where player A sees player B run past him. Here's what would happen with each protocol in the case of lag.
UDP: If a packet arrives late, it is discarded and the client waits for the next one. To Player A, player B will appear to stop suddenly and will be further down the hall in an instant. This is "warping" and doesn't slow down the game when a packet is missed.
TCP: If a packet arrives late, the server is informed it's late and resends it. Obviously, this is a bit slower in low-bandwidth conditions, but player A will see player B stop suddenly and continue to run down the hall without teleporting. This can slow down gameplay, but it's a more reliable protocol than UDP.
Basically, if you need information sent to player's computers as quickly as possible, go with UDP. If you need players to receive most, if not all, of the information sent, go with TCP. The reason both protocols are around is because one provides speed at the expense of reliability and the other provodes reliability at the expense of speed. Which one you need is up to you.
UDP: If a packet arrives late, it is discarded and the client waits for the next one. To Player A, player B will appear to stop suddenly and will be further down the hall in an instant. This is "warping" and doesn't slow down the game when a packet is missed.
TCP: If a packet arrives late, the server is informed it's late and resends it. Obviously, this is a bit slower in low-bandwidth conditions, but player A will see player B stop suddenly and continue to run down the hall without teleporting. This can slow down gameplay, but it's a more reliable protocol than UDP.
Basically, if you need information sent to player's computers as quickly as possible, go with UDP. If you need players to receive most, if not all, of the information sent, go with TCP. The reason both protocols are around is because one provides speed at the expense of reliability and the other provodes reliability at the expense of speed. Which one you need is up to you.