19

Game Center の GKMatch クラスを使用して、切断されたプレイヤーを適切な方法で再招待する方法がわかりません。ゲームは1対1のゲームです。

切断されたプレーヤーを検出すると、次の呼び出しでその特定のプレーヤーを試合に再招待しようとします。

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

これは想定どおりに機能します。他のプレイヤーが接続を確立すると、彼は再招待され、試合を続行できます。しかし、これは私が解決できなかった問題を残します。シナリオは次のとおりです。

  • プレーヤー 1 が切断されます。
  • プレーヤー 1 が切断されている間に、プレーヤー 2 が試合から退出します。
  • プレーヤー 1 が再接続し、プレーヤー 2 への接続が失われたことを検出し、プレーヤー 2 への再接続を試みます。
  • プレーヤー 2 は、matchmakerViewController を使用して新しいマッチを探しています。
  • プレーヤー 2 は、彼が退出したプレーヤー 1 との古いマッチに突然参加します。

したがって、私の問題は、プレイヤーが再招待された場合、matchmakerViewController が古い試合に参加できるようにすることです。この再接続シナリオを処理して、人々が古い試合に招待されないようにするより良い方法はありますか?

4

2 に答える 2

1

まだ接続しているプレーヤーに、再招待するか終了するかのオプションを提供できます。他のプレイヤーが退出した場合、退出したプレイヤーへのマッチメイキング リクエストを削除することもできます。

于 2012-06-18T15:14:18.773 に答える
0

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

于 2012-05-24T23:56:09.307 に答える