Sto lavorando a un gioco GameCenter a turni. A GKMatchRequest
viene creato un GKTurnBasedMatch
, con minPlayers
e maxPlayers
impostato su 2. Ottengo un NSInvalidArgumentException
mentre provo a terminare il gioco con endMatchInTurnWithMatchData
, dicendomi che non ho impostato matchOutcome
su tutti i partecipanti. I registri per l'oggetto partita giusta prima di questo punto di rivelare che la mia partita simile a questa:GKTurnBasedI partecipanti alla partita non sono corretti/duplicati
<GKTurnBasedMatch 0x1c1f2af0 - matchID:c9de6e47-0e9a-4dbe-944b-d2fd4ecd3044 bundleID:com.mybundle.wd status:GKTurnBasedMatchStatusEnded message:'Game Over' creationDate:2013-10-08 01:26:12 +0000 currentParticipant:(null) participants:
<GKTurnBasedParticipant 0x1c184820 - playerID:G:128458444 (local player) status:Done matchOutcome:Lost lastTurnDate:2013-10-10 21:54:22 +0000 timeoutDate:(null)>,
<GKTurnBasedParticipant 0x1c1b0a80 - playerID:G:220673962 status:Done matchOutcome:Lost lastTurnDate:2013-10-10 18:26:16 +0000 timeoutDate:(null)>,
<GKTurnBasedParticipant 0x16ef1610 - playerID:G:128458444 (local player) status:Active matchOutcome:None lastTurnDate:(null) timeoutDate:(null)>,
<GKTurnBasedParticipant 0x16ec64f0 - playerID:(null) status:Matching matchOutcome:None lastTurnDate:(null) timeoutDate:(null)> matchData.length:871 matchDataMaximumSize:65536 exchanges:(null)>
ho più di 2 GKTurnBasedParticipants
qui, e due di loro sono lo stesso giocatore! Non faccio nulla di straordinario nel gioco, ad eccezione chiamando il seguente ogni turno:
[match endTurnWithNextParticipants:@[nextParticipant] turnTimeout:GKTurnTimeoutDefault matchData:data completionHandler:^(NSError *error){...}]
Qualcuno ha idea di cosa sta succedendo qui? È un gioco a due giocatori, quindi come faccio a finire con un oggetto match incasinato, e come posso impedirlo?
Ho appena incontrato anche questo. Hai trovato una causa/soluzione? – Bart
Non così lontano - l'ho presentato come un bug per Apple, ma ho poche speranze per questo. Ci sono numerosi tipi di errori che possono derivare da questo, che ti impediranno di inviare il prossimo turno. Finora, penso che l'unica cosa da fare sia rilevare questa condizione e uccidere l'incontro con delle scuse. –
Peccato. Grazie. – Bart