Informatyka systemów autonomicznych Spis treści

Transkrypt

Informatyka systemów autonomicznych Spis treści
Sławomir Błyskal, 148354
Wrocław, 20 czerwca 2009 r.
Termin zajęć: PT 9:15
Rok akademicki: 2008/2009
Prowadzący: dr inż. Marek Piasecki
Informatyka systemów autonomicznych
Autonomiczne sterowanie i fotorealistyczna wizualizacja postaci
w programach wieloosobowych gier komputerowych
Spis treści
1 Współczesne gry komputerowe
2
2 Autonomiczne sterowanie postaci
2.1 Algorytm stadny . . . . . . . . . . . . . . . . . .
2.2 Automaty stanów skończonych . . . . . . . . . .
2.3 Drzewa decyzyjne . . . . . . . . . . . . . . . . . .
2.4 Heurystyczne poszukiwanie drogi – algorytm A*
2.5 Logika rozmyta . . . . . . . . . . . . . . . . . . .
2.6 Sztuczne sieci neuronowe . . . . . . . . . . . . . .
.
.
.
.
.
.
2
2
3
3
4
4
5
3 Fotorealistyczna wizualizacja postaci
3.1 Ray tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Tekstury . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Animacja postaci i technika motion capture . . . . . . . . . . . . . . . . . . . . .
6
6
6
7
4 Podsumowanie
7
5 Literatura
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
Współczesne gry komputerowe
Rozwój technologii, a co za tym idzie wzrastająca wciąż moc obliczeniowa goszczących w
naszych domach komputerów nieustannie przyczynie się do podnoszenia poprzeczki pod względem poziomu gier komputerowych realizowanych przez producentów z całego świata. Z „łezką
w oku” wielu z nas wspomina czasy, kiedy gry - choć mieściły się na jednej dyskietce a ich
paleta kolorów często nie przekraczała 256 barw - potrafiły „ukraść” człowiekowi niejeden dzień
z jego życia. Dziś gry komputerowe wyglądają już zdecydowanie inaczej - liczba wyświetlanych
kolorów liczona jest w milionach, rozdzielczość ekranu w tysiącach pikseli a zajmowana objętość
- w gigabajtach.
Aby wydawana w dzisiejszych czasach gra miała szansę na podbicie rynku, powinna swoich
nabywców zachwycić grywalnością oraz oprawą audio-wizualną. Nieodłącznym elementem większości gier komputerowych są występujący w nich przeciwnicy - działający autonomicznie, sprawiający pozory posiadania inteligencji i potrafiący często dopasowywać swoje „umiejętności” do
poziomu rozgrywki wybranej przez gracza.
Pojawiło się tutaj ważne pojęcie - sztuczna inteligencja (z ang. artificial intelligence, w
skrócie AI ). Oczywiście żadnemu programiście nie udało się jeszcze zasymulować w pełni inteligentnej postaci (zresztą stosowanie złożonych obliczeniowo algorytmów w grach jest wysoce
niewskazane), dlatego w komputerowej rozrywce stosowany jest odpowiednio uproszczony model
takich „inteligentnych” zachowań.
Drugim ważnym elementem, który często pełni główną rolę w ocenie końcowej gier komputerowych - jest, co już zostało wspomniane, ich grafika. Istnieje obecnie tendencja dążenia do pełnego fotorealizmu gier, jednak na drodze wciąż stają tutaj ograniczenia sprzętowe,
które wymuszają upraszczanie algorytmów generowania komputerowych postaci i scenerii w
celu umożliwienia osiągnięcia odpowiedniej płynności animacji na sprzęcie, jaki posiada w swoim
domu przeciętny gracz.
Właśnie na tych dwóch kluczowych elementach gier komputerowych - autonomicznie (i inteligentnie) sterowanych postaciach oraz odpowiednio wysokim poziomie fotorealizmu ich wizualizacji - skupię się w dalszej części niniejszej pracy.
2
Autonomiczne sterowanie postaci
Aby nadać grze komputerowej cechy świata rzeczywistego należy zadbać o odpowiedni algorytm, zgodnie z którym będą poruszały się po świecie gry inne niż gracz, sterowane przez komputer postacie. Z pomocą przychodzi nam tutaj wspomniana już sztuczna inteligencja. Poniżej
omówione zostaną wybrane algorytmy, które stosuje się w tym celu w grach komputerowych.
2.1
Algorytm stadny
Algorytm ten został po raz pierwszy przedstawiony przez Craiga Reynoldsa w 1987 roku.
Reynolds określił trzy zasady, których połączenie miało umożliwić postaciom poruszanie się
przypominające zachowanie ławicy ryb, roju pszczół lub stada ptaków. Do wspomnianych trzech
zasad zaliczają się:
2
• rozdzielczość - sterowanie zapobiegające tworzeniu się tłumu w jednym miejscu realizowane
w ten sposób, że agenci muszą zachować odpowiednią odległość od siebie,
• wyrównywanie - sterowanie umożliwiające agentowi zmianę swojego kierunku czy prędkości
poruszania, co ma na celu dostosowywanie tych parametrów do innych postaci przebywających w pobliżu,
• spójność - sterowanie odpowiedzialne za zbieranie się agentów znajdujących się blisko siebie
w lokalne grupy.
Z czasem pojawiła się także czwarta zasada nazwana przez Reynoldsa unikaniem, która miała
na celu zapobieganie zderzeniom agentów z przeszkodami.
Cechą algorytmu stadnego jest fakt, że pomiędzy kolejnymi cyklami, w których uaktualniane
są parametry agentów - nie są przechowywane żadne pomocnicze informacje. Tak więc każdy
cykl jest jednostką w niezależną od cyklów wcześniejszych. Ma to oczywiście swoje wady i
zalety. Do zalet niewątpliwie należy zaliczyć małe wymagania pamięciowe tego algorytmu i
możliwość natychmiastowego reagowania na otoczenie. Natomiast do wad - zastosowanie tego
algorytmu głównie w sytuacjach, gdy mamy do czynienia z dużą liczbą agentów znajdujących
się na niewielkim obszarze. Efektem działania algorytmu jest bowiem stado poruszające się z
taką dynamiką ruchu jak pojedyncze ciało, omijające wszelkie napotkane przeszkody i wrogie
postacie.
2.2
Automaty stanów skończonych
Automat skończony (ang. finite state machine) jest to pewien abstrakcyjny, matematyczny
model systemu zawierający szereg zdefiniowanych stanów, w jakich system ten może się znaleźć,
oraz określający reguły przejść między tymi stanami. Dana postać występująca w grze znajduje
się w stanie wynikającym z reakcji w przeszłości na pojawiające się wydarzenia, lub w stanie
początkowym, jeśli postać taka dopiero rozpoczęła swój cykl życia. Zmiana stanu w jakim
przebywa automat (a tym samym nasza postać) odbywa się jako reakcja na aktualnie zachodzące
wydarzenia. Z reguły z każdego stanu maszyny jest co najmniej kilka możliwych przejść do
innych stanów, tak więc w każdej sytuacji agent może podjąć jedno lub kilka różnych działań.
Algorytm ten jest często wykorzystywany w grach komputerowych. Obecnie technika ta służy
nie tylko do sterowania postaciami gier, ale całym AI gry (przechowują stan gry, przetwarzają
polecenia od gracza lub zarządzają stanem obiektu). Problem oczywiście pojawia się w przypadku bardzo złożonych gier, gdzie często wymagane jest zdefiniowane bardzo dużej liczby
stanów i reguł przejść między nimi.
2.3
Drzewa decyzyjne
Drzewa decyzyjne są popularną techniką sztucznej inteligencji, która znalazła swoje zastosowanie głównie w grach komputerowych typu warcaby, szachy czy go. Nic nie stoi jednak na
przeszkodzie, aby elementy tej techniki można było wykorzystać także w grach wieloosobowych,
w których występują postacie sterowane przez komputer. Zadaniem tego algorytmu może być
rozwiązywanie problemów decyzyjnych jak i tworzenie planu działania.
3
Drzewo decyzyjne przedstawia się jako graf decyzji i ich możliwych konsekwencji. Węzły
takiego grafu są stanami gry, a węzły do nich potomne - to położenia uzyskiwane po przeprowadzeniu jednego ruchu (podjęciu decyzji). Węzły decyzyjne i węzły konsekwencji występują na takim
grafie naprzemiennie, a każda ze ścieżek kończy się węzłem końcowym.
Agent który zamierza wykonać ruch analizuje drzewo decyzyjne tak daleko jak potrafi, lub
uzna za konieczne. Możliwe do wykonania posunięcie analizowane są względem sytuacji aktualnej, i wybierane jest najlepsze z nich.
Odmianą drzew decyzyjnych są diagramy decyzyjne. Od drzew decyzyjnych odróżnia je to,
że do każdego węzła takiego diagramu można dojść więcej niż jedną drogą. Diagramy decyzyjne
pozwalają zaoszczędzić pamięć w przypadku bardzo rozbudowanych drzew, w których określone
poddrzewa powtarzają się w wielu miejscach. Powoduje to, że są użyteczne w dziedzinach
bardziej sformalizowanych (np. w automatycznej analizie poprawności oprogramowania), jednak
nie są stosowane w statystyce, gdzie na skutek losowych błędów w danych poddrzewa prawie
nigdy nie są identyczne.
2.4
Heurystyczne poszukiwanie drogi – algorytm A*
W większości wieloosobowych gier komputerowych występuje problem znajdowania optymalnej drogi dla postaci poruszającej się miedzy dwoma punktami na planszy. Na bazie techniki
AI rozwiązującej to zagadnienie tworzone są pokrewne, bardzo złożone zachowania postaci w
grach jak na przykład poruszanie się jednostek w formacjach czy też planowanie strategiczne.
Najczęstszym rozwiązaniem tego zagadnienia jest użycie heurystycznego algorytmu A*, który
działa na zasadzie szacowania najlepszego kierunku eksploracji. Algorytm ten dokonuje minimalizacji obszaru poszukiwań najlepszej trasy poprzez ukierunkowanie poszukiwań na cel. Algorytm oblicza koszt dotarcia postaci do pośredniego punktu na mapie, dodając do niego oszacowany koszt dotarcia od tego punktu pośredniego do punktu końcowego (celu). W rezultacie
przemieszanie się gracza z punktu początkowego do punktu docelowego polega na poruszaniu
się „małymi kroczkami”, przy czym w każdym z tych kroków pośrednich szacowany jest koszt
dotarcia zadaną trasą z tego punktu do punktu docelowego, i oczywiście wybierana jest trasa (a
dokładniej: następny krok wzdłuż tej trasy) najbardziej na dany moment optymalna. Algorytm
zakańczany jest wraz z chwilą osiągnięcia przez postać punktu końcowego.
Powstaje jednak tutaj niebezpieczeństwo osiągnięcia przez agenta tzw. minimum lokalnego,
co oznaczałoby „utknięcie” poruszającego się agenta w obrębie pewnego obszaru. W przypadku
wykrycia takiej sytuacji podczas działania algorytmu rozwiązaniem może być „cofnięcie się” o
kilka kroków wstecz i poszukanie innej ścieżki, obarczonej możliwie niskimi kosztami dotarcia
do celu.
2.5
Logika rozmyta
Logika rozmyta jest ściśle powiązana z matematyczną teorią zbiorów rozmytych oraz teorią
prawdopodobieństwa. Co prawda stosuje ona mniej zastosowań przy samym sterowaniu postaci
w grach, jednak jest niezwykle przydatna w określaniu np. emocji postaci (np. miły, obojętny,
niemiły, wrogi). Jak więc widać logika rozmyta polega na wprowadzeniu pomiędzy wartościami 0 (fałsz) i 1 (prawda) całego spektrum wartości pośrednich. Oprócz symulowania uczuć,
4
logika pośrednia znajduje swoje zastosowanie przy sterowaniu w grach elementów cechujących
się nieograniczonymi zachowaniami, jak np. drżenie liści na wietrze czy poruszanie się po niebie
chmur.
2.6
Sztuczne sieci neuronowe
Pojęcie sztucznych sieci neuronowych powstało z chwilą podjęcia próby komputerowego zasymulowania czynności wykonywanych przez ludzki mózg. Dziś już wiemy, że sieci neuronowe są
modelem bardzo niedokładnym, jednak mimo to wciąż znajdują one zastosowanie przy pisaniu
aplikacji komputerowych, w tym także gier.
Istnieją różne odmiany sieci neuronowych, wszystkie jednak jako podstawowy element budujący stosują tzw. neuron. Informacje podawane na wejście sieci są przez wspomniane neurony
w odpowiedni sposób przetwarzane i zapamiętywane, dzięki czemu uzyskujemy efekt „uczenia
się” nowych informacji przez sieć. Odpowiednio nauczona sieć jest następnie w stanie odtwarzać
zapamiętane informacje.
W grach komputerowych sieci neuronowe zostały po raz pierwszy wykorzystane (w produkcie
komercyjnym) w grze Colin McRae Rally 2.0 produkcji firmy Codemasters Software. Sieci
neuronowe użyte tam zostały do „uczenia się” kształtów tras (krzywizn łuków drogi, odległości
od zakrętów, rodzajów nawierzchni czy też prędkości i rodzajów pojazdów) i na tej podstawie
generowała zestaw danych wyjściowych dla samochodów sterowanych przez komputer, aby bez
przeszkód samochód taki mógł pokonać całą trasę. Oczywiście sieci neuronowe mogą zostać
także wykorzystane do sterowania postaciami przypominającymi człowieka - wtedy postać taka
może uczyć się np. zachowań żywego gracza (czyli naszych) i w ten sposób nauczyć się unikania
zagrożeń z naszej strony, lub też po prostu spróbować powielać stosowane przez nas schematy
w celu zwiększenia własnych umiejętności.
Zastosowanie sieci neuronowych poza grami komputerowymi jest bardzo szerokie. Do najpopularniejszych należą:
• w programach do rozpoznawania pisma (OCR),
• na lotniskach do sprawdzania, czy prześwietlony bagaż zawiera niebezpieczne ładunki,
• do syntezy mowy.
Jak więc widzimy autonomiczne sterowanie postaciami w wieloosobowych grach komputerowych
może być wykonywane z użyciem wielu różnych algorytmów. Algorytmy te wciąż są rozwijane i
udoskonalane, przez co nieustannie zbliżają się do generowania zachowań, które można by uznać
za typowo ludzkie.
5
3
Fotorealistyczna wizualizacja postaci
Przez fotorealistyczną wizualizację postaci będziemy rozumieli tutaj zarówno nadanie im
odpowiednio rzeczywistego wyglądu zewnętrznego (tekstura, oświetlenie itp.) jak i odpowiednią
ich animację.
3.1
Ray tracing
Na początku warto wspomnieć o bardzo popularnej technice generowania fotorealistycznych
obrazów jaką jest ray tracing. Metoda ta, choć nie pozbawiona wad (nie uwzględnia światła
rozproszonego, uniemożliwia prawidłowe modelowane zjawisk dyfrakcji, interferencji i innych
zjawisk falowych) daje bardzo dobre efekty. Niestety jest także bardzo kosztowna obliczeniowo,
dlatego bardziej nadaje się do prerenderowania statycznych obrazów czy animacji komputerowych niż do dynamicznych gier komputerowych, w których grafika renderowana jest w czasie
rzeczywistym.
Ray tracing jest techniką „śledzenia promieni”, które trafiają do obserwatora danej sceny.
Ray tracing musi zostać przeprowadzony dla wszystkich pikseli wyświetlanego obrazu, dlatego
czas renderowania jednej klatki animacji jest silnie związany z rozdzielczością wyświetlanego
obrazu. Ponadto na koszt obliczeń wpływa także stopień skomplikowania sceny (liczba świateł,
liczba obiektów oraz ich charakterystyka).
Skrótowo algorytm ray tracingu można przedstawić następująco:
1. Z punktu w którym znajduje się obserwator wyprowadzany jest promień pierwotny; promień
przecina rzutnię.
2. Wyszukiwany jest najbliższy punkt przecięcia z obiektami znajdującymi się na scenie.
3. Następnie dla każdego źródła światła zdefiniowanego na scenie wyznaczana jest jasność
w tym punkcie, zgodnie z określonym modelem oświetlenia (np. Lamberta czy Phonga).
Najczęściej także określa się cienie - w tym celu jest testowana widoczność źródła światła
z danego punktu, tj. czy światło nie jest przesłaniane przez jakiś obiekt i jeśli nie - dopiero
wówczas wyliczana jest jasność punktu dla tego źródła.
W grach ray tracing stosowany jest z dużym umiarem, a bardzo często - w ogóle. Sytuacja
ta jednak może zmienić się wraz z postępującym rozwojem technologii sprzętu komputerowego
(głownie kart graficznych) oraz obsługą tych technologii w nowych wersjach pakietów DirectX i
OpenGL.
3.2
Tekstury
Elementarnym sposobem upodabniania występujących w grach postaci (i generalnie wszystkich obiektów) do ich odpowiedników w świecie rzeczywistym jest nakładanie na przygotowane
wcześniej modele odpowiednio fotorealistycznych tekstur. Tekstury te, najczęściej przechowywane
w postaci tradycyjnych plików graficznych, są w trakcie procesu renderowania w ściśle określony
sposób nakładane na odpowiadający im model.
Tekstury dzielimy na dwie podstawowe grupy:
6
• bitmapowe - czyli najczęściej zdjęcia powierzchni rzeczywistych przedmiotów (ścian, tkanin,
kory drzew itp.),
• proceduralne - parametryzowane obrazy generowane programowo (szachownica, marmur,
drewno, granit, chmury itp.).
Proces nakładania tekstur na model nazywa się mapowaniem. W ten sposób można np.
płaską teksturę nałożyć na kulisty obiekt. Tekstura może być także ruchoma względem obiektu,
na który jest nakładana. Taka technika stosowana jest np. przy próbie symulowania metalicznych obiektów, które odbijają otoczenie.
3.3
Animacja postaci i technika motion capture
Grafikom pracującym przy tworzeniu animacji komputerowej ludzkich postaci od zawsze
problem nadania tym postaciom naturalnych, ludzkich ruchów spędzał sen z powiek. Z pomocą
przyszła im technika zwana motion captute, która polega na przechwytywaniu ruchów aktora
i przekładania ich na ruchy postaci komputerowej. Odbywa się to przy zastosowaniu kamer
rejestrujących oraz czujników (markerów), które aktor posiada przyczepione na swoim ciele.
Technikę motion capture stosuje się nie tylko do tworzenia animacji postaci jako całości,
ale również do urzeczywistniania mimiki twarzy komputerowych postaci. Odwiecznym mankamentem w grach komputerowym było bowiem to, że przemawiające ludzkim głosem postacie
robiły to bez otwierania ust. W późniejszych produkcjach usta te udało się grafikom i programistom „otworzyć”, ale ich ruchy wciąż nie były zsynchronizowane z głosem dobiegającym z
głośników. W obecnych produkcjach komputerowych bohaterowie „brzuchomówcy” należą już
do rzadkości, problemem pozostaje jednak dokładne dopasowanie kształtu ust do wymawianych
przez postać słów. Problem dodatkowo jest potęgowany przez wydawanie gier w wielu wersjach
językowych, przez co gra musiałaby posiadać osobne algorytmy generujące mimikę dla każdej z
tych wersji.
4
Podsumowanie
Dążenie producentów wieloosobowych gier komputerowych do możliwie wiernego odzwierciedlenia w grach świata rzeczywistego trwa właściwie od zawsze, i trudno spodziewać się, aby w
najbliższym czasie został osiągnięty w tej kwestii zadowalający ich oraz graczy poziom. Czynnikami ograniczającymi w tej dziedzinie możliwości twórców gier są wciąż zbyt mało wydajne
komputery oraz brak algorytmów, które w pełni wiernie odzwierciedlałyby rzeczywistość.
Zarówno w kwestii sztucznej inteligencji postaci komputerowych (m.in. ich autonomicznego
sterowania) jak i ich fotorealizmu informatyka wciąż posługuje się licznymi uproszczeniami. Są
one niedoskonałe na tyle, że przenosząc się w świat gier komputerowych nie zapominamy, że
jest to tylko wirtualna rzeczywistość, ale jednocześnie jesteśmy w nią zaangażowani na tyle, że
jesteśmy w stanie choć na chwilę zapomnieć o rzeczywiście otaczającym nas świecie...
7
5
Literatura
• Jakub Swacha, Sztuczna inteligencja w grach komputerowych
http://klubinformatyka.pl/artykul.php?a=12&s=1
• Krzysztof Wardziński, Przegląd algorytmów sztucznej inteligencji stosowanych w grach
http://www.hc.amu.edu.pl/numery/5/wardzinski.pdf
• Wikipedia
hasła: drzewa decyzyjne, sieci neuronowe, ray tracing, tekstura, motion capture
8

Podobne dokumenty