Warsztat - Programowanie gier komputerowych :: Projektowanie kompletnego systemu AI w praktyce: Część II
Strona główna Forum Szukaj Lista użytkowników
Grupy
Zarejestruj Zaloguj
Artykuły
Kliknij na kategorię żeby dodać artykuł Szukaj
Programowanie gier » Artykuły » Sztuczna Inteligencja
[Wersja do drukowania]
Projektowanie kompletnego systemu AI w praktyce: Część
II
Opis Jak budować sztuczną inteligencję dia gier RTS'o
podobnych.
Autor Geoff Howland (tłumaczenie: ryBens) Data Sob 09
Paź, 2004 2:23 am Typ *
Słowa klucze
Kategoria Sztuczna Inteligencja
Odsłony 388
Projektowanie kompletnego systemu AI w praktyce: Część
II
Jak budować sztuczną inteligencję dia gier RTS'o
podobnych.
Sztuczna inteligencja (AI) jest oparta na podejmowaniu
inteligentnie wyglądających decyzji. Dla jednostek w
grach oznacza to podejmowanie racjonalnie wyglądających
posunięć (akcji), wobec systuacji w jakiej się znalazły.
W grach typu RTS na te akcje składają się: ruch,
patrolowanie, unikanie przeszkód, namierzanie i ściganie
wroga. Zobaczmy co będzie nam potrzebne, by
zaimplementować każdą z tych akcji.
Ruch
Poruszanie się w swojej najprostszej postaci polega na
przebyciu drogi z jednego punktu do następnego w
określonym czasie. Można to zrobić poprzez znalezienie
odległości między punktami i pomnożenie jej przez
prędkość jednostki i czas jaki upłynął od ostatniego
obliczenia pozycji.
Ponieważ pracujemy w oparciu o system kontrolowany przy
pomocy myszy, nie możemy oczekiwać od gracza by poruszał
oddziałami omijając przeszkody jak to ma miejsce w grach
typu FPS lub sterowanych jostickiem. Sposobem na
uchronienie użytkownika od ciągłego klikania dookoła
przeszkód jest stworzenie kolejki akcji do wykonania.
Dzięki temu, jeśli na trasie pojawia się przeszkoda,
dodajemy dodatkowe punkty przed miejscem przeznaczenia,
by jednostka mogła ominąć przeszkodę bez interwencji
gracza.
Patrolowanie
Patrolowanie składa się z serii ruchów między punktami
ułożonymi w określonym porządku. W momencie kiedy
jednostka osiągnie swój cel i nie ma dokąd pójść, możemy
porównać jej aktualną pozycję z listą punktów
patrolowych i ustawić jej nowy cel na punkt następny po
tym, do którego ma najbliżej.
W zaprojektowaniu patrolowania nie ma wiele pracy a
jednostki poruszające się po ekranie w przeciwieństwie
do stojących i czekających, ożywiają świat i dają
oddziałom większe szanse na odkrycie wroga i nie
wpadnięcie w zasadzkę.
Unikanie przeszkód
Algorytmy wykrywania kolizji wymagają zastanowienia się
jak będzie wyglądała twoja mapa i jak będą współgrały z
nią jednostki. W naszym przypadku, będziemy pracować w
środowisku z relatywnie małymi oraz prostymi
przeszkodami, jak niewielkie budynki i obiekty.
Przyjmiemy też, że przeszkody będą wypukłymi
czworokątami a jednostki nie mogą wejść do ich wnętrza.
W środowisku takim jak nasze jednostce, do unknięcia
przeszkody, wystarczy wykonać 1 lub 2 dodatkowe ruchy.
Na rysunku z lewej widać, wąską przeszkodę, czworokąt
pomiędzy jednostką a punktem docelowym. W tym przypadku
wstawiamy dodatkowy punkt ruchu, odsunięty pod kątem
prostym od przeszkody i od najbliżeszego punktowi
docelowemu wierzchołka czworokąta. Daje to nam zapas
wolnego miejsca potrzebny do ominięcia przeszkody.
Sposób unikania przeszkód jest bardzo uzależniony od
rodzaju przeszkód jakich zamierzamy używać. W naszych
prostych przykładach wykorzystujemy wypupkłe czworokąty,
które zazwyczaj będą miały kształt rombu lub kwadratu.
Dzięki tym ograniczeniom, możemy w prosty sposób znaleźć
krawędź przeszkody najbliższą punktowi, który jednostka
próbuje osiągnąć. Pozwala to na przesunięcie trasy ruchu
od przeszkody, poprzez utworzenie dodatkowej ścieżki co
jest skuteczne do momentu gdy przeszkody nie będą
ustawione blisko siebie.
Jeśli potrzebujesz bardziej zaawansowanego algorytmu
odnajdywania drogi, powinieneś poszukać A*, który jest
popularnym algorytmem do wyszukiwania najkrótszej
ścieżki przez obszary przypominające labirynty. Poza A*
istnieje kilka innych algorytmów sterowania ruchem
krokowo, które stopniowo przesuwają jednostki wzdłuż
przeszkód.
Namierzanie przeciwników
Namierzanie celów, będzie bardzo zależało od tego co
może zrobić gracz w twojej grze. Możesz chcieć by
jednostki gracza automatycznie atakowały zauważone
oddziały wroga, dzięki czemu gracz może się poświęcić
ogólnemu planowaniu. Możesz też chcieć by jednostki
gracza atakowały przeciwnika, tylko po wydaniu przez
niego polecenia. Z drugiej strony, będziesz chciał by
przeciwnicy poszukiwali oddziałów gracza i doprowadzali
do konfrontacji gdy je zauważą.
W sytacji gdy podzieliłeś kierunki na 8 części, możesz
przyjąć, że gdy do jednostki, w zasięgu jej wzroku,
zbliża się inna, by zostać zauważoną, musi się znaleźć
przed naszą jednostką lub na jednym z kierunków
przyległych do frontowego. Proste sprawdzenie czy
jednostka znalazła się w zasięgu wzroku i na jednym z 3
kierunków widoczności, może dać bardzo dobre rezultaty
przy minimalnej ilości testów.
Oczywiście będziemy też chcieli dodać test na
przeszkody, by sprawdzić czy pole widoczności nie jest
przesłonięte. W większości przypadków możesz użyć tego
samego testu co przy wykrywaniu kolizji. Natomiast
dodanie wysokości w teście widoczności, całkowicie
zmienia jego naturę ale to temat na kolejny artykuł.
Pościg
Kiedy już wrogie oddziały znajdą cel, nie będziesz
pewnie chciał by bezcelowo wędrowali dookoła gdy stracą
ofiarę z pola widzenia. Na tym etapie będziesz musiał
zadecydować w jaki sposób chcesz prowadzić poszukiwania.
Niekiedy ściganie przeciwnika może być lekko utrudnione
więc możesz po prostu oszukać i miejsce, do którego
zmierza uciekinier ustawić jako cel jednostce
ścigającej.
Jeśli jednak chcesz by pościg był bardziej realistyczny,
musisz przechowywać pozycje gdzie ofiara była ostatni
raz zauważona i poszukiwania rozpocząć od tego miejsca.
Dla naszego przykładu weźmiemy proste losowe
poszukiwanie. Pierwszy miejscem docelowym ścigającej
jednostki będzie, ostatnia znana pozycja oddziału wroga.
Za następny cel możesz wziąść punkt oddalony o losową
odległość w kierunku, w którym uciekała ofiara.
Zakładając, że cel ucieka naszej jednostce, istnieje
duża szansa znalezienia go podczas podążania wyznaczoną
trasą. W przypadku gdy oddział nie znajdzie swojej
ofiary, możemy wprowadzić plan awaryjny polegający na
patrolowaniu obszaru wokół ostatniej pozycji wroga.
Mimo iż, nie odryłem w artykule wszystkie możliwości, to
co zostało opisane w zupełności wystarczy na stworzenie
racjonalnych i rzeczywistych reakcje na zdarzenia.
Wnioski
Sekret projektowania systemu AI dla każdego rodzaju gry,
wymaga zastanowienia się z czym będziesz musiał sobie
poradzić i jakie rezultaty chcesz osiągnąć. Jeśli
potrafisz zobrazować jak mają wyglądać akcje i
sformułować algorytmy by mogły działać jak sobie
zarzyczysz, to 90% pracy masz za sobą. Jednakże zostaje
jeszcze 10%, które może zająć Ci 10 razy tyle czasu co
projektowanie algorytmów.
Administrator praw autorskich napisał:Oryginalny tekst
pochodzi z www.lupinegames.com
Tytuł oryginału: Practical Guide to Building a Complete
Game AI: Volume II
Autor: Geoff Howland
Tłumaczenie: ryBens
Skocz do: Wybierz forumWarsztat - Programowanie
gier komputerowych|--Szkółka| |--Szkółka -
języki| |--Szkółka - grafika| |--Szkółka -
inne|--Programowanie gier| |--Ogólnie|
|--Dźwięk| |--Sztuczna Inteligencja|
|--Inne|--Programowanie grafiki|
|--Programowanie grafiki| |--OpenGL|
|--DirectX|--Produkcja| |--Pomysły|
|--Projektowanie| |--Projekty| |--Grafika|
|--Ogłoszenia|--O czym innym| |--Konferencje,
spotkania| |--Warsztat| |--Aktualności|
|--Artykuły| |--Wykłady| |--Compo|
|--Lepperlandia|--Śmietnik| |--Z odrzutu
Powered by Knowledge Base, wGEric (C) 2002 PHPBB.com MOD
This script (Knowledge Base - MX Addon v. 1.03e) is modified
by Haplo
W1.5b (C) 2004
[admin: ayufan, g[R]eK, Goliatus, mikael_, Regedit]
Wszystkie czasy w strefie CET (Europa)
Powered by phpBB2 Plus 1.52 based on phpBB 2.0.10 © 2001, 2002 phpBB
Group :: FI Theme :: Mody i Podziękowania
Wyszukiwarka
Podobne podstrony:
Projektowanie kompletnego systemu AI w praktyce Część IPodstawowe zasady tworzenia projektu dla STM32F4 w środowisku uVision 4 czesc IIPrzykładowy test etap praktyczny2 część II (podstawy przedsiębiorczości)Przykładowy test etap praktyczny część II (podstawy przedsiębiorczości)GIMP cwiczenia praktyczne Wydanie IIWYMAGANIA BHP DOTYCZACE OBIEKTOW BUDOWLANYCH I TERENU ZAKLADU czesc II drogiC cwiczenia praktyczne Wydanie IIKOMLOGO Multimedialny Pakiet Logopedyczny część I i II(1)MGO LW WK0 Polityka makroekonomiczna w gospodarce otwartej Model Mundella Fleminga, część IIAdamczewski Zintegrowane systemy informatyczne w praktyce Początek, Spis treściEGZAMIN MATURALNY Z JĘZYKA ANGIELSKIEGO POZIOM ROZSZERZONY CZĘŚĆ IIwięcej podobnych podstron