Esta é uma pergunta que vejo muito. A maioria das pessoas diz que o UDP é sempre melhor para jogos em tempo real do que o TCP. Meu entendimento é que o TCP tenta reenviar pacotes repetidamente até que o outro lado os obtenha, enquanto o UDP não se importa.
A maioria das coisas que li é que o UDP é obrigatório para qualquer jogo em tempo real e o TCP é terrível. Mas o problema é que a maioria das pessoas parece implementar alguma forma de TCP sobre o UDP de qualquer maneira. E também ouvi dizer que a diferença entre os dois é insignificante, já que não estamos mais nos anos 80 e a internet agora é bem rápida e confiável.
O meu entendimento geral aqui está errado? Alguém pode esclarecer isso para mim?
t0
que nunca é recebido, envia o novo estado mundial em um momento t1
, não precisa esperar até que o cliente realmente receba o primeiro pacote, que já está obsoleto.
internet is now pretty fast and reliable
Não, não é. A largura de banda aumentou dramaticamente, sim, mas a latência ainda é bastante alta. Com o TCP puro, você precisa que o tempo de verificação do servidor seja superior à latência máxima acessível, a menos que você faça squishing de pacotes - o que é melhor feito no cliente via UDP. O problema é que algumas informações em um jogo precisam ser confiáveis, enquanto outras precisam ser rápidas. Os protocolos personalizados sobre o UDP permitem isso, assim como vários proprietários, que oferecem tudo o que você precisa em um bom pacote.