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