2016-08-18 24 views
2

Ich implementiere mein erstes rundenbasiertes Spiel mit Game Center, und es fällt mir schwer zu verstehen, wer die Benachrichtigung von player(_:wantsToQuitMatch:) erhält.Wann wird player (_: willToQuitMatch :) aufgerufen?

Bekommt der aktuelle Spieler, der (über eine In-Game-Quittiermethode) aufgibt, diese Benachrichtigung? Erhalten andere Spieler die Benachrichtigung, wenn der aktuelle Spieler beendet wird? Was passiert, wenn der aktuelle Spieler aus dem Game Center austritt (das Spiel entfernt)?

Ich habe versucht, ein Spiel im Game Center zu entfernen, wenn ich an der Reihe bin und die Methode für die Spieler, die noch im Spiel sind, nicht ausgelöst wird. Ich kann diese Methode nicht auslösen.

Antwort

1

Nach mehreren Jahren der Arbeit mit GKTurnBasedMatch, habe ich Nie gesehen wantsToQuitMatch Feuer. Noch nie. Nicht einmal.

Die (massiv überladene) Funktion receivedTurnEventForMatch ist die einzige Funktion, die ausgelöst wird, wenn ein Spieler sich anmeldet oder verlässt. (Siehe meine Antwort unter https://stackoverflow.com/a/34458493/1641444 für weitere Informationen darüber, wann jede der Funktionen ausgelöst wird). Es ist ein Schmerz, weil receivedTurnEventForMatch in vielen unterschiedlichen Umständen feuert und es ist Ihnen überlassen, zu entschlüsseln, welche es ausgelöst hat.

Das war nicht Ihre Frage, aber wie Sie mit rundenbasierten Matches gerade erst anfangen, wenn man zu stark ist nicht noch investiert, empfehle ich Ihnen die neuen GKGameSession betrachten auf der WWDC in diesem Jahr bekannt gegeben. GKTurnBasedMatch hat zahlreiche Beschränkungen, die Spiele stranden lassen können (kann von keinem Spieler fortgesetzt werden). Ich fange gerade an, selbst in Game Sessions zu schauen; Auf den ersten Blick haben sie jedoch eine viel größere Kontrolle und ein wesentlich größeres Match-Datenobjekt (512kB gegenüber 64kB).

+0

Danke. Ich schaue mir GKGameSession an. – coopersita

+0

Ich habe gerade die WWDC-Sitzung überprüft, und ich habe ein paar Fragen. Wird GKGameSession nur für iOS 10+ verfügbar sein? Ich möchte immer noch iOS 8+ unterstützen. Denkst du GKGameSession wird GKTurnBasedMatch ersetzen? Sieht viel besser aus, aber ich bin faul und habe bereits einen guten Teil meiner App programmiert (es ist eine Hobby-App, also muss ich recode, keine Deadline) – coopersita

+0

Game Session scheint Ios10 + zu sein. Wenn Turn-Based-Matches für dich funktionieren, lohnt es sich nicht, sie zu ändern. Ich hatte eine wirklich schlimme Erfahrung mit rundenbasierten Matches, also bin ich begierig darauf, umzuziehen. Obwohl es bedeutet, 32-Bit-Geräte zu verlieren, die IOS 10 nicht ausführen können. – Thunk

0

Ich sehe player(_:wantsToQuitMatch:) Feuer, wenn ich die GameCenter-Ansicht aufrufen und tippen Sie auf das Spiel, das ich gerade einspiele und versuchen, dieses Spiel "zu verlieren". Während ich es brenne sehe, bin ich mir noch nicht sicher, was ich damit anfangen soll. Momentan mache ich nichts und der Spieler kommt nicht aus dem Spiel.

Verwandte Themen