2017-07-08 4 views
0

私は奇妙な問題に遭遇しました。私のマルチプレイヤーゲームのユーザーは、彼らが(3まで)でプレーしたいどのように多くの反対者を決定し、そして、彼らは私がthis-Googleリアルタイムのマルチプレイヤーオートマッチは、1人以上の相手に対しては機能しません。

Bundle am = RoomConfig.createAutoMatchCriteria(opponentCount, opponentCount, 0); 

ようautoMatchCriteriaを作成することを決定し、ルーム -

// build the room config: 
     RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder(); 
     roomConfigBuilder.setAutoMatchCriteria(am); 
     RoomConfig roomConfig = roomConfigBuilder.build(); 

     // create room: 
     Games.RealTimeMultiplayer.create(((MainActivity) getActivity()).getGoogleApiClient(), roomConfig); 
を作成した後で

これにより、RoomUpdateListenerのonJoinedRoom()またはonRoomCreated()がトリガーされます。そして、ユーザーが待っている間RoomStatusUpdateListenerのonPeersConnected()で部屋ステータスの更新を取得し、ピアが接続され、最低限必要なプレーヤーが接続された後にゲームプレイを開始することができます。

しかし、ユーザーが複数の対戦相手を選択した場合、onPeersConnected()は一度だけ呼び出され、接続されたプレーヤーは部屋を離れるまで無期限に待機します。

私はグーグルの待合室でそれを試してみました。

誰かが私に間違っていることを指摘できれば、大きな助けになるでしょう。ありがとうございました。

答えて

0

threadから、minを1に設定して最大値を3に設定すると、2人のゲームが得られる可能性があります。プレイヤーを最大3人にするには、MIN_OPPONENTSMAX_OPPONENTSを3に設定し、コードからゲーム開始ロジックを処理します。 ロジックが複雑になる場合は、「サーバー」を選ぶことが理にかなっているかもしれません。たとえば、参加者IDが最も低い(辞書的に)クライアントがサーバーであると言って、これを行うことができます。 「ゲームを作った人は誰でも」ということは、自動化すると誰もがゲームを作ったと思っているので、いいことではありません。これが役立つことを願っています!

関連する問題