我一直在阅读Valve的多人游戏网络文章,该文章改编自Yahn Bernier于2001年发表的论文《客户端/服务器游戏协议设计和优化中的延迟补偿方法》。我正在使用连接到客户端的node.js服务器和socket.io制作实时多人游戏,并对下面详细说明的原则有几个问题:
实体插值
引用:
[插值]通过缓冲服务器更新并平滑地插入它们之间的差距来防止这种情况通常会导致的抖动运动。它还可以防止由数据包丢失引起的故障。
客户端预测 引用:预测是指客户端预测本地玩家行为的效果而不必等待服务器确认。当服务器命令到达时,将测试实体的预测状态,直到检测到匹配或不匹配为止。
延迟补偿 引用:延迟补偿是指服务器使用玩家的延迟在处理[用户输入]时倒回时间,以查看命令发送时玩家所看到的内容。结合预测,延迟补偿可以帮助对抗网络延迟,从攻击者的角度几乎将其消除。
这些原则适用于TCP和UDP吗?是否有实现上的区别? 我认为实体插值不需要保护数据包丢失,但仅此而已。
我能否使用UDP和Node.js在服务器和Web浏览器之间进行相互通信?
由于这篇论文已经超过十年了,这些原则是否仍在使用中,或者出现了其他技术?
非常感谢您的任何帮助。