2012-04-06 84 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

相關問題