Pracuję nad botem do symulatora gier planszowych BattleTech http://en.wikipedia.org/wiki/BattleTech , jest on turowy.
Plansza jest podzielona na sześciokąty, każdy ma inny typ terenu i wysokość. Prowadzisz robota, który się nad nimi porusza, aby zniszczyć inne roboty.
Znam tylko algorytmy Dijkstry i A *, ale problem polega na tym, że istnieją 3 rodzaje ruchów: chodzić, biegać i skakać po kilka sześciokątów (każdy z nich ma swoje własne reguły). Chodzenie i bieganie są prawie takie same.
Najlepszą ścieżką może być kombinacja lub każdy typ ruchu. Oto przykład mapy http://megamek.info/sites/default/files/isometric_view.png
Czy znasz dobry algorytm dla tego złożonego wyszukiwania ścieżek lub sposób łączenia wyników A * dla każdego rodzaju ruchu?
ai
movement
path-finding
alexvisio
źródło
źródło
Odpowiedzi:
Zarówno Dijkstra, jak i A * mogą dodawać różne koszty do krawędzi (= połączeń) z jednej płytki na drugą. Pozwalają również połączyć dwa węzły (= kafelki) z więcej niż jedną krawędzią, każdy z innym kosztem.
Alternatywny tryb skoku oznaczałby, że istnieje alternatywna bezpośrednia krawędź z każdej płytki do każdej płytki w odległości skoku. Ponieważ jednak mech może chodzić lub skakać w turze, kosztem użycia tej krawędzi byłyby punkty ruchu całej tury plus pozostałe punkty bieżącej tury, gdy już był ruch w tej turze.
Zgodnie z Twoim opisem decyzja dotycząca chodzenia a biegania nie ma większego znaczenia w wyborze ścieżki, ale wydaje się, że jest to decyzja strategiczna. Aktor zdecydowanie może chodzić, gdy w bieżącej turze można dotrzeć do celu bez uciekania się do biegania. Ale poza tym istnieje wiele czynników, na przykład:
Nie ma twardej zasady podejmowania tej decyzji. Najlepsze, co możesz zrobić, to zastosować podejście heurystyczne. Przypisz wartości dodatnie lub ujemne do wszystkich okoliczności, dodaj je i sprawdź, czy wynik jest dodatni czy ujemny.
Istnieje również inny czynnik w wyszukiwaniu ścieżek, który należy wziąć pod uwagę: w niektórych warunkach sensowne może być uniknięcie przez mecha zakończenia swojej tury w niektórych miejscach. Gdy znajdujesz się w strefie zagrożenia, skorzystanie z trzech zwojów, aby dostać się z A do B, ale zakończenie każdego z nich w osłonie może być lepsze niż użycie tylko dwóch, ale odsłonięcie na końcu każdego. Albo może nie. To zależy od okoliczności i dokładnej mechaniki gry. To znowu jest strategiczna decyzja, którą musisz podjąć w oparciu o heurystykę. Możesz to przedstawić, dodając dodatkowy koszt do krawędzi, które kończą turę na niebezpiecznej płytce, aby zniechęcić AI do wykonania tego ruchu.
źródło