Przegląd technik sztucznej inteligencji stosowanych w grach

advertisement
VI Ogólnopolska Konferencja InŜynierii Gier Komputerowych, Siedlce 2009
Przegląd technik sztucznej inteligencji
stosowanych w grach komputerowych
Szymon Engel
Akademia Górniczo-Hutnicza
Streszczenie
Z uwagi na stale rosnące wymagania graczy, zaawansowane efekty graficzne
i fizyczne nie czynią gier w pełni satysfakcjonujących. Z tego powodu coraz
większego znaczenia nabiera sztuczna inteligencja. W poniŜszym artykule
przedstawione zostały jej podstawowe mechanizmy, stosowane przez twórców gier
w starszych produkcjach, a takŜe techniki zaawansowane, które pozwalają na
modelowanie realistycznych zachowań w grach tworzonych w o ostatnich latach.
1. Wstęp
W produkowanych obecnie grach komputerowych, w których efekty
graficzne i symulacje zjawisk fizycznych osiągnęły juŜ bardzo wysoki
1
poziom, coraz bardziej na znaczeniu zyskuje sztuczna inteligencja .
1
ang. AI – Artificial Intelligence
1
Szymon Engel
Przegląd technik sztucznej inteligencji stosowanych w grach komputerowych
UŜywana jest ona często w grach, których przebieg nie jest z góry
zaplanowany, a o dalszej rozgrywce decyduje postępowanie graczy. Dzięki
takiemu podejściu rozgrywka staje się ciekawsza, mniej przewidywalna
i schematyczna, co powoduje wzrost popularności gry oraz zadowolenie
grających.
1.1 Sztuczna inteligencja
Sztuczna inteligencja jest dziedziną informatyki, zajmującą się m.in.
badaniem reguł rządzących inteligentnymi zachowaniami człowieka.
Większość jej technik stosowanych w grach, róŜni się jednak od tych,
stosowanych w środowiskach akademickich. Jest to spowodowane głównie
wymaganiami wydajnościowymi gier, w których obliczenia muszą być
przeprowadzane często wielokrotnie w ciągu sekundy. Dlatego teŜ
mechanizmy wykorzystywane przez twórców gier rzadko opierają się na
modelach ściśle matematycznych, odwzorowujących rzeczywistość
dokładnie taką, jaka jest, tylko prowadzą do tworzenia zachowań wizualnie
poprawnych, a takŜe charakteryzujących się wysoką wydajnością
i skalowalnością.
1.2 Zastosowania
Mechanizmy sztucznej inteligencji są wykorzystywane obecnie w wielu
gatunkach gier, w których mamy do czynienia z przeciwnikami, jak równieŜ
z róŜnego rodzaju zjawiskami, obiektami występującymi w rzeczywistym
świecie. Dlatego teŜ znajdują one szerokie zastosowanie w grach
strategicznych (m.in. do symulacji walki, tłumu), a takŜe w standardowych
strzelankach do modelowania zachowań przeciwników.
2. Podstawowe mechanizmy AI
Pojęcie sztucznej inteligencji w odniesieniu do gier komputerowych jest
terminem bardzo szerokim. Kryją się pod nim zarówno podstawowe
mechanizmy takie jak automaty stanów, algorytmy grafowe, które za wiele
wspólnego ze sztuczną inteligencją nie mają, jak i bardziej skomplikowane
sieci neuronowe, behawioralne architektury robotyczne oraz zagadnienia
związane z uczeniem maszynowym.
2.1 Automaty stanów
Jednym z podstawowych mechanizmów są automaty stanów. Stanowią
one prostą koncepcję sztucznej inteligencji, analogiczną do systemów
opartych na zbiorach reguł (if warunek then działanie). Główną ich zaletą
2
VI Ogólnopolska Konferencja InŜynierii Gier Komputerowych, Siedlce 2009
jest niewielka złoŜoność obliczeniowa, w stosunku do oferowanych
moŜliwości. Automaty stanów składają się ze zbioru stanów,
odpowiadających podstawowym zachowaniom obiektów gry (np.
przeciwników), oraz funkcji przejścia określającej, na podstawie na przykład
zdarzeń ze świata zewnętrznego, przejścia między stanami. Obiekty mogą
wykonywać pewne określone akcje w momencie wejścia, przebywania oraz
wyjścia z danego stanu. Dodatkową zaletą automatów jest to, Ŝe
umoŜliwiają dekompozycje złoŜonego zachowania na prostsze fragmenty,
co ułatwia wykrywanie ewentualnych błędów i modyfikowanie
poszczególnych zachowań.
Przykładowo automat stanu dla Ŝarówki moŜe składać się z 2 stanów
(włączona, wyłączona), natomiast funkcja przejścia pozwala na przełączanie
między stanami, na podstawie zdarzenia zmiany połoŜenia włącznika
światła.
2.1.1 Automaty stanów skończonych
Najczęściej stosowanym rodzajem automatów stanów są automaty
2
stanów skończonych . Charakteryzują się tym, Ŝe posiadają skończoną
liczbę stanów, z których tylko jeden moŜe być w danej chwili aktualny.
Dobrze nadają się do opisu prostego zachowania przeciwników, a takŜe
coraz częściej są stosowane do przedstawiania zaleŜności w złoŜonych
interfejsach nawigacyjnych.
Więcej informacji dotyczących automatów stanów skończonych, a takŜe
przykładową implementację moŜna znaleźć w [1], [2].
2.1.2 Automaty stanów rozmytych – FuSM
Kolejnym przykładem automatów stosowanych w grach komputerowych
3
są automaty stanów rozmytych . Opierają się one na zasadach rządzących
w logice rozmytej, w której w przeciwieństwie do logiki klasycznej
z wartościami prawdy lub fałszu, występują wartości pośrednie (określane
przez funkcję przynaleŜności). Dzięki temu istnieje moŜliwość określenia
stopnia występowania pewnej cechy, na przykład wściekły, bardzo zły,
poddenerwowany.
Automaty stanów rozmytych pozwalają na proste zastosowanie logiki
rozmytej w grach. Obiekty, których zachowanie jest opisane przy pomocy
takiego automatu, mogą znajdować się w róŜnym stopniu w kilku stanach
jednocześnie (w automatach stanów rozmytych moŜe występować wiele
stanów aktualnych). Zachowanie postaci jest głębsze, mniej przewidywalne
i bardziej podobne do ludzkiego, ale z drugiej strony przeciwnik moŜe
2
3
ang. FSM – Finite State Machine
ang. FuSM – Fuzzy State Machine
3
Szymon Engel
Przegląd technik sztucznej inteligencji stosowanych w grach komputerowych
okazać się trudniejszy do pokonania. Automaty stanów rozmytych dobrze
nadają się do reprezentacji uczuć oraz emocji, znajdują takŜe zastosowanie
przy sterowaniu jazdą pojazdów.
Szczegółowe informacje na temat logiki rozmytej oraz automatów
stanów rozmytych przedstawiono w [3], [4].
2.2 Systemy wieloagentowe
Kolejną techniką z dziedziny sztucznej inteligencji stosowaną w grach
komputerowych są systemy wieloagentowe, wykorzystywane głównie do
modelowania zjawisk świata realnego, m.in.: zachowania tłumu, grup
przeciwników, stad zwierząt.
2.2.1 Systemy agentowe
W systemach agentowych występuję pewna grupa autonomicznych
jednostek (agentów) funkcjonująca we wspólnym środowisku. Agent moŜe
być rozumiany jako wirtualny byt, posiadający zdolność do obserwacji
i odczuwania środowiska. W wyniku odbieranych z otaczającego go świata
sygnałów (zdarzenia), moŜe podejmować decyzje oraz dąŜyć do realizacji
własnych celów, strategii (wykonywanie akcji). W celu osiągnięcia swoich
zamierzeń agenci mogą nawiązywać współpracę lub działać na siebie
destrukcyjnie. Podczas swojego egzystowania bez przerwy oddziaływują na
środowisko, co za tym idzie, sytuację swoją oraz poszczególnych agentów
w przyszłości.
2.2.2 Algorytm stada
Kolejnym przykładem systemu wieloagentowego moŜe być algorytm
stada, po raz pierwszy zaprezentowany przez Craig'a Reynolds'a pod koniec
lat osiemdziesiątych. Pozwala on na symulację w prosty sposób zbiorowego
zachowania m.in.: stada ptaków, ławicy ryb, tłumu. Do sterowania
zachowaniem obiektów uŜywane są trzy proste zasady (rozdzielność,
wyrównywanie, spójność), dające w połączeniu realistyczne zachowanie.
W późniejszej wersji algorytmu dodana została dodatkowa reguła (unikanie),
wzbogacająca symulacje o omijanie przeszkód oraz modelowanie
zachowań, na przykład stad drapieŜników i ofiar.
•
•
•
rozdzielność – sterowanie zapobiegające lokalnym skupiskom
wyrównywanie – sterowanie w kierunku uśrednionego celu
lokalnej grupy
spójność – sterowanie w kierunku uśrednionego połoŜenia
lokalnej grupy
4
VI Ogólnopolska Konferencja InŜynierii Gier Komputerowych, Siedlce 2009
•
unikanie – sterowanie zapobiegające uderzeniu w przeszkody
lub wrogów
Przy uŜyciu powyŜszych zasad, na podstawie najbliŜszego (lokalnego)
otoczenia agentów, wyliczana jest nowa prędkość i kierunek ruchu. Z uwagi
na to, Ŝe pojedynczy obiekt nie posiada wiedzy o całym środowisku, tylko
o najbliŜszych sąsiadach, algorytm ten jest wydajny i skalowalny. Technika
ta z powodzeniem została zastosowana w grac Half-Life i Unreal do
symulacji grup potworów i zwierząt oraz stad ptaków. Więcej informacji oraz
przykłady zastosowań opisane zostały w [5], [6], [7].
2.3. Algorytmy grafowe
Do mechanizmów sztucznej inteligencji, stosowanych powszechnie
w grach komputerowych, zaliczane są takŜe algorytmy grafowe. Grafy są
często wykorzystywane jako reprezentacja świata gry, w celu zmniejszenia
złoŜoności i ilości szczegółów, które z punktu widzenia postaci sterowanych
przez mechanizmy sztucznej inteligencji są często nieistotne.
2.3.1 Problem planowania drogi
Problem wyszukiwania drogi pojawia się bardzo często w strategiach
czasu rzeczywistego, a takŜe w innych rodzajach gier z postaciami
sterowanymi przez komputer. Polega on zazwyczaj na wyszukaniu trasy
z miejsca A do B o minimalnym koszcie. Funkcja licząca koszt przejścia
najczęściej uwzględnia odległość do celu, jednak moŜe takŜe brać pod
uwagę ukształtowanie terenu (góry, bagna), obecność przeciwników oraz
przeszkód.
Jedną z najczęściej stosowanych metod znajdowania drogi w grach jest
algorytm A*, pozwalający na wyliczenie optymalnej drogi (niekoniecznie
najoptymalniejszej) w zaleŜności od wykorzystanej heurystyki. Szczegółowe
informacje dotyczące tego algorytmu, a takŜe innych zagadnień związanych
ze znajdowaniem trasy moŜna znaleźć w [8].
2.3.2 Reprezentacja świata gry
Ze względu na złoŜoność obliczeniowo-pamięciową algorytmów
znajdowania drogi, w celu przyspieszenia obliczeń stosowane są róŜnego
rodzaju techniki reprezentacji świata gry.
Siatki prostokątne lub sześciokątne często wykorzystuje się w grach
strategicznych. Jest to technika prosta do implementacji, poniewaŜ teren
reprezentowany jest przy uŜyciu jednakowych elementów. Metoda ta
posiada jednak pewną wadę: postacie poruszające się po terenie wyglądają,
5
Szymon Engel
Przegląd technik sztucznej inteligencji stosowanych w grach komputerowych
jakby poruszały się po szachownicy. Dodatkowo reprezentacja ta moŜe
wprowadzać wiele nadmiarowych elementów, na przykład łąka zajmująca
większy obszar jest reprezentowana przez wiele małych komórek, zamiast
przez jedną większą, co często prowadzi do spowolnienia obliczeń
wyszukiwania trasy. PowyŜszy problem moŜe zostać rozwiązany przez
zastosowanie drzew czwórkowych, które grupują jednolite obszary w jeden
większy.
Do metod reprezentacji bardziej nieregularnych obszarów zalicza się
siatki wielokątów wypukłych oraz punkty widoczności. Pierwsza technika
pozwala na wygodne i wydajne przedstawienie terenu, jednak zazwyczaj
wymaga dodatkowego nakładu pracy dla projektantów poziomów. Druga
metoda takŜe zmniejsza wielkość przeszukiwanego obszaru, jednak moŜe
powodować, Ŝe obiekty poruszają się wzdłuŜ przeszkód.
Ze względu na liczne zalety i wady powyŜszych metod, cięŜko znaleźć
uniwersalną technikę reprezentacji świata gry, umoŜliwiającą optymalne
wyszukanie drogi, po której ruch postaci nie wyglądałby sztucznie. Z tego
powodu często stosuje się dodatkowe algorytmy wygładzające ruch, a takŜe
wyszukiwanie hierarchiczne. Bardziej dokładny opis przedstawionych
powyŜej metod przedstawiono w [9].
3. Techniki zaawansowane
Przedstawione dotychczas rozwiązania, mimo swojej prostoty, posiadają
jednak pewne wady. Zachowania reprezentowane w postaci zbiorów reguł
często nie uwzględniają wszystkich moŜliwych akcji przeciwnika, a próby
poprawienia, uzupełnienia tych reguł zazwyczaj prowadzą do duŜej ilości
cięŜkiego do utrzymania i poprawiania kodu. Dodatkowo zachowanie
bohaterów sterowanych przy uŜyciu podstawowych mechanizmów sztucznej
inteligencji moŜe wyglądać, jakby było zakodowane na sztywno lub
wydawać się przewidywalnym.
Z tego powodu, a takŜe ze względu na stale rosnące wymagania graczy,
twórcy gier stosują coraz bardziej zaawansowane techniki.
3.1 Drzewa decyzyjne
Jedną z technik słuŜących do wyznaczania bardziej złoŜonych
zachowań są drzewa decyzyjne. Główną ich cechą jest to, Ŝe podczas
obliczeń nie uwzględniają tylko bieŜących zdarzeń ze środowiska, tylko
przeprowadzają złoŜoną analizę ewentualnych przyszłych decyzji. Dzięki
temu moŜliwa jest realizacja celów i strategii długoterminowych, a takŜe
osiągnięcie mniej schematycznego zachowania.
Technika ta jest analogiczna do algorytmów wyznaczania najlepszej
strategii w drzewach gier, która została opisana w [10]. Natomiast więcej
informacji na temat drzew decyzyjnych oraz modelowanego podejścia do
6
VI Ogólnopolska Konferencja InŜynierii Gier Komputerowych, Siedlce 2009
implementacji sztucznej inteligencji przedstawiono w [11].
3.2 Sieci neuronowe
Kolejnym mechanizmem sztucznej inteligencji, popularnym do chwili
obecnej głównie w środowiskach naukowych, są sieci neuronowe, które
ostatnio zyskują coraz większą popularność równieŜ w grach
komputerowych. Pomimo tego, Ŝe jest to zagadnienie trudne
i skomplikowanie, moŜe prowadzić do bardzo dobrych rezultatów i umoŜliwia
m.in. dostosowywanie poziomu przeciwnika do grającego, a takŜe
wypracowywanie realistycznych zachowań. TakŜe ze względu na
właściwości sieci istnieje moŜliwość uczenia ich w trakcie rozgrywki, dzięki
czemu obiekty mogą zyskiwać nowe zachowania, co znacznie urozmaica
rozgrywkę.
Zagadnienie sieci neuronowych zostało szerzej potraktowane w [12],
a konkretny przykład ich zastosowania moŜna znaleźć w [13].
3.3 Behawioralne architektury robotyczne
Wirtualne światy w trójwymiarowych grach komputerowych wykazują
bardzo wysokie podobieństwo do środowisk, w jakich poruszają się i działają
rzeczywiste roboty. Zarówno one, jak i sterowane przy pomocy sztucznej
inteligencji jednostki w grach, muszą obserwować otaczające je środowisko
i na podstawie posiadanej wiedzy podejmować decyzje zgodnie
z załoŜonymi celami. Z tego powodu w grach zaczęto wykorzystywać
techniki, podobne do tych, stosowanych w sterowaniu rzeczywistymi
robotami. Na przykład rozszerzone sieci behawioralne zostały
z powodzeniem wykorzystane w grach Quake II i Unreal do modelowania
zachowania bohaterów niezaleŜnych (sterowanych przez komputer).
Główna idea działania sieci behawioralnych polega na rozpraszaniu
energii aktywacyjnej w elementach sieci (modułach zachowań i celów),
a następnie wyborze takiego zachowania, który posiada największą ilość
energii. Przykład zastosowania powyŜszej techniki, a takŜe architektur
subsumcyjnych, równieŜ wykorzystywanych w robotyce, zaprezentowano
w [14].
3.4 Uczenie maszynowe
Ostatnią z poruszanych kwestii jest zagadnienie uczenia maszynowego,
4
na przykładzie techniki GoCap , szczegółowo opisanej w [15]. Polega ona
na tym, Ŝe podczas trenowania program komputerowy obserwuje działania
trenującego i zapisuje je (wraz ze zdarzeniami, które odbiera z otaczającego
4
ang. Game Observation Capture
7
Szymon Engel
Przegląd technik sztucznej inteligencji stosowanych w grach komputerowych
środowiska). Następnie w trakcie rozgrywki postacie mogą działać według
zapamiętanych strategii, dzięki czemu przejawiają wysoki stopień
inteligencji.
Przy zastosowaniu algorytmów uczenia maszynowego moŜliwa jest
takŜe aktualizacja zapisanych zachowań, dzięki czemu obiekty w grze mogą
nauczyć się omijać miejsca niebezpieczne.
4. Zakończenie
Jak moŜna zauwaŜyć, sztuczna inteligencja jest dziedziną bardzo
szeroką, znajdującą takŜe zastosowanie w programowaniu gier
komputerowych. Niestety cięŜko by było dokładnie opisać wszystkie
przydatne zagadnienia z tej dziedziny w jednym artykule, dlatego teŜ
przedstawione dotychczas wiadomości mają na celu głównie zaznajomienie
z mniej lub bardziej skomplikowanymi technikami sztucznej inteligencji oraz
zachęcenie do dalszej lektury.
Przedstawione w tym artykule techniki, często są stosowane w
połączeniu ze sobą, dzięki czemu zachowanie postaci jest bardziej
naturalne, wizualnie poprawne i w wyniku tego satysfakcjonujące dla
grających. Osoby zainteresowane zagadnieniami poruszanymi w niniejszym
artykule, mogą znaleźć więcej informacji m.in. w [16], [17].
Bibliografia
[1] Dybsand E., „Klasa automatu o skończonej liczbie stanów”, Perełki
programowania gier. Vademecum profesjonalisty. Tom 1, rozdział 3.1, Helion,
Gliwice 2002
[2] Farris C., „Automat stanów skończonych wykorzystujący wskaźniki na funkcje”,
Perełki programowania gier. Vademecum profesjonalisty. Tom 3, rozdział 3.3,
Helion, Gliwice 2003
[3] McCuskey M., „Logika rozmyta w grach”, Perełki programowania gier.
Vademecum profesjonalisty. Tom 1, rozdział 3.8, Helion, Gliwice 2002
[4] Dybsand E., „Ogólny automat stanów rozmytych w języku C++”, Perełki
programowania gier. Vademecum profesjonalisty. Tom 2, rozdział 3.12, Helion,
Gliwice 2002
[5] Woodcock S., „Algorytm stada – prosta technika symulacji zbiorowego
zachowania”, Perełki programowania gier. Vademecum profesjonalisty. Tom 1,
rozdział 3.7, Helion, Gliwice 2002
[6] Woodcock S., „Stada z zębami: drapieŜcy i ofiary”, Perełki programowania gier.
Vademecum profesjonalisty. Tom 2, rozdział 3.11, Helion, Gliwice 2002
[7] Reynolds C., „Boids (flocks, herds, and schools: a distributed behavioral model)”,
http://www.red3d.com/cwr/boids/
[8] Stout B., „Podstawy A* dotyczące planowania drogi”, Perełki programowania
gier. Vademecum profesjonalisty. Tom 1, rozdział 3.3, Helion, Gliwice 2002
[9] Rabin S., „Optymalizacja A* pod względem szybkości działania”, Perełki
programowania gier. Vademecum profesjonalisty. Tom 1, rozdział 3.5, Helion,
8
VI Ogólnopolska Konferencja InŜynierii Gier Komputerowych, Siedlce 2009
Gliwice 2002
[10] Svarovsky J., „Drzewa gier”, Perełki programowania gier. Vademecum
profesjonalisty. Tom 1, rozdział 3.2, Helion, Gliwice 2002
[11] Dalal M., Prieditis A., „Zastosowanie modelowanego podejścia do implementacji
AI na przykładzie Locust AI Engine w QA3”, Perełki programowania gier.
Vademecum profesjonalisty. Tom 6, rozdział 3.1, Helion, Gliwice 2008
[12] LaMonte A., „Podstawy sieci neuronowych”, Perełki programowania gier.
Vademecum profesjonalisty. Tom 1, rozdział 3.9, Helion, Gliwice 2002
[13] Maslow J., „UŜywanie sieci neuronowych w grach – konkretny przykład”, Perełki
programowania gier. Vademecum profesjonalisty. Tom 2, rozdział 3.14, Helion,
Gliwice 2002
[14] Alvares L. O., Pinto H., „Zastosowanie behawioralnych architektur robotycznych
w tworzeniu gier”, Perełki programowania gier. Vademecum profesjonalisty. Tom
6, rozdział 3.3, Helion, Gliwice 2008
[15] Alexander T., „Optymalizacja uczenia za pomocą techniki GoCap", Perełki
programowania gier. Vademecum profesjonalisty. Tom 3, rozdział 3.1, Helion,
Gliwice 2003
[16] Seemann G., Bourg D. M., „AI for Game Developers”, O'Reilly, 2002
[17] The game AI page: Building artificial intelligence into games,
http://www.gameai.com
Review of Artificial Intelligence Techniques in Computer Games
Abstract
In currently produced computer games, which the graphic and physical effects have
already reached a very high level in, more and more importance is given to the
artificial intelligence. In this paper the basic techniques of artificial intelligence, as
well as the advanced techniques which allow game developers to model realistic
behaviors are presented.
9
Download