Autor Wątek: AI w FPS'ie - Chowanie się za przeszkodami  (Przeczytany 1193 razy)

Offline Ogniok

  • Użytkownik

# Listopad 29, 2011, 17:58:13
Witam.

Napisałem coś na wzór FPS'a i chciałbym zaimplementować tam przeciwnika, który będzie chował się za możliwymi przeszkodami gdy gracz będzie w pobliżu i wychylać się co jakiś czas by oddać serię.

Lecz, jak to zrobić? Totalnie nie mam pomysłu. Mogę ustawić markery na mapie w miejscach które mogą być dogodną kryjówką. Oto przykład:



Czarne obiekty to statyczne kontenery, wraki samochodów i inne przeszkody nie do przestrzelenia.
Zielona kropka to gracz.
Niebieskie kropki to przeciwnicy sterowani przez komputer.
Czerwone kropki to markery oznaczające miejsca potencjalnych kryjówek.

Sytuacja z przeciwnikiem numer 1:
Dostał się do najbliższej kryjówki, lecz tam jest widoczny więc po co taka kryjówka...

Sytuacja z przeciwnikiem numer 2:
Jedyny z przeciwników ukrytych dobrze. Gracz nie może go zestrzelić ze swojej pozycji póki się nie wychyli(przeciwnik). Jak dobrze wybrać taką pozycję z wszystkich możliwych, i jak obliczyć stronę w którą musi się wychylić?

Sytuacja z przeciwnikiem numer 3:
Jest on schowany przed graczem, lecz nawet jeśli się wychyli to i tak nie będzie w stanie trafić gracza, więc po co taka kryjówka?

Jak więc wybrać idealną kryjówkę z możliwych?

Będę wdzięczny za jakieś opisy, artykuły na ten temat(po polsku lub angielsku) i wszystko inne co może mi pomóc!

Z góry dziękuje za pomoc. :)

Offline Mr. Spam

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

Offline yarpen

  • Użytkownik

# Listopad 29, 2011, 18:12:04
http://www.guerrilla-games.com/publications/ - przedostatnia prezentacja.

Offline Kuba D.

  • Użytkownik

# Listopad 29, 2011, 18:17:38
Najprosciej jest sprawdzic dla jakiejs okreslonej liczby najblizszych kryjowek, czy obecna badana jest widoczna przez gracza ( prosty raycasting od przeszkody do gracza - jesli jest jakas przeszkoda pomiedzy to znaczy ze kryjowka sie nada i mozna przerwac poszukiwania albo znalezc kilka dobrych i wybrac z nich najlepsza ( w zaleznosci od jej stanu, wielkosci, odleglosci itd).
Swoja droga masz troche zle rozmieszczone te kryjowki - powinny byc tak rozmieszczone ( szczegolnie przy rogach) zeby postac nie byla widoczna nawet czesciowo dla gracza ktory jest po przeciwleglej stronie ( musisz uwzglednic wielkosc postaci kierowanej przez AI).

Offline Kos

  • Użytkownik
    • kos.gd

# Listopad 29, 2011, 18:39:43
Żeby kryjówka była "dobra", musi się nie dać dostrzelić od gracza do wroga, ale musi się dać drostrzelić z (wróg-P*x) lub (wróg+P*x) do gracza, gdzie:
- P to wektor kierunkowy prostopadły do gracz-wróg,
- x to jakieś tam nieduże przesunięcie.

Offline yarpen

  • Użytkownik

# Listopad 29, 2011, 18:45:19
Testowanie jednego punktu nie daje zbyt dobrych rezultatow. Zazwyczaj buduje sie cos a'la frustum (uzaleznione od ksztaltu kryjowki).