2012-04-17 2 views
18

Game Center 용 GKMatch 클래스를 사용하여 연결이 끊어진 플레이어를 좋은 방법으로 다시 초대하는 방법을 알아 내려는 데 어려움을 겪고 있습니다. 이 게임은 1 대 1의 게임입니다. 내가 연결이 끊긴 플레이어를 감지하면Game Center에 플레이어를 다시 연결하십시오.

는,이 호출로 경기에 특정 플레이어를 다시 초대하려고 : 어떻게 해야하는로

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

이 작동합니다. 다른 플레이어가 연결을 확립하면 그는 재투자되고 경기는 계속 될 수 있습니다. 그러나 이것은 내가 풀 수 없었던 문제를 남긴다. 시나리오는 다음과 같습니다.

  • 플레이어 1의 연결이 끊어집니다.
  • 플레이어 1이 연결되어 있지 않은 상태에서 플레이어 2는 경기를 종료합니다.
  • 플레이어 1이 다시 연결되어 플레이어 2와의 연결이 끊어 졌음을 감지하고 플레이어 2에 다시 연결을 시도합니다.
  • 플레이어 2가 matchmakerViewController를 사용하여 새로운 경기를 찾고 있습니다.
  • 2 번 선수는 갑자기 1 번 선수와 예전 경기에 참가합니다.

내 문제는 matchmakerViewController가 선수가 재투자되면 이전 경기에 참여하도록하는 것입니다. 이 재 연결 시나리오를 처리 할 수있는 더 좋은 방법이있어서 사람들이 이전 경기에 초대받지 않도록 할 수 있습니까?

+0

@ Cupcake. 내 코드에서 1 플레이어가 연결이 끊어지면 자동으로 게임과의 연결이 끊어집니다. 어떻게됩니까? 플레이어 1의 연결이 끊어지는 것을 피하는 방법 –

답변

0

Player 2가 연결 해제시 시간 초과 대신 종료 기능을 사용함을 감지 한 경우 동일한 게임에서 플레이어 1의 reinvite를 막을 수 있습니다.

+0

플레이어 1이 어떻게 플레이어 2를 알 수 있습니까? 연결이 끊어 졌습니까? –

1

아직 연결되어있는 플레이어에게 다시 초대하거나 종료 할 수있는 옵션을 제공 할 수 있습니다. 다른 플레이어가 떠날 경우 남은 플레이어에게 중매 신청을 취소 할 수도 있습니다.

+0

내 문제는 reinviting입니다. 플레이어 1이 새로운 게임을 찾고있는 동안 플레이어 1은 플레이어 2를 다시 만납니다. 이것은 선수 2가 그가 남긴 게임에 재투자되기 때문에 문제가됩니다. 그가 떠날 때 나는 모르기 때문에 다른 플레이어가 떠나면 중매 신청을 취소 할 수 없습니다. 현재 연결되어 있지 않으며 플레이어가 퇴장하는지 알 수 없습니다. –

관련 문제