Unity'yi ve PC Üzerinde Google Play Games'i Kullanmaya Başlama

1. Giriş

Google Play Games logosu

Last Updated: 2022-10-18

Oyununuzu PC Üzerinde Google Play Games'e nasıl hazırlarsınız?

Google Play Games, mobil oyununuzu Windows PC'lere taşımanızı kolaylaştırır. Bu sayede, oyununuzun mimarisini yeniden tasarlamanıza veya iş modelinizi yeniden düzenlemenize gerek kalmadan oyuncu etkileşiminizi ve kitlenizi büyütebilirsiniz. Yeni PC oyuncularınıza mümkün olan en iyi deneyimi sunmak için yapmanız gereken birkaç değişiklik daha var.

Neler öğreneceksiniz?

Bu codelab, oyununuzu kullanıma hazır hale getirmek için gereksinimler kontrol listesinin temel kısımlarını kapsar ve kendi Unity oyununuzu PC Üzerinde Google Play Games için hazırlamanıza yardımcı olur. Play Games Sign-On ve Play Integrity API gibi daha ayrıntılı entegrasyonlar ele alınmamaktadır.

  • Unity'den x86 mimarisi için nasıl derleme yapılır?
  • Google Play Games emülatöründe test etme ve dağıtma
  • Kullanıcı arayüzünüzü PC'de harika görünecek şekilde değiştirme
  • Google Play Games emülatöründe çalışıp çalışmadığınızı nasıl tespit edeceğinizi ve oyununuzu buna göre nasıl uyarlayacağınızı öğrenin.

Gerekenler

2. Hazırlanın

Yeni bir proje açma veya oluşturma

  1. 2D Platformer Microgame'i kullanarak yeni bir proje oluşturun veya kendi projenizi açın.

The Unity

  1. Projede File -> Build Settings'i (Dosya -> Derleme Ayarları) seçin ve Android için derleme yapacak şekilde ayarlandığınızı doğrulayın.

Unity'nin ekran görüntüsü

3. Google Play Games emülatörünü hazırlama

Emülatörü indirerek başlayın.

Yükledikten sonra bir pencerede Android masaüstünü görürsünüz:

Google Play Games emülatör penceresinin ekran görüntüsü. Android ana ekranı görünür olmalıdır.

Bu, oyun geliştirmeye uygun, tam özellikli ve yüksek performanslı bir Android ortamıdır. Android Debug Bridge'de (adb) localhost'taki bir cihaz olarak görünmelidir:

❯ adb devices
List of devices attached
localhost:6520  device

Emülatörü algılamak için adb'nin yeni bir sürümüne ihtiyacınız var. Android Studio ile birlikte gelen sürüm çalışır ancak Unity ile birlikte gelen adb çalışmayabilir. Uyumlu bir sürüm emülatörle birlikte gelir ve C:\Program Files\Google\Play Games Developer Emulator\current\emulator adresinde bulunabilir. En iyi geliştirici deneyimi için Android Studio'yu yükleyip Android SDK'nızı yönetmek için kullanabilirsiniz.

Emülatörün adb ile bağlantısı kesilirse komut satırından şu şekilde yeniden bağlayın:

adb connect localhost:6520

4. Unity'yi doğrudan emülatörde derleme ve dağıtma için yapılandırma (isteğe bağlı)

Unity ile birlikte gelen adb sürümü, emülatörle uyumlu olmayabilir. Emin olmak için Dosya -> Derleme Ayarları'nı seçin ve Run Device iletişim kutusunda listelenip listelenmediğini kontrol edin.

Cihazı

Projenize, derleme işleminize ve rahatlık düzeyinize bağlı olarak Unity'yi doğrudan Google Play Games emülatörüne dağıtılacak şekilde yapılandırabilir veya bir APK oluşturup adb install ile manuel olarak dağıtabilirsiniz. Manuel olarak dağıtmak en az değişikliği gerektirir ancak yineleme döngünüzü yavaşlatabilir.

Aşağıdaki iki adımı uygulayarak doğrudan emülatöre dağıtın:

  1. Unity'yi başka bir Unity SDK'sını kullanacak şekilde yapılandırın. İdeal olarak Android Studio tarafından yüklenen SDK'yı kullanın.
  2. Unity'deki bir hatayı gidermek için Build Tools sürümünü güncelleyin.

Unity ile birlikte gelen Android SDK sürümü emülatörü muhtemelen algılamayacağından daha yeni bir SDK yüklemek için Android Studio'yu kullanırsınız.

  1. Android Studio'yu açıp Edit -> Preferences -> External Tools'u (Düzenle -> Tercihler -> Harici Araçlar) seçin.
  2. Android SDK Tools Installed with Unity işaretini kaldırın ve Android Studio'nun yüklendiği yolu (genellikle AppData/Local/Android/sdk) belirtin. Android NDK seçeneğini olduğu gibi bırakın.

Ekran görüntüsü

Bağlı cihazları yenilediğinizde derleme penceresinde Google HPE device (localhost:6520) simgesini görmeniz gerekir:

Ekran görüntüsü

Bu hatanın durumuna ve Unity sürümünüze bağlı olarak derleme araçları sürümünüzü de değiştirmeniz gerekebilir. Bunun için mainTemplate.gradle ve launcherTemplate.gradle oluşturduğunuzdan emin olun.

  1. Player Ayarları'na gitmek için Proje Ayarları penceresini açın ve Publishing Settings bölümünü bulun.
  2. Build (Derleme) seçeneklerine gidin ve Assets\Plugins\Android\ altında her iki Gradle dosyasını da oluşturacak olan "Custom Main Gradle Template" (Özel Ana Gradle Şablonu) ve "Custom Launcher Gradle Template" (Özel Başlatıcı Gradle Şablonu) seçeneklerini işaretleyin.

Ekran görüntüsü

  1. **BUILDTOOLS** dizesinin tüm örneklerini 30.0.0 ile değiştirir. Her iki dosyada da kod bölümü şu şekilde olmalıdır:
android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '30.0.0'

5. Chromebook'a dağıtma (isteğe bağlı)

ChromeOS cihaz kullanarak Google Play Games emülatörüne erişmeden Google Play Games için oyun geliştirmeye başlayabilirsiniz. Chromebook'lar, PC Üzerinde Google Play Games'e benzer şekilde klavye ve fareye sahiptir, büyük ekranlıdır ve x86 yapılandırmalarında kullanılabilir. Chromebook ile Android Logcat Unity eklentisini kullanacağız.

  1. Paket Yöneticisi'ni açın ve Unity Registry altında Android Logcat öğesini arayın.

Paket Yöneticisi penceresi

Ayrıca Chromebook'unuzu Android geliştirme için yapılandırmanız gerekir. Linux'u etkinleştirerek başlayın.

  1. Ayarlar -> Geliştirici -> Linux'u seçin.

Linux desteğinin nasıl etkinleştirileceğini gösteren animasyonlu resim.  Ayarlar penceresinde Geliştirici seçilidir. Sonra

Ardından ADB hata ayıklama işlevini etkinleştirin.

  1. Ayarlar -> Geliştiriciler -> Linux geliştirme ortamı -> Android uygulamaları geliştirme -> ADB hata ayıklamayı etkinleştirme'yi seçin.

ADB hata ayıklama işlevi, Geliştirici menüsünden etkinleştirilir.

Ayrıca Chromebook'unuzun IP adresini de almanız gerekir. Bunu yapmanın en kolay yolu

  1. Chromebook'unuzun IP adresini almak için Ağ Bilgileri simgesini tıklayın.

Chromebook'ta açık olan ağ penceresinin ekran görüntüsü.

Ağ bilgisi düğmesi tıklanır ve IP adresi gösterilir.

  1. Android Logcat penceresini açmak için Window -> Analysis -> Android Logcat'i (Pencere -> Analiz -> Android Logcat) seçin.

Window>Analysis open in Unity with

  1. Cihaz listesini açın. Şu anda hiçbir cihaz bağlı değilse No Device yazabilir.

Android Logcat penceresi gösteriliyor, cihaz açılır listesi seçili.

  1. Diğer bağlantı seçenekleri'ni tıklayın ve Chromebook'unuzun IP adresini girin.

Diğer Bağlantılar penceresi açık olmalıdır. Bir IP adresi girilir.

  1. Bağlan'ı tıklayın. Başarı penceresini görmeniz gerekir:

Şu mesajı içeren bir iletişim kutusu gösterilir:

Chromebook'unuz artık Unity'nin Run Device (Cihazı Çalıştır) listesinde görünür (önce ekranı yenilemeniz gerekebilir):

The Unity

Artık Chromebook'unuza oyun dağıtabilir ve PC benzeri donanımlarda test ve geliştirme işlemlerine başlayabilirsiniz.

6. Test sürümü dağıtma

Google Play Games, oyununuzun x86 sürümünü dağıtmanızı gerektirir. Bu, masaüstü PC'lerde performans ölçütlerine ulaşmanın bir parçasıdır. Unity'nin tüm LTS varyantları, x86 ve x86-64 uyumlu Android derlemeleri ("Chrome OS" olarak etiketlenir) oluşturabilir. Unity 2018 ve önceki sürümleri ise x86 derlemeleri oluşturabilir. Bu mimarilerin kilidini açmak için önce IL2CPP komut dosyası arka ucuna geçmeniz gerekir. Bu işlemi, arm64 desteği için üretimde zaten yapıyor olabilirsiniz.

  1. Derleme Ayarları penceresini açmak için File -> Build Settings'i seçin, ardından Player Settings'i (Oynatıcı Ayarları) tıklayın.

Ekran görüntüsü

  1. Diğer Ayarlar bölümüne gidin ve Scripting Backend simgesini IL2CPP olarak değiştirin.

Ekran görüntüsü

Ayrıca x86 veya x86-64 desteğini de etkinleştirmeniz gerekir. Google Play Games platformunda yayınlamak için x86'yı desteklemeniz yeterlidir ancak x86-64'ü öneririz.

Oynatıcı Ayarları'ndaki Yapılandırma bölümünün ekran görüntüsü

Unity'nin paketlediği Frame Pacing kitaplığının sürümü de Google Play Games ile uyumlu değildir ve oyununuzun başlatılırken kilitlenmesine neden olur.

  1. Player Settings (Oynatıcı Ayarları) penceresinden Frame Pacing'i devre dışı bırakmak için Resolution and Presentation (Çözünürlük ve Sunum) bölümünü açın ve Optimized Frame Pacing (Optimize Edilmiş Frame Pacing) seçeneğinin işaretini kaldırın.

Ekran görüntüsü

Artık derleme yapmaya hazırsınız.

  1. Build Settings (Derleme Ayarları) penceresini tekrar açın ve Build And Run'ı (Derle ve Çalıştır) tıklayın. Oyununuz, emülatör penceresinde görünür.

Google Play Games emülatörünün ekran görüntüsü

Oyununuzu dağıtamıyorsanız "Google HPE device (localhost:6520)" seçeneğinin "Run Device" (Cihazı Çalıştır) listenizde görünüp görünmediğini kontrol edin. Eksikse HPE_Dev'in çalıştığından ve Android ana ekranını görebildiğinizden emin olun. Hâlâ cihaz listenizde görünmüyorsa adb connect localhost:6520 uygulamasını kullandığınız adb.exe ile birlikte çalıştırın. Android Logcat Unity eklentisini kullanıyorsanız adb.exe Unity'nin kullandığı dizine bir terminal açmak için Tools -> Open Terminal'ı (Araçlar -> Terminali Aç) seçin.

Ekran görüntüsü Terminali açın" vurgulanmış" style="width: 624.00px" src="img/9101ce3c95fb1aa2.png" srcset="img/9101ce3c95fb1aa2_36.png 36w, img/9101ce3c95fb1aa2_48.png 48w, img/9101ce3c95fb1aa2_72.png 72w, img/9101ce3c95fb1aa2_96.png 96w, img/9101ce3c95fb1aa2_480.png 480w, img/9101ce3c95fb1aa2_720.png 720w, img/9101ce3c95fb1aa2_856.png 856w, img/9101ce3c95fb1aa2_960.png 960w, img/9101ce3c95fb1aa2_1440.png 1440w, img/9101ce3c95fb1aa2_1920.png 1920w, img/9101ce3c95fb1aa2_2880.png 2880w" sizes="(max-width: 840px) 100vw, 856px">

7. Oyununuzu PC'ye uyarlama

Mümkün olduğunda, oyununuzda platformdan bağımsız metrikleri veya belirli özelliklerin varlığını temel alarak değişiklik yapmaya çalışın. Örneğin, Android'de bir oyuncu fare ve klavye bağlayabilir veya monitör takabilir. Bu nedenle, kontrol düzeninizi ya da uyarı ekranı (HUD) öğelerinizi cihaz yapılandırmanıza göre değiştirerek PC Üzerinde Google Play Games'in desteklenen tüm platformlarınızda çalışmasından yararlanabilirsiniz.

Oyuncunun Google Play Games veya ChromeOS'te olup olmadığına göre mantığı değiştirmek mantıklıysa bu komut dosyası, HPE_EXPERIENCE sistem özelliğini kontrol ederek bunu algılamanıza yardımcı olur:

using UnityEngine;

public class GoogleDeviceUtilities
{
#if UNITY_ANDROID && !UNITY_EDITOR
    private static AndroidJavaObject PackageManager
    {
        get
        {
            var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
            return currentActivity.Call<AndroidJavaObject>("getPackageManager");
        }
    }

    public static bool IsChromeOS => PackageManager.Call<bool>("hasSystemFeature", "org.chromium.arc");

    public static bool IsGooglePlayGames =>
        PackageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");

    public static bool HasKeyboard
    {
        get
        {
            var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
            var resources = currentActivity.Call<AndroidJavaObject>("getResources");
            var configuration = resources.Call<AndroidJavaObject>("getConfiguration");
            var keyboard = configuration.Get<int>("keyboard");
            return keyboard == 2; // Configuration.KEYBOARD_QWERTY
        }
    }
#else
    public static bool IsChromeOS => false;
    public static bool IsGooglePlayGames => false;
    public static bool HasKeyboard => true;
#endif
}

PC'ler, normal Android telefonlardan daha büyük bir ekrana sahiptir. Mümkün olduğunda, HUD'nızın ekranın en fazla% 20'sini kaplamasını öneririz. Birçok mobil oyun "Ekran Boyutuyla Ölçeklendir"i kullandığından bunu "Sabit Fiziksel Boyut" veya "Sabit Piksel Boyutu" olarak değiştirmek bu hedefe ulaşmak için iyi bir ilk adım olabilir.

Ekran görüntüsü

Google Play Games'de çalıştığınızı algılarsanız çalışma zamanında QualitySettings.SetQualityLevel komutunu kullanarak kalite ayarlarını dinamik olarak da belirleyebilirsiniz. Google Play Games emülatörü, OpenGL Unity'nin yaydığı yerel DirectX veya Vulkan komutlarını vermek için ANGLE'ı kullanır. Bu sayede, mobil oyun derlemelerinizde elde ettiğinizden daha yüksek bir grafik doğruluğu elde edebilirsiniz.

8. Giriş işleme

Google Play Games'de sunulan oyunlar, fare ve klavye girişine göre tasarlanmalıdır. Oyununuzla fare ve klavye kullanarak nasıl etkileşim kuracağınızı planlamanız gerekir. Bu nedenle, Input SDK unitypackage'i edinmek için zaman ayırın. Bu sayfada indirme işlemi görmüyorsanız play-mp-libs grubundaki bir hesapla oturum açtığınızdan emin olun.

Birçok oyun, test amacıyla düzenleyicide geliştirme için temel fare ve klavye kontrolleri oluşturur. Mümkün olduğunda, ChromeOS cihazda veya Google Play Games emülatöründe çalışırken bunları etkinleştirebilirsiniz.

Google Play Games ve ChromeOS, fare girişini varsayılan olarak simüle edilmiş dokunmaya dönüştürür. Input.GetTouch ve Input.touchCount kullanıyorsanız oyununuz beklendiği gibi çalışmaya devam eder. Çift başparmak kontrolü veya yakınlaştırmak için parmakla sıkıştırma gibi çoklu dokunma girişini kullanıyorsanız işlemi tuşlara basma hareketine eşlemeniz gerekir. Ayrıca oyun içi işlemleri tuşlara da eşlemeniz gerekir. Örneğin, envanterinizi açmak için i, iletişim kutularını kapatmak için escape ve oyun içi mesaj göndermek için enter tuşuna basabilirsiniz.

2D Platformer Microgame'de hareket etmek için oklar, zıplamak için boşluk tuşu kullanılır. Kendi oyununuzu kullanıyorsanız sonraki adım için tercih ettiğiniz tuş bağlamalarını ayarladığınızdan emin olun.

9. Input SDK entegrasyonu

Fare ve klavye kontrollerinizi ayarladığınıza göre artık Input SDK desteği eklemeniz gerekir. Bu sayede oyuncular, PC girişlerinizi kullanışlı bir pop-up ile keşfedebilir:

  1. SDK'yı projenize aktardıktan sonra InputMappingProviderBehaviour.cs adlı bir dosya oluşturun ve şu içerikleri ekleyin:
using System.Collections.Generic;
using Google.Play.InputMapping;
using UnityEngine;
using Input = Google.Play.InputMapping.Input;

public class InputMappingProviderBehaviour : MonoBehaviour
{
    private void Start()
    {
        Input.GetInputMappingClient().RegisterInputMappingProvider(new MyInputMappingProvider());
    }

    private class MyInputMappingProvider : InputMappingProvider
    {
        public InputMap OnProvideInputMap()
        {
            return new InputMap
            {
                InputGroups = new List<InputGroup> { },
                MouseSettings = new MouseSettings
                {
                    InvertMouseMovement = false,
                    AllowMouseSensitivityAdjustment = false
                }
            };
        }
    }

    private enum ActionIds
    {
    }
}
  1. Şimdi ActionIds bölümünü oyununuzda kullandığınız işlemlerin listesiyle doldurun. 2D Platformer Microgame'de eylemler şunlardır: Sola, Sağa ve Zıpla:
private enum ActionIds
{
    Left,
    Right,
    Jump
}
  1. OnProvideInputMap içinde her işlem için bir InputAction oluşturun. Bunun için işlemin adı, giriş ve ardından buna bağlanacak fare düğmeleri veya tuş kodları gerekir. Örnek oyun için:
var leftAction = new InputAction
{
    ActionLabel = "Walk Left",
    UniqueId = (int)ActionIds.Left,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[]
        {
            AndroidKeyCode.KEYCODE_DPAD_LEFT
        }
    }
};

var rightAction = new InputAction
{
    ActionLabel = "Walk Right",
    UniqueId = (int)ActionIds.Right,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[]
        {
            AndroidKeyCode.KEYCODE_DPAD_RIGHT
        }
    }
};

var jumpAction = new InputAction
{
    ActionLabel = "Jump",
    UniqueId = (int)ActionIds.Jump,
    InputControls = new InputControls
    {
        AndroidKeycodes = new[]
        {
            AndroidKeyCode.KEYCODE_SPACE
        }
    }
};
  1. Ardından, bu giriş işlemlerini gruplandırın.

Mikro oyun için yalnızca bir grubumuz var ancak oyuncularınızın ihtiyaç duydukları işlemleri bulmalarına yardımcı olmak için istediğiniz kadar grup oluşturabilirsiniz. Bunu OnProvideInputMap öğesine ekleyin:

var movementInputGroup = new InputGroup
{
    GroupLabel = "Movement",
    InputActions = new List<InputAction>
    {
        leftAction, rightAction, jumpAction
    }
};
  1. Oluşturduğunuz tüm giriş gruplarını giriş haritasına ekleyin. OnProvideInputMap içindeki dönüş ifadesini aşağıdaki gibi değiştirin:
return new InputMap
{
    InputGroups = new List<InputGroup> { movementInputGroup },
    MouseSettings = new MouseSettings
    {
        InvertMouseMovement = false,
        AllowMouseSensitivityAdjustment = false
    }
};
  1. Son olarak, oluşturduğunuz komut dosyasını oyununuza ekleyin:

Adlandırılmış bir düğümün ekran görüntüsü

  1. Oyununuzu tekrar dağıttığınızda oyun içi yer paylaşımını açmak için Shift+Tab tuşuna basın.

Ekran görüntüsü

  1. Yapılandırdığınız kontrolleri görmek için Kontroller'i tıklayın.

Ekran görüntüsü

10. Yerleştirilmiş web görünümlerini kaldırma

Oyuncularınıza mükemmel bir deneyim sunmak için yerleştirilmiş web görünümlerini kaldırmanız gerekir. Gizlilik Politikanız veya Hizmet Şartlarınız gibi öğeleri göstermek için yerleştirilmiş web görünümlerinin kullanılması yaygın bir uygulamadır. Bu bağlantılar Google Play Games'de çalışsa da oyuncunun tercih ettiği masaüstü tarayıcısı yerine yerleştirilmiş bir"mobil" tarayıcıda gösterilir ve PC oyuncularında kafa karışıklığına neden olabilir. Bu nedenle Unity'de yerleştirilmiş bir tarayıcıyı göstermek için herhangi bir uzantı kullanıyorsanız Application.OpenURL(url)'ye geri dönün.

11. İzinler ve özellikler

Google Play Games'de desteklenmeyen bir dizi Android özelliği ve izni vardır. Genel bir kural olarak, bilgisayarınızın derlemesi asla izin iletişim kutusu göstermemelidir. Derlemeniz hazır olduğuna göre, tipik bir yeni yükleme işleminden geçip gördüğünüz tüm iletişim kutularını yazarak oyununuzu göndermeden önce yapılacaklar listenize ekleyebilirsiniz.

Bazı Unity oyunları, Android.Permission API'sini kullanarak izin ister. Bunları if (GoogleDeviceUtilities.IsGooglePlayGames) kontrolleriyle sarmalı ve geçerliyse doğrudan hata mantığınıza gitmelisiniz.

12. Masaüstü optimizasyonları

Google Play Games, normal bir Android telefona kıyasla birkaç farklılık içerir. Bu nedenle, oyununuzu buna göre yapılandırmak isteyebilirsiniz.

Doku sıkıştırma için DXT'ye geçin. ETC gibi yaygın Android doku biçimleri, doğrudan bir oyuncunun GPU'suna aktarılamazsa çalışma zamanında bellekte kod çözülür. ASTC, oyununuzun beklenen davranışını doğrulamak için bir masaüstü GPU profili oluşturma aracı kullanmanız gerekse de en iyi masaüstü uyumluluğunu sunar.

The Unity

Artık masaüstü GPU'su kullandığınız için grafik kalitenizi de artırabilirsiniz. Bu ayarı doğrudan Proje Ayarları bölümündeki Kalite altında değiştirebilirsiniz.

Ekran görüntüsü

13. Tebrikler

Google Play Games için oyununuz üzerinde çalışmaya başlamak üzere her şeyi hazırladınız. Oyununuzu test etmeye ve üzerinde yineleme yapmaya başlayabilirsiniz. Aynı kod tabanınızı kullanmaya devam edebileceğinizi ancak oyununuzu yerel bir PC oyunu gibi hissettirecek şekilde uyarlamanız gerektiğini unutmayın.

Yapabilecekleriniz

Google Play Games'de oyun yayınlamak için yapılması gereken daha çok iş var:

Son olarak, Google Play Games'i desteklemek için bu noktaya kadar yaptığınız çalışmaların çoğu, ChromeOS'te de yayınlamanıza yardımcı olur. Bu nedenle, PC ile birlikte bu platformu da desteklemeyi düşünmelisiniz.