2012-04-17 18 views
18

Estoy teniendo problemas para averiguar cómo reinvitar a un jugador desconectado de una buena manera, usando la clase GKMatch para Game Center. El juego es un juego 1 contra 1.Reconectar jugador en Game Center

Cuando detecto un jugador desconectado, trato de volver a invitar a que el jugador específico para el partido con esta llamada:

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

Esto funciona como se supone que debe hacer. Cuando el otro jugador ha establecido la conexión, se vuelve a revivir y la partida puede continuar. Pero esto deja un problema que no he podido resolver. Aquí viene el escenario:

  • El jugador 1 se desconecta.
  • El jugador 2 deja el partido mientras el Jugador 1 está desconectado.
  • El reproductor 1 vuelve a conectarse y detecta que perdió la conexión con el Reproductor 2 e intenta volver a conectarse con el reproductor2.
  • El jugador 2 está buscando una nueva coincidencia, lo cual está haciendo con el dispositivo matchmakerViewController.
  • El jugador 2 se une repentinamente al partido anterior con el Jugador 1, que le quedó.

Así que mi problema es que matchmakerViewController permite a los jugadores unirse a las partidas anteriores si vuelven a revivir. ¿Hay una mejor manera de manejar este escenario de reconexión para que la gente no sea invitada a viejos partidos?

+0

@ Cupcake.En mi código está sucediendo que cuando 1player se desconecta, otros se desconectan automáticamente del juego.Y sucede así? Cómo evitar esta desconexión del jugador 1 aunque el jugador 2get diconnect –

Respuesta

0

Me gustaría seguir adelante y evitar la reinvitación del Reproductor 1 en el mismo juego si detecto que el Jugador 2 ha utilizado la función de abandono en lugar de agotar el tiempo en una desconexión.

+0

¿Cómo sabría el jugador 1 que el jugador 2 desconectarse? –

1

Puede proporcionar una opción para el reproductor que aún está conectado, para volver a invitar o para salir. También puede eliminar la solicitud de emparejamiento para el jugador que se fue si el otro jugador se va.

+0

Mi problema es reinvitar. El jugador 1 reinvita al jugador 2 mientras que el jugador 2 está buscando un nuevo juego. Esto es un problema porque el jugador 2 será reinvitado a un juego que dejó. No puedo eliminar la solicitud de emparejamiento si el otro jugador se va, porque no sé cuándo se va. No están conectados en este punto y no pueden decir si el jugador se va. –

Cuestiones relacionadas