MatchmakerViewController から GKMatchmaker に切り替えると、別々のデバイス (両方とも iPhone 5s) で実行されている 2 つのサンドボックス ゲーム センター アカウントが同じマッチに接続しなくなりました。どちらも expectedPlayerCount が 0 を超えていることを示しています。
ゲーム センターを使用したマルチプレイヤー ゲームの作成に関する RayWenderlich チュートリアルに従いました。それはリアルタイムであるはずであり、そのように機能していました。GKMatchmakerViewController を使用すると、すべてが完全に正常に機能しました (自動マッチングと招待の両方)。ただし、コードのブロックを 1 つ切り替えるとすぐに機能しなくなります。私はこれをしばらくいじっていましたが、アップルのドキュメントはまったく役に立たないようです。私がさらに何をする必要があるか知っている人はいますか?
func findMatchWithMinPlayers(minPlayers: Int, maxPlayers: Int, viewController: UIViewController, delegate: GameKitHelperDelegate) {
if enableGameCenter == false {
return
}
matchStarted = false
gkMatch = nil
gkDelegate = delegate
viewController.dismissViewControllerAnimated(false, completion: nil)
var request = GKMatchRequest()
request.minPlayers = minPlayers
request.maxPlayers = maxPlayers
if pendingRecipients != nil {
request.recipients = pendingRecipients!
}
GKMatchmaker.sharedMatchmaker().findMatchForRequest(request, withCompletionHandler: { (match: GKMatch!, error: NSError!) -> Void in
self.gkMatch = match
self.gkMatch?.delegate = self
println(match)
if self.matchStarted == false && match.expectedPlayerCount == 0 {
self.lookupPlayers()
}
})
}
これと機能していたものの唯一の違いは、これには GKMatchmakerViewController と Delegate の代わりに GKMatchmaker があることです。