9

我一直在阅读关于多人网络的 Valve 文章,该文章改编自 Yahn Bernier 2001 年的论文,名为Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization。我正在使用通过 socket.io 连接到客户端的 node.js 服务器制作实时多人游戏,我对下面详述的原则有一些疑问:

实体插值

[插值] 通过缓冲服务器更新然后在播放它们之间平滑插值的间隙来防止通常会导致的抖动运动。它还可以防止因丢包引起的故障。

客户端预测

预测是客户端预测本地玩家行为的效果而不等待服务器确认它们的概念。实体的预测状态在服务器命令到达时针对它们进行测试,直到检测到匹配或不匹配。

滞后补偿

延迟补偿是服务器在处理 [用户输入] 时使用玩家的延迟来回退时间的概念,以便查看玩家在发送命令时看到的内容。结合预测,延迟补偿可以帮助对抗网络延迟,从攻击者的角度来看几乎可以消除它。

  • 这些原则是否适用于 TCP,就像它们适用于 UDP 一样,在实现上会有什么不同吗?我可以看到实体插值不需要防止数据包丢失,仅此而已。

  • 我什至可以使用 UDP 和 Node.js 在服务器和 Web 浏览器之间进行通信,反之亦然吗?

  • 由于这篇论文已有十多年的历史,这些原则是否仍在使用,还是出现了其他技术?

任何帮助将非常感激。

4

1 回答 1

2
  • 这些原则是否适用于 TCP,就像它们适用于 UDP 一样,在实现上会有什么不同吗?我可以看到实体插值不需要防止数据包丢失,仅此而已。

虽然您不必处理丢包问题,但您将不得不处理更长的传输时间。TCP 比 UDP 慢,您必须在实时多人游戏中缓解这种情况。我认为这些原则仍然适用于基本层面。

  • 我什至可以使用 UDP 和 Node.js 在服务器和 Web 浏览器之间进行通信,反之亦然吗?

一般来说,还没有。至少不是没有某种形式的浏览器扩展或插件——WebSockets 使用 TCP。也就是说,WebRTC(更具体地说,PeerConnection API)即将到来。当实现数据通道时,理论上应该可以进行 UDP 通信。

  • 由于这篇论文已有十多年的历史,这些原则是否仍在使用,还是出现了其他技术?

听到它们不再使用,我会感到非常惊讶-您引用的文章实际上是游戏程序员的必读文章。新技术没有出现也是如此,尽管我已经好几年没有密切关注这个领域的发展了。

于 2012-07-12T15:50:05.603 回答