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

1. Giriş

Google Play Games logosu

Son Güncelleme: 18.10.2022

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, oyununuzu yeniden tasarlamak veya iş modelinizi yeniden tasarlamak zorunda kalmadan oyuncu etkileşimini ve kitlenizi artırabilirsiniz. PC'deki yeni oyuncularınıza mümkün olan en iyi deneyimi sunmak için yapmanız gereken birkaç değişiklik var.

Neler öğreneceksiniz?

Bu codelab'de, oyununuzu kullanıma sunmanızı sağlayacak koşullar listesinin temel bölümleri ve PC Üzerinde Google Play Games için kendi Unity oyununuzu hazırlamanıza yardımcı olacak bilgiler yer alır. Play Games ile Oturum Açma ve Play Integrity API gibi daha ayrıntılı entegrasyonlar bu kapsama dahil değildir.

  • Unity'den x86 mimarisi için uygulama geliştirme.
  • Google Play Games emülatörüne test etme ve dağıtım yapma
  • Kullanıcı arayüzünü PC'de mükemmel görünecek şekilde değiştirme.
  • Google Play Games emülatöründe çalışıp çalışmadığını tespit etme ve oyununuzu buna göre uyarlama.

Gerekenler

2. Hazırlanın

Yeni proje açma veya oluşturma

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

Birlik

  1. Projeden File -> (Dosya ->) seçeneğini belirleyin. Derleme Ayarları'nı tıklayın ve Android'e yönelik uygulama derlemeye hazır olup olmadığınızı kontrol edin.

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

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

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

Uygulamayı yükledikten sonra bir pencerede bir Android masaüstü görürsünüz:

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

Bu, oyun geliştirme için uygun, tam özellikli yüksek performanslı Android ortamıdır. Android Debug Bridge'de (adb) localhost'ta bir cihaz olarak görünür:

❯ adb devices
List of devices attached
localhost:6520  device

Emülatörü algılamak için adb'nin güncel bir sürümüne ihtiyacınız vardır. Android Studio ile paket halinde sunulan sürüm çalışıyor, ancak Unity ile gönderilen sürümdeki adb çalışmayabilir. Uyumlu bir sürüm, emülatörde yer alır. Sürümü C:\Program Files\Google\Play Games Developer Emulator\current\emulator adresinde bulabilirsiniz. En iyi geliştirici deneyimi için Android Studio'yu yükleyip Android SDK'nızı yönetmek için bu sürümü kullanabilirsiniz.

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

adb connect localhost:6520

4. Unity'yi derlemek ve doğrudan emülatöre dağıtmak için yapılandırma (İsteğe bağlı)

Unity ile gönderilen adb sürümü emülatörle uyumlu olmayabilir. Emin olmak için Dosya -> Ayarları Oluşturun ve listelenip listelenmediğini görmek için Cihazı Çalıştır iletişim kutusunu kontrol edin.

Cihazı şurada Çalıştır:

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

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

  1. Unity'yi başka bir Unity SDK'sı (ideal olarak Android Studio tarafından yüklenen) kullanacak şekilde yapılandırın.
  2. Unity'de hata gidermek için Derleme Araçları sürümünü güncelleyin.

Unity ile gönderilen Android SDK sürümü muhtemelen emülatörü algılamayacağından daha yeni bir SDK yüklemek için Android Studio'yu kullanıyorsunuzdur.

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

Şunun ekran görüntüsü:

bağlı cihazları yenilediğinizde derleme penceresinde Google HPE device (localhost:6520) görünür:

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. Bunu yapmak için, mainTemplate.gradle ve launcherTemplate.gradle oluşturduğunuzdan emin olun.

  1. Proje Ayarları penceresini açıp Oyuncu Ayarları'nı açın ve Publishing Settings bölümünü bulun.
  2. Build (Derleme) seçeneklerine gidip "Custom Main Gradle Template" (Özel Ana Gradle Şablonu) seçeneğini işaretleyin. ve "Custom Launcher Gradle Template" (Özel Başlatıcı Gradle Şablonu) Assets\Plugins\Android\ altında her iki Gradle dosyasını da oluşturur.

  1. **BUILDTOOLS** dizesinin tüm örneklerini 30.0.0 ile değiştirin. Her iki dosyada da artık 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ı)

Bir ChromeOS cihaz kullanarak Google Play Games emülatörüne erişmeden Google Play Games için oyun geliştirmeye başlayabilirsiniz. PC Üzerinde Google Play Games'e benzer şekilde, Chromebook'larda da klavye ve fareler, büyük ekranlar vardır ve x86 yapılandırmalarında sunulmaktadır. Chromebook'ta Android Logcat Unity eklentisini kullanacağız.

  1. Paket Yöneticisi'ni açın ve Unity Registry altında Android Logcat araması yapın.

Şunu içeren Paket Yöneticisi penceresi

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

  1. Ayarlar'ı seçin -> Geliştirici -> Linux'a dokunun.

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

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

  1. Ayarlar -> Geliştiriciler -> Linux geliştirme ortamı -> Android uygulamaları geliştirin -> ADB hata ayıklama işlevini etkinleştirin.

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

Chromebook'unuzun IP adresini de öğrenmek isteyebilirsiniz. Bunu yapmanın en kolay yolu

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

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

IP adresini gösteren ağ bilgileri düğmesi tıklanıyor.

  1. Pencere -> Analiz -> Android Logcat'i tıklayın.

Window>Analiz, Unity'de şununla açılır:

  1. Cihaz listesini açın. Şu anda bağlı bir cihaz yoksa No Device görünebilir.

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çılır. Bir IP adresi girilir.

  1. Bağlan'ı tıklayın. Başarılı penceresi gösterilir:

Şöyle bir iletişim kutusu:

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

Birlik

Artık oyunları Chromebook'unuza dağıtabilir ve PC benzeri donanımlarda test edip geliştirmeye başlayabilirsiniz.

6. Test derlemesi dağıtma

Google Play Games, oyununuzun x86 sürümünü dağıtmanızı gerektirir. Bu, masaüstü PC'lerde performans karşılaştırmalarına ulaşmanın bir parçasıdır. Unity'nin tüm LTS varyantları, x86 ve x86-64 uyumlu Android derlemeleri ("Chrome OS" etiketli) oluşturabilir. Ayrıca, Unity 2018 ve önceki sürümler x86 derlemeleri oluşturabilir. Bu mimarilerin kilidini açmak için önce IL2CPP komut dosyası arka ucuna geçmeniz gerekir. Bunu muhtemelen arm64 desteği için üretimde zaten yapıyorsunuz.

  1. Dosya -> Build Settings (Derleme Ayarları) seçeneğini tıklayarak Build Settings (Derleme Ayarları) penceresini açıp Player Settings'i (Oynatıcı Ayarları) tıklayın.

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

x86 veya x86-64 desteğini de etkinleştirmeniz gerekir. Google Play Games platformunda gönderim yapmak için yalnızca x86'yı desteklemeniz gerekir, ancak x86-64 önerilir.

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

Kare Hızı kitaplığının Unity paketlerinin sürümü de Google Play Games ile uyumlu değildir ve oyununuzun kullanıma sunulduğunda kilitlenmesine neden olur.

  1. Oynatıcı Ayarları penceresinden Kare Hızı'nı devre dışı bırakmak için Çözünürlük ve Sunu bölümünü açın ve Optimize Edilmiş Çerçeve İlerlemesi'nin işaretini kaldırın.

Ekran görüntüsü

Artık derlemeye hazırsınız.

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

Oyununuzu dağıtamıyorsanız "Google HPE device (localhost:6520)" özelliğinin yüklü olup olmadığını kontrol edin "Cihazı Çalıştır" seçeneğinde görünür. liste'ye dokunun. Bu simge yoksa HPE_Dev'in çalıştığından ve Android ana ekranını görebildiğinizden emin olun. Cihaz listenizde hâlâ gösterilmiyorsa adb connect localhost:6520 işlemini tam olarak kullandığınız adb.exe ile çalıştırın. Android Logcat Unity eklentisini kullanıyorsanız Araçlar -> Dizinde, adb.exe Unity'nin kullandığı şekilde bir terminal açmak için Terminal'i açın.

 Terminali aç" öne çıkarıldı" style="width: 624,00 piksel" src="img/9101ce3c95fb1aa2.png" size="(max-width: 840px) 100vw, 856px">

7. Oyununuzu PC'ye uyarlayın

Mümkün olduğunda oyununuzda platformdan bağımsız metriklere veya belirli özelliklerin varlığına göre değişiklikler yapmaya çalışın. Örneğin, Android'deki oyuncular bir fare ve klavye bağlayabilir ya da bir monitöre takabilir. Bu nedenle, cihaz yapılandırmanıza göre kontrol şemanızı veya HUD öğelerinizi değiştirerek PC Üzerinde Google Play Games'den desteklenen tüm platformlarda yararlanabilirsiniz.

Oynatıcının Google Play Games veya ChromeOS'te olup olmadığına bağlı olarak mantığın değiştirilmesi mantıklıysa bu komut dosyası, HPE_EXPERIENCE sistem özelliğini kontrol ederek bunu tespit etmenize 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, tipik Android telefondan daha büyük bir ekrana sahiptir. Mümkün olduğunda HUD'nizin ekranın% 20'sinden fazlasını kaplamamasını öneririz. Birçok mobil oyunda "Ekran Boyutuyla Ölçeklendir" seçeneği belirlendiğinden, bunu "Sabit Fiziksel Boyut" olarak değiştirirsiniz veya "Sabit Piksel Boyutu" bu hedefe ulaşmak için atılacak iyi bir ilk adım olabilir.

Google Play Games'de çalıştığınızı tespit ederseniz çalışma zamanında QualitySettings.SetQualityLevel komutunu kullanarak kalite ayarlarını dinamik olarak yapmak da isteyebilirsiniz. Google Play Games emülatörü, OpenGL Unity yayılımlarından yerel OpenGL veya Vulkan komutları yayınlamak için ANGLE'ı kullanır. Böylece, mobil oyun derlemelerinizde muhtemelen daha yüksek grafik kalitesi elde edebilirsiniz.

8. Giriş işleme

Google Play Games'e gönderilen oyunlar fare ve klavye girişi temel alınarak oluşturulmalıdır. Oyununuzla fare ve klavyeyle nasıl etkileşimde bulunacağınızı planlamanız gerekecek. Bu nedenle, şimdi zaman ayırıp Input SDK birim paketini edinin. Bu sayfada bir indirme işlemi görmüyorsanız play-mp-libs grubunda bir hesapla oturum açtığınızdan emin olun.

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

Google Play Games ve ChromeOS, fare girişini varsayılan olarak simüle edilmiş bir dokunmaya dönüştürür. Input.GetTouch ve Input.touchCount kullanıyorsanız oyununuz beklendiği gibi çalışmaya devam eder. İki başparmak kontrolü veya iki parmak ucuyla yakınlaştırma ya da uzaklaştırmak gibi çoklu dokunma girişlerini kullanıyorsanız işlemi tuşlara basmayla eşlemeniz gerekir. Oyun içi işlemleri de tuşa basmayla eşlemeniz gerekir. Örneğin, envanterinizi açmak için i tuşuna, iletişim kutularını kapatmak için escape ve oyun içi mesaj göndermek için Enter tuşuna basmanız gerekir.

2D Platform Oyunları Mikro Oyunu hareket etmek için okları, zıplamak için boşluğu kullanır. Kendi oyununuzu kullanıyorsanız sonraki adım için tercih ettiğiniz tuş bağlamalarını seçtiğinizden emin olun.

9. SDK entegrasyonunu girin

Fare ve klavye denetimlerinizi ayarladığınıza göre artık Input SDK (Giriş SDK'sı) desteği eklemeniz gerekiyor. Bu, oyuncuların kullanışlı bir pop-up ile PC girişlerinizi keşfetmesine yardımcı olur:

  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 öğesini, oyununuzda kullandığınız işlemlerin listesiyle doldurun. 2D Platform Oyunları Mikro Oyunu için işlemler Sol, Sağ ve Zıplama'dır:
private enum ActionIds
{
    Left,
    Right,
    Jump
}
  1. OnProvideInputMap uygulamasında her işlem için bir InputAction oluşturun. Bunun için eylemin adı, giriş ve sonra da buna bağlı olacak fare düğmeleri ya da 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. Sonra, bu giriş işlemlerini gruplara yerleştirin.

Mikro oyun için sadece 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 bölümüne 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öndürülen ifadeyi değiştirerek şunu okuyun:
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:

adlı 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.

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

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

Oyuncularınıza mükemmel bir deneyim sunmak için yerleştirilmiş web görünümlerini kaldırmanız gerekir. Gizlilik Politikası veya Hizmet Şartları gibi öğeleri görüntülemek için yerleştirilmiş web görünümleri yaygın bir uygulamadır. Bunlar Google Play Games'de çalışsalar da yerleşik bir "mobil" içinde görünürler. tercih ettiği masaüstü tarayıcısıdır ve PC oyuncuları için bazı karışıklıklara neden olabilir. Bu nedenle, Unity'de yerleşik bir tarayıcıyı göstermek için uzantı kullanıyorsanız Application.OpenURL(url) sürümüne dönün.

11. İzinler ve özellikler

Google Play Games'de desteklenmeyen çeşitli Android özellikleri ve izinleri vardır. Genel kural olarak PC derlemenizde hiçbir zaman izin iletişim kutusu görüntülenmemelidir. Yapınızı hazır hale getirdiğinizde tipik bir yeni yükleme işlemini tamamlayıp "yapılacaklar" sayfanıza eklemek için gördüğünüz iletişim kutularını bir yere yazmanız iyi olur. listesi oluşturun.

Bazı Unity oyunları Android.Permission API'sini kullanarak izin ister. Bunları if (GoogleDeviceUtilities.IsGooglePlayGames) kontrollerine sarmalamalı ve geçerliyse doğrudan hata mantığınıza gitmeniz gerekir.

12. Masaüstü optimizasyonları

Google Play Games'in sıradan bir Android telefona göre birkaç farkı vardır. 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 oynatıcının GPU'suna iletilemeyen veriler çalışma zamanında bellekte çözülür. ASTC, size en iyi masaüstü uyumluluğunu sağlar. Bununla birlikte, oyununuzda beklenen davranışı doğrulamak için bir masaüstü GPU profil oluşturma aracı kullanmanız gerekir.

Birlik

Şu anda bir masaüstü GPU'da çalıştırdığınız için grafik kalitesini de artırmak isteyebilirsiniz. Bunu doğrudan Proje Ayarları'ndaki Kalite bölümünden ayarlayabilirsiniz

13. Tebrikler

Google Play Games oyununuz üzerinde çalışmaya başlamak için her şey hazır. Oyununuzu test etmeye ve yinelemeye başlayabilirsiniz. Aynı kod tabanınızı kullanmaya devam edebiliyor olsanız da oyununuzu yerel bir PC oyunu hissi verecek şekilde uyarlayacağınızı unutmayın.

Sırada ne var?

Google Play Games'de oyunları göndermek için yapılması gereken başka işlemler var:

Son olarak, Google Play Games'i desteklemek için bu noktaya kadar yaptığınız çalışmaların büyük bir kısmı ChromeOS'te gönderim yapmanıza da yardımcı oluyor. PC ile birlikte bu platformu da desteklemeyi düşünmeniz önerilir.