TCP和Node.js的实时多人游戏原则

Rob*_*yes 9 networking udp tcp game-engine node.js

我一直在阅读有关多玩家网络的Valve 文章,文章改编自Yahn Bernier 2001年的一篇名为" 客户/服务器游戏内协议设计和优化中的延迟补偿方法"的论文.我正在使用通过socket.io连接到客户端的node.js服务器进行实时多人游戏,我对下面详述的原则有几个问题:

实体插值

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

客户端预测

预测是客户端预测本地玩家行为的影响而不等待服务器确认它们的概念.当服务器命令到达时,将对服务器命令测试实体的预测状态,直到检测到匹配或不匹配为止.

滞后补偿

滞后补偿是服务器在处理[用户输入]时使用播放器延迟倒带时间的概念,以便查看播放器在发送命令时看到的内容.与预测相结合,滞后补偿可以帮助抵御网络延迟,从攻击者的角度来看几乎消除它.

  • 这些原则是否适用于TCP,因为它们对UDP有效,是否会在实现方面有任何差异?我可以看到实体插值不需要防止数据包丢失,但就此而言.

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

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

任何帮助将非常感激.

pse*_*ma4 2

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

虽然您不必处理数据包丢失的问题,但您将不得不处理更长的传输时间。TCP 比 UDP 慢,您必须在实时多人游戏中缓解这一问题。我认为这些原则在根本上仍然适用。

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

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

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

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