Mengonversi game yang ada ke game instan

Langkah-langkah untuk menyiapkan aplikasi agar berjalan di Google Play Instan, seperti yang dijelaskan dalam Membuat aplikasi instan pertama, juga berlaku untuk game. Panduan ini menekankan beberapa langkah penyiapan khusus untuk game.

Anda dapat mengembangkan game untuk Google Play Instan menggunakan Unity (dengan atau tanpa plugin Unity Google Play Instan), Cocos2D, Android Studio, atau mesin kustom milik sendiri.

Panduan ini mengasumsikan Anda sudah mengetahui jenis pengalaman game yang ingin Anda berikan. Untuk melihat ide-ide dan praktik terbaik dalam membuat game berkualitas tinggi, bacalah Praktik terbaik UX untuk game di Google Play Instan.

Selain itu, sebelum memublikasikan game yang dapat berjalan di Google Play Instan, periksa Checklist persyaratan teknis.

Aktivitas yang mencakup filter intent berikut akan menjadi titik awal untuk pengalaman Google Play Instan:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

Aktivitas ini diluncurkan saat pengguna mengetuk tombol Coba Sekarang di Play Store atau tombol Langsung main di aplikasi Google Play Game. Anda juga dapat meluncurkan aktivitas ini secara langsung menggunakan deep link API.

Menentukan kode versi yang benar

Kode versi pengalaman instan game harus lebih kecil daripada kode versi game yang memerlukan penginstalan. Cara pembuatan versi aplikasi seperti ini memungkinkan pemain beralih dari pengalaman Google Play Instan ke mendownload dan menginstal game pada perangkat mereka. Framework Android menganggap transisi ini sebagai update aplikasi.

Untuk memastikan Anda mengikuti rekomendasi skema pembuatan versi ini, ikuti salah satu strategi berikut:

  • Mulai ulang kode versi untuk pengalaman Google Play Instan dari 1.
  • Naikkan kode versi APK yang dapat diinstal dengan angka yang besar, misalnya 1000, untuk memastikan bahwa ada cukup ruang untuk kenaikan nomor versi pengalaman instan.

Anda dapat mengembangkan game instan dan game yang memerlukan penginstalan dalam dua project Android Studio yang terpisah. Namun, jika melakukannya, Anda harus melakukan hal berikut untuk memublikasikan game di Google Play:

  1. Gunakan nama paket yang sama di kedua project Android Studio.
  2. Di Konsol Google Play, upload kedua varian ke aplikasi yang sama.

Untuk detail selengkapnya tentang cara menetapkan versi game, lihat Membuat versi aplikasi Anda.

Mendukung lingkungan eksekusi

Seperti aplikasi lain, game di Google Play Instan berjalan dalam sandbox yang terbatas di perangkat. Untuk mendukung lingkungan eksekusi ini, selesaikan langkah-langkah yang ditunjukkan di bagian berikut.

Memilih tidak menggunakan traffic cleartext

Game di Google Play Instan tidak mendukung traffic HTTP. Jika game menargetkan Android 9 (API level 28) atau yang lebih tinggi, Android akan menonaktifkan dukungan cleartext di game secara default.

Namun, jika game menargetkan Android 8.1 (API level 27) atau yang lebih rendah, Anda harus membuat file Network Security Config. Dalam file ini, tetapkan cleartextTrafficPermitted ke nilai false, seperti yang ditunjukkan dalam cuplikan kode berikut:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

Mengupdate versi sandbox target

Update file AndroidManifest.xml game instan agar menargetkan lingkungan sandbox yang didukung oleh Google Play Instan. Anda dapat menyelesaikan update ini dengan menambahkan atribut android:targetSandboxVersion ke elemen <manifest> game, seperti yang ditunjukkan dalam cuplikan kode berikut:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

Untuk mengetahui informasi selengkapnya, lihat dokumentasi tentang atribut targetSandboxVersion.

Jangan mengandalkan keberadaan cache atau data aplikasi

Pengalaman instan tetap didownload di perangkat pengguna hingga cache pengalaman instan dihapus, yang terjadi dalam salah satu situasi berikut:

  • Cache pengalaman instan akan dibersihkan sebagai sampah memori karena perangkat kekurangan memori yang tersedia.
  • Pengguna memulai ulang perangkat mereka.

Jika salah satu proses terjadi, pengguna harus mendownload ulang pengalaman instan agar dapat berinteraksi dengannya.

Jika ruang penyimpanan sistem hampir habis, ada kemungkinan data pengguna pengalaman instan akan dihapus dari penyimpanan internal. Oleh karena itu, sebaiknya sinkronkan data pengguna secara berkala dengan server game agar progres pengguna dapat dipertahankan.

Mengurangi ukuran APK

Tidak seperti jenis aplikasi lainnya, game di Google Play Instan memiliki batas ukuran download, yaitu 15 MB. Untuk membuat game seukuran ini, Anda perlu memfaktorkan ulang logika game. Bagian ini menjelaskan beberapa alat dan teknik untuk membantu mengoptimalkan ukuran game.

Alat

Alat berikut dapat membantu Anda menentukan faktor yang berkontribusi terhadap ukuran game:

  • APK Analyzer: Memberikan tampilan menyeluruh dari konten APK yang dikompilasi. Dengan tampilan ini, Anda dapat menentukan jumlah byte yang dikontribusikan setiap elemen pada ukuran keseluruhan. Gunakan alat ini untuk memeriksa dengan cepat ukuran resource, aset, logika, dan library native yang digunakan game.
  • Bloaty McBloatface: Menampilkan profil ukuran file biner.
  • Android GPU Inspector: Melihat pengaruh pengurangan ukuran tekstur pada ukuran file tanpa mengompilasi ulang game.

Teknik

Teknik berikut ini dapat digunakan untuk mengurangi ukuran game:

  • Ekstrak beberapa logika game dan tempatkan di satu atau beberapa modul fitur, yang tidak dihitung dalam batas ukuran.
  • Kurangi resolusi tekstur game
  • Pertimbangkan untuk menggunakan format WebP, terutama jika Anda menggunakan tekstur yang tidak dikompresi di GPU. Format WebP membuat gambar dengan kualitas yang sama dengan JPEG, tetapi berukuran 15% hingga 30% lebih kecil. Walaupun perlu waktu lebih lama untuk mendekompresi gambar WebP, waktu dekompresi ini masih jauh lebih singkat dibandingkan dengan waktu download tekstur game Anda. Google juga telah mengintegrasikan format ini ke mesin game open source.
  • Kompresi atau gunakan kembali suara dan musik.
  • Gunakan berbagai flag kompilasi untuk membantu memperkecil file biner:
    • -fvisibility=hidden – Yang paling penting. Dalam cmake, Anda dapat menentukannya sebagai berikut:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz – Juga penting untuk mengurangi ukuran. Jika Anda mengompilasi APK menggunakan gcc, gunakan -Os sebagai gantinya.
    • -flto – Terkadang mengurangi ukuran file.
    • Flag linker – Gunakan --gc-sections bersama flag compiler, seperti -ffunction-sections dan -fdata-sections.
  • Gunakan Proguard untuk menyusutkan kode dan resource.
  • Gunakan Gradle 4.4 atau yang lebih tinggi untuk menghasilkan file DEX yang lebih kecil.
  • Terapkan pengiriman aset melalui cloud.

Memisahkan game besar menjadi beberapa APK

Terkadang sulit mengoptimalkan pengalaman Google Play Instan untuk mengepaskan game dengan satu APK berukuran 15 MB, meskipun Anda sudah menerapkan rekomendasi untuk mengurangi ukuran APK. Untuk mengatasi tantangan ini, Anda dapat memisahkan game menjadi beberapa APK. Pada awalnya, pemain mendownload APK dasar yang utama, lalu saat mereka bermain, APK terpisah sisanya akan tersedia untuk game di latar belakang.

Misalnya, APK dasar dapat mencakup mesin game inti dan aset yang diperlukan untuk menampilkan layar pemuatan. Saat diluncurkan, APK dasar akan menampilkan layar pemuatan dan akan langsung meminta APK terpisah lainnya yang berisi data game dan level. Setelah APK terpisah tersedia, APK dasar akan memuat asetnya ke dalam mesin game dan menyediakan konten yang diperlukan pemain untuk memulai game.

Menggunakan praktik terbaik UX

Setelah mengonfigurasi game agar mendukung pengalaman instan, tambahkan logika yang ditunjukkan di bagian berikut untuk memberikan pengalaman pengguna yang baik.

Memeriksa apakah game menjalankan pengalaman instan

Jika beberapa logika game bergantung pada terlibat atau tidaknya pengguna dalam pengalaman instan, panggil metode isInstantApp(). Metode ini akan menampilkan true jika proses yang sedang berjalan adalah pengalaman instan.

Dengan melakukan pemeriksaan ini, Anda dapat menentukan apakah aplikasi perlu berjalan dalam lingkungan eksekusi terbatas atau dapat memanfaatkan fitur platform.

Menampilkan perintah penginstalan

Jika Anda telah membuat pengalaman Google Play Instan uji coba, sewaktu-waktu game dapat meminta pemain untuk menginstal versi lengkap ke perangkatnya. Untuk melakukannya, gunakan metode showInstallPrompt() di Google API untuk Android.

Untuk mempelajari lebih lanjut cara dan waktu untuk meminta pemain melakukan penginstalan, lihat Praktik terbaik UX untuk game di Google Play Instan.

Mentransfer data ke pengalaman yang diinstal

Jika pemain menyukai pengalaman uji coba, mereka mungkin memutuskan untuk menginstal game versi lengkap. Untuk memberikan pengalaman pengguna yang baik, transfer progres pemain dari pengalaman instan ke game versi lengkap.

Jika pemain menggunakan perangkat yang menjalankan Android 8.0 (API level 26) atau yang lebih tinggi, dan jika aplikasi menentukan targetSandboxVersion dari 2, progres pemain akan ditransfer otomatis ke versi lengkap game Anda. Jika tidak, data terkait progres pemain harus ditransfer secara manual. Untuk melakukannya, gunakan salah satu API berikut:

  • Untuk pemain yang menggunakan perangkat yang menjalankan Android 8.0 (API level 26) dan yang lebih tinggi, gunakan Cookie API - aplikasi sampel
  • Jika pemain dapat berinteraksi dengan pengalaman Anda di perangkat yang menjalankan Android 7.1 (API level 25) dan yang lebih rendah, tambahkan dukungan untuk Storage API - aplikasi sampel

Referensi lainnya

Pelajari Google Play Instan lebih lanjut dari referensi tambahan berikut:

Codelab: Membuat Aplikasi Instan Pertama
Menambahkan dukungan Google Play Instan dalam aplikasi yang ada.
Codelab: Membuat Aplikasi Instan Multi-Fitur
Memodularisasi aplikasi multi-fitur.