Panduan ini menjelaskan cara mengurangi ukuran game. Setelah penginstalan, game yang lebih kecil memerlukan lebih sedikit waktu untuk mendownload dan lebih sedikit data. Kedua hal ini menghasilkan konversi penginstalan yang lebih tinggi. Riset Google menunjukkan bahwa 6 MB peningkatan ukuran APK yang ditayangkan akan menghasilkan penurunan rasio penginstalan sebesar 1%. Banyak developer memindahkan aset dari APK ke jaringan penayangan konten (CDN), tetapi kemudian dikenai biaya dalam menghosting CDN dan dalam mengembangkan serta mempertahankan aset sistem pengelolaan.
Untuk mengurangi ukuran game, lakukan langkah-langkah berikut:
- Gunakan metode penayangan yang dioptimalkan seperti App Bundle dan Play Asset Delivery.
- Tentukan ukuran dasar pengukuran game dan pahami strukturnya.
- Telusuri aset dan file lain yang ukurannya dapat dikurangi.
- Periksa tekstur grafis dan identifikasi peluang untuk pengoptimalan.
- Ikuti rekomendasi umum untuk aset.
Gunakan metode penayangan yang dioptimalkan seperti Android App Bundle dan Play Asset Delivery
Pertimbangkan metode penayangan berikut:
Meskipun project lama biasanya meng-output APK untuk publikasi, publikasi game di Google Play harus menggunakan Android App Bundle. App bundle memberikan APK yang dioptimalkan yang disesuaikan dengan setiap konfigurasi perangkat pengguna. Rata-rata, app bundle mengurangi ukuran aplikasi sebesar 20%.
Untuk menayangkan aset game melalui Google Play dan melebihi 200 MB batas ukuran download untuk app bundle hingga beberapa GB, gunakan Play Asset Delivery (PAD). Tidak memerlukan CDN eksternal. PAD mendukung tiga metode penayangan tertentu, yang masing-masing dapat digunakan dalam satu game:
- Waktu penginstalan: Mendownload aset saat penginstalan. Aset dikemas dalam paket aset, yang merupakan pengganti file Opaque Binary Blob (OBB).
- Penayangan cepat: Mendownload aset setelah penginstalan.
- Sesuai permintaan: Game akan memulai download aset sesuai kebutuhan.
PAD memerlukan game dikemas menggunakan format App Bundle. PAD juga dapat mengurangi jumlah data yang digunakan oleh CDN developer (jika masih diperlukan).
Google Play menggunakan Android App Bundle untuk membuat dan menayangkan APK yang dioptimalkan untuk setiap konfigurasi perangkat pengguna. APK yang dioptimalkan ini mencakup sekumpulan aset tekstur, yang diformat dengan format kompresi optimal untuk perangkat. Konfigurasikan app bundle Anda untuk mendukung berbagai format kompresi tekstur guna mendukung susunan perangkat terluas.
Tentukan ukuran dasar pengukuran game dan memahami strukturnya
Untuk membiasakan diri dengan game, tentukan jumlah pekerjaan yang diperlukan untuk pengoptimalan tertentu, dan tentukan apakah game mendownload aset tambahan, lakukan langkah-langkah berikut:
- Gunakan build produksi (non-debug) dari developer atau APK yang dipublikasikan.
- Catat ukuran file biner seperti yang ditayangkan oleh developer atau, jika game telah dipublikasikan, di halaman Play Store game. Untuk ukuran APK, faktor terpenting adalah jumlah data yang harus didownload pengguna untuk menjalankan game yang sebenarnya.
- Instal game di perangkat dan jalankan di menu game awal. Pada tahap ini, periksa ukuran penginstalan game seperti yang dilaporkan oleh Android (di bagian Settings > Storage). Beberapa game memiliki ukuran penginstalan awal yang kecil, karena ini adalah nomor kunci yang harus dioptimalkan, tetapi mendownload data tambahan setelah penginstalan. Beberapa game mendownload beberapa gigabyte data setelah penginstalan.
- Beberapa game mendownload data hanya setelah Anda mulai memainkannya. Anda harus memainkan game ini sebentar untuk menentukan banyaknya data tambahan yang didownload game bagi pengguna biasa yang memainkan game untuk pertama kali.
Telusuri aset dan file lain yang ukurannya dapat dikurangi
Bagian ini menjelaskan cara mengurangi ukuran file di dalam APK. Anda dapat menggunakan App Bundle Explorer untuk mendownload APK khusus perangkat.
Untuk mengurangi ukuran file yang dikemas langsung ke APK, lakukan langkah-langkah berikut:
- Gunakan Android Studio APK Analyzer. Di Android Studio, pilih File > Profile atau debug APK dan pilih APK Anda.
- Pilih folder Assets. Untuk setiap file, ukuran file mentah dan persentase total ukuran download akan dicantumkan.
Tinjau folder Assets dan tentukan di mana data massal game diletakkan. Tentukan apakah ada aset yang memerlukan banyak ruang (yaitu, lebih dari 1% dari totalnya). Secara khusus, cari aset berikut:
- File gambar dan video berukuran besar (misalnya, file PNG, JPEG, dan mp4): File ini biasanya digunakan dalam layar pembuka, latar belakang, dan logo. File ini jarang digunakan di sebagian besar game dan dapat dikompresi lebih lanjut tanpa memengaruhi pengalaman pengguna. File PNG lossless sangat besar dan merupakan kandidat yang tepat untuk kompresi.
- File font besar (misalnya, file TTF): Jika Anda menambahkan dukungan emoji, ukuran file font dapat bertambah secara signifikan. Jika file font lebih besar dari beberapa ratus kilobyte, pertimbangkan cara untuk mengurangi ukurannya.
- Duplikasikan format atau versi file audio yang dapat Anda gabungkan.
Jika beberapa Antarmuka Biner Aplikasi (ABI) disertakan di APK, pindahkan ke App Bundle atau buat beberapa APK.
Tentukan ukuran file objek bersama biner (.so). Untuk memeriksa file biner guna melihat apakah ada hal-hal yang mungkin tidak perlu disertakan, seperti file log, Anda dapat menggunakan alat Bloaty McBloatface. Untuk mengetahui informasi selengkapnya tentang cara mengoptimalkan file biner, lihat mengompilasi flag dan opsi.
Tinjau file manifes Android untuk format grafis yang didukung. Tentukan apakah ada beberapa
<supports-gl-texture>
tag di APK. Jika game mendukung format untuk beberapa GPU dalam satu APK, maka pertimbangkan untuk menggunakan Basis Universal Binomial. Sistem kompresi tekstur GPU ini membuat file tekstur dalam format perantara yang dapat di-transcoding dengan cepat ke GPU.
Periksa tekstur grafis dan identifikasi peluang untuk pengoptimalan
Bagian ini menjelaskan alat dan metode yang diperlukan untuk menentukan apakah tekstur grafis yang digunakan dalam game dapat dioptimalkan.
Untuk memeriksa tekstur dalam game, gunakan Android GPU Inspector (AGI), RenderDoc, atau, hanya untuk GPU Qualcomm Snapdragon, Snapdragon Profiler.
Cari hal berikut:
- Tekstur yang dapat diubah ukurannya ke resolusi yang lebih kecil, seperti tekstur besar untuk sesuatu yang hanya dirender pada ukuran kecil di dalam game. Tekstur pengurangan sampel secara komputasi mahal.
- Penggunaan beberapa tekstur kecil yang dapat digabungkan menjadi satu peta tekstur.
- Tekstur yang dapat menggunakan lebih sedikit bit di saluran warna. Kandidat yang baik adalah tekstur dengan beberapa tekstur solid. Gradien dan bayangan warna memerlukan lebih banyak resolusi, dan karena itu bukan kandidat yang baik.
- Jelajahi algoritme kompresi tekstur yang lebih baik, mulai dari ETC1 hingga ETC2 dan ASTC.
Hapus tingkat mipmap atas saat memuat tekstur pada perangkat yang lebih rendah untuk menghemat memori. Sistem Streaming Tekstur Unity dapat melakukannya.
Jika Anda belum melakukannya, tinjau file manifes Android untuk format grafis yang didukung. Tentukan apakah ada beberapa
<supports-gl-texture>
tag di APK. Jika game mendukung format untuk beberapa GPU dalam satu APK, maka pertimbangkan untuk menggunakan Basis Universal Binomial. Sistem kompresi tekstur GPU ini membuat file tekstur dalam format perantara yang dapat di-transcoding dengan cepat ke GPU.
Rekomendasi umum untuk aset
Ikuti rekomendasi berikut untuk aset APK:
- Aset gambar, audio, dan video (bukan tekstur GPU): Tentukan apakah aset dapat diubah ukurannya atau dikompresi lebih lanjut. Rasio kompresi yang lebih tinggi biasanya dapat diterima untuk game. File PNG lossles sangat besar dan merupakan kandidat yang tepat untuk kompresi.
- Aset gambar (bukan tekstur GPU): Pertimbangkan untuk menggunakan WEBP, format kompresi gambar untuk kompresi lossy dan lossless. Lossy WEBP mengompresi gambar 25% hingga 34% lebih banyak dari JPG.
- Kurangi resolusi tekstur: tekstur yang jauh lebih besar dari jumlah piksel yang pada akhirnya dirender di layar adalah penggunaan ruang dan resource GPU yang tidak efisien. Untuk mengubah tekstur dan melihat tampilannya dalam frame tanpa perlu membuat ulang game, gunakan AGI.
- Ubah format tekstur grafis: Gunakan format tekstur yang menggunakan lebih sedikit bit per saluran. Misalnya, gunakan format tekstur 16-bit seperti RGB565, bukan format tekstur 32-bit seperti ARGB. Untuk informasi selengkapnya, lihat dokumentasi berikut:
Referensi lainnya
- Peningkatan Android App Bundle terbaru dan linimasa untuk aplikasi baru di Google Play
- Mengurangi ukuran APK di game instan Android
- Tekstur Superkompresi yang dapat didekode GPU (makalah penelitian)