22 Şubat 2017 Çarşamba

Unity Google Play Servisleri Entegrasyonu

Yorum Bırak


Kullanıcıların oyununuzda oturum açıp Google Play Oyun Hizmetleri'ni kullanabilmesi için oyununuzu Geliştirici Konsolu'na (Play Developer) kaydettirmeniz gerekmektedir. Bu yazıda, Geliştirici Konsolu'nda bir Play Oyun Hizmetleri projesi oluşturup onu Unity projenize nasıl bağlayacağınıza bakacağız. Bu kısımda oyunumuzun hazır olduğunu varsayıp sadece google play entegrasyonu kısmına bakacağız.

Oyun Projemizi Oluşturalım

  1. Google Play Geliştirici Konsolu'na gidip ve oturum açalım. Henüz bir hesabınız yoksa, hesap oluşturmanız gerekecek.
  2. Oyun Hizmetleri'ni tıklayın ve ardından sağ üstteki Yeni oyun ekle düğmesini tıklayın.
  3. 'Oyunumda henüz herhangi bir Google API kullanmıyorum' başlıklı sekmeyi seçin.
  4. Oyununuzun adını yazın ve oyun kategorisini seçip Devam et'i tıklayın.
  5. Son olarak, formun üst kısmındaki Kaydet'i tıklayarak bu oyunun ayarlarınızı kaydedin.

Android Uygulamamızı Bağlayalım

  1. Sol kenar çubuğundaki Bağlı Uygulamalar(Linked Apps) sekmesini tıklayalım, ardından Android'i tıklayalım.
     Not: Bir 'Bağlantılı Uygulamalar' düğmesi görmüyorsanız, pencerenizi tam ekrana getirin veya sol taraftaki 'hamburger' düğmesini tıklayın.
  2. Paket Adı (Package Name) altında, Unity projenizi oluştururken seçtiğiniz Paket Tanımlayıcı'yı  (Bundle Identifier) (Dosya> Yapı Ayarlarını açıp Oynatıcı Ayarlarını tıklayarak bulabilirsiniz - File>Build Settings>Player Settings) koyalım. Her iki yerde de aynı string ifadeyi kullandığımızdan emin olalım. Ardından Kaydet ve devam et'i tıklayalım.
  3. Bir sonraki ekranda Authorize your app now'i tıklayın. Bu kısımda Marka Bilgilerini girmeniz gereken bir dialog gelebilir. Burası oturum açma ekranında görünen bilgileri kontrol edebileceğiniz yerdir, ancak bunu şimdilik atlayacağız. 'Devam Et'i tıklamanız yeterlidir.
  4. İstemci Kimliği Ayarları (Client ID Settings) iletişim kutusunda bir 'Sertifika parmak izi imzalama (SHA1) imzalama'  girmeniz gerekmektedir. Bunu Android debug keystore'dan oluşturmanız gerekecek. Bunu oluşturmak için aşağıdaki keytool komutunu kullanabiliriz (keytool, Oracle JDK'nın bir parçasıdır ve makinenizde JDK'nızın bin dizinine önceden kurulmuş olmalıdır):

    #  $DEBUG_KEYSTORE kısmını kendi android debug keystore lokasonunuz ile değiştirin
    # Bu lokasyon normalde Mac/Linux bilgisauarlarda : $HOME/.android/debug.keystore 
  5. #Windows bilgisayarlarda: C:\Users\<USERNAME>\.android\debug.keystore şekindedir.
    keytool -list -v -keystore $DEBUG_KEYSTORE -alias androiddebugkey -storepass android -keypass android
      5. Komut çalıştırdıktan sonra çıkan SHA1 parmak izini kopyalayın. Ardından Create Client'ı                   tıklayın. Her şeyi doğru yapmışsanız, 'Successfully linked your Client ID' mesajını, ardından             bir  İstemci Kimliği (Client ID) stringi görmelisiniz. Bu dizeye ihtiyacınız olmayacaktır, bu                 nedenle yazmaya zahmet etmeyin.

     
6. Sol kenar çubuğundaki Test sekmesini tıklayın. Ardından Add Testers'i tıklayın ve bu oyunu                test etmek için kullanacağınız tüm Google hesaplarını ekleyin. Bunlar, Android geliştirme                    cihazınızdaki hesaplarla aynı olmalıdır.

Developer Konsol'dan LeaderBoard Oluşturma

  1.  Google Play Developer Console'daki projenize geri dönüp Leaderboards tabına tıklayalım.
  2.  Add Leaderboard kısmına tıklayıp skorları tutacağımız bilgileri girelim
  3. Name: "Top Skorlar"
  4. Score Formatting: Numeric
  5. Number of Decimal places: 0 (virgülden sonraki puanlar içindir, biz tam değerler gireceğiz bu yüzden bu kısımı 0 yaptık)
  6. Ordering: "Larger is better".(Burası da Sıralama kısmı, büyük skorlar daha iyidir bizim için)
  7. Kaydet deyip bitirelim.
Şimdi oluşturduğunuz Leaderboard ile ilgili  bilgileri görebilmelisiniz.

Play Games Unity Plugin Ayarları

Geliştirici Konsolu'nda bir oyun projesi oluşturduğumuza göre, Unity projemizi Play Oyun Hizmetleri ile etkileşim kuracak şekilde yapılandırmaya hazırız.

 Play Oyun Hizmetleri Plugin'i Import Etme

  1. Unity için google play servisleri plugini buradan indirebilirsiniz.
  2. İndirikten sonra Unity'i açıp Assets > Import Package > Custom Package menüsünden indirdiğimiz dosya içerisinden current-build/GooglePlayGamesPlugin-*.unitypackage from the play-games-plugin-for-unity plugini seçip import diyoruz.
  3. Böylece plugini unity oyunu içerisine import ettik. Şimdi de gerekli ayarları yapacağız.
  4. Unity projesini açın ve Window > Google Play Games > Setup > Android Setup'ı tıklayalım.
  5.  "constants class name" için GPGSIds kullanın.
  6. Play Oyun konsoluna geri dönelim ve leaderboard resources  listesine gidelim (hala orda olmalısınız ...). Sayfanın ortasındaki Kaynakları Al'ı (Get Resources ) tıklayın ve Android içeriğini panoya kopyalayın.
  7. Pano içeriğini Resources Definition metin alanına yapıştırın.
  8. Diğer ayarları ve web client Id'yi boş bırakabilirsiniz.
  9. Setup'ı tıklayın.

Kurulumun başarıyla yapıldığına dair bir onay olacak, Setup'ı tıklayın. İşlemleri başarıyla tamamladığımızda girdiğimiz bilgiler aşağıdakine benzer olmalıdır:
Unity Google Play Servisleri Entegrasyonu

Google Play Hesabı ile Oturum Açma ve Skor Kaydetme

Bu aşamaya kadar herşeyi başarılı bir şekilde yaptıysak unity pluginimiz google play servislerine bağlanmaya hazır olması gerekmektedir. Şimdi de oyun kodumuz içerisinde servisleri initialize edip oturum açacağız.

using System.Collections;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine;

public class MainMenuEvents : MonoBehaviour {

 
    public void Start() {

        // Bu kısımda servisi initialize ediyoruz
        PlayGamesClientConfiguration config = new 
            PlayGamesClientConfiguration.Builder()
            .Build();

        // Enable debugging output (recommended)
        PlayGamesPlatform.DebugLogEnabled = true;
        
        // Initialize and activate the platform
        PlayGamesPlatform.InitializeInstance(config);
        PlayGamesPlatform.Activate();

    }

}


Oyunumuzun Start metodu içerisinde servisimizi initialize ettik. Şimdi de SignIn metodunu ve callback metodunu yazalım:

   public void SignIn() {
        if (!PlayGamesPlatform.Instance.localUser.authenticated) {
            //  Play Game Servisleri için SignIn metodu, 
            PlayGamesPlatform.Instance.Authenticate(SignInCallback, false);
        } 
    }

Aşağıda da callback metodumuz var, bu metod SignIn işlemi tamamlanınca çalışır.

public void SignInCallback(bool success) {
        if (success) {
            Debug.Log("Giriş başarılı!");
            // bu kısımda giriş yaptıktan sonra yapmak istediğiniz ekstra şeyler varsa yazabilirsiniz
        } else {
            Debug.Log("Giriş başarısız");
            //bu kısıma gelindiyse giriş başarısızdır.
        }
    }

SignIn metodumuzu da nerde giriş yapmak istiyorsak orda çalıştırabiliriz. İstersek button click eventine verebiliriz, istersek de direk otomatik giriş yapmasını istiyorsak Start metodumuzun en altına koyabiliriz.

Skor Kaydetme ve Skor Listesini Gösterme

Google Play hesabımızla giriş işlemini de yaptığımıza göre şimdi de skorları kaydetme işlemine bakabiliriz:

if (PlayGamesPlatform.Instance.localUser.authenticated)
            {
int kaydedilecekSkor=10;
                //  'using GooglePlayGames' referansını eklemeyi unutmayalım
                PlayGamesPlatform.Instance.ReportScore(kaydedilecekSkor,                    GPGSIds.serviseKaydettiğimizString,
                    (bool success) =>
                    {
                        Debug.Log("Skor başarıyla kaydedildi ");
                    });
            }

Yukarıdaki kısımda skor kaydetme işlemini yaptık. Ben şimdilik 10 şeklinde bir skor kaydettim. Siz buraya kendi skorunuzu parametre ile gönderip metod haline geriebilirsiniz. GPGSIds.serviseKaydettiğimizString kısmı da google play kaynaklarında unitye eklerken kullandığımız kısım. 

Şimdi de skorları gösterme dialogunu açalım:

 public void ShowLeaderboards() {
        if (PlayGamesPlatform.Instance.localUser.authenticated) {
            PlayGamesPlatform.Instance.ShowLeaderboardUI();
        }
        else {
          Debug.Log("Skorlar gösterilemiyor- giriş yapılmadı");
        }
    }

Bu kısımda da skorlar dialogunu gösterdik.

Sonuç

Sonuç olarak google play konsole da oyunumuzun ayarlarını yapıp, untiy'e plugini import ettik ve android  için gerekli ayarları yaptık. Daha sonra servisleri intialize etme, oturum açma, skorları gönderme ve skor listesini gösterme işlemlerini yaptık. Siz de bu yazıdan ilerleyerek kendi oyununuza google play servislerini entegre edebilirsiniz.

Bu yazıda buradan yararlanılmıştır.

0 yorum:

Yorum Gönder