Mulai Menggunakan Unity dan Google Play Game untuk PC

1. Pengantar

Logo Google Play Game

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

2. Memulai persiapan

Membuka atau membuat project baru

  1. Buat project baru menggunakan Microgame Platformer 2D,atau buka project Anda sendiri.

Kesatuan

  1. Dari project, pilih File -> Build Settings dan periksa apakah Anda siap membangun aplikasi untuk Android.

Screenshot Unity

3. Menyiapkan emulator Google Play Game

Mulailah dengan mendownload emulator.

Setelah menginstalnya, Anda akan melihat desktop Android di jendela:

Screenshot jendela emulator Google Play Game. Layar utama Android akan terlihat.

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.

Jalankan Perangkat di

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:

  1. Konfigurasi Unity untuk menggunakan Unity SDK lain, idealnya yang diinstal oleh Android Studio.
  2. 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.

  1. Buka Android Studio dan pilih Edit -> Preferensi -> Alat Eksternal.
  2. Hapus centang Android SDK Tools Installed with Unity, dan berikan jalur ke penginstalan Android Studio (biasanya AppData/Local/Android/sdk). Jangan ubah opsi Android NDK.

Screenshot dari

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

Screenshot

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.

  1. Buka jendela Project Settings ke Player Settings dan temukan bagian Publishing Settings.
  2. 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\.

Screenshot

  1. Ganti instance string **BUILDTOOLS** apa pun dengan 30.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.

  1. Buka Pengelola Paket dan cari Android Logcat pada Unity Registry.

Jendela Package Manager dengan

Anda juga perlu mengonfigurasi Chromebook untuk pengembangan Android. Mulai dengan mengaktifkan Linux.

  1. Pilih Setelan -> Pengembang -> di Linux.

Gambar animasi yang menunjukkan cara mengaktifkan dukungan Linux.  Developer dipilih di jendela Settings. Kemudian

Kemudian, aktifkan ADB debugging.

  1. Pilih Setelan -> Pengembang -> Lingkungan pengembangan Linux -> Mengembangkan aplikasi Android -> Aktifkan proses debug ADB.

Proses debug ADB diaktifkan dari menu Developer.

Anda juga mungkin ingin mendapatkan alamat IP Chromebook. Cara termudah untuk melakukannya adalah dengan

  1. Klik ikon Info Jaringan untuk mendapatkan alamat IP Chromebook Anda.

Screenshot jendela jaringan yang terbuka di Chromebook.

Tombol info jaringan diklik, yang menampilkan alamat IP.

  1. Pilih Window -> Analisis -> Android Logcat untuk membuka jendela Android Logcat.

Window>Analysis terbuka di Unity dengan

  1. Buka daftar perangkat. Daftar mungkin berbunyi No Device jika tidak ada yang terhubung saat ini.

Jendela Android Logcat ditampilkan, dropdown perangkat dipilih.

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

Jendela Koneksi lainnya terbuka. Alamat IP dimasukkan.

  1. Klik Hubungkan. Anda akan melihat jendela Success:

Kotak dialog yang menyatakan

Chromebook Anda sekarang muncul dalam daftar Run Device pada Unity (Anda mungkin harus memuat ulang layar terlebih dahulu):

Kesatuan

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.

  1. Pilih File -> Build Settings untuk membuka jendela Build Settings, lalu klik Player Settings.

Screenshot

  1. Buka bagian Other Settings dan alihkan Scripting Backend ke IL2CPP.

Screenshot

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.

Screenshot bagian Konfigurasi di Setelan Pemain

Versi paket Unity Frame Pacing library juga tidak kompatibel dengan Google Play Game, dan menyebabkan game Anda error saat peluncuran.

  1. Untuk menonaktifkan Frame Pacing dari jendela Player Settings, buka bagian Resolution and Presentation dan hapus centang Optimized Frame Pacing.

Screenshot

Anda sekarang siap untuk membangun!

  1. Buka jendela Build Settings lagi, lalu klik Build And Run. Game Anda akan muncul di jendela emulator.

Screenshot emulator Google Play Game dengan

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.

Screenshot Buka Terminal" disorot" style="lebar: 624,00 px" src="img/9101ce3c95fb1aa2.png" 36w, img/9101ce3c95fb1aa2_48.png 36w, and img/9101ce3c95fb1aa2_48.png48w, img/9101ce3c95fb1aa2_36.png 36w, 36w, img/9101ce3c95fb1aa2_48.48.png48w, img/9101ce3c95fb1aa2_72.png 72w, img/9101ce3c95fb1aa2_72.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, jadi 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.

Screenshot

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:

  1. 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
    {
    }
}
  1. 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
}
  1. Di OnProvideInputMap, buat InputAction 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
        }
    }
};
  1. 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
    }
};
  1. 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
    }
};
  1. Terakhir, tambahkan skrip yang Anda buat ke dalam game:

Screenshot node bernama

  1. Saat Anda men-deploy game lagi, tekan Shift+Tab untuk membuka overlay dalam game.

Screenshot

  1. Klik Kontrol untuk melihat kontrol yang telah Anda konfigurasi.

Screenshot

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.

Kesatuan

Karena sekarang Anda menjalankan GPU desktop, sebaiknya tingkatkan kualitas grafis. Anda dapat menyesuaikannya langsung di Setelan Project di bagian Kualitas

Screenshot

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:

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.