2016-05-16 2 views
6

Google Playゲームサービスのリアルタイムマルチプレイヤーを実装しています。他のプレイヤーが意図せずに離脱したかどうかを検出して再接続する - Googleがリアルタイムマルチプレイヤーを再生する

現在、あるクライアントでWIFIをオフにすると、他のクライアントは接続が失われたことを検出しません。 PeerDisconnectイベントは呼び出されません。

1 - APIは、ピアがまだ接続されているかどうかを確認するために何かを提供しますか?

2 - プレイヤーに部屋に再接続させる方法はありますか?

答えて

2

1 - APIは、ピアがまだ接続されているかどうかを確認するために何かを提供しますか?

Connecting playersに記載されているように、RoomStatusUpdateListenerコールバックを使用して参加者の接続状態を監視できます。記載されているとおり:

すべてのプレーヤーが接続されたときに通知するには、RoomUpdateListener.onRoomConnected()コールバックを使用できます。ゲームでは、RoomStatusUpdateListenerコールバックを使用して参加者の接続状態を監視することもできます。参加者の接続ステータスに基づいて、ゲームはゲームセッションを開始するかキャンセルするかを決定できます。

2 - プレイヤーに部屋に再接続させる方法はありますか?

リアルタイムマルチプレイ - Gameplayのように述べている:

部屋のために参加者の必要数を接続したら、部屋を「いっぱい」であるとし、ゲームプレイを開始することができます考えられています。参加者が部屋に入った後、あなたのゲームは彼らが部屋から出るのを許すことができます(事実上ゲームから脱落することができます)。しかし、新しいプレーヤーは、「満たされた」(参加者が退場した場所を埋めることさえできません)の後、部屋に参加することはできません。 best practice for Real-time multiplayerを参照することに加えて

、:あなたが適切に部屋を残していない場合は、Googleがゲームをプレイ

サービスがクライアントにイベントや招待状の通知を送信し続けます。これらのシナリオのいずれかが発生すると、アクティブルームから離れる必要があります。

  • ゲームプレイが終了しました(たとえば、プレーヤーが試合に勝ったなど)。
  • ゲームがバックグラウンドに入るとき。 Androidの上で
  • 、とき余地を残して:
    • プレイヤーが待合室UIでゲームをキャンセルします。
    • onActivityResult()コールバックで返される応答コードは GamesActivityResultCodes.RESULT_LEFT_ROOMです。
    • アクティビティonStop()が呼び出されます。これは、あなたの アクティビティが破棄されている可能性があります。この場合、客室を離れて disconnect()に電話してください。

は、これらのリンクはすべてあなたの懸念をカバーしてい願っています。ハッピーコーディング! :)

+1

1 - ありがとう、私は、インターネットがオフになっている参加者の接続状態が他の参加者のために変更されているかどうかを調べます。 2 - 短い答えは、退室後に同じ部屋に再接続する方法がないことです。 :) – Uzi

+1

UPDATE:第1の質問のためのあなたの解決策をテストしました - 参加者のインターネット接続が切断されたとき、または単にデータとWifiを切り替えるときでも、参加者の接続状態は変わりません。他の参加者に休暇室を呼び出すまで、参加者は接続されていることがまだわかります。しかし、あなたは今メッセージを送ることはできません! – Uzi

+0

私は同じ問題を抱えていますし、@Teyamが役に立たないので、RoomStatusUpdateListenerコールバックを実装しています。ピアが接続を失った場合、APIはコールバックを呼び出しません。私はこれを解決するつもりですが、クライアントに接続しているかどうかを繰り返しpingするウォッチドッグタイマーを設定します。 – nradk

関連する問題