Ereignisse zum Spiel hinzufügen

In diesem Leitfaden erfahren Sie, wie Sie den Ereignisdienst in einer C++-Anwendung verwenden.

Hinweis

Falls Sie es noch nicht getan haben, sollten Sie sich die Konzepte des Veranstaltungsspiels ansehen.

Folgen Sie der Anleitung im Startleitfaden für C++, um die C++-Entwicklungsumgebung für die Verwendung des Ereignisdienstes einzurichten. Sie können das C++ SDK der Play Games-Dienste über die SDK-Downloadseite herunterladen.

Bevor dein Spiel auf Ereignisse zugreifen kann, musst du es zuerst in der Google Play Console definieren.

Ereignis einreichen

Sie können in Ihrem Spiel Code hinzufügen, um den Ereignisdienst jedes Mal zu benachrichtigen, wenn ein Ereignis von Interesse für Ihr Spiel auftritt. Beispiele für Ereignisse, die du in deinem Spiel erfassen könntest, sind: das Töten von Feinden, das Erkunden von verschiedenen Spielregionen oder das Kaufen von In-Game-Artikeln. Normalerweise rufen Sie die Methode Increment im Ereignismanager auf, um die Anzahl der Ereignisse jedes Mal um 1 zu erhöhen, wenn der Spieler eine mit dem Ereignis verknüpfte Aktion ausführt (z. B. „Ein Monster besiegt“).

Das folgende Beispiel zeigt, wie Sie die aktualisierte Anzahl von Ereignissen an den Ereignisdienst senden können.

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

Ereignisse werden abgerufen

Wenn Sie den aktuellen Zählwert abrufen möchten, der auf den Google-Servern für ein bestimmtes Ereignis gespeichert ist, rufen Sie eine der Fetch*-Methoden auf. Das ist beispielsweise sinnvoll, wenn du die In-Game-Statistiken oder den Fortschritt eines Spielers über eine benutzerdefinierte UI in deinem Spiel anzeigen möchtest.

Das folgende Beispiel zeigt, wie Sie die Ereignisdaten in Ihrem Spiel abrufen und protokollieren können.

  // 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);