0

我正在使用Google Api創建一個Real Time Multiplayer - 使用libGDX自上而下的射擊遊戲。GoogleApi Real Time Multiplayer推送更新

球員位置上的 「渲染()」 方法的每一個電話送過來 「sendUnreliableMessage」:

  • 渲染()調用。
  • 「設備A」通過「sendUnreliableMessage」發送本地播放器位置(x,y)和移動方向。
  • 「設備B」收到消息。在最後一個位置(x,y)和新位置(x,y)之間進行插值。
  • 「Device B」將本地敵方玩家移動到新位置。 (插值和最終位置)

由玩家拍攝的子彈送過來「sendReliableMessage」是這樣的:

  • 玩家按下「點火」按鈕。
  • 子彈對象在本地「設備A」上創建並開始飛行。
  • 子彈創建位置(x,y)和方向由「sendReliableMessage」發送給其他玩家。
  • 「Device B」接收到消息,並在接收到的起始x和y上本地創建一個Bullet對象,並使其在接收到的方向飛行。

移動消息在每個「render()」調用上發送。 - 取決於每秒30-60次的FPS。

子彈消息只在按下「fire」按鈕時發送。只有一次。只有子彈的「創造位置」。兩個設備都會從這個位置本地計算更新。

我的問題和問題是:

  • 更新這樣的球員位置的方式往往對不對?
  • 鏡頭正在迷失。 1-3這是大約50-80%的封裝損耗。

我測試的只是移動時發送玩家位置的更新。然後靜止拍攝4次(沒有「玩家位置'不可靠的消息'被髮送) 和所有4個鏡頭出現在」設備B「

這讓我覺得」reliableMessages「迷路時,我發送」unreliableMessages「每次幀更新(大約每秒30-60次)

回答

0

如果我們完全依賴Sending game data,按照我的理解,您可以使用Google Play遊戲服務提供的兩種消息傳遞協議實現發送數據消息。要回答您的問題:

1.像這樣更新玩家位置常常是對的嗎?

您仍然可以選擇使用兩種給定的消息協議中的任何一種。只要選擇最適合你的遊戲,然而,請注意,如果消息在傳輸中丟失或無序接收,你的應用程序負責確保遊戲的行爲正確。

2.鏡頭正在迷失。 1-3這是大約50-80%的封裝損耗。

可靠的消息傳遞,數據交付,完整性和訂購都有保證。您可以選擇使用回叫通知送貨狀態。但是,爲了避免丟失一些更新,請注意,您可以發送可發送可靠或不可靠消息的最大郵件大小。

除了文檔中給出的內容之外,本SO帖子中的建議 - Real Time Multiplayer Best way for pushing updates on android也可能有所幫助。

+0

我感謝您花時間寫出答案,但您真的沒有幫助我。我已經意識到這兩個消息傳遞協議,並且已經在我的帖子中解釋了我正在使用哪一個,並且我使用插值來解決丟包問題。 - 我也完全知道谷歌文檔寫和解釋什麼,這篇文章的全部內容是即使「可靠的消息」的「交付,inegrity,和訂購」不能保證。 – MarvinJ