Google Play Games Hizmetleri C++ SDK'sı, Google Play Oyun ile kullanılmak üzere bir C++ API'si sağlar ve halihazırda C++ uygulaması olan geliştiricilere yöneliktir teşvik ediyor.
SDK şu anda aşağıdaki hizmetleri uygulamaktadır:
- Yetkilendirme
- Başarılar
- Skor tabloları
- Etkinlikler
- Kaydedilmiş Oyunlar
- Yakındaki Bağlantılar (yalnızca Android)
- Oyuncu İstatistikleri
Kavramlar
Genel olarak, aşağıdaki adımları uygulayarak SDK'yı kullanırsınız:
- Android için platform yapılandırması oluşturun.
GameServices
yapılandırmak ve oluşturmak içinGameServices::Builder
kullanın nesnesini tanımlayın.GameServices
nesnesi otomatik olarak oturum açmayı dener ve geri dönerOnAuthActionFinished()
geri çağırmasıyla yapılır. Sonucu not edin geri arama tarafından döndürülen bir metindir. Otomatik oturum açma girişimi başarısız olursa şunları yapabilirsiniz: Kullanıcıların oturum açmasına izin veren bir düğme görüntüler.OnAuthActionFinished()
sonucunu aldıktan sonra,GameServices
nesne ve alt Yöneticilerinin Play Games Hizmetleri aramaları yapmasına izin verecek. şunları içerir:- Oturum aç (yetkilendirme başarısız olduktan sonra):
StartAuthorizationUI()
- Başarıların kilidini açın:
Achievements().Unlock()
- Yerleşik kullanıcı arayüzünü kullanarak başarıları göster:
Achievements().ShowAllUI()
- Yüksek bir puan gönderin:
Leaderboards().SubmitScore()
- Oturumu kapat:
SignOut()
- Oturum aç (yetkilendirme başarısız olduktan sonra):
GameServices
nesnesini kullanmayı bitirdiğinizde nesneyi sıfırlayın veya yok edin.
Daha ayrıntılı bir düzeyde:
Platform yapılandırmasını başlat: Bu, platforma özgü başlatma bilgileri. Android'de platform yapılandırması Java sanal makinesi ve geçerli
Activity
öğesinin işaretçisi:// In android_main(), create a platform configuration // and bind the object activity. // Alternately, attach the activity in JNI_Onload(). gpg::AndroidPlatformConfiguration platform_configuration; platform_configuration.SetActivity(state->activity->clazz);
Bir
GameServices
nesnesi oluşturun: Bu nesne, nesne için ana giriş noktasıdır Google Play Games Hizmetleri işlevi.GameServices
örnek oluşturulduGameServices::Builder
ile.Çoğu uygulamada, belirli bir
GameServices
nesnesi aktif olarak şunları yapar: yeniden başlatmanız gerekmez. AndroidActivity
duraklatılıp devam ettiriliyor.// Creates a GameServices object that has lambda callbacks. game_services_ = gpg::GameServices::Builder() .SetDefaultOnLog(gpg::LogLevel::VERBOSE) .SetOnAuthActionStarted([started_callback](gpg::AuthOperation op) { is_auth_in_progress_ = true; started_callback(op); }) .SetOnAuthActionFinished([finished_callback](gpg::AuthOperation op, gpg::AuthStatus status) { LOGI("Sign in finished with a result of %d", status); is_auth_in_progress_ = false; finished_callback(op, status); }) .Create(pc);
GameServices
nesnenizi yönetmek için Manager sınıflarını kullanın. Yöneticilere birGameServices
örneğinden ve grupla ilgili işlevlerden erişilebilir birlikte. Bunlardan örnekler Başarı ve Skor Tablosu Yöneticileri de dahildir. Kullanıcıların görebileceği hiçbir öğe içermezler. ifade eder. Yöneticiler referans olarak döndürülür veGameServices
örneği, bunların yaşam döngüsünü kontrol eder. Müşteriniz asla veya Yönetici referansına gönderilir. Bunun yerine müşterinizGameServices
örneği.Yöneticiler, verileri sabit değer türü nesneler aracılığıyla döndürür. Bu değerler temel verilerin tutarlı bir görünümünü sunmaktır. emin olun.
// Submit a high score game_services_->Leaderboards().SubmitScore(leaderboard_id, score); // Show the default Achievements UI game_services_->Achievements().ShowAllUI();
GameServices
nesnesini kullanmayı tamamladığınızda şu kadar temizleyin: sahibiunique_ptr
numaralı telefondanreset()
arayarak veyaunique_ptr
, kapsam dışına çıktığında öğeyi otomatik olarak yok eder.
İleti Dizisi Modeli
Aksi belirtilmedikçe tüm GameServices
ve Manager yöntemlerinde
iş parçacığı açısından güvenli, eşzamansız uygulamalar. Herhangi bir ileti dizisinde
ve çağrıya uygun bir sırayla yürütülür
sipariş.
Erişimci yöntemlerinin (eyalet okumaları) iki temel varyantı vardır. İlk
yöntem türü (FetchProperty()
gibi adlarla), sonuçlarını eşzamansız olarak sağlar
sağlanan bir geri çağırmaya; (ör.
FetchPropertyBlocking()
), sonuçlarını eşzamanlı olarak çağrıya döndürür
ileti dizisi.
// Blocking callback
gpg::AchievementManager::FetchAllResponse fetchResponse =
game_services_->Achievements().FetchAllBlocking(std::chrono::milliseconds(1000));
// Non-blocking callback
game_services_->Achievements().FetchAll(gpg::DataSource::CACHE_OR_NETWORK,
[] (gpg::AchievementManager::FetchAllResponse response) {
LogI("Achievement response status: %d", response.status);});
Tüm kullanıcı geri aramaları özel bir geri çağırma ileti dizisinde çağrılır. Bu ileti dizisi "ana iş parçacığı" gibi herhangi bir platform kavramından farklı olabilir veya "Kullanıcı arayüzü ileti dizisi" olarak adlandırılır. Ayrıca kullanıcı geri çağırmalarının hızlı bir şekilde yürütüldüğünden emin olmaya çalışmalısınız; durmuş bir geri çağırma ileti dizisi kullanıcının görebildiği sorunlara (ör. oturum kapatma işleminin gecikmeli tamamlanması) neden olabilir talebi).
Platforma Özgü Bilgiler
Android'de Play Games C++ SDK'sını kullanmaya başlamak için hızlı başlangıç kılavuzunu inceleyin.
Daha fazla bilgi
Google Play Games ile birlikte gelen sınıf dokümanlarını okuduğunuzdan emin olun için C++ SDK'sını kullanın ve SDK'nın nasıl kullanılacağını gösteren örnekler.
Oyununuzda bir arka uç sunucusu kullanılıyorsa Google Play Games Hizmetleri'ne Sunucu Tarafı Erişimi Etkinleştirme.