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 - 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
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
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