Wzory dla wyścigowego zachowania AI

9

Powiedzmy, że masz wyścigową sztuczną inteligencję opartą na splajnie. Załóżmy, że poradzi sobie już z podstawami hamowania i kierowania po torze.

Jak ułożyłbyś strukturę i wdrożyłeś unikanie kolizji, wyprzedzanie, kreślenie, blokowanie i inne zachowania, aby Twoje samochody pozostały konkurencyjne, ale organizowały ciekawe wyścigi?

Odnośniki do dokumentów / wdrożeń byłyby niesamowite.

tenpn
źródło
jakiego rodzaju silnika używasz,
Harshal Benake

Odpowiedzi:

7

Czy widziałeś Zachowania sterujące dla postaci autonomicznych ? Rozważałbym algorytm „ CrowdPathFollowing” , aby pozostać na torze i unikać kolizji. Być może będziesz w stanie wmieszać się w zachowanie „Flow Field Follow do rysowania, podania i blokowania - spraw, aby pole przepływu podążało za przeszłością i przewidywaną ścieżką gracza, ale rozdzieliło się wokół jego bieżącej lokalizacji.

      /-------------\
 ----<  [playerCar]  >-----
      \-------------/

To powinno sprawić, że AI będzie podążać bezpośrednio za nim i poruszać się bezpośrednio przed blokiem, a jednocześnie zachęcać do czystych podań.

AShelly
źródło
1
Jestem świadomy boidów, ale to dobra referencja. Trochę boję się wielu zachowań (trzymanie się linii wyścigowej, unikanie samochodów, bloków, przeciągów itp.) Wchodzących w interakcje w sposób zbyt skomplikowany, aby je dostroić, i kończy się sporadycznym zderzeniem krawędzi. Jest to dobre dla pieszych, ale katastrofalne dla samochodów wyścigowych, które muszą się poruszać.
tenpn
Pracowałem z OpenSteer API, który implementuje wiele z tych rzeczy. Odkryłem, że dość łatwo go nastroić. W twoim przypadku sprawiłbym, że waga „SteerToAvoidCollision” jest bardzo wysoka. Nie wiem, z którymi pojazdami ścigasz się, ale sądzę, że jeśli uda ci się to zrobić w zdecydowanej większości przypadków, to pozostałe okazjonalne uderzenie lub uderzenie z powodu krawędzi jest prawdopodobnie całkiem realistyczne ...
AShelly
Czy to były pojazdy sterujące czy coś innego? Boję się sytuacji powodujących problemy, takich jak dwa pojazdy z przodu po lewej i jeden z przodu po prawej. Średni wektor spowodowałby ruch w prawo, nawet jeśli mogłoby to doprowadzić do kontaktu z pojazdem po prawej stronie.
tenpn,
Pracowałem głównie z pieszymi, więc nie mogę przysiąc, że to zadziała. Należy pamiętać, że nie musi to być mieszanka zachowań - może to być dziedziczenie. Dzięki temu unikanie kolizji ma wyższy priorytet niż cokolwiek innego. W przypadku, gdy opisujesz, samochód jechałby tylko w prawo, dopóki przewidywana ścieżka nie przecinałaby się po prawej stronie samochodu, w którym to momencie unikanie kolizji staje się nadrzędną siłą. Możesz także dodać specjalne warunki: na przykład, jeśli nie ma bezpiecznej ścieżki w ramkach N, dodaj mocne hamowanie.
AShelly
2

Sesja była częściowo poświęcona temu podczas tegorocznej konferencji AI Game Dev w Paryżu. Możesz znaleźć slajdy i podsumowanie tutaj:

http://aigamedev.com/open/coverage/paris10-report/#session9

plastry wapna
źródło
1
Link do ppt to 404.> _ <
tenpn
ta - jego podejście jest interesujące, ale kod, nad którym obecnie pracuję, jest w rzeczywistości bardziej zaawansowany!
tenpn
1

Anti-Pattern: Przeciwnicy dostosowujący swoją prędkość

Niestety nie jestem w stanie podać wzorów, ale chciałbym nazwać wzór anty. Nie próbuj dostosowywać prędkości sterowników AI do odtwarzacza ludzkiego. Ideą tego jest stworzenie uczciwych warunków wyścigowych zarówno dla amatorów, jak i zawodowców oraz porzucenie potrzeby wielu poziomów trudności (i ich realizacji).

Jednak to, co na papierze brzmi dobrze, okazuje się okropne w praktyce, a seria MotoGP niestety nie udało się wdrożyć tego zachowania. Skończyło się to na tym, że przeciwnicy jechali z prędkością 5mp / h, kiedy stałeś nieruchomo przez kilka sekund i niemożność stwierdzenia, czy poprawiłeś się w grze (bardzo złe opinie zwrotne)

Dave O.
źródło
Dzięki. Mówię konkretnie o interesujących zachowaniach rasowych, a nie o równowadze lub poziomach trudności, ale będę o tym pamiętać.
tenpn
5
Prawie wszystkie gry wyścigowe zawierają gumkę, która utrzymuje gracza w akcji lub utrzymuje AI blisko dobrego gracza. Sztuczka polega na tym, aby być subtelnym i wiedzieć, kiedy ją wyłączyć. Gdy gracz zauważy, że czuje się oszukany.
wkerslake
Sytuacja w MotoGP wydaje się raczej problemem za daleko, niż problemem z gumką w ogóle. Nie jest nierozsądne, aby kierowcy z przodu prowadzili pojazd z większą ostrożnością, a samochody z tyłu próbowały desperacko starać się wypełnić lukę, i myślę, że warto modelować to w ten sposób i prezentować to w przejrzysty sposób graczowi.
Jibb Smart
To ciekawy post na ten temat: gamasutra.com/view/feature/3920/... Zasadniczo umieszczają cię w 3 grupach kierowców AI i pozwalają awansować z grupy do grupy podczas wyścigu.
Felsir