我经常看到这个问题。多数人说,UDP对于实时游戏总是比TCP更好。我的理解是,TCP会尝试一遍又一遍地重新发送数据包,直到对方得到它们为止,而UDP则不在乎。
我读过的大部分内容是,任何实时游戏都必须使用UDP,而TCP则很糟糕。但问题是,无论如何,大多数人似乎还是在UDP之上实现了某种形式的TCP。而且我还听说,由于我们已经不在80年代了,而且互联网现在相当快速且可靠,因此两者之间的差异可以忽略不计。
我的一般理解是否错误?有人可以帮我清理一下吗?
t0
从未收到的世界状态的数据包,那么您就可以在时发送新的世界状态,t1
而不必等到客户端实际收到第一个数据包时,已经过时了。
internet is now pretty fast and reliable
不,这不对。的带宽也大幅提升,是的,但延迟还是相当高的。使用纯TCP,除非您进行数据包压缩,否则您需要服务器滴答时间超过最大可承受延迟,这最好是通过UDP在客户端完成。问题是游戏中的某些信息需要可靠,而其他一些信息则需要快速。基于UDP的自定义协议以及一堆专有协议都可以实现这一点,这些协议可以在一个不错的程序包中为您提供所需的一切。