Jadi saya telah membuat game Java 2D top-down ini dalam kerangka kerja ini disebut Greenfoot dan saya telah bekerja pada AI untuk orang-orang yang akan Anda lawan. Saya ingin mereka dapat bergerak di seluruh dunia secara realistis sehingga saya segera menyadari, di antara beberapa hal lain, saya akan memerlukan semacam jalan.
Saya telah membuat dua prototipe A *. Satu berbasis grid dan kemudian saya membuat satu yang bekerja dengan titik arah jadi sekarang saya perlu mencari cara untuk mendapatkan dari "peta" 2d dari hambatan / bangunan ke grafik node yang bisa saya buat jalurnya. Pathfinding yang sebenarnya tampak baik-baik saja, hanya daftar saya yang terbuka dan tertutup yang dapat menggunakan struktur data yang lebih efisien, tetapi saya akan membahasnya jika dan ketika saya membutuhkannya.
Saya bermaksud menggunakan navigasi mesh untuk semua alasan yang dijabarkan dalam posting ini di aiblog.net . Namun, masalah yang saya hadapi adalah bahwa apa yang A * pikirkan adalah jalur terpendek dari pusat / tepi poligon belum tentu jalur terpendek jika Anda melakukan perjalanan melalui bagian mana pun dari simpul. Untuk mendapatkan ide yang lebih baik, Anda dapat melihat pertanyaan yang saya ajukan di stackoverflow .
Saya mendapat jawaban yang bagus tentang grafik visibilitas. Sejak itu saya telah membeli buku tersebut ( Komputasi Geometri: Algoritma dan Aplikasi ) dan membaca lebih jauh ke dalam topik, namun saya masih mendukung jala navigasi (Lihat " Mengelola Kompleksitas " dari Catatan Amit tentang Path-Finding ). (Sebagai catatan, mungkin saya bisa menggunakan Theta * untuk mengubah banyak titik arah menjadi satu garis lurus jika yang pertama dan yang terakhir tidak dikaburkan. Atau setiap kali saya kembali periksa ke waypoint sebelum terakhir untuk melihat apakah saya bisa langsung dari itu untuk ini)
Jadi pada dasarnya yang saya inginkan adalah jala navigasi di mana setelah saya memasukkannya melalui algoritma corong (misalnya yang ini dari Digesting Duck ) saya akan mendapatkan jalur terpendek yang benar, daripada mendapatkan satu yang merupakan jalur terpendek mengikuti simpul ke simpul saja, tetapi bukan yang terpendek mengingat Anda dapat melewati beberapa poligon dan melewati node / edge.
Oh dan saya juga ingin tahu bagaimana Anda menyarankan untuk menyimpan informasi mengenai poligon. Sebagai contoh prototipe waypoint yang saya buat, saya hanya punya masing-masing simpul sebagai objek dan menyimpan daftar semua simpul lain yang bisa Anda tempuh dari simpul itu, saya rasa itu tidak akan berfungsi dengan poligon? dan bagaimana cara mengetahui apakah poligon terbuka / dapat dilalui atau jika itu adalah benda padat? Bagaimana cara menyimpan node mana yang membentuk poligon?
Akhirnya, sebagai catatan: Saya ingin memprogram ini sendiri dari awal meskipun sudah ada solusi lain yang tersedia dan saya tidak bermaksud untuk (kembali) menggunakan kode ini selain permainan ini sehingga tidak masalah bahwa kualitasnya pasti buruk.