Seguimiento de victorias y pérdidas en los servicios de juegos de Google Play

Estoy implementando un juego Multijugador de Turn Base con Google Play Services . Parece que hay una característica importante que falta de ella sin embargo: seguimiento de victorias y pérdidas! Parece una característica bastante importante para cualquier tipo de juego competitivo.

¿Me estoy perdiendo de algo? ¿Es esto ya manejado por Google de alguna manera?

Si no, me pregunto si alguien ha implementado su propio sistema de seguimiento w / l, y cómo se acercó a él. Me preocupa ahorrarlo localmente, ya que podría estar fuera de sincronía con la realidad. Supongo que podría usar Google Cloud Storage, pero también me preocupa que hacer un seguimiento de los partidos que se han contabilizado podría ser un poco propenso a errores (por ejemplo, contar victorias / pérdidas en el mismo partido varias veces). Tal vez usar el sistema Google Play Leaderboard sería bueno, ya que podría comparar con amigos / etc.

Es posible que desee probar el uso de los eventos proporcionados por los Servicios de juegos de Google Play. Estos son los pasos para usarlo:

  1. Ir a la Consola para programadores de Android
  2. En la barra lateral, haga clic en Servicios de juegos, elija su aplicación y, a continuación, los eventos.
  3. A continuación, crea dos nuevos eventos, uno llamado 'Juegos ganados' y el otro 'Juegos perdidos', a continuación, haga clic para publicar los cambios
  4. Haga clic en el vínculo Obtener recursos para ver los identificadores de recurso de sus nuevos eventos y agréguelos a su aplicación en el directorio res / values
  5. Cuando un juego se gana o pierde, llame al siguiente código, donde eventRef es su nombre de recurso amigable que agregó en el último paso, ya sea "events_games_won" o "events_games_lost":

    int eventInt = activity.getApplicationContext().getResources().getIdentifier(eventRef, "string", "com.yourpackage.android"); String eventID = activity.getString(eventInt); Games.Events.increment(apiClient, eventID, 1); 

    Si está utilizando basegameutils, su instancia apiClient se puede obtener con aHelper.getApiClient (), de lo contrario siga estas instrucciones para configurarlo.

  6. Para leer los datos que ha guardado, puede utilizar una devolución de llamada de esta manera:

     PendingResult<Events.LoadEventsResult> results = Games.Events.load(apiClient, true); results.setResultCallback(new ResultCallback<Events.LoadEventsResult>() { @Override public void onResult(Events.LoadEventsResult result) { Events.LoadEventsResult r = (Events.LoadEventsResult)result; EventBuffer eb = r.getEvents(); for (int i=0; i < eb.getCount(); i++) { Event event = eb.get(i); // do something, like cache the results for later YourGameState.eventStats.put(event.getName(), (int)event.getValue()); } eb.close(); listener.onResult(); } }); 

Los beneficios de este enfoque sobre mantener y administrar los recuentos localmente son:

  • Las ganancias y las pérdidas se almacenan en la nube de Google Play y se almacenarán en todos los dispositivos del usuario
  • Puedes usar los eventos para crear misiones (también descritas en Google Play), como "Ganar 10 juegos esta semana" o "Ir esta semana invicto"
  • Google Play te proporcionará estadísticas sobre eventos para todos los que juegan a tu juego, lo que puede ser muy útil para analizar la actividad y el rendimiento del jugador.

Y, por supuesto, puede utilizar el mismo enfoque para crear eventos para cualquier cosa que desee.

Depende de su implementación. He creado una aplicación de ajedrez y sólo uso SharedPreferences para realizar un seguimiento de mis ganancias y pérdidas. Si lo usa correctamente, no será propenso a errores.

P.ej.

 SharedPreferences prefs = this.getSharedPreferences( "com.example.app", Context.MODE_PRIVATE); if (gameOver(Side.White)) { prefs.edit().putLong(dateTimeKey, prefs.getLong(losses, 0) + 1).commit(); } else if (gameOver(Side.Black)){ prefs.edit().putLong(dateTimeKey, prefs.getLong(wins, 0) + 1).commit(); } 
  • Utilice los servicios de Google Play y el SDK de AdMob
  • Requisito de mencionar la versión de servicios de Google Play en el manifiesto de la aplicación
  • Instalación opcional de Google Play Services
  • Android near.MESSAGES_API para detectar sólo beacons
  • Estoy recibiendo error: ": BaseGameUtils: processDebugAndroidTestManifest" en Android Studio solo inicio
  • Libgdx - IllegalStateException en una ubicación desconocida
  • ¿Cómo puedo obligar a GoogleApiClient a activar la IU del selector de cuentas cada vez que llamo a conectar?
  • GCM no recibe el mensaje de abajo Android 4
  • No se han encontrado los recursos de los servicios de Google Play. Compruebe la configuración del proyecto para asegurarse de que se incluyen los recursos
  • ¿A qué URL deben acceder los servicios de Google Play?
  • Actualizar a Google Play Services: Error de la versión Error al resolver: com.google.android.gms: play-services-measurement: 9.0.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.