Autor: 148371 Wrocław, 22.06.2009

Transkrypt

Autor: 148371 Wrocław, 22.06.2009
Autor: 148371
Wrocław, 22.06.2009
"Współdziałanie programów/agentów sterujących
działaniem postaci w programach gier komputerowych"
Przedmiot: Informatyka Systemów Autonomicznych
Prowadzący: dr inż. Marek Piasecki
Współczesne gry komputerowe są często bardzo rozbudowanymi projektami, przy
których pracuje kilkuset scenarzystów, programistów, projektantów, grafików, dźwiękowców
i nierzadko specjalistów od sztucznej inteligencji. Przykładowo: nad GTAIV (we wszystkich
fazach rozwoju projektu) pracowało około 1000 osób.
Do niedawna istotnym wyznacznikiem rozwoju gier w ogóle była strona techniczna
(audiowizualna), stopniowo jednak tempo rozwoju w tej dziedzinie maleje, po części ze
względu na ograniczenia techniczne – różnice wydajnościowe (i technologiczne) pomiędzy
kolejnymi generacjami np. kart graficznych nie są tak duże, jak jeszcze kilka lat temu.
Przykładowo: jeszcze około roku 2004 kolejne generacje kart graficznych pojawiały się co
około rok i ich pojawienie się oznaczało, że poprzednia generacja nadaje się do wymiany –
przykładem niech będą procesory graficzne z serii Nvidia GeForce 6 (GeForce 5 generacji),
które w niedługim czasie po pojawieniu się na rynku GeForce 7 prawie natychmiast przestały
„wystarczać” do grania w najnowsze gry w zadowalających rozdzielczościach i poziomach
szczegółowości. Dzisiaj rozwój nie jest już tak dynamiczny. Najtańsza karta graficzna z serii
8800, kupiona w listopadzie 2006 roku, nawet dzisiaj z powodzeniem wystarcza do grania
praktycznie we wszystkie nowe gry w rozdzielczości Full HD i w „przyzwoitych” ustawieniach
szczegółowości. Podobnie jest z procesorami – pomimo, że na rynku dostępnych jest wiele
modeli czterordzeniowych i taktowanych wysokimi zegarami, jeśli chodzi o gry, z
powodzeniem wystarcza dwurdzeniowy procesor o taktowaniu poniżej 3GHz.
Innym powodem, dla którego oprawa audiowizualna, choć wciąż ważna dla sukcesu
komercyjnego gry komputerowej, przestaje być najszybciej rozwijającą się dziedziną jest
prosty fakt, że gry komputerowe już dziś wyglądają bardzo dobrze, często niemal
fotorealistycznie. Tak więc ograniczeniem tempa rozwoju jest … brak potrzeby tego rozwoju.
Cóż więc mają robić twórcy gier, żeby zaskoczyć, zachwycić potencjalnego klienta i
skłonić go do wydania pieniędzy na ten, a nie inny produkt? Na przykład przygotowując
scenariusz pełen zaskakujących zwrotów akcji i zapadających w pamięć momentów. Jednak
w dobie gier „casual”, czyli dla „niedzielnych graczy”, którzy grę włączają na godzinę-dwie
tygodniowo mało kto doceni ukryte smaczki czy odwołania do kultury wyższej (obrazów,
utworów muzycznych…).
To pozostawia pole do popisu dla specjalistów od sztucznej inteligencji. Jeśli
sterowane przez komputer postaci (tak wrogów, jak i sprzymierzeńców w grze) są w stanie
zachowywać się w sposób logiczny i dynamicznie reagować na poczynania gracza, to każda
rozgrywka będzie zaskakująca i ciekawa, co przyciągnie graczy i w konsekwencji może (o ile
oczywiście inne elementy nie zawiodą) doprowadzić do sukcesu komercyjnego produkcji.
Jakie więc zadania stają przed sztuczną inteligencją w grach komputerowych?
1. Urealnianie świata gry. Spotykane głównie w grach cRPG (Computer Role Playing
Game). Sztuczna inteligencja ma za zadanie sterować działaniami postaci, na
które natknie się gracz. Jeśli np. w quasi-średniowiecznym królestwie, w którym
2
toczy się gra, postacie niezależne (tzw. NPC – Non-player characters, sterowane
przez komputer) mają cykl dnia, wstają, pracują, bawią się, chodzą spać,
rozmawiają między sobą o poczynaniach gracza, to stwarza to bardzo pozytywne
wrażenie i umożliwia lepsze wczucie się gracza w kierowaną postać, co jest
głównym założeniem gry RPG. Jeśli na przykład gracz zamorduje lub okradnie
jakąś postać niezależną i nie będzie przy tym dyskretny, to powinien być ścigany
przez straże (tudzież policję) i ukarany, a także inne postacie niezależne powinny
przestać darzyć bohatera sterowanego przez gracza szacunkiem i zaufaniem.
Rozwiązanie takie niewątpliwie przysłużyło się ogromnej popularności gry The
Elder Scrolls IV: Oblivion, która, pomimo upływu 4 lat od premiery, wciąż może
stanowić przykład realizacji wirtualnego świata, w który łatwo uwierzyć dzięki
sterowanym przez komputer mieszkańcom.
2. Stworzenie wyzwania dla gracza. Za przykład niech posłużą gry, których tematyką
są wyścigi samochodowe. Nie jest trudne (ani pożądane) aby agenci kierujący
samochodami konkurującymi z samochodem sterowanym przez gracza jeździli
bezbłędnie, bo byłoby to dla gracza frustrujące. Wyzwaniem jest stworzenie AI,
które będzie symulować zachowania rzeczywistych kierowców – jeśli gracz zrobi
coś niespodziewanego, np. zatrzyma się na środku drogi, to AI powinna być w
stanie na to zareagować, np. omijając go. Bardzo ciekawe i zwiększające
„grywalność” rozwiązanie zastosowano w dość starej grze Total Immersion Racing
– każdy kierowca sterowany przez komputer miał własny charakter i pamięć,
dzięki czemu potrafił się zemścić, jeśli gracz zachował się wobec niego
nieuczciwie.
W tej kategorii mieszczą się również przeciwnicy we wszelkiego rodzaju
„strzelankach”, gdzie przeciwnicy dynamicznie reagujący na działania gracza,
wykorzystujący elementy wirtualnego otoczenia (np. potrafiący przewrócić stół,
by schować się za nim przed ostrzałem) stanowią istotny czynnik sukcesu
produkcji
3. Komentowanie wydarzeń w świecie gry, np. w grach sportowych. Za przykład
niech posłuży seria FIFA – algorytmy muszą dobierać frazy, nagrane uprzednio
przez zawodowych komentatorów sportowych, do sytuacji na wirtualnym boisku.
Jest to tym trudniejsze, że możliwych wariantów sytuacji jest bardzo wiele, i tym
istotniejsze, że seria dąży do jak najwierniejszego odtworzenia relacji
telewizyjnych z meczy, co ciężko sobie wyobrazić bez profesjonalnego
komentarza.
3
Jeśli więc w procesie powstawania gry zespół zdecyduje się na implementację
bardziej złożonych algorytmów sztucznej inteligencji w miejsce tradycyjnych, prostych
skryptów, to jak należy to rozwiązać? Rozważmy to na przykładzie gry cRPG.
Idealnym rozwiązaniem byłoby stworzenie oddzielnego, wirtualnego bytu dla każdej
postaci, z których każda miałaby indywidualnie określone potrzeby oraz sposoby ich
spełniania (np. kiedy wzrasta poziom zmiennej „głód”, postać idzie do tawerny lub np.
wyrusza na połów ryb, w zależności od pogody czy aktualnego stanu portfela), zmysły,
służące obserwacji wirtualnego otoczenia, a także zasób wiedzy, który mógłby się zmieniać
poprzez rozmowy z innymi postaciami, czytanie wiadomości, obserwację…
Złożoność obliczeniowa takiego rozwiązania, a także potencjalna liczba błędów i
problemy z ich odnajdowaniem (w końcu za każdym uruchomieniem gry wszystko
przebiegałoby zupełnie inaczej, świat jest w pełni dynamiczny!), zwłaszcza jeśli w grze
znajdzie się kilkaset takich postaci, jest ogromna. Tak więc i tu znajduje zastosowanie zasada,
że wszystkie rozwiązania idealne mają wspólną cechę – nie da się ich zrealizować.
Oczywiście, opisanie wszystkiego prostymi algorytmami, ustalenie sztywnych ścieżek
każdej postaci również nie jest słuszne, bo trudno byłoby przy ich użyciu stworzyć świat
realistyczny, w który gracz chciałby uwierzyć i którego ratowaniu chciałby poświęcić
pieniądze i czas.
Najlepsze rozwiązanie jak zwykle leży gdzieś pośrodku. Gracz nie jest w stanie widzieć
wszystkiego naraz, można więc stosować dynamiczne algorytmy SI tylko dla postaci
znajdujących się bezpośrednio w pobliżu postaci gracza. Kiedy gracz się przemieszcza,
odpowiedni agenci „budzą się do życia”, a inni się dezaktywują.
Innym rozwiązaniem mogłoby być wprowadzenie prostych algorytmów, które
sterowałyby postaciami zgodnie z ustalonymi regułami (chodź, pracuj, jedz, śpij…), oraz
„inteligencji świata”, która modyfikowałaby te reguły na podstawie poczynań gracza.
Przykładowo: gracz spalił tawernę, gdzie często przebywała postać sterowana przez agenta,
więc „inteligencja świata” zmieni miejsce przebywania tej postaci.
Ciekawą implementacją powyższego pomysłu jest wydana niedawno gra Left 4 Dead,
traktująca o grupie ocalałych walczących z potworami. Rozgrywka polega na tym, że 4 graczy,
używając różnej broni i współpracując przeciwko sterowanym przez komputer potworom,
próbuje przebić się do bezpiecznego miejsca. Każdy potwór sterowany jest bardzo prostymi
algorytmami, po prostu kieruje się na najbliższego gracza i atakuje, istnieje jednak nadrzędny
mechanizm, analizujący poczynania graczy i modyfikujący rozgrywkę, aby zapewnić graczom
możliwie emocjonujące sytuacje. Przykładowo: jeśli jeden z graczy zbytnio oddali się od
pozostałych, to zostanie w jego stronę wysłana dodatkowa grupa potworów, co skłoni go do
powrotu do grupy graczy i prawdopodobnie zainicjuje desperacką obronę.
4
Tak więc, chociaż teoretycznie postaci sterowane przez komputer powinny by od
siebie niezależne i porozumiewać się przy użyciu wirtualnych zmysłów, ze względu na duże
skomplikowanie takiego rozwiązania, znacznie lepiej jest stworzyć nadrzędną inteligencję
sterującą wszystkimi agentami postaci.
Złożone AI jednak nie zawsze jest konieczne, by gra odniosła sukces. W końcu dla
gracza istotne jest nie samo działanie sztucznej inteligencji, lecz samo wrażenie że ona działa.
Za przykład niech posłuży seria Call of Duty, gdzie działanie przeciwników sterowane było
całkowicie przez stworzone przez programistów, odgórnie ustalone skrypty. Tak więc, za
każdym razem gdy gracz jest atakowany przez wroga, odpowiada za to skrypt i niezależnie co
gracz zrobi, zostanie zaatakowany w ten sam sposób przy następnej próbie. Dobrze
przygotowane skrypty są jednak zaletą, a nie wadą produkcji – dzięki nim akcja jest cały czas
dynamiczna i efektowna.
Źle przygotowane skrypty często psują grę całkowicie. W mniej znanych produkcjach
próbujących naśladować serię Call of Duty nagminne jest zjawisko, gdzie skrypt, który
powinien się uruchomić i nasłać na gracza grupę przeciwników po tym jak ten przejdzie przez
drzwi nie uruchamia się i gracz nie wie co ma robić dalej.
Podsumowując, chociaż skomplikowana sztuczna inteligencja w grach
komputerowych jeszcze nie występuje, to ważna jest jej jak najlepsza imitacja. Współpraca
pomiędzy agentami sterującymi postaciami jest zwykle ograniczona albo do nakazów
nadrzędnego agenta, sterującego całą rozgrywką, albo do przygotowanych przez twórców
gry skryptów. Ostatecznie, jak to zwykle w informatyce, ważniejsze od samego rozwiązania
jest jego odpowiednie dobranie do problemu, a problemem w przypadku gier
komputerowych jest wywarcie jak najlepszego wrażenia na graczu przy możliwie niewielkich
wymaganiach obliczeniowych produkcji.
Oczywiście należy zapominać, że pomimo coraz większej mocy obliczeniowej
komputerów i coraz potężniejszych algorytmów sztucznej inteligencji na dzień dzisiejszy
komputery nie są w stanie zastąpić innych graczy. Świadczy o tym niesłabnąca popularność
gier sieciowych. W Counter-Strike, sieciową grę traktującą o zmaganiach terrorystów i
antyterrorystów (obydwie drużyny sterowane są przez graczy) wciąż grają tysiące ludzi,
pomimo upływu 10 lat od premiery. World of Warcraft, największa dotychczas gra z gatunku
MMORPG (Massive Multiplayer-only Role Playing Game) ma na dzień dzisiejszy ponad 11
milionów użytkowników na całym świecie i przynosi wydawcy około 150 milionów dolarów
przychodu miesięcznie. To chyba wystarczający dowód na sukces tej produkcji, pomimo
braku zaawansowanej sztucznej inteligencji. Można postawić tezę, że współdziałanie
pomiędzy agentami sterującymi postaciami w grach komputerowych działa najlepiej, jeśli
tymi agentami są żywi gracze.
5
Źródła:
http://gry.gery.pl/newsy/6565.html
http://pl.wikipedia.org/wiki/GeForce
6

Podobne dokumenty