Cómo agregar 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 has hecho, puede resultarte útil consultar el conceptos de juegos de eventos.

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

Antes de que tu juego pueda acceder a 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 un evento de el interés en tu juego. Ejemplos de eventos que puedes capturar en tu matar enemigos, explorar o regresar a diversos regiones del juego ni adquirir elementos. Por lo general, uno el método Increment en el administrador de eventos para aumentar la cantidad de eventos en 1 cada vez que el jugador realiza una acción asociada con el evento (por ejemplo, "Asesinó a un monstruo").

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

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

Cómo recuperar eventos

Para recuperar el valor de recuento actual almacenado en los servidores de Google para un evento, llama a uno de los métodos Fetch*. Quizás debas hacer lo siguiente: esto, por ejemplo, si quieres mostrar las estadísticas de un jugador dentro del juego desde una IU personalizada en el juego.

En el siguiente ejemplo, se muestra cómo podrías recuperar y registrar los datos de eventos en el 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);