2016-08-11 7 views
0

Google PlayサービスとlibGDXフレームワークが提供するリアルタイムマルチプレーヤーを使用して2人のプレイヤーのための簡単なゲームを開発しています。基本的に私はGoogleのtutorialのコードスニペットを使用しています。プレイヤーが招待状で接続したときにリアルタイムメッセージが機能しない

プレイヤーがオートマッチ機能で接続されている場合、すべて正常に動作しますが、招待状を受け入れるときに何か問題が発生しています。必要なコールバックはステータスコードSTATUS_OKで呼び出されますが、を受け入れたプレーヤーは招待状で信頼できるメッセージを他者に送信することはできません。この招待状を送信したプレーヤーはメッセージを送信でき、2番目のデバイスに到着します。

GPGS + libGDXに関する既知の問題はありますか?たぶんスレッド(このスレッドでは、Games.RealTimeMultiplayer.join()などのメソッドを呼び出す)この場合?

この機能を私の既存のゲームに追加できなかったとき、私はGPGS + libGDXで一から新しいアプリケーションを実装しようとしたので、私のコードはすべて上記のリンクに似ていると確信しています。

はまた、私は、複数のデバイス上で両方の私のアプリをテストしている、といつも同じだ:

  • オートマッチ - うまくすべてを。
  • invite - 「一方向」のみで動作します。招待者はメッセージを送信できませんが、ログやコールバックにエラーは発生しません。
  • 招待を受け入れたプレイヤーの視点から

出力例:あなたはその部屋が接続されて見ることができます。このスニペットで

08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: onJoinedRoom - success 
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: Room participants: 
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: HateCrub - p_CMCMr4mRp_K63QEQAQ 
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: AlexeyGorovoy - p_CMCMr4mRp_K63QEQAg 
08-11 18:35:52.219 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onPeerJoined - [p_CMCMr4mRp_K63QEQAQ] 
08-11 18:35:53.979 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onP2PConnected - p_CMCMr4mRp_K63QEQAQ 
08-11 18:35:54.419 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onConnectedToRoom 
08-11 18:35:54.429 14173-14173/com.teremok.taptapparty D/PartyRoomStatusUpdateListener: onPeersConnected - [p_CMCMr4mRp_K63QEQAQ] 
08-11 18:35:54.439 14173-14173/com.teremok.taptapparty D/PartyRoomUpdateListener: onRoomConnected - success 
08-11 18:35:54.439 14173-14173/com.teremok.taptapparty D/AndroidMultiplayer: sending message: hello#AlexeyGorovoy# 
08-11 18:35:54.439 14173-14173/com.teremok.taptapparty D/AndroidMultiplayer: message sent failed - network error (STATUS_REAL_TIME_MESSAGE_SEND_FAILED) 
08-11 18:35:54.779 14173-14173/com.teremok.taptapparty D/PartyMessageReceiver: onMessageReceived: hello#HateCrub# 

、他のピアがなどに接続されたが、その後、このプレーヤーは送信できませんメッセージは正常に受信されます。

+0

エラーログはありますか?この[documentation](https://developers.google.com/games/services/common/concepts/realtimeMultiplayer#sending_game_data)から、参加者は部屋に接続したときにのみメッセージを受信できることを確認してください。 – abielita

+0

両方の参加者のログにエラーはありません。どちらも接続されています。 (私がデバッグ中に見たように) – AlexeyGorovoy

+0

また、ポスト参加者のログに表示されるように、メッセージを受信することはできますが、送信することはできません。 – AlexeyGorovoy

答えて

0

そして、何日もして、私は愚かな間違いを見つけました。私はクライアントが参加者リストの最初のエントリとして自分自身の参加者IDを取得できると思った。

それは(オートマッチで作品が)現在のプレイヤーの参加者IDを取得する間違った方法です:

String myPlayerId = Games.Players.getCurrentPlayer(gameHelper.getApiClient()).getPlayerId(); 
    String myPartId = room.getParticipantId(myPlayerId); 

私はこのことを願っています:ここで

String myPartId = room.getParticipants().get(0) // I was doing so :(

正しい方法です誰かがそのような間違いを避けるのを助けるでしょう。

関連する問題