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

我一直在阅读关于多玩家networking的Valve 文章,这篇文章是从Yahn Bernier 2001年的论文中提出的,该文章称为客户端/服务器游戏内协议devise和优化中的延迟补偿方法 。 我正在使用通过socket.io连接到客户端的node.js服务器来制作一个实时的多人游戏,关于以下原则我有几个问题:

实体插值

[Interpolation]可以防止抖动,这通常会导致通过caching服务器更新,然后播放它们之间的平滑插补之间的差距。 它还可以防止丢包造成的故障。

客户端预测

预测是客户端的概念,预测本地玩家的行动的影响,而不用等待服务器来确认他们。 实体的预测状态在服务器命令到达时被testing,直到检测到匹配或不匹配为止。

滞后补偿

延迟补偿是服务器使用播放器延迟来处理[用户input]时的后退时间的概念,以便查看玩家在命令发送时看到的内容。 与预测相结合,滞后补偿可以帮助打击networking延迟到几乎从攻击者的angular度消除这一点。

  • 这些原则是否适用于TCP,和UDP一样,在实现上会有什么不同? 我可以看到实体插值不需要防止数据包丢失,但是这样做。

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

  • 既然论文已经十多年了,这些原则还在使用还是有其他技术出现呢?

任何帮助将非常感激。

  • 这些原则是否适用于TCP,和UDP一样,在实现上会有什么不同? 我可以看到实体插值不需要防止数据包丢失,但是这样做。

虽然你不必处理丢包,但你将不得不处理更长的运输时间。 TCP比UDP慢,你将不得不在实时多人游戏中减轻这个负担。 我认为这些原则仍然适用于基层。

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

一般来说,还没有。 至less不是没有某种forms的浏览器扩展或插件 – WebSockets使用TCP。 也就是说,WebRTC(更具体地说,PeerConnection API)即将到来。 在实施数据通道时,理论上讲,UDP通信应该是可能的。

  • 既然论文已经十多年了,这些原则还在使用还是有其他技术出现呢?

听说他们不再被使用,我会感到非常惊讶 – 你引用的文章实际上是游戏程序员必读的内容。 新技术同样没有出现,虽然我几年来一直关注这个领域的发展。