2012-04-17 10 views
18

Game CenterのGKMatchクラスを使用して、切断されたプレーヤーを適切に再招待する方法を理解することができません。ゲームは1対1のゲームです。Game Centerのプレーヤーを再接続する

私は切断プレーヤーを検出したとき、私はこの呼び出しで試合にその特定のプレーヤーをREINVITEしよう:

[[GKMatchmaker sharedMatchmaker] addPlayersToMatch:theMatch matchRequest:request completionHandler:^(NSError *error) 

行うことになっていますので、これは動作します。他のプレイヤーが接続を確立すると、彼は再獲得され、試合は続行できます。しかし、これは私が解決できなかった問題を残す。シナリオは次のとおりです。

  • プレーヤー1が切断されます。
  • プレーヤー1が切断されている間、プレーヤー2は試合を離れます。
  • プレーヤー1は、プレーヤー2に接続できなくなったことを再接続して検出し、プレーヤー2に再接続しようとします。
  • プレイヤー2はmatchmakerViewControllerを使って新しいマッチを探しています。
  • プレーヤー2は突然、彼が残したプレーヤー1との古い試合に参加します。

私の問題は、matchmakerViewControllerが再招待されている場合、古いマッチに参加することです。この再接続のシナリオを処理するより良い方法があるので、人々は古い試合に招待されることはありませんか?

+0

私のコードでは、1人プレイヤーが切断されたときに、他のプレイヤーが自動的にゲームから切断されることが起こっています。そういうことでしょうか?プレイヤー1のこの切断を避けるには –

答えて

0

プレイヤー2が切断時にタイムアウトする代わりに終了機能を使用したことを検出した場合、私は同じゲームでプレイヤー1からの再招待を防ぎます。

+0

プレーヤー1は、切断されますか? –

1

まだ接続されているプレーヤーに、再招待する、または終了するオプションを提供することができます。また、他のプレイヤーが離れると残ったプレーヤーに対戦依頼を削除することもできます。

+0

私の問題は再招待です。プレイヤー1が新しいゲームを探している間、プレイヤー1はプレーヤー2を再招待します。これは、プレーヤー2が彼が残したゲームに再招待されるため、問題です。私は彼が離れるときを知らないので、他のプレイヤーが離れると、仲間のリクエストを取り除くことはできません。彼らはこの時点で接続されておらず、プレーヤーが離れるかどうかは分かりません。 –

関連する問題