2016-05-16 10 views
6

Sto implementando il multiplayer in tempo reale del servizio di gioco di google.Rileva se un altro giocatore viene lasciato involontariamente (ad esempio, disconnessione da Internet) e riconnettersi - Google gioca in tempo reale multiplayer

Attualmente se spengo il WIFI su un client, l'altro client non rileva che la connessione è andata persa. Non vengono chiamati eventi PeerDisconnect.

1 - L'API fornisce nulla per verificare se il peer è ancora connesso?

2 - C'è un modo per consentire al giocatore di riconnettersi alla stanza?

risposta

2

1 - L'API fornisce nulla per verificare se il peer è ancora connesso?

Come indicato in Connecting players, è possibile monitorare lo stato della connessione dei partecipanti utilizzando i callback RoomStatusUpdateListener. Come affermato:

per essere avvisati quando sono collegati tutti i giocatori, il gioco può utilizzare il RoomUpdateListener.onRoomConnected() callback. Il tuo gioco può anche utilizzare i callback RoomStatusUpdateListener per monitorare lo stato della connessione dei partecipanti. In base allo stato della connessione del partecipante, il gioco può decidere se avviare o annullare la sessione di gioco.

2 - C'è un modo per permettere al giocatore di ricollegare alla camera?

tempo reale Multiplayer - Gameplay afferma che:

Una volta collegato il numero di partecipanti per una stanza, la stanza è considerato come 'pieno' e il gameplay può iniziare. Dopo che i partecipanti si sono uniti a una stanza, il gioco può consentire loro di lasciare la stanza (eliminandoli effettivamente dal gioco). Tuttavia, nessun nuovo giocatore può entrare in una stanza dopo che è stato "riempito" (nemmeno per riempire un posto che un partecipante ha lasciato libero).

In aggiunta a ciò, facendo riferimento alla best practice for Real-time multiplayer:

Se non si lascia la stanza in modo appropriato, i giochi di Google Play servizi continueranno per inviare notifiche di eventi e di invito al cliente. Si dovrebbe lasciare la stanza attiva ogni volta che si verifica uno di questi scenari:

  • Il gioco è finito (ad esempio, un giocatore ha vinto la partita).
  • Quando il gioco va in secondo piano.
  • Su Android, lasciare la stanza quando:
    • Il giocatore annulla il gioco nell'interfaccia utente sala d'attesa.
    • Il codice di risposta restituito nella onActivityResult() callback è GamesActivityResultCodes.RESULT_LEFT_ROOM.
    • L'Attività onStop() si chiama. Ciò potrebbe indicare che l'attività è in corso di distruzione. In questo caso, lasciare la stanza e chiamare disconnect().

Speranza quei collegamenti copre tutte le vostre preoccupazioni. Buona programmazione! :)

+1

1 - Grazie esaminerò che, ad esempio, se lo stato della connessione del partecipante di cui è disattivato Internet cambia per l'altro partecipante. 2 - Quindi la risposta breve è che non c'è modo di riconnettersi alla stessa stanza dopo aver lasciato. :) – Uzi

+1

UPDATE: Testato la tua soluzione per la 1a domanda ---- Quando la connessione Internet di un partecipante si disconnette o anche quando passa semplicemente tra Dati e Wifi, lo stato della connessione del partecipante non cambia. Mostra ancora che il partecipante è connesso fino a quando non chiami stanza di lasciare sull'altro partecipante. Ma non puoi inviare nessun messaggio ora! – Uzi

+0

Ho lo stesso problema e sì, implementando callback RoomStatusUpdateListener come suggerito da @Teyam non aiuta. L'API non richiama alcun collegamento quando un peer perde la connessione. Sto pensando di risolvere questo problema impostando i timer di watchdog sui client che ripetutamente eseguono il ping dei peer per vedere se sono ancora connessi. – nradk

Problemi correlati