Apakah ada perbedaan yang signifikan antara menggunakan kotak persegi atau heksagonal untuk area yang dicari oleh algoritma pencarian jalur. Dengan kata lain, lebih baik persegi atau heksagonal, dan jika demikian mengapa.
Apakah ada perbedaan yang signifikan antara menggunakan kotak persegi atau heksagonal untuk area yang dicari oleh algoritma pencarian jalur. Dengan kata lain, lebih baik persegi atau heksagonal, dan jika demikian mengapa.
Jawaban:
Pertimbangan utama untuk memutuskan apakah akan menggunakan kuadrat vs kisi hex seharusnya bukan kemudahan implementasi AI - algoritma pencarian luas-pertama dan kedalaman-pertama hampir sama tidak peduli apa pun jenis grafik yang Anda miliki.
Sebaliknya, ini adalah masalah gameplay yang harus dipertimbangkan oleh para desainer game. Kotak persegi lebih mudah diakses oleh pasar massal (papan hex cenderung terlihat "culun"), dan dalam dunia kontrol atas / bawah / kiri / kanan itu jauh lebih intuitif untuk menavigasi di sekitar kotak daripada hex dari sudut pandang UI. Kotak kotak juga cenderung membatasi gerakan sedikit lebih banyak; dengan asumsi gerakan ortogonal (dan bukan diagonal), dibutuhkan 4 gerakan untuk berjalan mengelilingi rintangan satu-persegi, dibandingkan dengan 3 gerakan dalam kotak hex. Dari sudut pandang pemrograman, heks juga sedikit lebih mudah untuk diimplementasikan tetapi ini bukan tentang algoritma pencarian sebanyak bahwa kotak persegi sama dengan array dua dimensi, tetapi kotak hex tidak benar-benar memetakan ke struktur data standar.
Sisi bawah dari kotak persegi adalah bahwa gerakan itu tidak pernah terasa benar. Bergerak secara diagonal harus mengambil titik gerakan sqrt (2), tetapi dalam praktiknya gerakan 1 (yang membuatnya terasa seperti berjalan di diagonal cepat dan jarang ada alasan untuk berjalan secara ortogonal) atau itu adalah 2 gerakan (yang membuat gerakan diagonal terasa terlalu lambat ). Dengan kisi-kisi hex, jarak gerakan jauh lebih intuitif, karena jarak selalu sama dari satu hex ke yang lain tidak peduli jalan mana yang Anda ambil.
Saya bukan ahli AI dengan cara apa pun, tetapi perbedaannya harus diabaikan. Kotak persegi sedikit lebih cepat (4 koneksi per node, bukan 6), tapi itu bukan faktor pembatas dalam runtime algoritmik. Bergantung pada algoritma apa yang Anda rencanakan untuk digunakan, kode tersebut mungkin sedikit lebih kompleks untuk hex grid, karena sedikit lebih rumit untuk menghitung koordinat, dan lebih sulit untuk menggunakan semacam pintasan quadtree / octree yang saya percaya adalah sering digunakan dalam pencarian jalan.
Tetapi untuk dunia sederhana seperti tingkat permainan strategi turn-based, perbedaan antara dua tata letak seharusnya tidak terlalu berarti; kotak persegi akan sedikit lebih sederhana dan lebih cepat.
Panduan tentang segi enam ini mengagumkan. Bagian tentang pathfinding memiliki contoh interaktif dan beberapa info tentang cara menyesuaikan pathfinding persegi.
Jika Anda menggunakan pathfinding berbasis grafik seperti A * atau algoritma Dijkstra atau Floyd-Warshall, pathfinding pada hex grid tidak berbeda dengan pathfinding pada grid persegi.
- Tetangga. Contoh kode yang saya berikan di tutorial pathfinding memanggil graph.neighbors untuk mendapatkan tetangga dari suatu lokasi. Gunakan fungsi di bagian tetangga untuk ini. Saring tetangga yang tidak bisa dilewati.
- Heuristis. Kode sampel untuk A * menggunakan fungsi heuristik yang memberikan jarak antara dua lokasi. Gunakan rumus jarak, diskalakan agar sesuai dengan biaya pergerakan. Misalnya jika biaya pergerakan Anda adalah 5 per hex, maka kalikan jaraknya dengan 5.