Google Play Oyun Hizmetleri C++ SDK'sı, Google Play Oyun Hizmetleri ile kullanılmak üzere bir C++ API'si sağlar ve oyunlarında mevcut bir C++ uygulaması olan geliştiriciler için tasarlanmıştır.
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
SDK'yı kullanmak için genel hatlarıyla aşağıdaki adımları uygulayın:
- Android için bir platform yapılandırması oluşturun.
GameServices
nesnesi yapılandırmak ve oluşturmak içinGameServices::Builder
kullanın.GameServices
nesnesi otomatik olarak oturum açmayı dener ve sonucu birOnAuthActionFinished()
geri çağırma işlevi aracılığıyla döndürür. Geri çağırma işlevi tarafından döndürülen sonucu not edin. Otomatik oturum açma denemesi başarısız olursa kullanıcıların oturum açmasına izin veren bir düğme gösterebilirsiniz.OnAuthActionFinished()
sonucunu aldıktan sonra, Play Games hizmetleri çağrıları yapmak içinGameServices
nesnesini ve alt yöneticilerini kullanabilirsiniz. Örneğin:- Oturum açma (yetkilendirme başarısız olduktan sonra):
StartAuthorizationUI()
- Başarıların kilidini açma:
Achievements().Unlock()
- Yerleşik kullanıcı arayüzünü kullanarak başarıları gösterme:
Achievements().ShowAllUI()
- Yüksek puan gönderin:
Leaderboards().SubmitScore()
- Oturumu kapat:
SignOut()
- Oturum açma (yetkilendirme başarısız olduktan sonra):
GameServices
nesnesini kullanmayı tamamladığınızda sıfırlayın veya yok edin.
Daha ayrıntılı düzeyde:
Platform yapılandırmasını başlatma: Bu, platforma özel başlatma bilgilerini içeren bir nesnedir. Android'de platform yapılandırması, Java sanal makinesini ve mevcut
Activity
'ye işaret eden bir işaretçi içerir:// 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, Google Play Oyun Hizmetleri işlevinin ana giriş noktasıdır.GameServices
örnekleriGameServices::Builder
ile oluşturulur.Çoğu uygulamada, belirli bir
GameServices
nesnesi C ortamınız var olduğu sürece devam eder. AndroidActivity
'unuz durakladığında ve devam ettiğinde nesneyi yeniden başlatmanız gerekmez.// 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 Yönetici sınıflarını kullanın. Yöneticilere,GameServices
örneğinden ve grupla ilgili işlevlerden birlikte erişilir. Başarı ve Liderlik Tablosu Yöneticileri bu tür rollere örnek gösterilebilir. Kullanıcı tarafından görülebilen bir durum içermezler. Yöneticiler referansla döndürülür ve yaşam döngüleri, onları içerenGameServices
örneği tarafından kontrol edilir. Müşterinizin yönetici referansını hiçbir zaman elinde tutmaması gerekir. Bunun yerine, müşterinizGameServices
örneğini elinde tutmalıdır.Yöneticiler, verileri sabit değer türü nesneleri aracılığıyla döndürür. Bu değerler, sorgunun yapıldığı andaki temel verilerin tutarlı bir görünümünü yansıtır.
// Submit a high score game_services_->Leaderboards().SubmitScore(leaderboard_id, score); // Show the default Achievements UI game_services_->Achievements().ShowAllUI();
GameServices
nesnesini kullanmayı bitirdiğinizde, sahibi olanunique_ptr
üzerindereset()
'ı çağırarak veya kapsam dışında kaldığındaunique_ptr
'nin otomatik olarak yok etmesine izin vererek temizlik yapın.
Konu dizisi modeli
Aksi belirtilmedikçe tüm GameServices
ve Yönetici yöntemleri, iş parçacığı güvenli, eşzamansız uygulamalara sahiptir. Bu işlevler, harici kilitleme olmadan herhangi bir iş parçacığında çağrılabilir ve çağrılma sıralarıyla tutarlı bir sırada yürütülür.
Erişim yöntemleri (durumu okuyan yöntemler) iki ana varyantta bulunur. İlk yöntem türü (FetchProperty()
gibi adlara sahip), sonuçlarını sağlanan bir geri çağırma işlevine asenkron olarak sağlar. İkinci yöntem türü (FetchPropertyBlocking()
gibi adlara sahip) ise sonuçlarını çağıran iş parçacığına senkron olarak döndürür.
// 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 çağırma işlemleri, özel bir geri çağırma mesaj dizisinde çağrılır. Bu iş parçacığı, "ana iş parçacığı" veya "kullanıcı arayüzü iş parçacığı" gibi platform kavramlarından farklı olabilir. Ayrıca, kullanıcı geri çağırmalarının hızlı bir şekilde yürütülmesini sağlamaya çalışmalısınız. Durdurulan bir geri çağırma mesajı kullanıcı tarafından görülebilen sorunlara (ör. oturum kapatma isteğinin gecikmeli olarak tamamlanması) neden olabilir.
Platforma özgü bilgiler
Android'de Play Games C++ SDK'sını kullanmaya başlamak için hızlı başlangıç kılavuzuna gidin.
Daha fazla bilgi
Daha fazla bilgi için Google Play Oyun Hizmetleri C++ SDK'sında bulunan sınıf dokümanlarını okumayı ve SDK'nın nasıl kullanıldığını gösteren örneklere göz atmayı unutmayın.
Oyununuz arka uç sunucusu kullanıyorsa Google Play Games Hizmetleri'ne sunucu tarafı erişimi etkinleştirme başlıklı makaleyi inceleyin.