unity - meta data android name com google android gms games app_id
Multijugador de Google Play Game Services con cambio de actividad (3)
En mi juego de Android tengo un multijugador por turnos. Los usuarios esperan a los oponentes en el lobby y cada vez que coinciden exactamente 3, van juntos a una nueva sala de juegos, que es otra actividad que el lobby.
Los documentos sugieren que las Actividades extiendan BaseGameActivity. Pero cuando cambio la Actividad mientras los jugadores ya están conectados, ¿no necesito colocar las partes de conectividad en un Servicio al que mi Actividad se une?
¿Alguien ha intentado ya con los servicios de juego? ¿Cómo empezar si no puedo usar BaseGameActivity?
Estoy en el proceso de desarrollar un juego multijugador con estos nuevos servicios de juego de Google Play. Incluye logros y tablas de clasificación, junto con el multijugador.
En el proyecto de ejemplo de clic de botón, descubrí que (Google) usaba fragmentos extensamente y se mantenían dentro de los límites de una sola actividad. En mi juego personalizado, salto entre actividades sin problema.
Deberá mantener algunas partes de los objetos de Google Play Game Services, pero un servicio podría ser excesivo, a menos que su juego requiera un código de larga duración que no sea de la interfaz de usuario para ejecutarse. Por lo que he experimentado, si cambia de una actividad a otra, querrá mantener la identificación de la (s) habitación (es) y la (s) identificación (s) de los participantes que participan actualmente en el juego.
Dado que las "partes de conectividad" son sin estado, simplemente vuelva a conectar según sea necesario. Incluso puede pasar la (s) ID (s) de habitación / participante a cada actividad a través del paquete Intent (o usar el enfoque de patrón de singleton). De esta manera, ahorrará en la duración de la batería, el rendimiento, etc.
La documentación explica cómo usar los Servicios de juego sin la Actividad de juego base cuando sea necesario.
Por ejemplo, durante el inicio de sesión:
https://developers.google.com/games/services/training/signin
Al hacer clic en el botón Iniciar sesión debe iniciar el flujo de inicio de sesión. Si está utilizando la clase base BaseGameActivity proporcionada en las muestras, simplemente llame al método beginUserInitiatedSignIn (). De lo contrario, debe llamar manualmente el método connect () de su objeto GamesClient.
Para su pregunta específica, no creo que sea un problema, todo el control está dentro de Google Play, solo necesita obtener GamesClient y, por lo que entendí, la conexión realizada en una actividad estará allí si accede. de otra actividad (pero no probé el multijugador todavía).
Por lo tanto, una de las razones por las que escribimos todas las muestras de servicios de juegos de Google Play como juegos de una sola actividad es porque el cambio entre Actividades requiere que se desconecte del GamesClient y se conecte uno nuevo de la nueva Actividad.
Entonces, usar Fragmentos es probablemente la forma más fácil de hacer esto. También es bastante limpio y te permite hacer un diseño de tableta combinándolos si así lo deseas.
En particular, si está configurando un juego multijugador, desconectarlo lo desconectará de la sala, por lo que no podrá cambiar a una Actividad diferente después de iniciar el apretón de manos :-)