Unity için Google Play Games'i kurma ve oturum açma

Bu belgede, Unity projenizi Unity için Google Play Games eklentisini kullanacak şekilde ayarlama konusunda size yol gösterilir. Eklentiyi nasıl yükleyeceğinizi ve Unity projenizi nasıl yapılandıracağınızı öğrenirsiniz. Belgede, oturum açma hizmetinin nasıl doğrulanacağı da açıklanmaktadır.

Başlamadan önce

Yazılım gereksinimlerini inceleyin. Play Console'u ayarlayın ve Unity Hub'ı yükleyin.

Eklenti Yükleme

Unity için Google Play Games eklentisini indirip yüklemek üzere Unity Hub'da aşağıdaki adımları uygulayın:

  1. GitHub kod deposunu indirin.

  2. current-build dizininde unitypackage dosyasını bulun. Bu dosya, eklentiyi temsil eder. Örneğin, aşağıdaki gibi görünmelidir:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Unity projesi oluşturma

Oynatıcı ayarlarında Unity projesi oluşturmak için aşağıdaki adımları uygulayın:

  1. Oyun projenizi açın.

  2. Unity Hub'da Assets > Import Package > Custom Package'ı (Öğeler > Paket İçe Aktar > Özel Paket) tıklayarak unitypackage dosyasını projenizin öğelerine aktarın.

  3. Mevcut derleme platformunuzun Android olarak ayarlandığından emin olun.

    1. Ana menüde Dosya > Derleme Ayarları'nı tıklayın.

    2. Android'i seçin ve Platformu Değiştir'i tıklayın.

    3. Window > Google Play Games altında yeni bir menü öğesi olmalıdır. Yoksa Öğeler > Yenile'yi tıklayarak öğeleri yenileyin ve ardından derleme platformunu tekrar ayarlamayı deneyin.

  4. Unity Hub'da File > Build Settings > Player Settings > Other Settings'i (Dosya > Derleme Ayarları > Oynatıcı Ayarları > Diğer Ayarlar) tıklayın.

  5. Hedef API düzeyi kutusunda bir sürüm seçin.

  6. Scripting backend (Komut dosyası oluşturma arka ucu) kutusuna IL2CPP yazın.

  7. Hedef mimariler kutusunda bir değer seçin.

  8. Paket adını not edin package_name.Bu bilgileri daha sonra kullanabilirsiniz.

Unity projenizdeki oynatıcı ayarları
Unity projenizdeki oynatıcı ayarları.

Yeni bir anahtar deposu oluşturma

Kimlik bilgilerinizi doğrulamak için bir anahtara ihtiyacınız vardır. Şu adımları uygulayın:

  1. Unity Hub'da File > Build settings > Player settings'i (Dosya > Derleme ayarları > Oynatıcı ayarları) tıklayın.
  2. Yayınlama ayarları bölümünde Anahtar deposu yöneticisi'ni tıklayın.
    1. Anahtar deposu yöneticisi penceresinde Anahtar deposu > Yeni oluştur > Herhangi bir yer'i tıklayın.
    2. Bir klasör seçin ve anahtar deposu için bir ad girin.
    3. Şifre kutusuna bir şifre girin ve onaylayın.
    4. Anahtar ekle'yi tıklayın.

Klasör adını not edin. Bu adı kullanarak Google Cloud'da kimlik bilgisi oluşturabilirsiniz.

Android kaynaklarını Play Console'dan kopyalama

Play Console'da oluşturduğunuz her başarı, skor tablosu ve etkinlik, Unity projenizi ayarlarken kullandığınız bir Android kaynağı içerir.

Oyununuz için Android kaynaklarını edinmek üzere aşağıdaki adımları uygulayın:

  1. Google Play Console'da oyunu açın.

  2. Google Play Games Hizmetleri - Yapılandırma sayfasında (Büyüme > Google Play Games Hizmetleri > Kurulum ve yönetim > Yapılandırma) Kaynakları al'ı tıklayın.

  3. Kaynaklar penceresinde Android(XML) sekmesini tıklayın.

  4. Android kaynakları (AndroidManifest.xml) içeriğini seçip kopyalayın.

Android kaynaklarını Unity projenize ekleme

Unity projenize aşağıdaki Android kaynaklarını ekleyin:

  1. Unity Hub'da Window > Google Play Games > Setup > Android Setup'ı (Pencere > Google Play Games > Kurulum > Android Kurulumu) tıklayın.

    • Sabitleri kaydetmek için dizin alanına sabitler dosyasının klasör adını girin.
    • Constants class name (Sabitler sınıfı adı) alanına, ad alanı da dahil olmak üzere oluşturulacak C# sınıfının adını girin.

      Örneğin, C# sınıfı id.cs ise ve Assets > myproject > scripts > id.cs altında bulunuyorsa. Sabitler sınıfının adı myproject.scripts.id olabilir.

    • Kaynak tanımı alanına, Google Play Console'dan kopyaladığınız Android kaynak verilerini (AndroidManifest.xml dosyası) yapıştırın.

    • İsteğe bağlı: İstemci Kimliği alanına, bağlı web uygulamasının istemci kimliğini girin.

      Google Cloud'dan oyununuzun istemci kimliğini almak için İstemci kimlikleri oluşturma başlıklı makaleyi inceleyin.

      Bu yalnızca oyununuz için web tabanlı bir arka uca sahipseniz ve arka uç sunucusu tarafından erişim jetonuyla değiştirilecek bir sunucu yetkilendirme koduna ihtiyacınız varsa veya oyuncu için diğer oyun dışı API çağrılarını yapmak üzere bir kimlik jetonuna ihtiyacınız varsa gereklidir.

    • Kurulum'u tıklayın. Bu işlem, oyununuzu istemci kimliğiyle yapılandırır ve Android kaynaklarınızın her biri için sabitler içeren bir C# sınıfı oluşturur.

  2. Unity Hub'da Window > Google Play Games > Setup > Nearby Connections Setup'ı (Pencere > Google Play Games > Kurulum > Yakın Bağlantılar Kurulumu) tıklayın.

    • Yakın bağlantı hizmeti kimliği alanına package_name girin.

      Unity projesini ayarlama bölümünde kullandığınız package_name ile aynı package_name öğesini kullanın.

    • Kurulum'u tıklayın.

Bir sosyal platform seçin

Google Play Games Hizmetleri eklentisi, diğer platformlarla entegrasyon sırasında bu arayüzü zaten kullanan oyunlarla uyumluluk için Unity'nin sosyal arayüzünü uygular. Ancak bazı özellikler Play Games'e özeldir ve Unity'nin sağladığı standart sosyal arayüzün uzantıları olarak sunulur.

Standart API çağrılarına, ISocialPlatform arayüzüne referans veren Social.Active nesnesi üzerinden erişilebilir. Standart olmayan Google Play Games Hizmetleri uzantılarına, Social.Active nesnesi PlayGamesPlatform sınıfına yayınlanarak erişilebilir. Bu sınıfta ek yöntemler kullanılabilir.

Varsayılan sosyal platformu geçersiz kılmadan eklentiyi kullanma

PlayGamesPlatform.Activate yöntemini çağırdığınızda Google Play Oyun Hizmetleri, varsayılan sosyal platform uygulamanız olur. Bu durumda, Social ve Social.Active yöntemlerine yapılan statik çağrılar Google Play Oyun Hizmetleri eklentisi tarafından gerçekleştirilir. Bu, eklentiyi kullanan çoğu oyunun davranışıdır.

Ancak varsayılan uygulamayı erişilebilir tutmak istediğiniz bir neden varsa (ör. başarıları ve skor tablolarını farklı bir sosyal platforma göndermek için kullanmak) Google Play Games Hizmetleri eklentisini varsayılan uygulamayı geçersiz kılmadan kullanabilirsiniz. Bunu yapmak için:

  1. PlayGamesPlatform.Activate numaralı telefonu aramayın
  2. Xyz, Social sınıfında çağırmanız gereken bir yöntemin adıysa Social.Xyz'ı çağırmayın. Bunun yerine PlayGamesPlatform.Instance.Xyz numaralı telefonu arayın.
  3. Google Play Oyun Hizmetleri ile etkileşimde bulunurken Social.Active kullanmayın. Bunun yerine PlayGamesPlatform.Instance kullanın.

Bu sayede, puanları ve başarıları aynı anda iki veya daha fazla sosyal medya platformuna gönderebilirsiniz:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

Oturum açma hizmetini doğrulama

Oyununuz açıldığında Oturum açma hizmeti kullanılarak Play Oyun Hizmetleri'ne otomatik olarak bağlanmaya çalışılır. Bağlantı başarılı olursa oyununuzda oturum açma istemi gösterilir ve Unity için Google Play Games Hizmetleri eklentisi kullanılmaya hazır olur.

Cihazında Google Play Games Hizmetleri'ni hiç kullanmamış olan kullanıcılar, Play Games hesabı oluşturmak için otomatik olarak tek seferlik kurulum ekranına yönlendirilir.

Komut dosyanızın Start yönteminde, otomatik oturum açma girişiminin sonucunu dinleyin, kimlik doğrulama durumunu getirin ve kullanıcı oturum açmadıysa Play Games Hizmetleri özelliklerini devre dışı bırakın.

Unity eklentisinin sürümü v11'dan önceyse oturum açma özelliğini kullanamazsınız.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

Sonuç kodu, oturum açma hatasının nedenini belirlemek için kullanabileceğiniz bir enum'dur.

Unity'nin Social platformunu kullanmayı tercih ederseniz alternatif olarak aşağıdaki kodu kullanabilirsiniz:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Authenticate'dan başarılı bir dönüş değeri alana kadar Google Play Games Hizmetleri API çağrısı yapamazsınız. Bu nedenle, geri çağırma işlemi yapılana kadar oyunlarda bekleme ekranı gösterilmesini öneririz. Böylece, kimlik doğrulama tamamlanana kadar kullanıcıların oyunu oynamaya başlaması engellenir.

Play Uygulama İmzalama özelliğini kullanma

Google, Play Uygulama İmzalama'yı kullanarak uygulamanızın imzalama anahtarını yönetir ve korur. Optimize edilmiş Android App Bundle dosyalarının dağıtımını imzalamak için Play Uygulama İmzalama özelliğini kullanabilirsiniz. Play Uygulama İmzalama, uygulama imzalama anahtarınızı Google'ın güvenli altyapısında saklar. Play Uygulama İmzalama'yı kullanmak için öncelikle Unity Hub'dan bir AAB dosyası oluşturup indirmeniz gerekir. Ardından AAB dosyasını Play Console'a yükleyip dahili test sürümü oluşturabilirsiniz.

AAB dosyası oluşturma

Unity Hub'da AAB dosyası oluşturmak için aşağıdaki adımları uygulayın:

  1. Unity Hub'da File > Build settings'i (Dosya > Derleme ayarları) tıklayın.
  2. Build App Bundle (Google Play)'ı (Uygulama Paketi Oluştur (Google Play)) seçin.

    Daha fazla bilgi için Android Build Settings reference (Android Derleme Ayarları Referansı) başlıklı makaleyi inceleyin.

  3. Oluştur'u tıklayın.

  4. AAB dosyasını Unity Hub'dan indirin.

Dahili test sürümü oluşturma

Play Console'da dahili test sürümü oluşturmak ve test kullanıcıları eklemek için aşağıdaki adımları uygulayın:

  1. Google Play Console'da bir oyun seçin.
  2. Test etme ve yayınlama sayfasına gidin (Test > Dahili test).
  3. Yükle'yi tıklayın ve AAB dosyasını seçin.
  4. Yayın ayrıntıları alanına bir ad girin.
  5. İleri'yi tıklayın ve yayın ayrıntılarını inceleyin.
  6. Kaydet ve yayınla'yı tıklayın.
  7. Test kullanıcıları sekmesinde 100'e kadar test kullanıcısı eklemek için E-posta listesi oluştur'u tıklayın.

    Daha fazla bilgi için Dahili test: 100 kişiye kadar test kullanıcısını yönetme başlıklı makaleyi inceleyin.

  8. Geri bildirim URL'si veya e-posta adresi alanına geri bildirim URL'si ya da e-posta adresi girin.

  9. Kaydet'i tıklayın.

Uygulama imzalama kimlik bilgilerinizi doğrulama

  1. Google Play Console'da bir oyun seçin.
  2. Test edin ve yayınlayın sayfasına gidin (Kurulum > Uygulama imzalama).
  3. Uygulama imzalama kimlik bilgilerinizi doğrulayın.

Projeyi oluşturma ve çalıştırma

Bu noktada oyun projesini oluşturup çalıştırabilirsiniz. Oyun başladığında otomatik oturum açma girişimi gösterilir.

USB hata ayıklama özelliği etkinleştirilmiş fiziksel bir Android cihaz veya geliştirilen projeyi çalıştırabilen bir emülatöre ihtiyacınız vardır.

Sunucu kimlik doğrulama kodlarını alma

Mevcut oyuncu adına arka uç web sunucusunda Google API'lerine erişmek için istemci uygulamasından bir kimlik doğrulama kodu almanız ve bunu web sunucusu uygulamanıza iletmeniz gerekir. Kod daha sonra çeşitli API'lere çağrı yapmak için erişim jetonuyla değiştirilebilir. İş akışı hakkında bilgi edinmek için Google ile web'de oturum açma başlıklı makaleyi inceleyin.

Sunucu tarafı erişim kodunu almak için:

  1. Play Console'da oyununuzun web istemci kimliğini ekleyin.
    1. Google Play Console'da oyununuzu seçin.
    2. Yapılandırma sayfasında (Kullanıcı sayısını artırın > Play Games Hizmetleri > Kurulum ve yönetim > Yapılandırma) Kimlik bilgisi ekle'yi tıklayın.
    3. Kimlik bilgisi ekle sayfasında Oyun sunucusu'nu seçin.
    4. OAuth 2.0 istemci kimliği oluşturun.
    5. İstemci kimliği değerini not edin. Bu değeri daha sonra sağlamanız gerekir.
  2. Web istemci kimliğini Unity Hub'a ekleyin.

    1. Unity Hub'da Unity için Google Play Games'i ayarlayın ve oturum açın.
    2. Unity Hub'da Window > Google Play Games > Setup > Android Setup'a (Pencere > Google Play Games > Kurulum > Android Kurulumu) gidin.
    3. İstemci kimliği değerini girin.
  3. Ek kapsamlar için sunucu yetkilendirme kodunu alın.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Özellikleri ayarlama ve ekleme