【发布时间】:2012-07-11 06:53:14
【问题描述】:
我一直在阅读 Valve article on multi-player networking,它改编自 Yahn Bernier 2001 年名为 Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization 的论文。我正在使用通过 socket.io 连接到客户端的 node.js 服务器制作实时多人游戏,我对下面详述的原则有一些疑问:
[插值] 防止抖动运动,这会 通常通过缓冲服务器更新然后播放它们来导致 之间的间隙平滑地插入。它还可以保护 防止丢包引起的故障。
预测是客户预测事件影响的概念 本地玩家的操作无需等待服务器确认。 实体的预测状态是针对服务器命令进行测试的,因为它们 在检测到匹配或不匹配之前到达。
延迟补偿是服务器使用玩家延迟的概念 在处理 [用户输入] 时倒回时间,以便查看 玩家在发送命令时看到。结合预测, 延迟补偿可以帮助对抗网络延迟 从攻击者的角度来看,几乎可以消除它。
这些原则是否适用于 TCP,就像它们适用于 UDP 一样,在实现上会有什么不同吗?我可以看到实体插值不需要防止数据包丢失,仅此而已。
我什至可以使用 UDP 和 Node.js 在服务器和网络浏览器之间进行通信,反之亦然吗?
由于这篇论文已有十多年的历史,这些原理是否仍在使用或出现了其他技术?
任何帮助将不胜感激。
【问题讨论】:
标签: node.js networking tcp udp game-engine