2012-04-17 17 views
18

Mam problem z ustaleniem, jak przywrócić rozłączonego gracza w dobry sposób, używając klasy GKMatch dla Game Center. Gra jest grą 1 na 1.Ponownie podłącz odtwarzacz w Game Center

Kiedy wykryje odłączony gracz, staram się Zaproś ponownie tego konkretnego gracza do meczu z tej rozmowy:

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

Działa to jak to robić. Kiedy drugi gracz ustanowi połączenie, zostanie ponownie zaproszony i mecz może być kontynuowany. Pozostaje jednak problem, którego nie byłem w stanie rozwiązać. Oto scenariusz:

  • Odtwarzacz 1 rozłącza się.
  • Gracz 2 opuszcza mecz, gdy gracz 1 jest rozłączony.
  • Gracz 1 ponownie łączy się i wykrywa, że ​​utracił połączenie z Graczem 2 i próbuje ponownie połączyć się z graczem2.
  • Gracz 2 szuka nowego meczu, który wykonuje z matchmakerViewController.
  • Gracz 2 nagle dołącza do starego meczu z Graczem 1, który opuścił.

Moim problemem jest to, że matchmakerViewController pozwala graczom na dołączenie starych meczów, jeśli zostaną ponownie zainicjowani. Czy istnieje lepszy sposób na obsłużenie tego scenariusza ponownego połączenia, aby ludzie nie otrzymywali zaproszeń na stare mecze?

+0

@ Ciastko.W moim kodzie dzieje się tak, że gdy 1play się rozłącza, inne automatycznie odłączają się od gry. Tak się dzieje ?, jak uniknąć tego rozłączenia gracza 1 przez gracza 2get diconnect –

Odpowiedz

0

Pozwoliłbym zapobiec ponownemu odtwarzaniu z odtwarzacza 1 w tej samej grze, jeśli wykryję, że odtwarzacz 2 używał funkcji "wyjdź", zamiast limitu czasu na rozłączenie.

+0

Jak gracz 1 będzie wiedział, że gracz 2 się rozłączyć? –

1

Możesz podać opcję odtwarzacza, który wciąż jest połączony, aby ponownie zaprosić lub zamknąć. Możesz również usunąć żądanie kojarzenia z graczem, który odszedł, jeśli drugi gracz opuści.

+0

Moje problemy to ponowne wcielenie. Gracz 1 ponownie przywraca gracza 2, a gracz 2 szuka nowej gry. Jest to problem, ponieważ gracz 2 zostanie przywrócony do gry, którą opuścił. Nie mogę usunąć żądania matchmakingu, jeśli inny gracz odejdzie, ponieważ nie wiem, kiedy odejdzie. Nie są połączeni w tym momencie i nie mogą stwierdzić, czy gracz odejdzie. –

Powiązane problemy