Cara menerbitkan game VR ke Oculus tanpa gangguan saraf

Kami terus berbagi pengalaman pertama kami dalam mengembangkan game VR, Astro Collapse. Pada artikel sebelumnya, kami berbicara tentang ide utama game dan desain game .



Kali ini kami akan memberi tahu Anda cara menghindari kesalahan kami dan menerbitkan game lebih cepat. Kami hanya mendapatkannya pada percobaan ketiga, karena kami terjebak pada pemeriksaan teknis. Kami tidak dapat meningkatkan kinerja permainan hanya menggunakan saran dari situs web Oculus. Karena itu, kami mencari solusi sendiri. Baca artikel sampai akhir sehingga Anda tidak main-main dengan menerbitkan game Anda ke Oculus. Mungkin Anda bisa melakukannya pertama kali.



Panduan teknis gaming VR dan metrik kinerja utama



Setelah selesai membangun, daftar untuk Oculus dan unggah game ke akun Anda. Dalam beberapa hari Anda akan menerima pemberitahuan melalui email. Ini bisa berupa ucapan selamat atas kelulusan ujian, atau permintaan untuk memperbaiki kesalahan.



Pertama kali kami tidak memperhitungkan semua rekomendasi dari situs web Oculus, jadi kami mendapat hasil berikut:

gambar

Laporan terperinci setelah pemeriksaan Oculus pertama.



Kami gagal dalam tes kinerja, kami memiliki masalah dengan pengembalian yang diperlukan ke menu Beranda Oculus dan permainan tidak diinstal pada versi Android yang lebih lama.



Untuk lulus tes kinerja, Anda harus mengikuti panduan ini:



  • FPS dalam game harus setidaknya 60;
  • dari 50 hingga 100 panggilan untuk menggambar per bingkai (Call Draw);
  • 1-3 milidetik untuk menjalankan skrip;
  • dari 50.000 hingga 100.000 poligon per bingkai.


Mari kita cari tahu konsepnya terlebih dahulu, dan kemudian saya akan menunjukkan kepada Anda bagaimana kami memecahkan masalah kinerja kami.



FPS atau bingkai per detik



Indikator utama kinerja tinggi adalah FPS tinggi. Ini menunjukkan frame rate per detik: game memiliki loop yang menarik dunia game dan melakukan operasi matematika dalam skrip. Semakin tinggi penundaan antara frame-frame ini, semakin rendah metrik dan kinerjanya.

Dengan bantuan FPS, Anda dapat memahami jika semuanya sesuai dengan permainan.




Gambar indikator Panggilan



Draw Call - Jumlah panggilan tekstur yang dikirim mesin game ke GPU untuk menarik dunia. Untuk mengurangi jumlah panggilan, mesin perlu menggabungkan tekstur menjadi satu bahan. Teknik ini disebut batching.

Semakin tinggi indikator Draw Call, semakin lama waktu yang dibutuhkan untuk menggambar dunia game.


Script dan kecepatan eksekusi mereka



Script bertanggung jawab atas segala tindakan dan operasi dalam game Anda perlu penangan untuk menjalankannya. Misalnya, Perbarui. Itu harus memproses setiap frame. Jika permainan memiliki banyak objek dan aksi kompleks pada mereka, maka pawang ini tidak punya waktu untuk menyelesaikan bingkai. Karena itu, kinerja rendah dan permainan membeku.

Banyak operasi yang memakan waktu di Pembaruan membuatnya sulit untuk melakukan tindakan pada objek.


Poligon per bingkai



Poligon adalah segitiga yang membentuk model game 3D. Mereka terdiri dari simpul dan bidang. Poligon per bingkai adalah produk dari jumlah semua objek di dunia game dan segitiga ini.

Semakin tinggi angka ini, semakin lama mesin game akan memproses satu frame.


Bagaimana kami memecahkan masalah kinerja



Kami memiliki 4 masalah utama yang menyebabkan kinerja game gagal memenuhi nilai yang disarankan. Kami membuat objek 3D yang terlalu terperinci, menemui tingkat Panggilan Panggilan yang tinggi, skrip lambat, dan memori perangkat kelebihan beban. Kami menghabiskan sebagian besar waktu mencari solusi untuk kekurangan ini. Dan sekarang tentang segalanya secara berurutan.



Menyederhanakan objek 3D dan menurunkan poligon per bingkai



Ada banyak asteroid dan kapal di game kami yang terus bergerak dan membebani game. Selama pertempuran, pemain tidak punya waktu untuk mempertimbangkan mereka dan memperhatikan detailnya, karena dia tertarik pada prosesnya. Jika Anda mengurangi jumlah asteroid, maka gim akan menjadi membosankan dan tidak menarik. Karena itu, kami memutuskan untuk menyederhanakan model tiga dimensi asteroid dan angkutan: kami mengurangi jumlah total poligon di kancah permainan.



gambar

Poligon pesawat ulang-alik dari game Astro Collapse



Tentukan apa yang penting dalam gim Anda: merinci benda kecil atau dunia gim besar. Anda akan memahami model objek mana yang tidak perlu dirinci, yang akan membantu meningkatkan kinerja.


Kami menggabungkan tekstur menjadi atlas dan mencapai indikator Draw Call yang direkomendasikan



Di Astro Collapse, dunia game dibuat dari asteroid, angkutan, kapal perang, Bumi dan Matahari. Ada banyak objek dalam permainan - indikator Draw Call tinggi, sehingga mesin memperlambat rendering grafik. Untuk menguranginya, Anda perlu menggabungkan tekstur objek yang berbeda menjadi satu atlas.

gambar

Atlas asteroid dalam game Astro Collapse



Kami telah membuat 4 atlas tekstur besar: untuk asteroid, kokpit dan meriam, antarmuka penglihatan, dan menu game. Ini adalah benda yang terdiri dari banyak bahan serupa. Atlases menyederhanakan pekerjaan mesin, karena tidak perlu lagi mengumpulkan tekstur yang berbeda menjadi satu objek - kami melakukannya untuk itu.

Kumpulkan bahan benda menjadi atlas - satu tekstur besar.


Mengurangi waktu eksekusi skrip



Setiap tindakan dalam game terjadi menggunakan skrip. Astro Collapse memiliki banyak objek game dan operasi kompleks pada mereka, sehingga beberapa skrip dieksekusi untuk waktu yang lama - Pembaruan handler menunda penyelesaian frame. Ini memperlambat proses game.



Oleh karena itu, kami harus mengambil operasi kompleks dari pembaruan frame-by-frame. Kami menggunakan co-rutin yang dapat melakukan operasi pada objek di luar frame.



Ini adalah bagaimana kami dapat mengoptimalkan operasi asteroid yang kompleks. Ada banyak objek seperti itu di Astro Collapse: setiap asteroid perlu diperiksa aktivitasnya, lacak lokasinya di luar angkasa dan tambahkan ke daftar. Daftar itu sendiri perlu diperbarui untuk membawa asteroid baru ke dalam permainan, menghitung jarak mereka dengan pemain, angkutan, dan kapal perang tetangga. Hasilnya adalah loop yang berjalan lama untuk bingkai yang tidak bisa ditangani oleh handler Pembaruan. Dan dengan bantuan coroutine, mesin mengeluarkan operasi rumit ini dari pembaruan frame-by-frame dan meningkatkan kinerja.

Handler co-rutin melakukan operasi kompleks di luar pembaruan frame-by-frame, yang menyederhanakan pekerjaan mesin game.


Melindungi memori perangkat dari sampah dan membuat kumpulan asteroid



Astro Collapse memiliki banyak asteroid. Mereka terus muncul, mereka perlu dihancurkan. Konstruktor standar dalam skrip Instantiate and Destroy gagal dengan melakukan operasi ini. Mereka membuat sampah di memori perangkat, menyebabkan permainan membeku. Jadi kami melakukannya secara berbeda.



Asteroid yang jatuh tidak hancur, tetapi bersembunyi di ruang permainan. Saat objek baru diperlukan, skrip akan memanggilnya dari objek tersembunyi. Metode ini disebut pooling.



Sebelum memuat dunia game, skrip menciptakan beberapa lusin asteroid. Jika mereka semua terbang di ruang angkasa pada saat yang sama dan mereka tidak ada dalam memori, maka ia menghasilkan asteroid baru dan menambahkannya ke daftar. Ini memberi kami model kontrol asteroid yang fleksibel dan peningkatan kinerja game.

Gunakan metode pooling untuk objek-objek dari tipe yang sama, yang sering dibuat dan dihancurkan, tetapi dalam game itu sendiri tidak banyak dari mereka pada saat yang sama.


Bug minor setelah pemeriksaan teknis



Pasca-pemrosesan model dalam gim: nonaktifkan anti-aliasing



Antialiasing - pasca-pemrosesan gambar dengan menghaluskan ujung yang bergerigi. Antialiasing ditetapkan secara default di Astro Collapse. Itu membebani game, dan masih belum ada anti-aliasing yang terlihat dalam game - resolusi pada helm Gear VR rendah. Karena itu, kami mematikannya. Selama pengujian, para pemain tidak melihat adanya perubahan, tetapi kinerjanya menjadi lebih tinggi.

Anti-aliasing tidak menghasilkan gambar anti-ali pada resolusi rendah pada Gear VR.


Ledakan spektakuler dari sprite



Untuk membuat ledakan yang terang, kami menggunakan sprite. Ini adalah gambar ledakan yang mengubah ukuran, transparansi, dan warna dari merah-jingga menjadi hitam. Dengan cara ini, kami berhasil menjaga dinamika ledakan dan meningkatkan kinerja game tanpa menggunakan sistem kompleks dari banyak partikel dan animasi individu.



Asteroid yang hancur di Astro Collapse



Ledakan spektakuler dapat dilakukan dengan sprite.


Tidak perlu bayangan



Kami mematikan bayangan karena permainan selalu bergerak - Anda tidak dapat melihatnya. Selain itu, kami tidak memiliki objek besar yang dapat digunakan untuk membuat bayangan.

Nonaktifkan bayangan untuk objek game sekunder yang tidak signifikan bagi para pemain.


Masalah dengan yang diperlukan kembali ke menu Oculus Home



Tombol kembali pada helm harus mengembalikan pemain ke Oculus Home, bukan ke menu permainan, seperti yang terjadi di Astro Collapse. Untuk memperbaiki masalah ini, saya mengambil skrip plugin Oculus yang sudah jadi dan menerapkannya dalam game.

Gunakan skrip OVRPlatformMenu.cs untuk tombol kembali menu agar berfungsi dengan benar.


Eliminasi bug dengan memasang game di Android versi lama





Kelemahan dalam instalasi mudah dipecahkan. Anda perlu menentukan versi Android yang lebih lama didukung dalam pengaturan proyek.

Jangan lupa untuk menentukan level minimum Android 4.1 API dalam pengaturan game.


Hasil setelah pertandingan diterbitkan



Kami memperbaiki kekurangan kami dan mengirim game untuk ditinjau untuk ketiga kalinya. Jawabannya positif - permainan ini diterbitkan seminggu kemudian:

gambar

Selamat dari Maria dari dukungan teknis Oculus dengan pesan tentang tanggal penerbitan game



2 minggu setelah publikasi, Astro Collapse telah diunduh lebih dari 7000 kali. Untuk game VR pada platform Gear VR, ini adalah hasil yang sangat baik: ini masuk dalam 50 game gratis teratas dan peringkat ke-24 dalam daftar.



Kiat untuk menerbitkan game ke Oculus



Ada beberapa aturan yang harus diikuti untuk menghindari masalah kami saat menerbitkan game Anda ke Oculus Store:

  • Lihatlah rekomendasi dan masalah paling umum di situs web resmi Oculus sebelum mengunggah game.
  • Pikirkan tentang meningkatkan kinerja sejak awal pengembangan, agar tidak mengulang seluruh permainan di tahap akhir.
  • Jangan menyulitkan grafik dalam game dengan merinci semua objek, banyak tekstur atau bayangan. Ini akan berjalan di ponsel dan memiliki spesifikasi terbatas. Pikirkan tentang apa yang bisa dihapus tanpa kehilangan kualitas permainan.
  • Hubungi dukungan teknis Oculus. Mereka akan dengan cepat menjawab dan membantu.
  • Ingatlah bahwa meningkatkan kinerja setiap game memerlukan pendekatan pengembang individual. Anda tidak akan menemukan solusi universal untuk masalah tersebut.




Lihatlah kiat kami untuk membantu Anda diverifikasi di Oculus lebih cepat.



Mainkan game Astro Collapse dan hargai gambarnya. Untuk melakukan ini, Anda memerlukan kacamata Samsung Gear VR. Mereka bekerja dengan smartphone: Samsung Galaxy Note 4, 5, 7, S6 / S6 Edge / S6 Edge +, S7 / S7 Edge, S8 / S8 +.



Perkembangan yang berhasil!



All Articles