Oyununuza Etkinlik Ekleme

Bu kılavuzda, C++ uygulamasında Etkinlikler hizmetinin nasıl kullanılacağı gösterilmektedir.

Başlamadan önce

Henüz yapmadıysanız etkinlik oyunu kavramlarını incelemeniz faydalı olabilir.

C++ geliştirme ortamınızı Etkinlikler hizmetini kullanacak şekilde ayarlamak için C++ ürününü kullanmaya başlama kılavuzundaki talimatları uygulayın. Play Games hizmetleri C++ SDK'sını SDK indirmeleri sayfasından indirebilirsiniz.

Oyununuzun etkinliklere erişebilmesi için önce bunları Google Play Console'da tanımlamanız gerekir.

Etkinlik gönderme

Oyununuzla ilgili bir etkinlik gerçekleştiğinde Etkinlikler hizmetini bildirmek için oyununuza kod ekleyebilirsiniz. Oyununuzda yakalayabileceğiniz etkinliklere örnek olarak düşmanları öldürme, çeşitli oyun bölgelerini keşfetme veya bunlara geri dönme ya da oyun içi öğeler edinme gösterilebilir. Genellikle oyuncunun etkinlikle ilgili bir işlem gerçekleştirdiği (ör. "Kırılmış bir canavar") etkinlik yöneticisinde Increment yöntemini kullanarak etkinlik sayısını 1 artırırsınız.

Aşağıdaki örnekte, güncellenen etkinlik sayısını Etkinlikler hizmetine nasıl gönderebilirsiniz?

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

Etkinlik alma

Belirli bir etkinlik için Google'ın sunucularında depolanan geçerli sayı değerini almak üzere Fetch* yöntemlerinden birini çağırın. Örneğin, bir oyuncunun oyun içi istatistiklerini göstermek veya oyununuzdaki özel bir kullanıcı arayüzünden ilerleme kaydetmek istiyorsanız bu işlemi yapabilirsiniz.

Aşağıdaki örnekte, oyununuzdaki etkinlik verilerini nasıl alabileceğinizi ve günlüğe kaydedebileceğiniz gösterilmektedir.

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