Autor Wątek: AI do samolotówki  (Przeczytany 2270 razy)

Offline BadRay

  • Użytkownik
    • Portfolio

# Maj 15, 2010, 18:39:28
Witam.

Jestem na etapie kończenia prototypu gry i dochodzi właśnie moment w którym powinienem implementować AI. Ciekawi mnie czy ktoś już kiedyś próbował pisać/pisał AI samolotu i znalazł materiały z którymi może się podzielić. Bardzo ciężko mi znaleźć coś konkretnego w sieci. Interesuje mnie strona czysto teoretyczna.

Zwykle znajduję wszystko poprzez wyszukiwarkę lecz tutaj ciężko mi coś znaleźć.

Pozdrawiam.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline rAum

  • Użytkownik
    • blog

# Maj 15, 2010, 19:13:51
Nie implementowałem czegoś takiego, wydaje mi się jednak że jeśli chodzi o wyścigi samolotów to postępuje się analogicznie jak w przypadku wyścigów - waypointy na trasie i odpowiedni algorytm bazujący na tych informacjach.
W przypadku strzelanek - może jakaś siatka nawigacyjna i algorytm wykonujący jakieś specjalne manewry np: w przypadku ostrzału.

W każdym razie na twoim miejscu napisałbym do Vipy, on na bank coś takiego już implementował w Air Aces Pacific.

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Maj 15, 2010, 19:27:27
A do czego Ci to AI?
Autopilot, wojenki czy jak?

Offline BadRay

  • Użytkownik
    • Portfolio

# Maj 15, 2010, 19:30:12
Wyścigi nie byłyby takim problemem. Otóż to ma być bardzo dynamiczna strzelanka i chodzi mi właśnie o odpowiednio podejmowane decyzje przez AI(manewry). Główne: uniki i wymanewrowanie przeciwnika, tak aby znaleźć się na jego tyle. W odróżnieniu od gry Vipy, jest to "modern-warfare", więc wszystko dzieje się tu bardzo szybko i także są rakiety samonaprowadzające, ale zdaje mi się że to byłaby kosmetyka w skrypcie.

Właśnie szukam cały czas jakiegoś reference'a do tego, ktoś już kiedyś nad tym myślał i na bank jest gdzieś jakaś rozpiska z odpowiednimi zachowaniami, tylko trzeba ją znaleźć :).

W każdym razie na twoim miejscu napisałbym do Vipy, on na bank coś takiego już implementował w Air Aces Pacific.

Mam nadzieję że się odezwie, lepiej zostawić to na forum niż w prywatnej rozmowie. Społeczność mogła by skorzystać na tym.

A do czego Ci to AI?
Autopilot, wojenki czy jak?

Zręcznościowy symulator lotu coś jak : Air Aces Pacific vipy, Blazing Angels 2, akurat najbardziej pasuje - Ace Combat 6.

EDIT:
AI musi być dosć sprytne :) inaczej gra straci dynamikę i nie wyjdę za fazę prototypu(właśnie po to go piszę).
« Ostatnia zmiana: Maj 15, 2010, 19:32:41 wysłana przez BadRay »

Offline rm-f

  • Użytkownik
    • Tu trolluje

# Maj 15, 2010, 20:14:12
Poszukaj na stronach związanych z lotnictwem, piloci takich maszynek mają dokładne instrukcje co i jak (reakcje, manewry) ;)

Offline BadRay

  • Użytkownik
    • Portfolio

# Maj 15, 2010, 21:07:48
W sumie już rozgladalem się po takich stronach. Dzis wieczorem(czyt w nocy:)) będę pracował nad tym. Szkoda że nie wypowiedział się jeszcze nikt kto ma to już za sobą. Zawsze można się dowiedzieć jakie problemy będą mnie czekać oraz można rozpatrzec jakieś gotowe rozwiązania.

Już grzeje kartki i ołówek :P.

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Maj 16, 2010, 16:55:30
W sumie tu nie ma co komplikować. W swoim podejściu dopuszczam AI wysyłanie komend dokładnie na tej zasadzie, na jakiej robi to gracz (czyli komendy jak z klawiatury/myszy) - to daje równe szanse AI i graczowi.

W kwestii manewrów, celowania itd. AI stara się dotrzeć w punkt dokładnie za graczem w odległości równej średniej ich prędkości (w unit/s) - żeby mu siedzieć na ogonie. Ponadto, na podstawie prędkości gracza, odległości i kierunku lotu stara się określić punkt, w którym gracz się znajdzie w momencie, gdy dotrą tam pociski - i tam strzela. Tutaj dobrze spisują się algorytmy dla gier FPP związanych z walką w otwartym terenie (np. seria Battlefield) rozszerzone o 3-ci wymiar. Polecam eksperymenty w tą stronę.

Offline BadRay

  • Użytkownik
    • Portfolio

# Maj 18, 2010, 11:19:18
Właściwie to tak jak opisales mam to rozpisane, plus dodatkowe sekwencję manewrów. Nie mam tylko narazie czasu, żeby się za to zabrać. Jak coś sklece, postaram się opublikować jakiś filmik z moich walk.

Offline nameczanin

  • Użytkownik
    • devlog

# Maj 18, 2010, 17:41:44
Nie czytam wypowiedzi Poprzednich, ale interesowałeś się kiedyś sterowaniem rozmytym? Właśnie piszę symulację opartą o schemat Mamdaniego. Proponowałbym tutaj osobno napisać symulacje działania samego samolotu oraz osobno sterowanie nim. Na podstawie utworzonych rozmytych reguł można wymodelować dosyć ciekawe i płynne zachowania ;)

Offline BadRay

  • Użytkownik
    • Portfolio

# Maj 18, 2010, 21:02:58
Heh, właśnie tak robię, jak dobrze zrozumiałem ciebie. Ai Wysyła komendy samolotowi, a od ciała dostaje informację :). W gruncie rzeczy tylko taka możliwość rozpatrywalem zważywszy na mechanike gry.

Vipa

  • Gość
# Maj 18, 2010, 21:31:56
Nie potrzebujesz niczego skomplikowanego, chyba że piszesz kompletny symulator. W przypadku arcade, siła wroga tkwi w ilości.
Zastanawiając się chwilę dojdziesz do wniosku, że w każdym momencie wraży samolot musi mieć wytyczony cel. Celem możemy być my jako samolot-gracz. Możemy - nie musimy. Celem może być pozycja, z którego łatwiej będzie wrogowi nas zaatakować (obliczenie tego nie musi być zbyt skomplikowane - wystarczy np. jako cel dać punkt od pozycji gracza + X w kierunku jego lotu oraz +/-90 stopni * X w uzależnieniu od pozycji tegoż wroga. Może być to też np. pozycja za samolotem gracza.
Dodając do tego mało skomplikowane bajery w stylu:
- jak samolot wroga jest za graczem to obraca się w jego kierunku ładuje
- zmniejszenie prędkości lotu gdy samolot gracza się zbliża
- nagłe obniżenie/podwyższenie pułapu lotu przy dolatujących strzałach samolotu gracza
itd.
Masz bardzo duże szanse, że gracz szybciej wyzionie ducha niż zestrzeli ze 3 wrogie samoloty tym bardziej, gdy uzależnisz zmianę taktyki nie po osiągnięciu konkretnej pozycji lecz dynamicznie patrząc na zachowanie osoby grającej. Gracz zawsze reaguje z opóźnieniem.

Dodatkowo, można na tej metodzie określić jako cel cokolwiek i dodać ze 4 samoloty do własnej formacji, których celem będzie np. najbliższy samolot wroga.

Określenie zachowań zespołowych jest trochę bardziej skomplikowane. Ale i na to znajdzie się parę sprytnych systemów :).