Szukasz dobrej techniki ruchu postaci w grze hack & slash

51

Robię grę typu hack & slash i chcę, aby moje postacie poruszały się jak na przykład w Torchlight, Diablo itp. Obecnie generuję zestaw węzłów dla wszystkich możliwych do przejścia obszarów podłogi. Kiedy gdzieś klikam, gracz przechodzi tam interpolowaną ścieżką węzłów. To nie wygląda bardzo naturalnie. Gracz porusza się jak robot. Wrogowie używają również tego systemu węzłów do poruszania się i dzielą ten sam problem, ale mam z nimi jeszcze jeden problem. Kiedy wrogowie wykryją gracza, podążają do niego najkrótszą drogą. Czasami używają tej samej ścieżki i ustawiają się w linii do gracza zamiast go otaczać. Nie wiem, jak sprawić, by wrogowie wybierali różne ścieżki i otaczali gracza. Czy wiesz jak mogę rozwiązać te problemy? Może powinienem zastosować inne podejście do poruszania się postaci?


Moja obecna technika:

wprowadź opis zdjęcia tutaj


Zrzut ekranu pochodni:wprowadź opis zdjęcia tutaj

---AKTUALIZACJA---

Chcę wiedzieć, jak radzić sobie z tymi sytuacjami:

Sytuacja 1, po drodze mam dynamiczne / statyczne przeszkody

wprowadź opis zdjęcia tutaj

Sytuacja 2, wrogowie mają tę samą ścieżkę do gracza (ustaw się w kolejce, aby z nami walczyć) wprowadź opis zdjęcia tutaj

piotrek
źródło
10
+1 za diagramy i zrzuty ekranu (i dobre pytanie). Zawsze przydatna.
Kaczka komunistyczna
To niesamowite pytanie (+1), na które mam nadzieję, że będzie wiele dyskusji i sugestii na temat różnych sposobów radzenia sobie z tym wyzwaniem (losowe wpływy na zmianę tras, AI itp.).
Randolf Richardson
1
Uważam, że dobrą praktyką jest stosowanie systemu punktacji podczas tworzenia sztucznej inteligencji. W zależności od wyniku każdego przeciwnika (np. Czas dotarcia do gracza) możesz przypisać mu określone zachowanie. Na przykład, jeśli 8 mobów to maksimum, które może zaatakować gracza, ci, którzy mają wynik wyższy niż pierwsze osiem, mogą świadomie spróbować znaleźć dłuższą ścieżkę do gracza, dzięki czemu będą wyglądać bardziej inteligentnie.
Jonathan Connell
Wciąż szukam odpowiedzi, jak poradzić sobie z przeszkodami (dynamicznymi / statycznymi) na siatce nawigacji? , Nie mogę użyć Recast
piotrek

Odpowiedzi:

24

Zachowania sterujące w połączeniu ze strukturą danych nawigacyjnych .

Można to zrobić na wiele sposobów, ale to podstawowa koncepcja. Użycie siatki nawigacyjnej może być łatwiejsze, dzięki czemu można zastosować wyszukiwanie ścieżek w każdej wypukłej sekcji.

Jeśli jesteś zwolennikiem prowadzenia wykresu, możesz użyć zachowania Seek do każdego węzła na ścieżce, zamiast sztywno podążać ścieżką od węzła do węzła.

Inną metodą, którą możesz zastosować, jest Wygładzanie ścieżki, ale pamiętaj, że jest to dość kosztowne obliczeniowo.

Mam nadzieję, że to pomaga.

EDYTOWAĆ:

Aby pomóc w rozwiązywaniu problemów związanych z unikaniem przeszkód, użyj pewnego rodzaju omijania przeszkód .

Ray Dey
źródło
Dzięki za odpowiedź, czy wiesz, jak mogę wygenerować siatkę nawigacji? A może jest inny sposób? Moja mapa jest tworzona z bezszwowych kawałków podłogi (quady / trójkąty).
piotrek
1
Zawsze możesz użyć Recast ( code.google.com/p/recastnavigation ) do wygenerowania siatki nawigacyjnej. Musisz tylko dać mu „trójkątną zupę” (garść wielokątów), a ona wygeneruje ją dla Ciebie.
Ray Dey
Czy tylko ja się z tym spotykam, ale link: ai-blog.net/archives/000152.html jest martwy. Właściwie nie mogę uzyskać dostępu do www.ai-blog.net
123iamking
3

Jeśli wolisz trzymać się nodegrapha zamiast przełączać się na siatkę nawigacyjną, jak sugerowali inni, możesz rozwiązać problem „ustawiania się do gracza zamiast otaczania go”, przypisując każdego wroga do ataku z określonego kierunku.

Jest wiele sposobów na osiągnięcie tego celu, ale zwykle używam systemu „żetonów”, aby przypisywać potworom unikalne kierunki, w których obiekt gracza posiada jeden żeton dla każdego kierunku (północ, północny wschód, wschód itp.). Kiedy wróg chce dotrzeć do gracza, musi najpierw zdobyć od niego żeton. Kierunek określony przez żeton informuje potwora, do której strony gracza może znaleźć ścieżkę. Ponieważ gracz ma tylko jeden żeton dla każdego kierunku, a potwory potrzebują żetonu, zanim będzie mógł zaatakować, wiele potworów nie wszystkie będą próbowały dotrzeć do tej samej strony gracza, co powinno nieco rozbić ich ścieżki.

Dodatkowo możesz również zastosować niewielką karę dla węzłów podczas procesu wyszukiwania ścieżek, aby zachęcić potwory do zbliżania się z kierunku zgodnego z posiadanym przez nich żetonem. (To znaczy, jeśli potwór ma token, który pozwala mu atakować ze wschodu, to w celu ustalenia „najkrótszej ścieżki” dla tego potwora, potraktuj wszystkie węzły ścieżki, które znajdują się na północ / zachód / południe od gracza, tak jakby to kilka węzłów zamiast jednego). To sprawi, że potwory szybciej się rozdzielą i spróbują flankować gracza, zamiast maszerować do gracza w jednym pliku i rozprzestrzeniać się dopiero na ostatnim etapie.

Trevor Powell
źródło
2

Zasadniczo dla wrogów, co chcesz zrobić, to znaleźć ścieżkę na poziomie makro (pomyśl o generowaniu obszarów wypukłych i ścieżek do obszaru, w którym znajduje się gracz), i wykonaj kilka zachowań w stylu boid na poziomie mikro (gdy jesteś już blisko do gracza).

Oto przykład zachowania boid: http://www.red3d.com/cwr/boids/

W przypadku odtwarzacza myślę, że pochodnia działa w poszukiwaniu ścieżki w siatce nawigacyjnej w miejscu kliknięcia / przeciągnięcia i działa całkiem dobrze. Może wydawać się nieco bardziej rozłączony niż bezpośrednia kontrola, ale prowadzi to do lepszych wyników dla gracza.

Tetrad
źródło
Ale co na przykład ze schodami? Wróg też może mnie tam zaatakować, czy to kolejna siatka nawigacji?
piotrek
Powinien być częścią siatki nawigacyjnej, będąc własnym wypukłym kształtem.
Tetrad
1
Ewentualnie możesz nadal używać ścieżki punkt-punkt i powrócić do zachowań opartych na fizyce kierowania, gdy zbliżysz się.
Tetrad
Jak radzić sobie z dynamicznymi przeszkodami w siatkach nawigacyjnych?
piotrek
1
Oto post na blogu o tym, jak przekształcenie działa na jego obsługę: digestingduck.blogspot.com/2011/03/… .
Tetrad
1

istnieje algorytm o nazwie rrt, który jest wykorzystywany do rozwiązywania problemów w świecie rzeczywistym. powierzchnia, po której może chodzić twój bohater (lub wrogowie), stanowi element wejściowy wraz z powierzchnią, na którą obiekty mogą się poruszać, a za pomocą algorytmu optymalizacyjnego znajduje ścieżkę do miejsca docelowego. o ile wiem, ten algorytm jest szeroko stosowany w ligach robocup. jest szybki, znajduje najkrótszą ścieżkę i pozwala uniknąć kolizji i ostrych zakrętów. możesz użyć tego programu PowerPoint, aby dowiedzieć się, jak generuje ścieżkę.

Ali1S232
źródło
po dłuższym spojrzeniu wydaje się, że prezentacja, którą przedstawiłem, po prostu mówi, co robi rrt, a także sugeruje nową aplikację, która, jak twierdzi, działa lepiej w niektórych przypadkach, i zasugerował, że algorytm wyszukiwania ścieżek do gier RTS ma nadzieję, że ci pomoże.
Ali1S232
0

Aby trasy szukania ścieżek wyglądały bardziej „realistycznie”, sugeruję zapoznać się z artykułem o naturalnie wyglądającym A * w Gems Programming Game Vol.1

freud
źródło