1. Pengantar
Terakhir diperbarui: 18-10-2022
Bagaimana cara menyiapkan game Anda untuk Google Play Game di PC?
Google Play Game memudahkan Anda menghadirkan game seluler di PC Windows. Artinya, Anda dapat meningkatkan engagement pemain dan audiens tanpa harus merancang ulang game atau mendesain ulang model bisnis Anda. Masih ada beberapa perubahan yang harus dilakukan untuk memberikan pengalaman terbaik kepada pemain PC baru.
Yang akan Anda pelajari
Codelab ini mencakup bagian dasar checklist persyaratan untuk mulai menjalankan game Anda, dan membantu Anda menyiapkan game Unity sendiri untuk Google Play Game di PC. Integrasi yang lebih mendalam, seperti Play Game Sign-On dan Play Integrity API, tidak dicakup.
- Cara membangun 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, dan menyesuaikan game Anda dengan semestinya.
Yang Anda butuhkan
- Penginstalan LTS 2020 Unity (codelab ini dibuat dengan 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 periksa apakah Anda siap membangun aplikasi untuk Android.
3. Menyiapkan emulator Google Play Game
Mulailah dengan mendownload emulator.
Setelah menginstalnya, Anda akan melihat desktop Android di jendela:
Ini adalah lingkungan Android berperforma tinggi berfitur lengkap yang cocok untuk pengembangan game. URL tersebut 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 yang disertakan dengan Unity mungkin tidak berfungsi. Versi yang kompatibel dipaketkan dengan emulator, dan Anda dapat menemukannya di C:\Program Files\Google\Play Games Developer Emulator\current\emulator
. Untuk pengalaman developer terbaik, Anda sebaiknya 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 membangun dan men-deploy ke emulator secara langsung (Opsional)
Versi adb yang dikirimkan dengan Unity mungkin tidak kompatibel dengan emulator. Untuk memastikan, pilih File -> Build Settings, lalu periksa dialog Run Device untuk melihat apakah dialog tersebut tercantum.
Bergantung pada project, proses build, dan tingkat kenyamanan Anda, Anda dapat memilih untuk mengonfigurasi Unity guna men-deploy ke emulator Google Play Game secara langsung, atau membangun APK dan men-deploy-nya secara manual dengan adb install
. Men-deploy-nya secara manual memerlukan perubahan paling sedikit, tetapi dapat memperlambat siklus iterasi Anda.
Deploy ke emulator secara langsung dengan dua langkah berikut:
- Konfigurasi Unity untuk menggunakan Unity SDK lain, idealnya yang diinstal oleh Android Studio.
- Update versi Build Tools untuk mengatasi bug di Unity.
Karena versi Android SDK yang dikirimkan dengan Unity mungkin tidak akan mendeteksi emulator, Anda menggunakan Android Studio untuk menginstal SDK yang lebih baru.
- Buka Android Studio dan pilih Edit -> Preferensi -> Alat Eksternal.
- Hapus centang
Android SDK Tools Installed with Unity
, dan berikan jalur ke penginstalan Android Studio (biasanyaAppData/Local/Android/sdk
). Jangan ubah opsiAndroid NDK
.
saat memuat ulang perangkat terhubung, Anda akan melihat Google HPE device (localhost:6520)
muncul di jendela build:
Bergantung pada status bug ini dan versi Unity, Anda mungkin juga perlu mengubah versi alat build. Untuk melakukannya, pastikan Anda membuat mainTemplate.gradle
dan launcherTemplate.gradle
.
- Buka jendela Project Settings ke Player Settings dan temukan bagian
Publishing Settings
. - Scroll ke bawah ke opsi Build, lalu centang "Custom Main Gradle Template" dan "Custom Launcher Gradle Template", yang akan menghasilkan kedua file Gradle di bawah
Assets\Plugins\Android\
.
- Ganti instance string
**BUILDTOOLS**
apa pun dengan30.0.0
. Di kedua file, bagian kode sekarang 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 seperti Google Play Game di PC, Chromebook memiliki keyboard dan mouse, memiliki layar besar, dan tersedia dalam konfigurasi x86. Kita akan menggunakan plugin Unity Android Logcat dengan Chromebook.
- Buka Pengelola Paket dan cari
Android Logcat
padaUnity Registry
.
Anda juga perlu mengonfigurasi Chromebook untuk pengembangan Android. Mulai dengan mengaktifkan Linux.
- Pilih Setelan -> Pengembang -> di Linux.
Kemudian, aktifkan ADB debugging.
- Pilih Setelan -> Pengembang -> Lingkungan pengembangan Linux -> Mengembangkan aplikasi Android -> Aktifkan proses debug ADB.
Anda juga mungkin ingin mendapatkan alamat IP Chromebook. Cara termudah untuk melakukannya adalah dengan
- Klik ikon Info Jaringan untuk mendapatkan alamat IP Chromebook Anda.
- Pilih Window -> Analisis -> Android Logcat untuk membuka jendela Android Logcat.
- Buka daftar perangkat. Daftar mungkin berbunyi
No Device
jika tidak ada yang terhubung saat ini.
- Klik Opsi koneksi lainnya dan masukkan alamat IP Chromebook Anda.
- Klik Hubungkan. Anda akan melihat jendela Success:
Chromebook Anda sekarang akan muncul dalam daftar Run Device pada Unity (Anda mungkin harus memuat ulang layar terlebih dahulu):
Kini Anda dapat men-deploy game ke Chromebook dan memulai pengujian serta pengembangan pada hardware yang mirip dengan PC.
6. Men-deploy build pengujian
Google Play Game mengharuskan Anda men-deploy game versi x86, yang merupakan bagian dari cara Google Play 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"), serta Unity versi 2018 dan yang lebih lama dapat menghasilkan build x86. Untuk mengakses arsitektur ini, Anda harus terlebih dahulu beralih ke backend pembuatan skrip IL2CPP, 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 Other Settings dan alihkan
Scripting Backend
keIL2CPP
.
Anda juga harus mengaktifkan dukungan x86 atau x86-64. Untuk mengirimkan aplikasi di platform Google Play Game, Anda hanya perlu mendukung x86, meskipun kami merekomendasikan x86-64.
Versi paket Unity Frame Pacing library 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 dan hapus centang Optimized Frame Pacing.
Anda sekarang 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 apakah "Perangkat Google HPE (localhost:6520)" muncul di "Jalankan Perangkat" daftar. Jika tidak ada, pastikan HPE_Dev berjalan dan Anda dapat melihat layar utama Android. Jika metode tersebut 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 Tools -> Buka Terminal untuk membuka terminal ke direktori dengan adb.exe
yang sama dengan yang digunakan Unity.
Buka Terminal" disorot" style="lebar: 624,00 px" src="img/9101ce3c95fb1aa2.png" ukuran: (max-width: 840px) 100vw, 856px">
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 skema kontrol atau elemen HUD sebagai reaksi terhadap konfigurasi perangkat akan memungkinkan Anda memanfaatkan fungsi Google Play Game di PC di semua platform yang didukung.
Jika memungkinkan untuk mengubah logika berdasarkan apakah pemain menggunakan 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 biasa. Jika memungkinkan, sebaiknya gunakan HUD maksimal 20% dari layar. Karena banyak game seluler menggunakan "Skalakan dengan Ukuran Layar", mengubahnya menjadi "Ukuran Fisik Konstan" atau "Ukuran Piksel Konstan" dapat menjadi langkah awal yang baik untuk mencapai sasaran ini.
Sebaiknya Anda juga menetapkan setelan kualitas secara dinamis menggunakan perintah QualitySettings.SetQualityLevel
saat runtime jika Anda mendeteksi bahwa game berjalan di Google Play Game. Emulator Google Play Game menggunakan ANGLE untuk mengeluarkan perintah DirectX atau Vulkan native dari OpenGL Unity, sehingga Anda kemungkinan dapat mencapai fidelitas grafis yang lebih tinggi daripada yang tersedia di build game seluler.
8. Penanganan input
Pengiriman game di Google Play Game harus dibuat berdasarkan 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 download di halaman itu, pastikan Anda sudah 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 menjalankan 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 Anda akan terus berfungsi sebagaimana mestinya. Jika Anda mengandalkan input multisentuh, seperti kontrol ibu jari ganda atau cubit untuk zoom, Anda perlu memetakan tindakan untuk 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 2D menggunakan panah untuk bergerak, dan ruang untuk melompat. Jika menggunakan game sendiri, pastikan Anda memiliki binding tombol pilihan untuk langkah berikutnya.
9. Integrasi Input SDK
Setelah menyiapkan kontrol mouse dan keyboard, Anda perlu menambahkan dukungan Input SDK . Hal ini membantu pemain menemukan input PC Anda dengan popover yang praktis:
- Setelah mengimpor SDK ke dalam project Anda, buat file bernama
InputMappingProviderBehaviour.cs
dan tambahkan konten ini:
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 dalam game. Untuk 2D Platformer Microgame, tindakannya adalah Left, Right, dan Jump:
private enum ActionIds { Left, Right, Jump }
- Di
OnProvideInputMap
, buatInputAction
untuk setiap tindakan. Untuk itu, Anda memerlukan nama tindakan, input, lalu tombol mouse atau kode tombol yang akan dikaitkan dengannya. Untuk contoh game:
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, kelompokkan tindakan input ini.
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
agar terbaca:
return new InputMap { InputGroups = new List<InputGroup> { movementInputGroup }, MouseSettings = new MouseSettings { InvertMouseMovement = false, AllowMouseSensitivityAdjustment = false } };
- Terakhir, tambahkan skrip yang Anda buat ke dalam game:
- Saat Anda men-deploy game lagi, tekan
Shift+Tab
untuk membuka overlay dalam game.
- Klik Kontrol untuk melihat kontrol yang telah Anda konfigurasi.
10. Menghapus tampilan web tersemat
Untuk memberikan pengalaman yang menyenangkan kepada pemain, Anda harus menghapus tampilan web tersemat. Tampilan web sematan digunakan untuk menampilkan item seperti Kebijakan Privasi atau Persyaratan Layanan. Meskipun berfungsi di Google Play Game, game ini muncul di "seluler" tersemat browser web, 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 tersemat, kembalilah ke Application.OpenURL(url)
.
11. Izin dan fitur
Ada sejumlah fitur dan izin Android yang tidak didukung di Google Play Game. Aturan umumnya adalah build PC Anda tidak boleh menampilkan dialog izin. Hal yang sebaiknya dilakukan, setelah build Anda siap, adalah melakukan penginstalan baru yang biasa dan menuliskan dialog apa pun yang Anda lihat untuk ditambahkan ke "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 berlaku.
12. Pengoptimalan desktop
Google Play Game memiliki beberapa perbedaan jika dibandingkan dengan ponsel Android biasa, dan Anda mungkin perlu mengonfigurasi game sesuai kebutuhan.
Beralihlah ke DXT untuk kompresi tekstur. Format tekstur Android umum seperti ETC didekode dalam memori saat runtime jika tidak dapat diteruskan ke GPU pemain secara langsung. ASTC memberi Anda kompatibilitas desktop terbaik, meskipun Anda perlu menggunakan alat profiling GPU desktop untuk memverifikasi perilaku yang diharapkan untuk game Anda.
Karena sekarang Anda menjalankan GPU desktop, sebaiknya tingkatkan kualitas grafis. Anda dapat menyesuaikannya langsung di Setelan Project di bagian Kualitas
13. Selamat
Anda telah menyiapkan semuanya untuk mulai mengerjakan game untuk Google Play Game. Anda dapat mulai menguji dan melakukan iterasi pada game. Ingat bahwa meskipun dapat mempertahankan code base yang sama, Anda perlu menyesuaikan game agar terasa seperti game PC native.
Apa selanjutnya?
Ada banyak hal yang harus dilakukan untuk mengirimkan game di Google Play Game:
- Tinjau Panduan Memulai untuk mengetahui informasi terbaru.
- Upgrade ke Login Layanan game Play v2 untuk otomatis memproses login pemain saat peluncuran dan membantu memenuhi persyaratan kontinuitas.
- Terapkan Play Integrity API untuk memastikan pengalaman PC Anda seaman pengalaman di perangkat seluler.
Terakhir, sebagian besar pekerjaan yang telah Anda lakukan hingga tahap ini untuk mendukung Google Play Game juga membantu Anda mengirimkan aplikasi di ChromeOS, dan Anda sebaiknya mempertimbangkan untuk mendukung platform tersebut bersama dengan PC.