【发布时间】:2018-08-24 13:35:05
【问题描述】:
我一直在阅读(出于好奇)有关游戏服务器的大量信息。对于快节奏的游戏(第一人称射击游戏),UDP 似乎是必须的。
根据我收集到的信息,归结为当数据包丢失时会发生什么。当 TCP 尝试重新发送/接收丢失的数据包时,您将获得巨大的延迟,并且此时游戏的状态已经远远领先于客户端,使得您等待了这么久的数据包在它到达时毫无用处。
如果您禁用 Nagle 的算法,我很难弄清楚为什么这样的东西不起作用,而不是处理 UDP 数据包:
你打开了多个到服务器的连接
client thread 1 <- packet 1
client thread 2 <- packet 2
client thread 3 <- packet 3
client thread 4 <- packet 4
client thread 5 <- packet 5
那么,如果数据包 1 发生问题并且您在 500 毫秒后收到它,那么到那时您将拥有数据包 2,所以没关系,客户端可以丢弃它。我确定我错过了一些关键信息,但我找不到任何相关信息。使用 Zeromq 或其他消息传递库实现类似我提议的内容非常简单。
【问题讨论】: