我正在为Facebook构建一个基于HTML5 / Websockets的多人画布游戏,我现在已经在服务器代码上工作了几天。虽然游戏非常简单,2d自上而下,WSAD控制和鼠标点击射击x / y光标 - 我以前从未做过实时多人游戏。我已经阅读了一些很棒的文档,但我希望能够概述我对该主题的一般理解,并且有人可以验证方法和/或指出需要改进的地方。
权威多人游戏服务器,客户端预测和实体插值(以及下面的问题)
问题
1:有可能使用NTP时间并在两者之间同步吗?
5点时间戳?这里的主要目的是为每个数据包加上时间戳
7:根据客户端的不同延迟,输入的输入命令将不同步。我猜这个需要在应用之前进行排序吗?或者这有点过头了吗?
在9:是lerp总是一个固定的金额?例如0.5f?我应该做一些更聪明的事吗?
我知道很多问题,但任何帮助都会受到赞赏!!
答案 0 :(得分:1)
在1:你有点过分思考,实际上你要做的就是将服务器时间发送到客户端,然后在更新循环中增加服务器时间,以确保你能够跟踪服务器时间。每次同步都会将您自己的值设置为来自服务器的值。对这部分非常谨慎,验证服务器端的每个速度/时间,否则你将获得非常容易做到但非常讨厌的黑客攻击。
在5:当您通过UDP进行此通信时,时间戳很重要,因为除非您特别指定,否则无法确保数据包的顺序。通过websockets它不应该是一个大问题,但它仍然是一个好的做法(但要确保验证这些时间戳,或快速确保)。
7:可能是一个过度杀手,取决于比赛的类型。如果您的客户端具有较大的延迟,他们将根据定义向服务器发送较少的输入,因此请确保您只处理在处理点之前的那些输入并将剩余的队列排入下一次更新。