0

Google Apiを使用して、リアルタイムマルチプレイヤーを作成しています - libGDXを使ったトップダウンシューティングゲーム。GoogleApiリアルタイムマルチプレイアップデートを更新

プレーヤーの位置は、 "レンダリング()" メソッドの呼び出しのたびに "sendUnreliableMessage" 経由で送信されます。

  • はレンダリング()と呼ばれます。
  • "デバイスA"はローカルプレーヤーの位置(x、y)と移動方向を "sendUnreliableMessage"に送信します。
  • "デバイスB"がメッセージを受信します。最後の位置(x、y)と新しい位置(x、y)の間を補間します。
  • 「デバイスB」は、ローカル敵プレイヤーを新しい位置に移動させます。選手たちが撮影し

弾丸がこのように「sendReliableMessage」経由で送信されている(補間して最終的な位置):

  • プレイヤーは「火」ボタンを押します。
  • Bulletオブジェクトは、ローカルの「Device A」で作成され、飛行を開始します。
  • 弾丸の作成位置(x、y)と方向は、「sendReliableMessage」によって他のプレイヤーに送信されます。
  • "デバイスB"はメッセージを受信し、受信した開始xおよびyにローカルで箇条書きオブジェクトを作成し、受信方向に飛行させます。

移動メッセージは、それぞれの "render()"呼び出しで送信されます。 - 毎秒約30〜60回FPSに依存します。

「火災」ボタンが押された場合にのみ、メッセージが送信されます。 1回だけ。そして弾丸の "創造位置"だけ。両方のデバイスは、この位置からローカルでの移動に関する更新を計算します。

私の問題や質問は以下のとおりです。このようなプレーヤーの位置を更新

  • は、多くの場合、右の方法は何ですか?
  • ショットが失われています。 1-3の4。パッケージの損失は約50-80%です。

私は移動時にプレイヤー位置の更新を送信するだけでテストしました。それから私は "reliableMessages"が "unreliableMessages"を送信したときに失われていると思うのですが、

答えて

0

純粋にSending game dataに頼っていれば、Google Playゲームサービスが提供する2つのメッセージングプロトコルを使用してデータメッセージを送信することができます。

質問にお答えします:

1.このようなプレーヤーの位置を更新するのは、しばしば正しい方法ですか?

あなたはまだ与えられた二つのメッセージング・プロトコルのいずれかを使用することを選ぶことができます。ただし、あなたのアプリに最適なものを選んでください。メッセージが送信中に落ちたり、順序が乱れると、ゲームが正しく動作するようにする責任があります。

2ショットが迷子にされています。 1-3の4。パッケージの損失は約50-80%です。信頼性の高いメッセージング、データ配信、完全性、および順序付き

が保証されています。コールバックを使用して、配信ステータスの通知を選択できます。しかし、いくつかのアップデートを失うのを避けるために、信頼性の高いメッセージまたは信頼できないメッセージの両方に対して送信できるメッセージの最大サイズがあることにも注意してください。ドキュメントに与えられたものに加えて

、このSOポストで提案 - Real Time Multiplayer Best way for pushing updates on androidも役立つかもしれません。

+0

私は答えを書くためにあなたの時間を割いてくださったことを感謝していますが、実際にすべてのことで私を助けていませんでし。私はすでに2つのメッセージングプロトコルを認識しており、すでに私のポストで説明しています。どこで使用していますか、私は補間を使用してパッケージ損失の問題を解決しています。 - また、私は完全にGoogleドキュメントが書いて説明していることを認識しています、この投稿の全体的なポイントは、 "reliableMessage"でさえ、 "配達、不誠実、および注文"は保証されていないということです。 – MarvinJ

関連する問題