1
Google Play Games Services
2
Objetivo
● Dar una introducción al SDK
● Pensar en qué productos podemos utilizar estos features
3
¿Qué es?
● Plataforma social de Gamification de Google – Se apoya sobre Google+
● Son los últimos en llegar al mercado– Facebook Games APIs
– Apple Game Center
https://developers.google.com/games/services/
4
Features
● Multiplataforma (Android, iOS, Web)● Logros (Achievements)● Marcadores (Leaderboards)● Guardar datos del juego en la nube● Modos multijugador
5
SDK
● Se baja desde el SDK Manager● Se importa el proyecto BaseGameUtils y se marca
como dependencia● Se agrega en el Manifest
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
6
7
Google Play Developer Console
● La configuración es conflictiva*– Se crea un Juego
– El Juego tiene los marcadores y logros
– Se lo vincula con distintas “Aplicaciones”● Hay que agregar una “Aplicación” por keystore que se
utilice para firmar los .apk
– Pueden pasar varias horas hasta que se publiquen los cambios en la configuración
“Avoiding common setup issues” https://developers.google.com/games/services/bestpractices
8
9
Configurar la app
● Nuestras actividades tienen que extender BaseGameActivity
● Se implementa un login de Google+– Llamar a beginUserInitiatedSignIn()
– Implementar● onSignInSucceeded()● onSignInFailed()
10
Sesión y métodos útiles
● Todos los tutoriales aconsejan usar la BaseGameActivity y los métodos que provee, ya que esta clase ya maneja la sesión del usuario.
● Métodos útiles– GamesClient getGamesClient()
– boolean isSignedIn()
– void signOut()
11
Setup listo!
12
Login automático
13
A ponerse creativos
● Todos los logros y macadores se deben crear desde la consola de Google Play
● Ahí es donde se editan los detalles– ¿el marcador es ascendente o descendente?
– ¿el logro es único o incremental?
– ¿cuál es el ícono del logro?
14
Logros
● Atributos de un logro– id: necesario para informar desde la app
– name: ejemplo “Mago Aprendíz”
– description: explica al usuario cómo destrabar el logro, ejemplo: “Completa tu primer partida”
– icon
– list order
15
Logros
● Estados– hidden: Google Play no le muestra al usuario el ícono y descripción
del logro
– revealed: se le muestra la usuario todo el detalle del logro, tal cual se cargó
– unlocked: logro que el usuario ya obtuvo :-)
● Tipos de logros– Únicos: El usuario los obtiene al hacer una acción
– Incrementales: Para obtenerlo, el usuario debe completar una acción una cierta cantidad de veces
16
Logros
● Obtener un logro único– getGamesClient().unlockAchievement("id");
● Incrementar el contador de un logro– getGamesClient().incrementAchievement("id", 1);
●
17
Marcadores
18
Logros del usuario
● Mostrar los logros al usuario– startActivityForResult(getGamesClient().getAchievemen
tsIntent(), REQUEST_ACHIEVEMENTS);
19
Marcadores
● Se pueden tener muchos (hasta 70) leaderboards● La app tiene que reportar el puntaje para el
leaderboard en un momento determinado– getGamesClient().submitScore(“general_ranking”), finalScore);
● Google se encarga del orden y de avisarte si es tu nuevo highscore
● Por cada leaderboard se crea automáticamente el diario, mensual y general, además del filtro de ver sólo a quienes están en tus círculos.
20
Marcadores
● Mostrar un leaderboard– startActivityForResult(getGamesClient().getLeaderboar
dIntent(“general_ranking”, 1);
21
Otros aspectos a considerar
● Recomendaciones básicas de UX en charlas de Google I/O 2013
● Quota y límite de velocidad– Magical Maestro: (50,000,000 requests/day)
● Se pueden reportar highscores y destrabar logros estando offline
22
Conclusiones
● Es difícil de configurar, pero fácil de usar● Se debe actualizar la app por cada nuevo logro que
se agregue :-(● La interfáz gráfica es homogénea para todas las
apps (a diferencia de Facebook)● Los juegos más populares del momento no están
usando esta plataforma● Hay expectativa de que crezca y agregue más
features
23
¡¡¡Muchas gracias!!!