Agrega eventos a tu juego

En esta guía, se muestra cómo usar el servicio de eventos en una aplicación de C++.

Antes de comenzar

Si aún no lo hiciste, puede resultarte útil consultar los conceptos de juegos de eventos.

Para configurar tu entorno de desarrollo de C++ para usar el servicio de eventos, sigue las instrucciones de la guía de Introducción a C++. Puedes descargar el SDK de C++ de los Servicios de juego de Play desde la página de descargas de SDK.

Para que tu juego pueda acceder a los eventos, primero debes definirlos en Google Play Console.

Cómo enviar un evento

Puedes agregar código a tu juego para notificar al servicio de eventos cada vez que se produzca un evento de interés en tu juego. Algunos ejemplos de eventos que podrías capturar en tu juego son: matar enemigos, explorar o regresar a varias regiones del juego, o adquirir elementos en el juego. Por lo general, llamarías al método Increment en el administrador de eventos para incrementar el recuento de un evento en 1 cada vez que el jugador realice una acción asociada con el evento (por ejemplo, "Mató a un monstruo").

En el siguiente ejemplo, se muestra cómo puedes enviar el recuento de eventos actualizado al servicio de eventos.

  // Increment the event count when player performs the 'Attack blue
  // monster' action.
  game_services_->Events().Increment(BLUE_MONSTER_EVENT_ID);

Recupera eventos

Para recuperar el valor de recuento actual almacenado en los servidores de Google para un evento específico, llama a uno de los métodos Fetch*. Puedes hacerlo, por ejemplo, si quieres mostrar las estadísticas o el progreso de un jugador en el juego desde una IU personalizada.

En el siguiente ejemplo, se muestra cómo puedes recuperar y registrar los datos del evento en tu juego.

  // Log Events details.
  LogI("---- Showing Event Counts -----");
  gpg::EventManager::FetchAllCallback callback =
      [](gpg::EventManager::FetchAllResponse const &response) {
    for (auto i : response.data) {
      gpg::Event const &event = i.second;
      LogI("Event name: %s  count: %d", event.Name().c_str(),
           event.Count());
    }
  };
  game_services_->Events().FetchAll(callback);