2016-05-16 1 views
6

Je suis en temps réel la mise en œuvre un service de jeu de jeu de google multijoueur.détecter si un autre joueur a quitté involontairement (par exemple la déconnexion d'Internet) et reconnectez - Google jeu multijoueur en temps réel

Actuellement, si j'éteins le WIFI sur un client l'autre client ne détecte pas la connexion est perdue. Aucun événement PeerDisconnect n'est appelé.

1 - L'API fournit tout de vérifier si le poste est toujours connecté?

2 - Est-il possible de laisser le joueur se reconnecte à la salle?

Répondre

2

1 - L'API fournit tout de vérifier si le poste est toujours connecté?

Comme indiqué dans Connecting players, vous pouvez surveiller l'état de connexion des participants à l'aide des rappels RoomStatusUpdateListener. Comme indiqué:

Pour être informé lorsque tous les joueurs sont connectés, votre jeu peut utiliser le rappel RoomUpdateListener.onRoomConnected(). Votre jeu peut également utiliser les rappels RoomStatusUpdateListener pour surveiller l'état de la connexion des participants. En fonction de l'état de la connexion du participant, votre jeu peut décider de démarrer ou d'annuler la session de jeu.

2 - Y at-il un moyen de permettre au lecteur de se reconnecter à la pièce?

multijoueur en temps réel - Gameplay stipule que:

Une fois que le nombre requis de participants pour une chambre ont été connectés, la pièce est considérée comme « remplie » et le jeu peut commencer. Après que les participants se soient joints à une pièce, votre jeu peut leur permettre de quitter la pièce (les laissant ainsi hors du jeu). Cependant, aucun nouveau joueur ne peut rejoindre une salle après qu'il soit 'rempli' (pas même pour remplir un endroit qu'un participant a libéré).

En plus de cela, se référant à best practice for Real-time multiplayer:

Si vous ne quittez pas la salle appropriée, les services Google Play jeux continueront d'envoyer des notifications d'événements et invitation au client. Vous devez quitter la salle active lorsque l'un de ces scénarios se produit:

  • Le jeu est terminé (par exemple, un joueur a gagné le match).
  • Lorsque votre jeu passe en arrière-plan.
  • Sur Android, quitter la salle lorsque:
    • Le joueur annule le jeu dans l'interface utilisateur de salle d'attente.
    • Le code de réponse renvoyé dans le rappel onActivityResult() est GamesActivityResultCodes.RESULT_LEFT_ROOM. L'activité onStop() est appelée. Cela peut indiquer que votre activité est en cours de destruction. Dans ce cas, quittez la pièce et appelez le disconnect().

espère que ces liens couvre toutes vos préoccupations. Codage heureux! :)

+1

1 - Merci Je vais vérifier si c'est le cas si le statut de connexion du participant dont l'Internet est désactivé change pour l'autre participant. 2 - Donc la réponse courte est qu'il n'y a aucun moyen de se reconnecter à la même pièce après avoir quitté. :) – Uzi

+1

MISE À JOUR: Test de votre solution pour la première question ---- Lorsque la connexion Internet d'un participant se déconnecte ou même quand il ne fait que basculer entre Données et Wifi, l'état de connexion du participant ne change pas. Il montre toujours que le participant est connecté jusqu'à ce que vous appelez laisser de la place sur l'autre participant. Mais vous ne pouvez envoyer aucun message maintenant! – Uzi

+0

J'ai le même problème et oui, implémentant RoomStatusUpdateListener callbacks comme @Teyam suggéré n'aide pas. L'API n'appelle aucun callaback lorsqu'un pair perd la connexion. Je prévois de résoudre ce problème en mettant en place des minuteurs de surveillance sur les clients qui ping à plusieurs reprises des pairs pour voir s'ils sont toujours connectés. – nradk