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 ke PC Windows. Artinya, Anda dapat meningkatkan engagement pemain dan audiens tanpa harus merancang ulang arsitektur game atau mendesain ulang model bisnis. 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 Anda, dan membantu Anda menyiapkan game Unity Anda sendiri untuk Google Play Game di PC. Integrasi yang lebih mendalam, seperti Login Game Play, dan Play Integrity API, tidak dibahas.
- Cara membuat build untuk arsitektur x86 dari Unity.
- Cara menguji dan men-deploy ke emulator Google Play Game.
- Cara mengubah antarmuka pengguna agar terlihat bagus di PC.
- Cara mendeteksi apakah Anda menjalankan game di emulator Google Play Game, dan menyesuaikan game Anda.
Yang Anda butuhkan
- Penginstalan Unity 2020 LTS (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 pastikan Anda telah menyiapkan build untuk Android.

3. Menyiapkan emulator Google Play Game
Mulai dengan mendownload emulator.
Setelah menginstalnya, Anda akan melihat desktop Android di jendela:

Ini adalah lingkungan Android berperforma tinggi dan berfitur lengkap yang cocok untuk pengembangan game. Perangkat 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 disertakan dengan Android Studio berfungsi, tetapi adb yang disertakan dengan Unity mungkin tidak berfungsi. Versi yang kompatibel disertakan dengan emulator, dan Anda dapat menemukannya di C:\Program Files\Google\Play Games Developer Emulator\current\emulator. Untuk mendapatkan pengalaman developer terbaik, sebaiknya instal Android Studio dan gunakan untuk mengelola Android SDK Anda.
Jika emulator terputus dari adb, hubungkan kembali dari command line seperti ini:
adb connect localhost:6520
4. Mengonfigurasi Unity untuk membuat dan men-deploy langsung ke emulator (Opsional)
Versi adb yang disertakan dengan Unity mungkin tidak kompatibel dengan emulator. Untuk memastikannya, pilih File -> Build Settings dan periksa dialog Run Device untuk melihat apakah perangkat tercantum.

Bergantung pada project, proses build, dan tingkat kenyamanan Anda, Anda dapat memilih untuk mengonfigurasi Unity agar di-deploy langsung ke emulator Google Play Game, atau membuat 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.
- Perbarui versi Alat Build untuk mengatasi bug di Unity.
Karena versi Android SDK yang disertakan dengan Unity mungkin tidak mendeteksi emulator, Anda menggunakan Android Studio untuk menginstal SDK yang lebih baru.
- Buka Android Studio, lalu 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). Biarkan opsiAndroid NDK.

Saat Anda memuat ulang perangkat yang terhubung, Anda akan melihat Google HPE device (localhost:6520) muncul di jendela build:

Bergantung 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 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 bagian
Assets\Plugins\Android\.

- Ganti semua instance string
**BUILDTOOLS**dengan30.0.0. Di kedua file, bagian kode sekarang akan berbunyi:
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 dengan menggunakan perangkat ChromeOS. 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 telusuri
Android Logcatdi bagianUnity Registry.

Anda juga perlu mengonfigurasi Chromebook untuk pengembangan Android. Mulai dengan mengaktifkan Linux.
- Pilih Setelan -> Developer -> Linux.

Kemudian, aktifkan proses debug ADB.
- Pilih Setelan -> Developer -> Lingkungan pengembangan Linux -> Kembangkan aplikasi Android -> Aktifkan proses debug ADB.

Anda juga perlu mendapatkan alamat IP Chromebook Anda. 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.

- Buka daftar perangkat. Daftar ini mungkin menampilkan
No Devicejika saat ini tidak ada perangkat yang terhubung.

- Klik Opsi koneksi lainnya dan masukkan alamat IP Chromebook Anda.

- Klik Hubungkan. Anda akan melihat jendela Success:

Chromebook Anda kini muncul di daftar Run Device Unity (Anda mungkin harus memuat ulang layar terlebih dahulu):

Sekarang Anda dapat men-deploy game ke Chromebook dan mulai melakukan pengujian serta pengembangan di hardware seperti PC.
6. Men-deploy build pengujian
Google Play Game mengharuskan Anda men-deploy 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 yang lebih lama dapat menghasilkan build x86. Untuk membuka kunci arsitektur ini, Anda harus beralih ke backend scripting 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 BackendAnda keIL2CPP.

Anda juga harus mengaktifkan dukungan x86 atau x86-64. Untuk mengirimkan di platform Google Play Game, Anda hanya perlu mendukung x86, meskipun kami merekomendasikan x86-64.

Versi library Frame Pacing yang di-bundle Unity 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.

Sekarang Anda siap 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 "Google HPE device (localhost:6520)" muncul di daftar "Run Device". Jika tidak ada, pastikan HPE_Dev berjalan dan Anda dapat melihat layar utama Android. Jika masih belum muncul di daftar perangkat, jalankan adb connect localhost:6520 dengan adb.exe yang sama persis dengan yang Anda gunakan. Jika Anda menggunakan plugin Android Logcat Unity, pilih Tools -> Open Terminal untuk membuka terminal ke direktori dengan adb.exe yang sama dengan yang digunakan Unity.
Open Terminal" dengan gaya "highlighted" 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. Menyesuaikan game untuk PC
Jika memungkinkan, coba buat perubahan pada game Anda berdasarkan metrik agnostik 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 memungkinkan Anda memanfaatkan Google Play Game di PC untuk berfungsi di semua platform yang didukung.
Jika masuk akal untuk mengubah logika berdasarkan apakah pemain berada di Google Play Game atau ChromeOS, skrip ini 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, kami merekomendasikan agar HUD Anda menggunakan maksimal 20% 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 juga dapat menetapkan setelan kualitas secara dinamis menggunakan perintah QualitySettings.SetQualityLevel saat runtime jika mendeteksi bahwa Anda menjalankan game di Google Play Game. Emulator Google Play Game menggunakan ANGLE untuk mengeluarkan perintah DirectX atau Vulkan native dari OpenGL yang dikeluarkan Unity, sehingga Anda kemungkinan dapat mencapai kualitas grafis yang lebih tinggi daripada yang tersedia di build game seluler Anda.
8. Penanganan input
Game yang tersedia di Google Play Game harus dibuat dengan input mouse dan keyboard. Anda harus merencanakan cara berinteraksi dengan game menggunakan mouse dan keyboard, jadi luangkan waktu sekarang untuk mendapatkan unitypackage Input SDK. Jika Anda tidak melihat download di halaman tersebut, pastikan Anda login dengan akun di grup play-mp-libs.
Untuk tujuan pengujian, banyak game membuat kontrol mouse dan keyboard dasar untuk pengembangan di editor. Jika memungkinkan, Anda dapat mengaktifkannya saat menjalankan perangkat ChromeOS atau di emulator Google Play Game.
Secara default, Google Play Game dan ChromeOS mengonversi input mouse menjadi sentuhan simulasi. Jika Anda menggunakan Input.GetTouch dan Input.touchCount, game Anda akan terus berfungsi seperti yang diharapkan. Jika Anda mengandalkan input multi-sentuh, seperti kontrol dua jempol atau mencubit untuk melakukan zoom, 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 2D menggunakan tombol panah untuk bergerak, dan tombol spasi untuk melompat. Jika Anda menggunakan game Anda sendiri, pastikan Anda memiliki binding tombol pilihan untuk langkah selanjutnya.
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 praktis:
- Setelah mengimpor SDK ke project Anda, buat file bernama
InputMappingProviderBehaviour.csdan 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
ActionIdsdengan daftar tindakan yang Anda gunakan dalam game. Untuk Mikrogame Platformer 2D, tindakannya adalah Kiri, Kanan, dan Lompat:
private enum ActionIds
{
Left,
Right,
Jump
}
- Di
OnProvideInputMap, buatInputActionuntuk setiap tindakan. Untuk melakukannya, Anda memerlukan nama tindakan, input, lalu tombol mouse atau kode tombol yang akan terikat padanya. 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, masukkan tindakan input ini ke dalam grup.
Untuk microgame, kita hanya memiliki satu grup, tetapi Anda dapat membuat sebanyak yang diperlukan 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
OnProvideInputMapmenjadi:
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+Tabuntuk membuka overlay dalam game.

- Klik Kontrol untuk melihat kontrol yang telah Anda konfigurasi.

10. Menghapus tampilan web sematan
Untuk memberikan pengalaman yang luar biasa kepada pemain, Anda harus menghapus tampilan web sematan. Tampilan web sematan biasanya digunakan untuk menampilkan item seperti Kebijakan Privasi atau Persyaratan Layanan Anda. Meskipun berfungsi di Google Play Game, link ini muncul di browser "seluler" yang disematkan, bukan di 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 sematan, kembali ke Application.OpenURL(url).
11. Izin dan fitur
Ada sejumlah fitur dan izin Android yang tidak didukung di Google Play Game. Aturan umumnya adalah bahwa build PC Anda tidak boleh memunculkan dialog izin. Hal yang baik untuk dilakukan, setelah build Anda siap, adalah melakukan penginstalan baru yang umum dan mencatat dialog apa pun yang Anda lihat untuk ditambahkan ke daftar "tugas" Anda untuk mengirimkan game.
Beberapa game Unity meminta izin menggunakan API Android.Permission. Anda harus membungkusnya dalam pemeriksaan if (GoogleDeviceUtilities.IsGooglePlayGames) dan langsung menuju logika kegagalan jika berlaku.
12. Pengoptimalan desktop
Google Play Game memiliki beberapa perbedaan jika dibandingkan dengan ponsel Android biasa, dan Anda mungkin ingin mengonfigurasi game Anda dengan tepat.
Beralih ke DXT untuk kompresi tekstur. Format tekstur Android umum seperti ETC didekodekan dalam memori saat runtime jika tidak dapat diteruskan ke GPU pemain secara langsung. ASTC memberikan kompatibilitas desktop terbaik, meskipun Anda perlu menggunakan alat pembuatan profil GPU desktop untuk memverifikasi perilaku yang diharapkan untuk game Anda.

Karena Anda sekarang menjalankan GPU desktop, Anda mungkin juga ingin meningkatkan kualitas grafis. Anda dapat menyesuaikannya langsung di Setelan Project pada bagian Kualitas

13. Selamat
Anda telah menyiapkan semuanya untuk mulai mengerjakan game Anda untuk Google Play Game. Anda dapat mulai menguji dan melakukan iterasi pada game. Ingatlah bahwa meskipun Anda dapat mempertahankan code base yang sama, Anda harus mengadaptasi game agar terasa seperti game PC native.
Apa selanjutnya?
Ada lebih banyak pekerjaan yang harus dilakukan untuk meluncurkan game di Google Play Game:
- Tinjau Panduan memulai untuk mendapatkan informasi terbaru.
- Lakukan upgrade ke Login Layanan game Play v2 untuk otomatis membuat pemain login saat peluncuran dan membantu memenuhi persyaratan keberlanjutan.
- Terapkan Play Integrity API untuk memastikan pengalaman PC Anda seaman pengalaman seluler Anda.
Terakhir, sebagian besar pekerjaan yang telah Anda lakukan hingga saat ini untuk mendukung Google Play Game juga membantu Anda meluncurkan game di ChromeOS, dan Anda harus mempertimbangkan untuk mendukung platform tersebut bersama dengan PC.