1. Pengantar
Terakhir Diperbarui: 25-04-2022
Bagaimana Anda menyiapkan game untuk Google Play Games on PC?
Google Play Game memudahkan Anda menghadirkan game seluler di PC Windows. Artinya Anda dapat mengembangkan interaksi pemain dan audiens Anda tanpa harus mendesain ulang game atau mendesain ulang model bisnis Anda. Masih ada beberapa perubahan yang harus Anda lakukan untuk memberikan pengalaman terbaik kepada pemain PC baru.
Yang akan Anda pelajari
Codelab ini mencakup bagian dasar checklist persyaratan untuk memulai game, dan membantu Anda menyiapkan game Unity sendiri untuk Google Play Game di PC. Integrasi yang lebih mendalam, seperti Login Play Game, dan Play Integrity API, tidak akan dibahas.
- Cara membuat build untuk arsitektur x86 dari Unity.
- Cara menguji dan men-deploy ke emulator Google Play Game.
- Cara memodifikasi antarmuka pengguna Anda agar terlihat bagus di PC.
- Cara mendeteksi apakah Anda berjalan di emulator Google Play Game, lalu menyesuaikan game.
Yang Anda butuhkan
- Penginstalan LTS Unity 2020 (codelab ini dibuat dengan versi 2020.3.30f1).
- Emulator Google Play Game.
2. Memulai persiapan
Membuka atau membuat project baru
- Buat project baru menggunakan Microgame Platformer 2D,atau buka project Anda sendiri.
- Dari project, pilih File -> Build Settings dan pastikan Anda sudah siap untuk membuat build untuk Android.
3 Menyiapkan emulator Google Play Game
Mulai dengan mendownload emulator dari halaman ini. Jika Anda tidak melihat link download, pastikan Anda login dengan akun yang telah ditambahkan ke grup play-mp-emu. Anggota grup ini akan diberi tahu jika update untuk emulator tersedia, jadi pastikan Anda dapat menerima email dari play-mp-emu@googlegroups.com.
Setelah menginstalnya, Anda akan melihat desktop Android di jendela:
Ini adalah lingkungan Android berperforma tinggi yang dilengkapi banyak fitur dan cocok untuk pengembangan game. Akan muncul di Android Debug Bridge (adb) sebagai perangkat di localhost:
❯ adb devices List of devices attached localhost:6520 device
Anda memerlukan adb versi terbaru untuk mendeteksi emulator. Versi yang dipaketkan dengan Android Studio berfungsi, tetapi adb seperti yang dikirim dengan Unity mungkin tidak. Versi yang kompatibel dipaketkan dengan emulator, dan Anda dapat menemukannya di C:\Program Files\Google\HPE_Dev\emulator
. Untuk mendapatkan pengalaman developer terbaik, Anda dapat menginstal Android Studio dan menggunakannya untuk mengelola Android SDK.
Jika emulator terputus dari adb, hubungkan kembali dari command line seperti ini:
adb connect localhost:6520
4. Mengonfigurasi Unity untuk mem-build dan men-deploy ke emulator secara langsung (Opsional)
Versi adb yang dikirim dengan Unity mungkin tidak kompatibel dengan emulator. Untuk memastikan, pilih File -> Build Settings, lalu periksa dialog Run Device untuk melihat apakah perangkat tercantum.
Bergantung pada project, proses build, dan tingkat kenyamanan Anda, Anda dapat memilih untuk mengonfigurasi Unity untuk di-deploy ke emulator Google Play Game secara langsung, atau mem-build APK dan men-deploynya secara manual dengan adb install
. Untuk menerapkannya secara manual, diperlukan perubahan paling sedikit, tetapi dapat memperlambat siklus iterasi.
Deploy ke emulator secara langsung dengan dua langkah berikut:
- Konfigurasikan Unity untuk menggunakan SDK Unity lainnya, idealnya yang diinstal oleh Android Studio.
- Update versi Build Tools untuk menangani bug di Unity.
Karena versi Android SDK yang dikirim dengan Unity mungkin tidak akan mendeteksi emulator, Anda menggunakan Android Studio untuk menginstal SDK yang lebih baru.
- Buka Android Studio dan pilih Edit -> Preferences -> External Tools.
- Hapus centang
Android SDK Tools Installed with Unity
, dan berikan jalur ke penginstalan Android Studio Anda (biasanyaAppData/Local/Android/sdk
). Jangan ubah opsiAndroid NDK
.
saat memuat ulang perangkat yang terhubung, Anda akan melihat Google HPE device (localhost:6520)
muncul di jendela build:
Tergantung pada status bug ini dan versi Unity Anda, Anda mungkin juga perlu mengubah versi alat build. Untuk melakukannya, pastikan Anda membuat mainTemplate.gradle
dan launcherTemplate.gradle
.
- Buka jendela Project Settings hingga Player Settings, lalu temukan bagian
Publishing Settings
. - Scroll ke bawah ke opsi Build, lalu centang "Custom Main Gradle Template" dan "Custom peluncur Gradle Template", yang akan menghasilkan kedua file Gradle di
Assets\Plugins\Android\
.
- Ganti semua instance string
**BUILDTOOLS**
dengan30.0.0
. Pada kedua file tersebut, bagian kode kini seharusnya terbaca:
android { compileSdkVersion **APIVERSION** buildToolsVersion '30.0.0'
5. Men-deploy ke Chromebook (opsional)
Anda dapat mulai mengembangkan game untuk Google Play Game tanpa akses ke emulator Google Play Game menggunakan perangkat ChromeOS. Mirip dengan Google Play Game di PC, Chromebook memiliki keyboard dan mouse, memiliki layar besar, dan tersedia dalam konfigurasi x86. Kami akan menggunakan plugin Unity Android Logcat dengan Chromebook.
- Buka Pengelola Paket dan telusuri
Android Logcat
di bagianUnity Registry
.
Anda juga perlu mengonfigurasi Chromebook untuk pengembangan Android. Mulai dengan mengaktifkan Linux.
- Pilih Settings -> Developer -> Linux.
Kemudian, aktifkan proses debug ADB.
- Pilih Setelan -> Developer -> Lingkungan pengembangan Linux -> Kembangkan aplikasi Android -> Aktifkan proses debug ADB.
Sebaiknya Anda juga mendapatkan alamat IP Chromebook. Cara termudah untuk melakukannya adalah dengan
- Klik ikon Info Jaringan untuk mendapatkan alamat IP Chromebook Anda.
- Pilih Window -> Analysis -> Android Logcat untuk membuka jendela Android Logcat.
Analisis terbuka di Unity dengan memilih "Android Logcat"." class="l10n-absolute-url-src" l10n-attrs-original-order="alt,style,src,class" l10n-encrypted-style="7ek2XYbAbHCf3eKVqUfzlU8zz2uYoEmRhrQeP6/mnhY=" src="https://codelabs.developers.google.com/android-google-play-games-unity-quickstart/img/a1a76bed69791616.png" style="width: 446.00px" />
- Buka daftar perangkat. perangkat mungkin bertuliskan
No Device
jika tidak ada yang terhubung saat ini.
- Klik Opsi koneksi lainnya, lalu masukkan alamat IP Chromebook Anda.
- Klik Hubungkan. Anda akan melihat jendela Success:
Chromebook kini muncul dalam daftar Perangkat Run Unity (Anda mungkin harus memuat ulang layar terlebih dahulu):
Kini Anda dapat men-deploy game ke Chromebook dan mulai menguji serta mengembangkan hardware seperti PC.
6. Men-deploy build pengujian
Google Play Game mengharuskan Anda menerapkan game versi x86, yang merupakan bagian dari cara game mencapai tolok ukur performanya di PC desktop. Semua varian LTS Unity dapat menghasilkan build Android yang kompatibel dengan x86 dan x86-64 (berlabel "Chrome OS"), dan Unity versi 2018 dan sebelumnya dapat menghasilkan build x86. Untuk membuka kunci arsitektur ini, Anda harus beralih ke backend skrip IL2CPP terlebih dahulu, yang mungkin sudah Anda lakukan dalam produksi untuk dukungan arm64.
- Pilih File -> Build Settings untuk membuka jendela Build Settings, lalu klik Player Settings.
- Buka bagian Setelan Lainnya dan alihkan
Scripting Backend
Anda keIL2CPP
.
Anda juga harus mengaktifkan dukungan x86 atau x86-64. Untuk mengirim di platform Google Play Game, Anda hanya perlu mendukung x86, meskipun kami merekomendasikan x86-64.
Versi paket Unity library Frame Pacing juga tidak kompatibel dengan Google Play Game, dan menyebabkan game Anda error saat diluncurkan.
- Untuk menonaktifkan Frame Pacing dari jendela Player Settings, buka bagian Resolution and Presentation, lalu hapus centang Optimized Frame Pacing.
Sekarang Anda siap untuk membangun!
- Buka jendela Build Settings lagi, lalu klik Build And Run. Game Anda akan muncul di jendela emulator.
Jika Anda tidak dapat men-deploy game, periksa untuk melihat apakah "perangkat Google HPE (localhost:6520)" muncul di daftar "Run Device" Anda. Jika tidak ada, pastikan HPE_Dev berjalan dan Anda dapat melihat layar utama Android. Jika aplikasi masih tidak muncul di daftar perangkat, jalankan adb connect localhost:6520
dengan adb.exe
yang sama persis dengan yang Anda gunakan. Jika Anda menggunakan plugin Unity Android Logcat, pilih Alat -> Buka Terminal untuk membuka terminal ke direktori dengan adb.exe
yang sama dengan yang digunakan Unity.
Open Terminal" ditandai" class="l10n-absolute-url-src" l10n-attrs-original-order="alt,style,src,class" l10n-encrypted-style="Bfmtwp4MR0V5uTC1s3uklU8zz2uYoEmRhrQeP6/mnhY=" src="https://codelabs.developers.google.com/android-google-play-games-unity-quickstart/img/9101ce3c95fb1aa2.png" style="width: 624.00px" />
7. Menyesuaikan game Anda untuk PC
Jika memungkinkan, coba buat perubahan pada game Anda berdasarkan metrik yang tidak bergantung pada platform, atau keberadaan fitur tertentu. Misalnya, pemain di Android dapat menghubungkan mouse dan keyboard atau mencolokkan monitor, sehingga mengubah elemen kontrol atau HUD sebagai reaksi terhadap konfigurasi perangkat memungkinkan Anda memanfaatkan Google Play Games on PC di semua platform yang didukung.
Jika memungkinkan untuk mengubah logika berdasarkan apakah pemain berada di Google Play Game atau ChromeOS, skrip ini akan membantu Anda mendeteksinya dengan memeriksa fitur sistem HPE_EXPERIENCE
:
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 memiliki layar yang lebih besar daripada ponsel Android pada umumnya. Jika memungkinkan, sebaiknya HUD menggunakan maksimal 20% dari layar. Karena banyak game seluler menggunakan "Skala Dengan Ukuran Layar", mengubahnya menjadi "Ukuran Fisik Konstan" atau "Ukuran Piksel Konstan" dapat menjadi langkah pertama yang baik untuk mencapai sasaran ini.
Anda mungkin juga ingin menetapkan setelan kualitas secara dinamis menggunakan perintah QualitySettings.SetQualityLevel
pada saat runtime jika Anda mendeteksi bahwa aplikasi tersebut berjalan di Google Play Game. Emulator Google Play Game menggunakan ANGLE untuk mengeluarkan perintah DirectX atau Vulkan native dari build Unity OpenGL, sehingga kemungkinan Anda dapat mencapai fidelitas grafis yang lebih tinggi daripada yang tersedia pada build game seluler.
8 Penanganan input
Pengiriman game di Google Play Game harus dibuat dengan input mouse dan keyboard. Anda perlu merencanakan cara berinteraksi dengan game menggunakan mouse dan keyboard, jadi luangkan waktu sekarang untuk mendapatkan Input SDK unitypackage. Jika Anda tidak melihat hasil download di halaman tersebut, pastikan Anda login dengan akun di grup play-mp-libs.
Untuk tujuan pengujian, banyak game membangun kontrol mouse dan keyboard dasar untuk pengembangan di editor. Jika memungkinkan, Anda dapat mengaktifkannya saat dijalankan di perangkat ChromeOS atau di emulator Google Play Game.
Secara default, Google Play Game dan ChromeOS mengonversi input mouse menjadi simulasi sentuhan. Jika Anda menggunakan Input.GetTouch
dan Input.touchCount
, game akan terus berfungsi seperti yang diharapkan. Jika Anda mengandalkan input multisentuh, seperti kontrol ibu jari ganda atau cubit untuk memperbesar, Anda perlu memetakan tindakan ke penekanan tombol. Anda juga harus memetakan tindakan dalam game ke penekanan tombol, seperti menekan i untuk membuka inventaris, escape untuk menutup kotak dialog, dan enter untuk mengirim pesan dalam game.
Microgame Platformer MicroD menggunakan panah untuk bergerak dan ruang untuk melompat. Jika menggunakan game Anda sendiri, pastikan Anda memiliki binding tombol pilihan untuk langkah berikutnya.
9. Integrasi SDK input
Setelah menyiapkan kontrol mouse dan keyboard, Anda perlu menambahkan dukungan Input SDK . Ini membantu pemain menemukan input PC Anda dengan popover praktis:
- Setelah mengimpor SDK ke project Anda, buat file bernama
InputMappingProviderBehaviour.cs
dan tambahkan konten berikut:
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 { } }
- Sekarang, isi
ActionIds
dengan daftar tindakan yang Anda gunakan di game. Untuk Microgame Platformer 2D, tindakannya adalah Kiri, Kanan, dan Lompat:
private enum ActionIds { Left, Right, Jump }
- Di
OnProvideInputMap
, buatInputAction
untuk setiap tindakan. Untuk ini, Anda memerlukan nama tindakan, input, dan kemudian tombol mouse atau kode tombol yang akan terikat padanya. Untuk game contoh:
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 } } };
- Selanjutnya, masukkan tindakan input ini ke dalam grup.
Untuk game mikro, kami hanya memiliki satu grup, tetapi Anda dapat membuat sebanyak yang Anda butuhkan untuk membantu pemain menemukan tindakan yang mereka butuhkan. Tambahkan ini ke OnProvideInputMap
:
var movementInputGroup = new InputGroup { GroupLabel = "Movement", InputActions = new List<InputAction> { leftAction, rightAction, jumpAction } };
- Tambahkan semua grup input yang telah Anda buat ke peta input. Ubah pernyataan return di
OnProvideInputMap
untuk membaca:
return new InputMap { InputGroups = new List<InputGroup> { movementInputGroup }, MouseSettings = new MouseSettings { InvertMouseMovement = false, AllowMouseSensitivityAdjustment = false } };
- Terakhir, tambahkan skrip yang dibuat ke game Anda:
- Saat Anda men-deploy game lagi, tekan
Shift+Tab
untuk membuka overlay dalam game.
- Klik Kontrol untuk melihat kontrol yang telah Anda konfigurasikan.
10. Menghapus iklan dan tampilan web yang disematkan
Meskipun kami tidak akan membahas semua logika yang perlu diupdate, ada dua item yang dapat segera Anda tangani untuk mencapai persetujuan aplikasi, dan memberikan pengalaman yang luar biasa kepada pemain.
Pertama, biasanya penggunaan tampilan web yang disematkan untuk menampilkan item seperti Kebijakan Privasi atau Persyaratan Layanan merupakan hal yang umum. Meskipun berfungsi di Google Play Game, game ini muncul di browser "seluler" tersemat, bukan browser desktop pilihan pemain, dan dapat menyebabkan kebingungan bagi pemain PC. Oleh karena itu, di Unity, jika Anda menggunakan ekstensi apa pun untuk menampilkan browser yang disematkan, kembali ke Application.OpenURL(url)
.
Kedua, iklan saat ini tidak diizinkan di Google Play Game, meskipun Anda dapat membiarkan SDK Iklan untuk pemutar seluler dan ChromeOS. Gunakan GoogleDeviceUtilities.IsGooglePlayGames
untuk menentukan apakah Anda harus menyertakan iklan dalam game atau tidak. API terkait pembayaran lainnya, seperti Google Pay, akan berfungsi seperti yang diharapkan.
11. Izin dan fitur
Ada sejumlah fitur dan izin Android yang tidak didukung di Google Play Game. Prinsipnya adalah bahwa build PC Anda seharusnya tidak pernah memunculkan dialog izin. Hal yang baik untuk dilakukan, sekarang setelah build siap, adalah melalui penginstalan baru yang umum dan menuliskan dialog yang ingin Anda tambahkan ke daftar "daftar tugas" untuk mengirimkan game.
Beberapa game Unity meminta izin menggunakan Android.Permission API. Anda harus menggabungkannya dalam pemeriksaan if (GoogleDeviceUtilities.IsGooglePlayGames)
dan langsung membuka logika kegagalan jika ada.
12. Pengoptimalan desktop
Google Play Game memiliki beberapa perbedaan jika dibandingkan dengan ponsel Android biasa, dan Anda mungkin ingin mengonfigurasi game sebagaimana mestinya.
Beralih ke DXT untuk kompresi tekstur. Format tekstur Android umum seperti ETC didekode dalam memori pada saat runtime jika format tersebut tidak dapat diteruskan ke GPU pemain secara langsung. ASTC memberi Anda kompatibilitas desktop terbaik, meskipun Anda perlu menggunakan alat pembuatan profil GPU desktop untuk memverifikasi perilaku yang diharapkan untuk game Anda.
Karena sekarang Anda menjalankan GPU desktop, sebaiknya tingkatkan kualitas grafisnya. Anda dapat menyesuaikannya secara langsung di Setelan Project di bagian Kualitas
13. Selamat
Anda sudah menyiapkan semuanya untuk mulai mengerjakan game Anda untuk Google Play Game. Anda dapat memulai pengujian dan iterasi pada game. Ingat bahwa meskipun Anda dapat mempertahankan code base yang sama, sebaiknya sesuaikan game agar terasa seperti game PC native.
Apa selanjutnya?
Ada lebih banyak pekerjaan yang harus dilakukan untuk mengirimkan game di Google Play Game:
- Tinjau Panduan Memulai untuk mendapatkan informasi terbaru.
- Upgrade ke Login Layanan game Play v2 untuk login pemain secara otomatis saat peluncuran dan membantu memenuhi persyaratan kontinuitas.
- Terapkan Play Integrity API untuk memastikan pengalaman PC Anda sama amannya dengan perangkat seluler.
Terakhir, sebagian besar pekerjaan yang telah Anda lakukan sampai tahap ini untuk mendukung Google Play Game juga membantu Anda menghadirkan ChromeOS,dan Anda harus mempertimbangkan untuk mendukung platform tersebut bersama dengan PC.