2012-04-06 214 views
6

我目前正在使用Java服务器端和as3客户端。我想知道是否有一颗银色子弹用于同步它们之间的时钟。在可变延迟和可变时钟速度之间,似乎每个数据包都需要一个时间戳。在游戏(MMORPG)客户端和服务器之间同步时间/事件?

谢谢!

+0

NTP或其变体? – Thomas 2012-04-06 04:29:06

+0

@Thomas这对系统时代很有用 - 但这更多的是事件同步和延迟问题,并避免客户端欺骗或渲染[不可信]的不准确信息等。 – 2012-04-06 04:51:45

+0

在服务器端和客户端进行建模。将客户端输入限制为鼠标和键盘的输入。你无法100%准确的时间,将不得不作出估计和逐步纠正行动。 – dqhendricks 2012-04-06 05:02:40

回答

0

不,没有银弹。你必须即兴创作。时间戳是个好主意。 此外,尽量保持在服务器上完成的计算的最小化。不要模拟不相关的东西。只是你认为会破坏你的游戏逻辑的东西。让客户计算剩下的东西,只将结果广播给你的用户。

2

这只是我的头顶,没有任何代码。

  1. 将代码放入服务器和客户端以发送和接收ping。
  2. 每次客户端连接时都会从客户端发送到服务器的ping。
  3. 将当前时间记录为发送时间。
  4. 当客户端收到ping时,在接收时记录当前时间。
  5. 通过发送时间减去接收时间得到时间延迟并除以2.
  6. 让服务器将当前时间发送到客户端。
  7. 减去发送的时间服务器的时间差。
  8. 步骤6.

设置客户端的时间的时候,我不知道这是否能够准确工作100%,但我希望这有助于!

+1

是的,我认为,这是正确的方法。从概念上讲,您必须在每个客户端以及服务器上存储时间戳。并通过了解时间偏移来调整每个人的时间。 – 2012-04-30 04:09:02

相关问题