Jestem ciekawy, jak mogłem kontrolować samochody w grze wyścigowej.
Czy mój agent AI powinien kontrolować swój samochód za pomocą poleceń typu „przepustnica na 0,35, kierowanie na 0,5 w prawo, hamowanie na 0,0”? A może powinienem raczej wstępnie obliczyć zakręt, do którego przyczepia się samochód, a efekty wizualne, takie jak skręcanie przednich kół, mają tylko na celu zapewnienie spójnego wyglądu? Czy jest jakiś inny sposób?
game-design
ai
dargemir
źródło
źródło
Odpowiedzi:
Można powiedzieć, że na pewnym poziomie gra idzie wstępnie obliczoną ścieżką. Ponieważ tory gry wyścigowej są (zwykle) wstępnie obliczoną ścieżką.
Nawet jeśli mówimy o generowaniu losowych tras, gra musiała obliczyć bieżącą część ścieżek na moment, w którym samochód się tam dostanie.
To było łatwe. Coś jeszcze na ten temat?
Zarówno podążanie z góry obliczoną ścieżką, jak i systematyczne kontrolowanie samochodu mają zastosowanie w branży gier. Odpowiedź brzmi: użyć obu.
Po pierwsze, chcę wspomnieć, że „obliczanie krzywej” może oznaczać dwie rzeczy:
Tworzenie funkcji, które wyprowadzą pozycję na krzywej, mając jako parametr, jak daleko od niej chcesz zapytać.
Tworzenie ścieżki, rozumianej jako lista punktów (lub instrukcji i innych informacji kontrolnych) do naśladowania.
Te pierwsze mogą być przydatne do prognozowania lub niektórych symulacji fizycznych. Jednak gdy mówimy o kontrolowaniu obiektu, to drugie podejście jest zalecane.
Uwaga: w przypadku starszych gier (lata 80.) inne samochody, w których bardziej lubią poruszające się przeszkody. Byli tam, abyś ich unikał i przewyższył ich. Nie mówimy o nich.
Po wstępnie obliczonej ścieżce: Jest to przydatne w przypadku filmów lub scen powtarzalnych. Na przykład w GTA San Andreas misje pościgowe cel pościgowy i wszystkie samochody podążają z góry określoną ścieżką (zapewnia to, że cel pościgowy może ominąć ruch ※). Jednak gdy tylko je zakłócisz, wracają do kontroli AI, w tym przypadku AI będzie musiała znaleźć drogę, aby dostać się tam, gdzie powinna podążać swoją zwykłą ścieżką.
※: W rzeczywistości był wcześniej nagrany. Nagrywanie i odtwarzanie było jedną z nowych funkcji silnika gry GTA SA.
Kontrolowane przez AI:
AI w najprostszej formie jest maszyną stanu. Sprawdza, w jakim jest stanie, i w zależności od tego wykonuje pewne działania. Będę odnosić się do tych kombinacji stanu i działania jako zachowań. Działania nie muszą odpowiadać gamepadowi gracza. Nie zachowuj się też.
W przypadku prostej gry prawdopodobnie potrzebujesz tylko dwóch znaczących zachowań: 1) jeśli jest na torach, podążaj za nią, omijając inne samochody i przeszkody oraz 2) jeśli nie ma na torach, wróć na tory.
Na tym etapie nie jest daleko od podążania ścieżką (ścieżkami). Ponieważ jednak tory nie są tak naprawdę linią, nie mówimy o podążaniu ścieżką, ale trzymaniu się jej blisko (unikając innych samochodów i przeszkód). Oznacza to, że AI musi rozwiązać „sterowanie, hamowanie i przyspieszanie”.
W nowoczesnej grze samochód będzie również podlegał symulacji fizyki (w celu rozwiązania kolizji i zachowania realizmu). Z tego powodu każda iteracja pętli gry samochód będzie aktualizowany na podstawie jego prędkości i przyspieszenia, a także zastosowane zostanie „sterowanie, hamowanie i przyspieszanie” (zmiany prędkości), aby podążać za bieżącym zachowaniem.
Chcę również wspomnieć, że nowoczesne gry mogą mieć bardziej złożone zachowania, na przykład AI może uderzyć w inny samochód lub zablokować im drogę. W rzeczywistości sztuczna inteligencja może nawet wybrać, które zastosować, w oparciu o jakąś formę uczenia maszynowego, ale dygresuję.
Wreszcie, należy wziąć pod uwagę, że użyteczne może być także uproszczenie sterowania samochodami AI poza widokiem gracza. Zarówno dla wydajności, jak i dla Rubber Banding (który w tym przypadku utrzymuje samochody AI blisko gracza, aby wyścig był interesujący, można go uznać za oszustwo AI, gdy tak naprawdę nie można zostawić żadnego przeciwnika).
W przypadku animacji zwykle nie jest dobrym pomysłem samodzielna symulacja fizyki kół. Jeśli to zrobisz, może to zwiększyć realizm gry, ale będzie kosztować wydajność. Zwykle gra animuje koła w oparciu o zachowanie, zamiast wyrażać zachowanie w kategoriach ruchu kół i symulować konsekwencje.
Oczywiście może być konieczne dodatkowe rozważenie tego, czy koła są w kontakcie z podłożem. A może animujące zawieszenie.
źródło
Zdecydowanie zalecam oddzielenie modelu fizyki / stanu samochodu od kontrolera samochodu i uczynienie z agenta AI i kontrolera odtwarzacza dwóch rodzajów kontrolerów wymiennych z poleceniami wysokiego poziomu, takimi jak te, które zasugerowałeś w swoim pytaniu.
Ma to wiele fajnych efektów:
Nawiasem mówiąc, jest to szczególny przypadek separacji MVC .
źródło