2

我正在 Unity3D 中开发多人游戏,我需要一些同步方面的帮助。其中一个玩家充当服务器,其他人都是客户端。在游戏的某个时间点,所有玩家都有 10 秒的时间来回答问题,然后才能进入游戏的下一步。他们回答问题所用的时间被记录下来并用于找出最快的答案,因此所有客户同时启动他们的计时器是非常关键的。

就消息传递而言,构建此结构的最佳方法是什么?这些消息将包含哪些信息?

我尝试过/想过的事情:

  • 服务器启动计时器并告诉每个人都这样做。问题:如果任何客户端滞后,问题会在不同时间弹出。
  • 服务器启动计时器并告诉每个人计时器启动的日期时间。问题:如果客户滞后,他会立即跳到特定时间而不是开始。

提前致谢。

4

2 回答 2

1

根据您为谁开发游戏,您总是可以让客户处理时间安排。让服务器向客户端发出信号以显示问题并启动计时器,然后等待响应。然后,每个客户端都可以为用户计时,并将时间连同用户的回答一起提供给服务器。只要服务器为客户端提供几秒钟的“缓冲”,它就应该以准确的时间接收所有答案,无论有多少延迟。

唯一的问题是,同样取决于您的受众,用户可能会篡改发送的数据。

于 2012-12-03T17:33:02.553 回答
1

您可以让服务器发出启动计时器的信号以及日期时间。与其在消息发送的同时启动计时器,不如给客户端一个在消息发送几秒后发生的 DateTime。这样一来,客户就不会在收到消息后立即启动计时器,从而让那些有滞后的人“赶上”。(例如,信号在上午 7:00:00 发送,包含时间 7:00:05。当客户端收到消息时,他们等待启动计时器直到 7:00:05,因此所有计时器都可以在同时。)

于 2012-12-04T18:59:41.600 回答