2017-04-22 98 views
11

我正在開發使用Libgdx的流行遊戲Pong的在線版本。我已經開始使用Google的Realtime Multiplayer服務在玩家之間發送遊戲數據,但我無法弄清楚如何解決我面臨的同步問題。如何同步播放服務實時多人遊戲

此時發送的信息是玩家的槳,所以當我移動時,我將新的位置發送給對手。當對手收到它時,時間已經過去並且同步丟失。

我知道在使用最慢連接的移動之間應該有一些等待時間,但是如何讓它看起來平滑呢?

回答

1

這個問題並沒有明確的答案,但有很多策略讓人們適應解決這種情況。

從使用UDP協議開始(如果你使用基於套接字的通信,我會推薦你​​,因爲每個ms都在實時遊戲中很重要,我認爲google api有UDP,這是不可靠的消息傳遞。 -api)用於消息交換到插值,航位推測,客戶端預測等等。

這是一個非常大的話題在這裏回答。當我製作我的多人坦克遊戲時,我做了一些事情讓事情看起來更平滑。

  1. 使用UDP協議發送移動到服務器。
  2. 我會在客戶端爲玩家保留兩個條目。一個是當前值,另一個是要設置的值。然後我將乘以一個平滑因子如0.3f的當前值直到它不等於要設置的值。 (這有助於減少抖動)
  3. 我會通過TCP發送重要消息。

我提到的觀點描述了我在我的遊戲中所做的事情,但可以在任何情況下使用。雖然我會建議你閱讀本網站上的文章,名字叫做Gaffer on Games

這個領域又很大,沒有答案可以幫助你。我在這個話題上做了論文,但仍不能給你一個明確的答案。您將不得不閱讀大量文章,並根據您的需求建模您的學習內容。

0

您需要使用某種類型的Animation Interpolation這將意味着槳不「瞬移」到新的位置,但慢慢地開始移動有,在接收到新的位置後。