我正在Unity3D中開發多人遊戲,我希望有一些同步幫助。其中一名球員充當服務器,其他人都是客戶端。在遊戲的某個時刻,所有玩家在進入下一步遊戲之前都有10秒的時間回答問題。他們回答問題所需的時間被記錄下來並用於找出最快的答案,所以所有客戶同時啓動他們的計時器非常重要。在每個客戶端同時啓動計時器
就信息傳遞而言,構造這種結構的最佳方式是什麼?這些消息將包含哪些信息?
事情我已經試過/念頭:
- 服務器開始計時,並告訴大家這樣做。問題:如果任何客戶滯後,這個問題會在不同的時間出現。
- 服務器啓動計時器並告訴大家計時器啓動的DateTime。問題:如果客戶滯後,他會立即跳到特定的時間而不是開始。
在此先感謝。
我現在可以篡改了,因爲這更像是一個概念驗證。然而,這也與我的第一個解決方案有相同的問題,即根據他們的滯後時間,他們將在不同的時間啓動他們的計時器,因爲來自服務器的信號來得遲。 – pek
@pek如果存在滯後並且特定用戶晚於其他用戶給出問題,則只要客戶計時器用於記錄開始和結束時間,問題出現與回答之間的時間量應該是準確的。我想我要說的是,如果答案是相對於客戶來說是可以的,這應該是有效的 - 即使有滯後。 – Curlystraw
@pek客戶會將他們的完成時間返回到服務器,相對於他們自己的開始時間。在宣佈獲勝者之前,服務器只需等待所有N個響應進入。如果時間發生在客戶端,則需要處理的唯一問題是如果用戶在應答之前斷開連接,會發生什麼情況。 – Jerdak