Saya sedang mengembangkan bot untuk simulator permainan papan BattleTech http://en.wikipedia.org/wiki/BattleTech , ini berbasis giliran.
Papan dibagi menjadi segi enam, masing-masing memiliki jenis medan dan ketinggian yang berbeda. Anda mengendarai robot yang bergerak di atasnya, untuk menghancurkan robot lain.
Saya hanya tahu algoritma Dijkstra dan A * pathfinding, tetapi masalahnya adalah ada 3 jenis gerakan: berjalan, berlari, dan lompat beberapa segi enam (masing-masing memiliki aturan sendiri). Berjalan dan berlari hampir sama.
Jalur terbaik bisa berupa kombinasi atau setiap jenis gerakan. Berikut adalah contoh peta http://megamek.info/sites/default/files/isometric_view.png
Apakah Anda tahu algoritma yang baik untuk penelusuran jalan yang rumit ini atau cara untuk menggabungkan hasil A * untuk setiap jenis gerakan?
sumber
Jawaban:
Baik Dijkstra dan A * dapat menambahkan biaya yang berbeda ke tepi (= koneksi) dari satu ubin ke ubin lain. Mereka juga memungkinkan untuk menghubungkan dua node (= petak) dengan lebih dari satu sisi, masing-masing dengan biaya yang berbeda.
Mode lompatan alternatif berarti bahwa ada tepi langsung alternatif dari setiap ubin ke setiap ubin dalam jarak lompat. Tetapi karena suatu mekanisme dapat berjalan atau melompat pada gilirannya, biaya untuk menggunakan tepi ini akan menjadi titik bergerak dari seluruh belokan, ditambah poin yang tersisa dari belokan saat ini ketika sudah ada gerakan belokan ini.
Menurut uraian Anda, keputusan untuk berjalan vs berlari tidak membuat banyak perbedaan mengenai pilihan jalur, tetapi lebih merupakan keputusan strategis untuk dibuat. Aktor pasti bisa berjalan ketika tujuan dapat dicapai pada giliran saat ini tanpa menggunakan berlari. Tetapi sebaliknya ada banyak faktor yang menjadi faktor, seperti:
Tidak ada aturan keras untuk membuat keputusan ini. Yang terbaik yang dapat Anda lakukan adalah menggunakan pendekatan heuristik. Tetapkan nilai poin positif atau negatif untuk semua keadaan, tambahkan, dan lihat apakah hasilnya positif atau negatif.
Ada juga faktor lain dalam pencarian jalan yang harus Anda pertanggungjawabkan: Dalam beberapa kondisi, masuk akal bagi mekanisme untuk menghindari mengakhiri gilirannya di lokasi tertentu. Saat berada di area berbahaya, menggunakan tiga belokan untuk beralih dari A ke B tetapi mengakhiri masing-masingnya dalam penutup mungkin lebih baik daripada hanya menggunakan dua, tetapi diekspos di akhir masing-masing. Atau mungkin tidak. Itu tergantung pada keadaan dan mekanisme permainan yang tepat. Sekali lagi, ini adalah keputusan strategis yang harus Anda buat berdasarkan heuristik. Anda bisa mewakili ini dengan menambahkan biaya tambahan ke tepi yang mengakhiri pergantian ubin berbahaya untuk mencegah AI membuat langkah ini.
sumber