C++ İçin Play Oyun Hizmetleri'ni Kullanmaya Başlama

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:

  1. Android için platform yapılandırması oluşturun.
  2. GameServices yapılandırmak ve oluşturmak için GameServices::Builder kullanın nesnesini tanımlayın. GameServices nesnesi otomatik olarak oturum açmayı dener ve geri döner OnAuthActionFinished() geri çağırmasıyla yapılır. Sonucu not edin geri arama tarafından döndürüldü. 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.
  3. 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()
  4. GameServices nesnesini kullanmayı bitirdiğinizde nesneyi sıfırlayın veya yok edin.

Daha ayrıntılı bir düzeyde:

  1. 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);
    
  2. Bir GameServices nesnesi oluşturun: Bu nesne, nesne için ana giriş noktasıdır Google Play Games Hizmetleri işlevi. GameServices örnek oluşturuldu GameServices::Builder ile.

    Çoğu uygulamada, belirli bir GameServices nesnesi aktif olarak şunları yapar: yeniden başlatmanız gerekmez. Android Activity 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);
    
  3. GameServices nesnenizi yönetmek için Manager sınıflarını kullanın. Yöneticilere bir GameServices ö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 ve GameServices ö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üşteriniz GameServices ö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();
    
  4. GameServices nesnesini kullanmayı tamamladığınızda şu kadar temizleyin: sahibi unique_ptr numaralı telefondan reset() arayarak veya unique_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.