1. Giriş
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
- Unity 2020 LTS yüklemesi (bu codelab, 2020.3.30f1 ile oluşturulmuştur).
- Google Play Games emülatörü.
2. Hazırlanın
Yeni proje açma veya oluşturma
- 2D Platformer Microgame'i kullanarak yeni bir proje oluşturun veya kendi projenizi açın.
- 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.
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:
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.
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:
- Unity'yi başka bir Unity SDK'sı (ideal olarak Android Studio tarafından yüklenen) kullanacak şekilde yapılandırın.
- 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.
- Android Studio'yu açın ve Düzenle -> Tercihler -> Harici Araçlar.
Android SDK Tools Installed with Unity
öğesinin işaretini kaldırın ve Android Studio'nun yükleme yolunu (genellikleAppData/Local/Android/sdk
) belirtin.Android NDK
seçeneğini olduğu gibi bırakın.
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.
- Proje Ayarları penceresini açıp Oyuncu Ayarları'nı açın ve
Publishing Settings
bölümünü bulun. - 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.
**BUILDTOOLS**
dizesinin tüm örneklerini30.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.
- Paket Yöneticisi'ni açın ve
Unity Registry
altındaAndroid Logcat
araması yapın.
Chromebook'unuzu Android geliştirme için yapılandırmanız da gerekir. Linux'u etkinleştirerek başlayın.
- Ayarlar'ı seçin -> Geliştirici -> Linux'a dokunun.
Ardından ADB hata ayıklama işlevini etkinleştirin.
- Ayarlar -> Geliştiriciler -> Linux geliştirme ortamı -> Android uygulamaları geliştirin -> ADB hata ayıklama işlevini etkinleştirin.
Chromebook'unuzun IP adresini de öğrenmek isteyebilirsiniz. Bunu yapmanın en kolay yolu
- Chromebook'unuzun IP adresini öğrenmek için Ağ Bilgileri simgesini tıklayın.
- Pencere -> Analiz -> Android Logcat'i tıklayın.
- Cihaz listesini açın. Şu anda bağlı bir cihaz yoksa
No Device
görünebilir.
- Diğer bağlantı seçenekleri'ni tıklayın ve Chromebook'unuzun IP adresini girin.
- Bağlan'ı tıklayın. Başarılı penceresi gösterilir:
Chromebook'unuz artık Unity'nin Cihaz Çalıştırma listesinde görünüyor (önce ekranı yenilemeniz gerekebilir):
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.
- 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.
- 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.
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.
- 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.
Artık derlemeye hazırsınız.
- 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:
- 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 { } }
- Ş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 }
OnProvideInputMap
uygulamasında her işlem için birInputAction
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 } } };
- 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 } };
- 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 } };
- Son olarak, oluşturduğunuz komut dosyasını oyununuza ekleyin:
- Oyununuzu tekrar dağıttığınızda oyun içi yer paylaşımını açmak için
Shift+Tab
tuşuna basın.
- 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.
Ş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:
- En güncel bilgiler için Hızlı Başlangıç'ı inceleyin.
- Oyun piyasaya çıktığında oyuncuların otomatik olarak giriş yapmasını sağlamak ve süreklilik şartlarının yerine getirilmesine yardımcı olmak için Play Games Hizmetleri Oturum Açma v2'ye geçin.
- PC'deki deneyiminizin mobil uygulamanız kadar güvenli olması için Play Integrity API'yi uygulayın.
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.