Einige Fragen zu startBrowsingForNearbyPlayersWithReachableHandler

Ich versuche, mit GameKit die lokale Matchmaking-Funktion zu aktivieren[[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:]. Im Wesentlichen versuche ich, lokale Matches ohne Benutzeroberfläche zu implementieren: Solange sich ein Spieler in meiner Nähe befindet, möchte ich eine Verbindung herstellen und ein Match starten. Vor allem ichnur Ich möchte dies für lokale Spieler tunnoch nie automatisch über das Internet abgleichen möchten.

Ich habe Game Center für meine App in iTunes Connect aktiviert und mich auf jedem Gerät, das ich zum Testen verwende, für ein anderes Sandbox-Konto angemeldet.

Ich habe beide Matchmaking mit versuchtGKMatchmakerViewController (nach Authentifizierung des lokalen Spielers) und programmatisches Matchmaking mitstartBrowsingForNearbyPlayersWithReachableHandler:, mit dem gleichen Code auf einem iPhone 4 und einem iPod Touch der 4. Generation, die nebeneinander auf meinem Schreibtisch sitzen. Keiner findet jemals den anderen; beim BenutzenGKMatchmakerViewController Die Schnittstelle zum Auffinden von Spielern in der Nähe befindet sich weiterhin im

Spieler finden ...

Spinner und bei der VerwendungstartBrowsingForNearbyPlayersWithReachableHandler:wird der Benachrichtigungsblock nie aufgerufen.

Hier ist mein aktueller Block mit Testcode:

-(void)connectLocal
{
    if( ![GKLocalPlayer localPlayer].isAuthenticated )
    {
        // authenticateLocalPlayer calls connectLocal again after authentication is complete
        [ self authenticateLocalPlayer ];
        return;
    }
    [[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:^(NSString *playerID, BOOL reachable) {
             NSLog(@"Reachability changed for player %@", playerID );
        } ];
}

Die Dokumente sind etwas spärlich und verwirrend in Bezug auf das Thema, insbesondere wenn es um den Unterschied zwischen lokalem Mulitplayer und Übereinstimmungen über das Internet geht. Zum Beispiel scheint es notwendig zu sein, den lokalen Spieler zu authentifizieren und ein Match zu erstellen, bevor Spieler für dieses Match gefunden werden können (Das Erstellen einer Übereinstimmung beginnt mit einer Übereinstimmungsanforderung). jedochdieses kleine Nugget scheint etwas anderes vorzuschlagen:

Die Standardbenutzeroberfläche ermöglicht es Spielern, andere Spieler in der Nähe zu entdecken, auch wenn keiner der Spieler derzeit direkt mit Game Center verbunden ist.

Darüber hinaus ist in dem inSuche nach Spielern in der Nähewird eine Übereinstimmungsanforderung erst in Schritt 3 erstellt.nach dem Finden von Spielern über den Benachrichtigungsblock, der an weitergeleitet wurdestartBrowsingForNearbyPlayersWithReachableHandler:. Leider bin ich noch nie so weit gekommen.

Also die Fragen:

1) Habe ich Recht, wenn ich denke, ich kann anrufenstartBrowsingForNearbyPlayersWithReachableHandler: vor der Authentifizierung des lokalen Spielers? GameKit gibt keinen Fehler aus, daher gehe ich davon aus, dass es in Ordnung ist. Dies kann eine vorschnelle Annahme sein. Ob ich mich authentifiziere oder nicht, scheint keinen großen Unterschied zu machen.

2) Hat jemand erfolgreich lokale Auto-Matching mit implementiert[GKMatchmaker sharedMatchmaker] startBrowsingForNearbyPlayersWithReachableHandler:? Gibt es irgendwo einen guten Beispielcode, der den gesamten Ablauf vom Durchsuchen nach Spielern bis zum Starten eines Matches programmgesteuert veranschaulicht?

3) Es scheint im Internet widersprüchliche Berichte darüber zu geben, ob GameKit-fähige Apps im iOS-Simulator getestet werden können. Ein allgemeiner Konsens scheint nicht zu bestehen, und es ist besser, auf iOS-Hardware zu testen. Ich habe ein iPhone 4 und einen iPod Touch der 4. Generation verwendet. Welche Testkonfiguration und -methode haben Sie für diejenigen verwendet, die den lokalen Mehrspielermodus erfolgreich getestet haben?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage