Questa guida mostra come utilizzare il servizio Eventi in un'applicazione C++.
Prima di iniziare
Se non l'hai ancora fatto, ti consigliamo di consultare i concetti di gioco per gli eventi.
Per configurare l'ambiente di sviluppo C++ in modo da utilizzare il servizio Eventi, segui le istruzioni riportate nella guida Guida introduttiva per C++. Puoi scaricare l'SDK C++ relativo ai servizi per i giochi di Google Play dalla pagina Download SDK.
Prima che il gioco possa accedere agli eventi, devi prima definirli in Google Play Console.
Inviare un evento
Puoi aggiungere codice al tuo gioco per notificare il servizio Eventi ogni volta che si verifica un evento di interesse per il tuo gioco. Alcuni esempi di eventi che puoi acquisire nel tuo
gioco sono: uccidere nemici, esplorare o tornare in varie
regioni del gioco o acquisire oggetti in-game. In genere, chiami il metodo Increment
dell'event manager per incrementare il conteggio di un evento di 1 ogni volta che il giocatore esegue un'azione associata all'evento (ad esempio "Ha ucciso un mostro").
L'esempio seguente mostra come inviare il conteggio degli 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);
Recuperare gli eventi
Per recuperare il valore corrente del conteggio memorizzato sui server di Google per un evento specifico, chiama uno dei metodi Fetch*
. Ad esempio, potresti farlo se vuoi mostrare le statistiche o i progressi in-game di un giocatore da un'interfaccia utente personalizzata nel tuo gioco.
L'esempio seguente mostra come recuperare e registrare i dati sugli eventi nel tuo 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);