2013-05-13 41 views
2

我正在實現Android的在線國際象棋,並且我有一個關於如何用其他玩家的動作更新玩家的問題。在線遊戲:用增量更新客戶或用新狀態更新客戶端

例如讓我們想象玩家1將他的塔從a1移動到a7。

我該怎麼辦?

  • 發送到Player2:「A1至A7」(以某種全體董事的校驗,以避免錯誤)
  • 發送到Player2全板與多達32個
+2

我會使用鎖步,只是發送「a1到a7」。鎖步將確保雙方運行相同的模擬。不應該很難實現,因爲它只有2人。 – Nikki 2013-05-13 06:53:47

+3

發送增量總是比發送完整遊戲狀態要好。想想像Minecraft這樣的遊戲,有數千個瓷磚。如果你不得不在多人遊戲中告訴每個客戶'This tile?沒有改變。這塊瓷磚?沒有改變。 * 10000'你會用完帶寬。 Okey! – Patashu 2013-05-13 06:55:18

+0

Okey!謝謝=) – Addev 2013-05-13 07:11:09

回答

4

支持兩者。

  • 事件中僅發送增量,但
  • 允許客戶端請求滿狀態,以任何理由,通過一個單獨的API。
  • 包含並增加每個事件的序列號,以便客戶端檢測錯過的更新是微不足道的。