Aggiungere eventi al gioco

Questa guida mostra come utilizzare il servizio Eventi in un'applicazione C++.

Prima di iniziare

Se non lo hai già fatto, potrebbe essere utile rileggere i concetti dei giochi basati sugli eventi.

Per configurare l'ambiente di sviluppo C++ in modo da utilizzare il servizio Eventi, segui le istruzioni nella Guida introduttiva per C++. Puoi scaricare l'SDK C++ dei servizi per i giochi di Play dalla pagina dei download dell'SDK.

Prima che il tuo gioco possa accedere agli eventi, devi definirli prima in Google Play Console.

Invio di un evento

Puoi aggiungere codice nel gioco per informare il servizio Eventi ogni volta che si verifica un evento di interesse per il tuo gioco. Esempi di eventi che potresti acquisire nel tuo gioco sono: uccidere i nemici, esplorare o tornare in varie regioni del gioco o acquisire articoli in-game. In genere, il metodo Increment viene chiamato nel gestore di eventi per incrementare di 1 il numero di eventi ogni volta che il giocatore esegue un'azione associata all'evento, ad esempio "Mostro ucciso".

L'esempio seguente mostra come inviare il conteggio eventi aggiornato al servizio Eventi.

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

Recupero eventi in corso...

Per recuperare il valore di conteggio attuale memorizzato nei server di Google per un evento specifico, chiama uno dei metodi Fetch*. Puoi eseguire questa operazione, ad esempio, se vuoi mostrare le statistiche in-game di un giocatore o i progressi di un'interfaccia utente personalizzata nel gioco.

L'esempio seguente mostra come recuperare e registrare i dati degli eventi nel gioco.

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