Przeciwnik AI w level design


#1

Cześć
Zaczynam przygodę z level designem i jestem na etapie tworzenia swojego pierwszego levelu FPS. Przebrnąłem już przez wiele tutoriali jak projektować przestrzeń takich leveli i teraz przyszła pora na jego przetestowanie z przeciwnikami AI.
Jaki jest na to dobry sposób dla początkujących? Często znajduje filmy, gdzie twórcy programują AI od podstaw, co wydaje mi się dość zaawansowane jak na początek, znalazłem też do kupienia “FPS Game Starter Kit” na UE marketplace, który wydaje się interesujący.
Jakie jest najlepsze rozwiązanie gdy chcę poprostu poustawiać paru przeciwników w levelu i zobaczyć czy level jest grywalny?
Pozdrawaim


#2

To, czy level będzie grywalny czy nie w dużej mierze może zależeć właśnie od przeciwników AI. Zupełnie inaczej będzie się ogrywało dany level gdy przeciwnik będzie ślepo szarżował na gracza, a inaczej, gdy np wykorzysta teren, będzie strzelał z ukrycia itp.
Jeśli nie masz doświadczenia z AI to może zacznij od projektowania aren 1v1 a do ogrania zaproś kolegę.


#3

Chciałem zrobić prosty level na zasadzie

explore --> valve --> small combat --> explore --> valve --> big combat --> find treasure

gdzie AI w miejscu walki patroluje dany obszar i strzela zbliżając się do gracza gdy go zobaczy


#4

Proste AI na zasadzie pierwszego Dooma jest stosunkowo łatwe. Naucz się jak wyznaczać ścieżki do podążania AI i zrób prosty state machine (też warto się tego nauczyć mimo że tutaj nie jest konieczny), w którym w momencie gdy gracz znajduje się w obszarze widzenia przeciwnika to przełączy tryb z patrolowania po wyznaczonej ścieżce na strzelanie i podążanie w linii prostej do gracza. Będzie to prymitywne i prawdopodobnie rozgrywka znudzi się w 15 minut ale jak na pierwszy projekt to wystarczy. Zaawansowane AI wykorzystujące ułożenie terenu i zachowanie gracza jest trudne i szkoda marnować na nie czas jeśli to jest Twoja pierwsza gra bo i tak nie wyjdzie z niej drugi Far Cry :wink:


#5
  1. tz. “navmesh” jest to siatka połączonych ze sobą… czasem punktów czasem płaszczyzn po których NPC może się z łatwością przemieszać.

stwórz siatkę, od jej szczegółowości będzie zależeć jakość AI
Siatka powinna mieć priorytety dzięki czemu NPC będą mogli bez problemu podejmować decyzje w zależności od sytuacji w której się znajdują.

np. Jeśli NPC jest pod ostrzałem, szuka na pobliskim Navmesh-u miejsca w którym może się ukryć, Navmesh powinien również posiadać oznaczenia priorytetowego ruchu czyli ścieżki którymi NPC będą woleli chodzić NAWET jeśli jest to dłuższa ścieżka

W wolnym czasie NPC mogą przemieszczać się dowolnie po siatce i odnajdywać obiekty z którymi mogą wejść w interakcje

  1. Group Pointy oraz Leaderzy

Dodaj każdemu NPC losowo generowany priorytet ( np. liczba od 0 do 100 ) w chwili np. zetknięcia się z graczem ( albo wrogiem ) NPC wybierają lidera na podstawie właśnie priorytetu ( najwyższy wygrywa ) Jeśli lider umrze można wybrać nowego.

Lider podejmuje decyzje, czyli na podstawie tego co się dzieje w walce nakazuje grupie np. podzielić się na oddziały, jeden zaatakuje wroga od tyłu drugi oddział odwraca uwagę.

Jednocześnie lider tworzy dookoła siebie ogromny “Group Punkt” który jeśli zostanie przekroczony przez przyjaznego NPC względem lidera to NPC niezależnie od swojego priorytetu dołącza do obecnego lidera.

W ten sposób można symulować pewną współpracę między NPC.

Oczywiście sam Behavior np. otoczenia i zaatakowania gracza od tylca musisz juz sam zaprojektować…

Można by jeszcze popisać ale… ciekawe czy przynajmniej navmesh zrobisz poprawnie :slight_smile:


#6

W UE4 navmesh generowany jest automatycznie na podstawie “Navmesh Bounds Volume”, który wystarczy umieścić w levelu.

@Ewaryst
Jak chcesz robić tylko level design, to bierz jakiegoś gotowca AI i sobie porzeźb i się pobaw. Jeżeli chcesz się nauczyć UE4 całego to zrób sobie jakieś proste AI typu strzelam i biegnę i dodawaj kolejne elementy jak poczujesz się pewniej. Od czegoś trzeba zacząć :smiley:


#7

wow, dzięki za tą rozbudowaną odpowiedź :slight_smile: