Google Play oyun hizmetleri C++ SDK'sı, Google Play oyun hizmetlerinde kullanılmak üzere bir C++ API'si sağlar ve oyunlarının mevcut bir C++ uygulamasına sahip olan geliştiricilere yöneliktir.
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 bir platform yapılandırması oluşturun.
GameServices
nesnesini yapılandırmak ve oluşturmak için birGameServices::Builder
kullanın.GameServices
nesnesi otomatik olarak oturum açmayı dener ve sonucuOnAuthActionFinished()
geri çağırmasıyla döndürür. Geri çağırmanın döndürdüğü sonucu not edin. Otomatik oturum açma denemesi başarısız olduysa kullanıcıların oturum açmasına izin vermek için bir düğme görüntüleyebilirsiniz.OnAuthActionFinished()
sonucunu aldıktan sonra, aşağıdakiler dahil olmak üzere Play oyun hizmetleri çağrıları yapmak içinGameServices
nesnesini ve alt yöneticilerini kullanabilirsiniz:- Oturum açın (yetkilendirme başarısız olduktan sonra):
StartAuthorizationUI()
- Başarıların kilidini açın:
Achievements().Unlock()
- Başarıları yerleşik kullanıcı arayüzünü kullanarak göster:
Achievements().ShowAllUI()
- Yüksek bir puan gönderin:
Leaderboards().SubmitScore()
- Oturumu kapat:
SignOut()
- Oturum açın (yetkilendirme başarısız olduktan sonra):
GameServices
nesnesini tamamladığınızda nesneyi sıfırlayın veya kaldırın.
Daha ayrıntılı bir düzeyde:
Platform yapılandırması başlatma: Bu, platforma özel ilk kullanıma hazırlama bilgilerini içeren bir nesnedir. Android'de, platform yapılandırması Java sanal makinesi ile mevcut
Activity
işaretçisini 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);
GameServices
nesnesi oluşturma: Bu nesne, Google Play oyun hizmetleri işlevinin ana giriş noktasıdır.GameServices::Builder
ileGameServices
örnek oluşturulur.Çoğu uygulamada belirli bir
GameServices
nesnesi, C ortamınız olduğu sürece geçerli olmaya devam eder. AndroidActivity
cihazınız duraklatılıp devam ettirildiğinde bu işlemi 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 birGameServices
örneğinden ve grupla ilgili işlevlerden erişilebilir. Bunlara örnek olarak Başarı ve Skor Tablosu Yöneticileri verilebilir. Kullanıcının görebileceği herhangi bir durumu içermezler. Yöneticiler başvurulara göre döndürülür ve yaşam döngülerini kontrol eden kapsayıcıGameServices
örneğini içerir. Müşteriniz asla bir Yönetici referansını tutmamalıdır. Bunun yerine, müşterinizinGameServices
örneğini beklemesi gerekir.Yöneticiler, sabit değer türü nesneler aracılığıyla veriler 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ı tamamladığınızda, nesneye sahip olanunique_ptr
öğesinereset()
çağrısı yaparak veya kapsamın dışına çıktığındaunique_ptr
öğesinin otomatik olarak yok etmesine izin vererek yer açın.
İplik Modeli
Aksi belirtilmedikçe, tüm GameServices
ve Yönetici yöntemlerinin ileti dizisi güvenli, eşzamansız uygulamaları vardır. Harici kilitleme olmadan herhangi bir mesaj dizisinde çağrılabilir ve çağrı sırasıyla tutarlı bir şekilde yürütülür.
Erişim yöntemleri (okuma durumu) yöntemlerinin iki ana varyantı vardır. İlk yöntem (FetchProperty()
gibi adlarla) sonuçlarını, belirtilen bir geri çağırmaya eşzamansız olarak sağlar. İkinci yöntem (FetchPropertyBlocking()
gibi adlarla) sonuçlarını eşzamanlı olarak arama dizisine 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ğırmaları özel bir geri çağırma ileti dizisinde çağrılır. Bu ileti dizisi, "ana iş parçacığı" veya "kullanıcı arayüzü iş parçacığı" platform konseptinden potansiyel olarak ayrıdır. Ayrıca, kullanıcı geri çağırmalarının hızlı bir şekilde çalışmasını sağlamaya çalışmalısınız. Arızalı bir geri çağırma ileti dizisi kullanıcıların görebileceği sorunlara (örneğin, oturum kapatma isteğinin gecikmesi) neden olabilir.
Platforma Özel Bilgiler
Android'de Play Games C++ SDK'yı 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 sağlanan sınıf belgelerini okuyun ve SDK'nın nasıl kullanılacağını gösteren örneklere göz atın.
Oyununuz bir arka uç sunucusu kullanıyorsa Google Play Oyun Hizmetleri'ne Sunucu Tarafı Erişimini Etkinleştirme'ye bakın.