Próbowałem wdrożyć proste wyszukiwanie ścieżek, ale wynik jest mniej zadowalający niż to, co zamierzałem osiągnąć. Chodzi o to, że jednostki w grach takich jak Starcraft 2 poruszają się we wszystkich kierunkach, podczas gdy jednostki w moim przypadku poruszają się tylko w maksymalnie 8 kierunkach (styl Warcraft 1), ponieważ te 8 kierunków prowadzą do następnych dostępnych węzłów (przemieszczają się z kafelka na następny sąsiadujący kafelek) . Co powinienem zrobić, aby osiągnąć wynik jak w Starcraft 2? Zmniejszyć rozmiar płytki?
Na zdjęciu widać poziomą linię kamiennych kafelków będących przeszkodami, a znalezioną ścieżkę oznaczoną jako zielone kafelki. Czerwona linia to ścieżka, którą chcę osiągnąć.
game-design
game-mechanics
path-finding
Kooi Nam Ng
źródło
źródło
Odpowiedzi:
Jednak dla dobrego algorytmu znajdowania ścieżki użycie A * byłoby prawdopodobnie dobrym pomysłem w przypadku prostej gry, która nie wymaga zaawansowanego, wydajnego ani efektywnego wyszukiwania ścieżki, po prostu każąc postaciom zbliżyć się do celu poprzez ustalenie kierunku cel powinien być wystarczający.
Możesz zrobić to wygenerować „wykres widoczności” (jakie inne punkty są widoczne z każdego punktu) z wierzchołków, a następnie wykonać A * na wykresie. Działa to, ponieważ najkrótsza ścieżka zawsze będzie znajdować się na wykresie widoczności.
Pomniejsz rozmiar płytki.
Zasoby
Dalsza lektura
EDYCJA: Podoba mi się komentarz @ MarkusvonBroady.
Zasoby
Od @ MarkusvonBroady
Przeprowadziłem wyszukiwanie, znajdź następujące (mogą ci pomóc)
źródło
Zaczynając od jednego końca surowej ścieżki, powiedzmy
path[0]
, możesz usunąć,path[1]
jeśli segment utworzony przez połączenie punktówpath[0]
ipath[2]
NIE przecina żadnej ściany. Idąc dalej, aż ostatni segment zapewni prostszą ścieżkę.To nie tylko wygładzi ścieżkę, ale także usunie niektóre bezużyteczne punkty, takie jak przykład ognia, 3 kolejne segmenty linii prostej.
źródło