同步游戏(MMORPG)客户端和服务器之间的时间/事件?

时间:2012-04-06 04:00:35

标签: java actionscript-3 tcp client-server latency

我目前正在使用Java服务器端和as3客户端。我想知道是否有一个银弹来同步他们之间的时钟。在可变延迟和可变时钟速度之间,似乎每个数据包都需要一个时间戳。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

  1. 将代码放入服务器和客户端以发送和接收ping。
  2. 每次客户端连接时,都会从客户端向服务器发送ping。
  3. 将当前时间记录为发送时间。
  4. 当客户端收到ping时,记录接收时的当前时间。
  5. 通过将发送时间减去接收时间并将其除以2来获得时间延迟。
  6. 让服务器将当前时间发送给客户端。
  7. 从发送的时间服务中减去时差。
  8. 将客户时间设置为步骤6的时间。
  9. 我不确定这是否能100%准确地发挥作用,但我希望这会有所帮助!

答案 1 :(得分:0)

不,没有银弹。你将不得不即兴发挥。时间戳是一个好主意。 此外,尽量减少在服务器上完成的计算。不要模拟不相关的东西。你认为的东西会破坏你的游戏逻辑。让客户计算其余部分,并只将结果广播给你的订阅者。