Saat ini saya sedang mengembangkan game seperti Diablo untuk platform seluler (iphone5 +).
Pencarian A * sederhana akan menemukan jalan, tetapi penghindaran tabrakan masih perlu dipertimbangkan.
Akan ada sekitar 50 monster yang aktif pada saat yang bersamaan, jadi performanya sangat penting.
Saya menemukan beberapa metode yang mungkin berhasil.
NavMesh + RVO
The perombakan / memutar perpustakaan bekerja dengan baik pada
pathfinding
sebagian, tapi simulasi kerumunan dengan cepat mencapai batas (lebih dari 5ms untuk 30 agen).RVO2 perpustakaan lain tampaknya baik-baik saja (kurang dari 2ms untuk 50 agen), tetapi perpustakaan memiliki beberapa masalah lisensi.
Bidang Aliran + Mesin Fisika
Banyak game RTS menggunakan metode ini, tetapi tampaknya diperlukan mesin fisika untuk menyelesaikan tabrakan. Jika banyak agen tidak memiliki tujuan yang sama, metode ini mungkin lebih mahal daripada penelusuran jalur tradisional A *.
Perilaku Kemudi + Mesin Fisika
Steering Behaviors mencakup banyak konsep, saya pikir
simple avoidance behavior
mungkin berhasil (belok kiri / kanan jika ada sesuatu di depan), tetapi metode ini masih membutuhkan mesin fisika untuk bekerja bersama.
Saya masih tidak yakin mana yang harus digunakan, mungkin ada metode lain pathfinding dan collision avoidance.
PS Halo:Spartan Strike
menggunakan Havok AI (berdasarkan RVO?), Tapi saya tidak melihat banyak musuh dalam game itu, jadi saya bertanya-tanya apakah metode pertama (NavMesh + RVO) akan bekerja dengan baik di platform seluler.
Jawaban:
Ini adalah pertanyaan yang cukup menarik, dan saya akan mencoba berkontribusi dengan apa yang saya bisa.
Pertama, saya pikir Anda harus mendefinisikan dengan jelas batas-batas permainan yang Anda coba buat, dan mendefinisikan pertanyaan-pertanyaan itu (beberapa mungkin sudah dijawab).
Mengutip jawaban dari sini tentang bagaimana pathfinding dilakukan di starcraft 2:
Jadi kembali ke 3 proposisi Anda:
Beberapa catatan tentang perilaku Kemudi, Anda dapat menentukan kekuatan kemudi sebanyak yang Anda butuhkan, dengan area yang Anda inginkan. Anda membutuhkan setidaknya 3, untuk berkelompok / tarik / jijik, tetapi lebih mungkin menarik.
Kemudian, cobalah untuk menemukan perpustakaan yang mengarahkan perilaku untuk melihat apakah itu sesuai dengan kebutuhan Anda (seperti ini ? Saya tidak benar-benar tahu, tetapi ada).
Jika perpustakaan tidak sesuai dengan kebutuhan Anda, maka Anda siap untuk bersenang-senang! Tetapi ada sumber daya dan algoritma yang cukup untuk menerapkan perilaku berkelompok sendiri. Contoh 1 Contoh 2
Jika Anda memilih untuk menerapkan sendiri, ketahuilah ada beberapa optimasi yang bagus untuk dilakukan, karena ruang lingkup agen Anda dikurangi misalnya dengan lokasinya di dalam kawanan. Lagi pula itu harus dimasukkan dalam beberapa algoritma.
Yah itu yang terbaik dari pengetahuan saya, saya tidak yakin juga
sumber
Jika jalur musuh tidak terlalu dinamis (Dinamis akan setiap agen pasangan menyerang target yang berbeda dan jalur ke target tersebut harus diperbarui setiap frame pasangan)
Lalu saya akan melakukan kombinasi flowfields dan perilaku kemudi jika kinerja adalah perhatian utama Anda. Ada beberapa mata pelajaran yang lebih rumit yang terlibat seperti mempartisi ruang agen Anda sehingga menemukan tetangga lebih mudah tetapi itu adalah taruhan terbaik Anda untuk kinerja. (menghapus pencarian A * Anda dan menggunakan flowfield untuk mengarahkan agen Anda)
Gabungan kedua algoritma tersebut umumnya dianggap sebagai solusi paling optimal untuk adegan agen yang padat dengan pathing yang tidak terlalu dinamis.
Saya akan menghindari fisika apa pun pilihan akhir Anda karena dapat menjadi berat.
Tabrakan antara agen hampir seluruhnya dapat ditangani oleh perilaku kemudi dan alur aliran mengurangi berat 50 agen menghitung jalur. Namun perlu diingat bahwa flowfields semakin mahal, semakin besar ukuran peta Anda, dan semakin kecil ukuran kisi Anda, dan semakin dinamis pilihan target Anda.
sumber