2010-10-04 13 views
5

Pozdrawiam wszystkich,Algorytm AI gry w locie?

Jestem w fazie projektowania jednego z moich projektów hobby. Zamierzam opracować trójwymiarową grę walki powietrznej. (inspirowane HAWX). Ale zastanawiam się, w jaki sposób sztuczna inteligencja działa na wroga? Chyba nie poruszają się po ścieżce (odnajdywanie ścieżki na wykresie), tak jak w grach FPS. Jakiego rodzaju algorytmów mogę użyć do ruchu wroga? Czy są jakieś biblioteki AI, których mogę użyć do tego?

Uwaga: Używam silnika irlicht, C++ jako środowiska programistycznego.

Odpowiedz

4

Prosta odpowiedź na znalezieniu punktu przechwytywania ...

W dowolnym momencie, zrobić proste linie założenie. Ty i twój cel podróżujecie liniami prostymi z ustalonymi prędkościami. Dlatego możesz odjąć swoją pozycję i ruch od swoich celów i pracować z celami względem pozycji i prędkości.

Ciekawym momentem w czasie jest, gdy twój cel jest tak blisko (na tej linii), jaki kiedykolwiek będzie - najbliższy punkt na tej linii. IIRC, które mogą być obliczane z produktów wektor dot ...

 P . V 
t = - ----- 
     V . V 

Zakładając, że mam rację, w tym momencie ścieżka cele jest pod kątem prostym do linii od was do celu (to nie to samo kąt pomiędzy jego i twoimi ruchami). Możesz uzyskać równoważną odpowiedź za pomocą trygonometrii (produkt z kropką jest powiązany z cosinusoidą), a ja go nawet opracowałem (nie wiedząc nic lepszego), stosując metodę równoczesnych równań, dla gry 2D, którą rozpocząłem, ale której nigdy nie ukończyłem wiele lat temu (pomyśl o walce z grawitacją między statkami o/w stylu "pchnij i opuść").

Z tego miejsca można ustalić, gdzie znajduje się najbliższy punkt i jak daleko się ono znajduje.

Oblicz ten czas dla małych zmian aktualnej prędkości i kierunku i możesz iteracyjnie zoptymalizować do przechwycenia w bliskiej przyszłości. Oczywiście zminimalizowanie t powoduje możliwość, że t może się cofnąć w przeszłość - ucieczka! Może minimalizacja t do kwadratu byłaby lepsza, ale wtedy masz inne komplikacje - jeśli wróg jest tuż za tobą, czy naprawdę chcesz zwolnić?

W każdym razie, to prawdopodobnie wystarczy na prosty pocisk kierowany, ale oczywiście bardzo mało w walkach powietrznych. Moje wrażenie, że jest to raczej rodzaj analogowej szachy w czasie rzeczywistym, w której przez większość czasu nie widać większości planszy. Oczywiście nie można tego zminimalizować, więc potrzebny jest wyższy poziom modelu, niż ruchy joysticka i inne ustawienia sterowania. Trzeba będzie sporo badań nad taktyką opartą na doświadczeniu człowieka, zanim zaczniesz projektować dla niej silnik sztucznej inteligencji.

Aby wykorzystać osłonę w terenie, prawdopodobnie można zrobić coś znacznie prostszego. Wyszukiwarka ścieżek w oparciu o wykresy może być przydatna w wykreślaniu trasy przez doliny. Wykonuj większość ścieżek w 2D i dostosuj odpowiednio "gładkie" wariacje mapy, aby nie lecieć prosto w klif.

Prawdopodobnie potrzebujesz systemu różnych typów celów i taktyk, ze sposobem ważenia i wyboru między nimi. Daleko od celu, tym bardziej prawdopodobne jest, że spróbujesz pozostać w ukryciu, niż gdy podejdziesz bliżej. Kiedy masz pocisk na własnym ogonie, będzie to miało pierwszeństwo przed wszelkimi działaniami, które możesz podjąć, i tak dalej.

BTW - nic z tego nie wynika z rzeczywistego doświadczenia w tworzeniu gier (i na pewno nigdy nie byłem pilotem żadnego opisu), więc traktuj to jako niejasne sugestie, które mogą nie zostać wyjaśnione.I uwaga - jednym z powodów, dla których moja gra 2D nigdy się nie zakończyła, było to, że próbowanie wypracowania kodu AI było na początku tak interesujące, a potem tak frustrujące - jest to denerwujące, gdy jedynym sposobem na pokonanie ciebie jest najlepsza próba ataku AI mając wielokrotnie więcej statków i nieskończoną ilość amunicji.

+0

Witam, dziękuję za porady. W zasadzie moje pytanie nie jest konkretne. Myślę, że muszę zachować automat stanów dla stanów wroga. (Np .: budowanie ataków, atakowanie, ściganie, obrona przed graczami misset ...). I zależy od stanu, w którym algorytm powinien zostać zmieniony. Ciekawe, w jaki sposób zaimplementowano sztuczną inteligencję w grach takich jak H.A.W.X! –

+0

Nie sądzę, że można zignorować absolutną prędkość. Medium (powietrze) jest w spoczynku i ma duży wpływ na to, jak możesz manewrować. – ziggystar

+0

@ziggystar - najbliższe obliczenie punktu zakłada stałą prędkość. Aby wybrać drobne warianty optymalizacji, należy wziąć pod uwagę przybliżone limity symulowanych statków powietrznych, ale służy to ustaleniu * celu *, nie decydując, co faktycznie osiągnie samolot. Decydowanie o rzeczywistej wydajności samolotu jest zadaniem silnika fizyki, a nie silnika AI. Bardziej wyrafinowana sztuczna inteligencja może potrzebować złożonego modelu fizyki, ale nie chodzi o fizykę - chodzi o sztuczną inteligencję i bardzo prostą sztuczną inteligencję. – Steve314