Panduan ini menguraikan siklus pengembangan game yang umum. Setelah membaca panduan ini, Anda mungkin merasa perlu menggunakannya juga sebagai referensi.
Saat Anda bekerja dengan Unity, siklus proses pengembangan terdiri dari tiga fase:
- Merencanakan dan mendesain
- Mengembangkan dan menguji
- Publikasikan dan pertahankan
Merencanakan dan mendesain
Pada fase perencanaan dan desain, Anda menentukan cara membangun game. Anda memutuskan cara mengatasi tantangan pengembangan untuk perangkat seluler, dan mengidentifikasi alat dan proses yang akan digunakan dalam pengembangan.
Mendapatkan masukan dari semua anggota tim
Bekerja samalah dengan tim seni, engineering, desain, audio, dan produksi Anda untuk mengidentifikasi dan mencatat tugas penerapan. Contoh:
- Tim artistik dapat membuat anggaran tekstur dan mesh aset untuk karakter dan lingkungan.
- Tim engineering dapat menentukan titik pemeriksaan memori dan performa untuk pemrofilan terhadap setiap platform.
- Desain dapat merencanakan mekanisme game yang memungkinkan pengalaman tersebut.
- Pakar audio dapat meninjau persyaratan untuk kesinambungan suara antara UI, suara spasial 2D, dan 3D.
- Tim produksi dapat mengomunikasikan persyaratan peluncuran dan menjaga keselarasan serta progres tim.
Desain untuk perangkat seluler
Pengembangan aplikasi untuk platform seluler melibatkan pertimbangan khusus, seperti:
- Rasio aspek layar variabel
- Konsumsi daya
- Throttling termal dan prosesor
- Input sentuh
- Pengembangan lintas platform
- Graphic API (Vulkan atau OpenGL ES)
Untuk mengetahui detail tentang pertimbangan unik dalam mendesain untuk perangkat seluler, lihat Pengembangan Android di Unity dari Unity, dan Google Play Academy.
Mengembangkan dan menguji
Pada fase pengembangan dan pengujian, Anda akan membangun game serta melakukan pengujian dan persiapan prapeluncuran. Anda melakukan beberapa pengujian internal terbatas di Google Play untuk mempersiapkan Anda memenuhi persyaratan peluncuran. Anda menyempurnakan strategi deployment dan mengatur aset di Unity berdasarkan sistem Play Asset Delivery dan Addressables Unity.
Bagian berikut menjelaskan alat dan teknik Unity yang dirancang untuk membantu Anda mengembangkan aplikasi untuk Android.
Render
Rendering adalah proses menggambar aset 3D dan 2D dari scene Unity Anda di layar. Meskipun mesin Unity menangani rendering, penting untuk mempertimbangkan beberapa faktor untuk platform Android.
Tekstur
Tentukan apakah Anda memerlukan ukuran tekstur terbesar, berdasarkan perangkat target. Saat Anda membuat profil alokasi memori, tinjau potensi penghematan dengan mengubah ukuran tekstur target.
Waktu render frame
Untuk mencegah perangkat Android mengalami panas berlebih, targetkan nilai waktu render frame rata-rata di bawah 21 milidetik. Terkadang, seperti selama pemuatan atau pengalaman sinematik singkat, waktu frame dapat melebihi 21 milidetik, tetapi Anda harus tetap berada di bawah batas 21 milidetik untuk pengalaman game inti.
Di platform seluler, VSync paksa membatasi kecepatan frame jika Anda tidak mencapai target minimum. Misalnya, pada update layar 60 Hz, jika Anda tidak mencapai 60 fps, game Anda akan di-throttle menjadi 30 fps; jika Anda tidak mencapai 30 fps, game Anda akan di-throttle menjadi 15 fps.
Banyak perangkat Android dikirimkan dengan kecepatan refresh layar 60 Hz dan 120 Hz. Pertimbangkan manfaat menargetkan waktu frame yang jauh lebih kecil (target 10 md untuk update 60 Hz, dan 5 md untuk 120 Hz) tanpa menimbulkan risiko throttling termal dan pengurasan baterai untuk kecepatan rendering yang lebih tinggi.
Untuk menyetel kecepatan frame tertentu di game Anda di Unity, gunakan Application.targetFrameRate.
Library Frame Pacing Android membantu Anda melakukan rendering dengan lancar saat aplikasi Anda membutuhkan waktu lebih lama untuk menampilkan frame berikutnya daripada yang diperlukan oleh kecepatan refresh layar. Untuk Unity versi 2021 dan yang lebih baru, mengaktifkan pengaturan kecepatan frame Android akan menyetel kecepatan refresh layar ke kecocokan terbaik untuk kecepatan frame target. Hal ini memastikan game tidak memboroskan daya baterai untuk update layar yang tidak perlu.
Untuk mengaktifkan library, di Project Settings > Player, di bagian Settings for Android, centang kotak Optimized Frame Pacing.

Vulkan API
Vulkan adalah API grafis 3D lintas platform berperforma tinggi yang memiliki overhead rendah dibandingkan dengan OpenGL ES. Unity dapat menggunakan Vulkan dengan dua cara berbeda.
Auto Graphics API
Anda dapat menggunakan Auto Graphics API dengan Vulkan, tetapi hal ini dapat memiliki perilaku yang berbeda, bergantung pada versi Unity yang telah Anda instal. Anda dapat memilihnya dengan membuka Project Settings > Player > Rendering.
Perhatikan hal-hal berikut saat memilih versi Unity yang akan digunakan:
- Unity 2021.1 dan versi sebelumnya tidak mendukung Vulkan dengan Auto Graphics API. Unity mencoba menggunakan OpenGL ES 3.2. Jika perangkat tidak mendukung OpenGL ES 3.2, Unity akan kembali ke OpenGL ES 3.1, 3.0, atau 2.0, secara berurutan.
- Unity 2021.2 dan versi yang lebih baru menggunakan Vulkan terlebih dahulu. Jika perangkat tidak mendukung Vulkan, Unity akan kembali ke OpenGL ES 3.2, 3.1, 3.0, atau 2.0.

API grafis manual
Atau, Anda dapat mengaktifkan Vulkan secara manual dengan menonaktifkan Auto Graphics API. Jika Anda menggunakan Unity 2021.1 atau versi sebelumnya, ini adalah satu-satunya cara untuk menggunakan Vulkan.
Jika Vulkan berada di urutan yang lebih tinggi dalam daftar ini daripada OpenGL ES, Unity akan mencoba menggunakan Vulkan terlebih dahulu. Jika perangkat tidak mendukung Vulkan, Unity akan berjalan dengan OpenGL ES. Lihat Mulai menggunakan Vulkan untuk mengetahui informasi mendetail tentang Vulkan di Android, seperti cara menggunakan API grafis modern dan mengoptimalkan performa game Anda.

Panggilan gambar
Semua yang ditampilkan di layar dikaitkan dengan satu atau beberapa panggilan gambar. Di platform seluler, Anda harus mengoptimalkan dan mengurangi jumlah panggilan gambar yang Anda kirim ke unit pemrosesan grafis (GPU).
Anggap panggilan gambar mirip dengan mobil yang berbaris di lampu lalu lintas. Setelah lampu berubah menjadi hijau, sejumlah mobil tertentu dapat melintas sebelum lampu berubah. Saat lampu berubah menjadi kuning, Anda telah mencapai waktu frame target ideal (21 milidetik), dan saat lampu berubah menjadi merah, Anda telah mencapai batas waktu frame 33 milidetik. Apa pun yang melampaui hal tersebut akan memengaruhi frame render berikutnya, sehingga kecepatan frame yang dihasilkan lebih rendah daripada target 30 fps Anda.
Untuk mengetahui informasi tentang cara meningkatkan performa panggilan gambar dalam game Anda, lihat artikel batching dari Dukungan Unity.
Bayangan
Panggilan proses menggambar pengecoran bayangan dapat menjadi yang paling intensif GPU, yang mengonsumsi sebagian besar waktu GPU bahkan untuk lingkungan sederhana. Untuk mengurangi biaya panggilan gambar pengecoran bayangan, coba gunakan bayangan keras, bukan bayangan lembut. Jika hal ini masih terlalu mahal di GPU untuk perangkat kelas bawah, pertimbangkan untuk menggunakan bayangan blob, bukan bayangan keras.
Tekstur
Format kompresi tekstur yang direkomendasikan untuk tekstur RGB dan RGBA di Android adalah ASTC. Di Unity, opsi kompresi tekstur minimum yang harus Anda gunakan di Android adalah ETC2. Anda dapat kembali ke ETC2 sebagai cadangan dari ASTC di bagian Setelan Build Unity.
Temukan daftar lengkap format yang didukung menurut platform dalam dokumentasi Unity di Manual: Recommended, default, and supported texture formats, by platform.
Antarmuka pengguna dan rasio aspek
Anda dapat menggunakan alat Simulator Perangkat Unity untuk melihat pratinjau berbagai resolusi layar, orientasi, dan rasio aspek perangkat langsung di Unity Editor. Anda dapat beralih antara tampilan Game dan tampilan Simulator Perangkat.
Lihat pratinjau alat di Simulasikan Game Anda dengan Simulator Perangkat di Unity!.

Anda dapat menemukan kode sumber Trivial Kart di repositori games-samples di GitHub.
Anda dapat dengan cepat memverifikasi tata letak dan kebenaran elemen kanvas UI di tampilan Simulator Perangkat dengan memilih opsi perangkat di menu drop-down:


Untuk mengetahui teknik pengoptimalan UI lainnya untuk Unity, lihat tutorial berikut dari Unity: Optimizing Unity UI.
Fisika
Mesin Nvidia PhysX sudah ada di Unity. Setelan default dapat membebani perangkat seluler, jadi perhatikan pertimbangan berikut:
- Pertimbangkan target kecepatan frame Anda dan tetapkan langkah waktu tetap yang sesuai. Defaultnya ditetapkan ke 0,02 md atau 50 Hz. Anda dapat meningkatkannya menjadi 0,03 atau lebih tinggi untuk target 30 fps.
- Pertimbangkan untuk menyederhanakan collider mesh dan meminimalkan Matriks Tabrakan Lapisan untuk menentukan interaksi antara objek game dari jenis lapisan tertentu.
Untuk mengetahui informasi tentang setelan fisika dan pengoptimalan untuk game seluler, lihat eBook Optimize Your Mobile Games dari Unity.
Profil
Developer aplikasi sering kali mengabaikan atau tidak memperhatikan pembuatan profil hingga aplikasi mencapai titik kegagalan kritis. Sebaiknya jadwalkan waktu pembuatan profil khusus ke dalam proses Anda, dan gunakan praktik terbaik berikut:
- Identifikasi poin-poin penting selama pengembangan saat Anda dapat mengalokasikan waktu pembuatan profil, bukan menyesuaikannya secara acak.
- Simpan snapshot profil untuk digunakan dengan Unity Profile Analyzer.
- Buat profil game Anda di perangkat target untuk mendapatkan gambaran akurat tentang performa game Anda pada tahap pengembangan saat ini.
- Membuat profil berbagai bagian game Anda.
- Buat profil cara pemain memainkan game Anda. (Jangan memprofilkan game hanya saat game dalam keadaan tidak aktif atau di layar jeda.)
- Profil dalam mode berkelanjutan setelah game berjalan selama beberapa waktu untuk membantu menemukan masalah pembatasan yang mungkin Anda alami saat perangkat seluler panas.
Anda dapat menggunakan alat pembuatan profil berikut secara terpisah atau bersama-sama.
Unity Profiler Unity Profiler adalah alat analisis performa yang terintegrasi sepenuhnya dan dapat dijalankan terhadap kode Anda di Unity Editor serta terhubung ke perangkat Android mandiri yang menjalankan build mode pengembangan.
Android GPU Inspector Dengan Android GPU Inspector (AGI), Anda dapat melakukan proses debug tingkat frame. AGI juga menganalisis layanan sistem, termasuk GPU, CPU, memori, baterai, dan penghitung GPU.
Untuk mengetahui detail tentang pembuatan profil game di Unity, tonton video Introduction to profiling in Unity atau baca Ultimate guide to profiling Unity games, keduanya dari Unity.
Pengelolaan memori
Proses Android berbagi memori yang tersedia di perangkat target. Anda harus membuat profil penggunaan memori saat perangkat pengujian target memiliki resource memori kosong yang cukup. Lakukan pengujian memori pada titik yang konsisten dalam game Anda sehingga Anda dapat membandingkan sesi dan tren penggunaan memori dengan tepat.
Saat bekerja dalam skrip yang ditulis dalam C#, berhati-hatilah dengan penggunaan string, perbandingan string, dan alokasi objek terkait string (seperti file JSON untuk setelan game). Hal ini menghasilkan alokasi memori yang sering dan dapat menyebabkan fragmentasi.
Pertimbangkan untuk menggunakan class
StringBuilder
untuk manipulasi string dengan urutan yang besar, dibandingkan dengan penggabungan string di tempat (seperti "this" + "is" + "a" + "bad" + "idea" versus
panggilan fungsi StringBuilder.Concat()
).
Untuk mengetahui informasi selengkapnya tentang string, lihat String dan teks dalam dokumentasi Unity.
Mengevaluasi resource teks TextAsset dan JSON terhadap jenis ScriptableObject
pilihan. ScriptableObjects
menangani penyimpanan data lintas adegan
secara efisien dan memungkinkan modifikasi waktu Editor-ke-Putar.
Untuk mengetahui diskusi tentang penggunaan alternatif pada handle JSON default untuk pengoptimalan seluler, lihat artikel Pengoptimalan tersembunyi dalam game jaringan di Hutch.
Gunakan Memory Advice API untuk menentukan seperti apa penggunaan memori Anda saat runtime. API ini menampilkan indikator lampu lalu lintas untuk penggunaan memori tinggi, normal, dan rendah. Anda dapat berlangganan indikator untuk mendapatkan info terbaru atau melakukan polling langsung untuk mengetahui status saat ini. Saat Anda mendapatkan sinyal merah, pertimbangkan untuk mengurangi kumpulan atau cache objek game. Sertakan konteks ini dalam telemetri game Anda selama operasi live dan peninjauan metrik performa setelah peluncuran.
Untuk mempelajari lebih dalam organisasi memori di perangkat Android dan cara Unity berinteraksi dengannya, tonton video Understanding Android memory usage (dari Google I/O '18). Video ini menjelaskan jenis masalah memori dan kapan proses mematikan aplikasi karena memori rendah terjadi.
Pembersihan sampah memori
Pengumpulan sampah dalam lingkungan memori terkelola membersihkan fragmen memori yang tidak digunakan yang dapat didaur ulang untuk aplikasi. Ikuti praktik terbaik pengumpulan sampah untuk menghindari alokasi sumber daya memori yang tidak perlu.
Misalnya, buat kumpulan objek game, bukan menggunakan alokasi sesuai permintaan (GameObject.Instantiate
). Untuk kumpulan besar, pertimbangkan mengalokasikan di beberapa frame untuk mengurangi risiko game Anda tidak responsif di perangkat Android tingkat entri.
Pertimbangkan cuplikan kode berikut untuk coroutine sederhana yang dipanggil dari awal MonoBehaviour:
// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
while (enabled) {
yield return new WaitForSeconds(1.0f);
// Some intermittent function check
}
}
// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
while (enabled) {
yield return waitForSecond;
// Some other intermittent function
}
}
Anda dapat
mengedit
file template MonoBehaviour untuk menghapus fungsi stub Start()
dan
Update()
default agar Anda tidak secara tidak sengaja membiarkan fungsi
kosong saat mengembangkan.
Untuk mengetahui ringkasan urutan eksekusi peristiwa MonoBehaviour, lihat Urutan eksekusi untuk fungsi peristiwa dalam dokumentasi Unity. Untuk mempelajari lebih lanjut pengelolaan memori, lihat kursus Memory Management in Unity.
Untuk mengetahui tips pengoptimalan performa game seluler, lihat Mengoptimalkan performa game seluler: Tips tentang pembuatan profil, memori, dan arsitektur kode dari para engineer terbaik Unity.
Penggabungan prefab
Lonjakan waktu frame CPU hampir sepenuhnya disebabkan oleh instansiasi Prefab selama gameplay. Pertimbangkan untuk memanaskan pool objek untuk proyektil, musuh yang dapat dimunculkan, dan efek visual sebelum memasuki gameplay untuk mengurangi atau menghilangkan lonjakan CPU saat startup. Anda dapat menyebarkan pengoptimalan tambahan di beberapa "frame inisialisasi" selama pemuatan atau urutan pengenalan dalam adegan Anda.
Anda dapat menemukan banyak aset pooling pihak ketiga di Unity Asset Store yang terkait dengan pengelolaan pooling objek game. Anda juga dapat membuatnya sendiri. Lihat Pengantar Object Pooling di Unity Learn.
Pengiriman aset
Ada batas ukuran aplikasi Anda saat pertama kali di-deploy ke Google Play. Bergantung pada ukuran dan sifat game, Anda mungkin memerlukan beberapa atau semua resource game (model karakter, lingkungan, elemen UI, dan sebagainya) agar pemain mendapatkan pengalaman yang Anda inginkan.
Anda dapat menggunakan layanan Play Asset Delivery (PAD) untuk mengelola aset yang diperlukan game Anda pada waktu penginstalan, fast follow, atau on-demand. Unity Asset Bundle diintegrasikan untuk mendukung PAD, dan Anda dapat menggunakan alat ini untuk menentukan elemen mana yang dikirimkan.
Addressables
Menyiapkan aset dinamis – seperti prefab, tekstur, dan file suara – saat runtime tidak lagi menjadi operasi yang rumit jika Anda menyiapkan dan meninjau sistem penamaan Addressables. Aset yang dapat dialamatkan memisahkan cara Anda mengatur konten dari cara Anda membuat dan memuat konten. Sistem Addressables menggantikan folder Resources dan Asset Bundles untuk menyederhanakan cara Anda mereferensikan aset dan memuatnya saat runtime.
Sebagai contoh, lihat Project demo menggunakan paket Addressables di GitHub. Untuk mengetahui detail tentang pengembangan Addressables, lihat Addressable Asset System di Unity Blog.
Dengan tata letak aset Addressable, ada kelebihan dan kekurangan dalam menggabungkan terlalu sedikit atau terlalu banyak aset ke dalam paket umum. Untuk mempelajari lebih lanjut pengelolaan konten dengan Addressable, lihat Menyederhanakan pengelolaan konten dengan Addressable.
Anda dapat menyiapkan demo mandiri dan bereksperimen dengan mode akses untuk memahami sistem Addressables. Anda juga dapat melihat project open source
BuildLayout Explorer untuk Unity 2019.3 dan yang lebih baru,
dan memeriksa laporan buildlayout.txt
yang dihasilkan oleh
Addressables.
Aset untuk Chop Chop, sebuah Unity Open Project, dikemas menggunakan sistem Addressables untuk semua pemuatan dan pembongkaran. Lihat Mengemas konten dengan Aset yang Dapat Dialamatkan | Devlog Project Terbuka untuk mengetahui penjelasan tentang struktur dan penyiapan konfigurasi paket Addressables.
Dalam project Chop Chop, satu-satunya adegan yang dimuat secara default, yaitu adegan Initialization, dikonfigurasi untuk menggunakan AssetReferences
, bukan link langsung ke aset dalam project (adegan, prefab, dan sebagainya).
Kode sumber untuk Unity Open Project: Chop Chop tersedia di GitHub. Meskipun project tidak lagi dalam pengembangan, repo git dan dokumentasi masih tersedia.
Plugin pihak ketiga
Jika Anda menggunakan plugin pihak ketiga, seperti yang ada di Unity Asset Store, pastikan Anda meninjau folder dan menghapus aset yang tidak diperlukan dari folder Resources. Selama proses build, Unity mengumpulkan semua aset yang disertakan dalam folder Resources dan mengemasnya dalam satu bundle yang dapat diakses saat runtime. Hal ini dapat menambah ukuran paket akhir, dan sering kali tidak diperlukan.
Untuk menemukan semua folder resource dengan cepat, telusuri Resources di panel Project. Kemudian, Anda dapat memilih setiap item untuk mengidentifikasi isinya dan apakah item tersebut diperlukan untuk game Anda.

Publikasikan dan pertahankan
Saat Anda siap meluncurkan game seluler, tentukan siapa yang ingin Anda tuju untuk merilis game, cara melakukan pengujian alfa dan beta, serta cara memantau dan melacak performa setelah peluncuran.
Menganalisis masukan dari rilis terbatas
Anda dapat meluncurkan game ke audiens target terbatas dan melakukan pengujian beta skala lebih besar, atau mengaktifkan game agar tersedia sepenuhnya di semua pasar. Dengan rilis terbatas, Anda dapat menyesuaikan performa aplikasi berdasarkan audiens aktif yang lebih luas dan kumpulan perangkat.
Misalnya, Anda dapat menggunakan Android Performance Tuner untuk Unity dan Google Analytics untuk Unity guna mendapatkan insight tentang performa aplikasi dan tren pemain, yang dapat digunakan tim pengembangan Anda untuk menyesuaikan dan mendorong update. Anda juga dapat menggunakan data analisis untuk merencanakan sekuel atau game terkait dalam genre yang serupa.
Pengujian alfa dan beta
Setelah menyiapkan profil aplikasi di Konsol Google Play, Anda dapat menyiapkan build pengujian alfa dan beta publik serta mendistribusikannya kepada audiens terbatas untuk peninjauan prapeluncuran. Dengan meluncurkan ke audiens terbatas, Anda dapat mengatasi masalah akhir dengan lebih banyak perangkat dan mengumpulkan masukan awal yang dapat Anda tanggapi sebelum ditayangkan dalam rilis global.
Build Unity Anda didistribusikan melalui Android App Bundle. Untuk mengetahui informasi selengkapnya, lihat Manual: Mengirimkan ke Google Play dari Unity, yang juga menjelaskan perubahan dari file APK ke format AAB.
Memantau dan melacak
Selama fase liveops dan distribusi game, Anda dapat menggunakan Android Vitals untuk membantu melacak masalah performa di perangkat yang mungkin tidak dapat Anda akses selama pengembangan dan pengujian. Untuk mengetahui detailnya, tonton Yang baru untuk game di Jangkauan dan perangkat serta Android vitals.
Tim pengembangan yang lebih besar sering kali memiliki pipeline telemetri game yang unik dan kustom yang memberikan metrik terkait performa perangkat. Jangan lupa untuk memanfaatkan Android Performance Tuner (APT) dan plugin Unity yang sesuai untuk mendapatkan metrik terkait frekuensi gambar, fidelitas grafis, waktu pemuatan, dan pengabaian pemuatan. Ikuti panduan langkah demi langkah di Mengintegrasikan Android Performance Tuner ke dalam game Unity.
Siklus proses game Anda tidak berhenti setelah Anda menayangkan game secara live. Memantau, memelihara, dan menanggapi performa dan masukan sangat penting untuk membuat pengguna senang, mendapatkan ulasan positif, dan pada akhirnya mendorong adopsi game Anda di semua pasar.