Spis Treści 1. Wprowadzenie ................................................................................................................................. 2 1.1 Wstęp ....................................................................................................................................... 2 1.2 Cel pracy.................................................................................................................................. 2 1.3 Zakres pracy ............................................................................................................................ 2 1.4 Użyte technologie .................................................................................................................... 2 1.4.1 Unity 3D .......................................................................................................................... 3 2. Sztuczna inteligencja w grach komputerowych .............................................................................. 4 2.1 Zadanie sztucznej inteligencji w grach komputerowych ......................................................... 4 2.2 Historia sztucznej inteligencji w grach komputerowych ......................................................... 4 2.3 Automaty stanów skończonych ............................................................................................... 4 2.4 Logika rozmyta........................................................................................................................ 4 2.5 Algorytmy stadne .................................................................................................................... 4 2.6 Drzewa decyzyjne ................................................................................................................... 4 2.7 Algorytmy grafowe i heurystyczne przeszukiwanie drogi ...................................................... 4 2.8 Sztuczne sieci neuronowe........................................................................................................ 4 3. Projekt komputerowej gry strategicznej .......................................................................................... 5 3.1 Plansza ..................................................................................................................................... 5 3.2 Zasady rozgrywki .................................................................................................................... 5 3.3 Warunki zwycięstwa ............................................................................................................... 5 3.4 Funkcjonalności....................................................................................................................... 5 4. Implementacja komputerowej gry strategicznej .............................................................................. 6 4.1 Graficzny interfejs użytkownika ............................................................................................. 6 4.2 Struktura programu.................................................................................................................. 6 5. Zastosowane metody sztucznej inteligencji .................................................................................... 7 5.1 Algorytmy grafowe ................................................................................................................. 7 5.2 Logika rozmyta i automaty stanów skończonych.................................................................... 7 5.3 Algorytmy stadne .................................................................................................................... 7 5.4 Drzewa decyzyjne ................................................................................................................... 7 6. Podsumowanie................................................................................................................................. 8 6.1 Efekty implementacji .............................................................................................................. 8 6.2 Wady i zalety aplikacji ............................................................................................................ 8 6.3 Możliwość rozwoju ................................................................................................................. 8 6.4 Podsumowanie użytych metod sztucznej inteligencji ............................................................. 8 6.5 Zakończenie............................................................................................................................. 8 7. Bibliografia...................................................................................................................................... 9 1. Wprowadzenie 1.1 Wstęp 1.2 Cel pracy Celem pracy jest implementacja komputerowej gry strategicznej wykorzystującej wybrane metody sztucznej inteligencji. Jest to typowo inżynierski aspekt pracy, który jest dość obszerny. Aspektem badawczym pracy jest wybór, wieloaspektowa analiza oraz porównanie metod sztucznej inteligencji z użyciem autorskich wskaźników jakości. Metody te będą musiały być zaimplementowane, ocenione, a następnie niektóre z nich zostaną użyte w implementowanej grze. Zanim zostaną wybrane konkretne metody poddane analizie zostanie wykonany przegląd literaturowy pod kątem praktycznego wykorzystania rozwiązań w grach. Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji. 1.3 Zakres pracy 1.4 Użyte technologie Głównym aspektem inżynierskim pracy jest implementacja gry strategicznej. Do tego celu wybrane zostało narzędzie Unity 3D. Jest zarówno narzędziem graficznym jak i środowiskiem programistycznym pozwalającym na używanie takich języków jak JavaScript oraz C#. Dzięki temu możliwe będzie wykorzystanie zalet framework .NET 3.5. Głównym aspektem badawczym pracy jest porównanie metod sztucznej inteligencji. Do tego celu zostanie wykorzystany głównie język C# wraz z .NET 3.5. Zrealizowanie wszystkich algorytmów w tej samej technologii ułatwi użycie ich w gotowym projekcie oraz pomoże obiektywnie je ocenić. 1.4.1 Unity 3D Unity 3D [5] jest silnikiem graficznym do tworzenia gier i dostarcza narzędzia wystarczające do stworzenia w pełni funkcjonalnej gry z trójwymiarową grafiką. Bezpłatna wersja silnika nie pozwala na komercyjne wykorzystanie, a także nie zawiera wielu dodatkowych narzędzi dostępnych w wersji Unity PRO. Wraz z silnikiem dostarczane jest aplikacja Unity Editor wspomagająca tworzenie scen 3D. W edytorze można tworzyć obiekty, przypisywać do nich skrypty czy trójwymiarowe modele, a następnie zbudować gotową już aplikację. Środowisko łatwo radzi sobie z importowaniem do projektu trójwymiarowych modeli stworzonych w takich programach jak Blender, Maya czy 3D Studio Max. Potrafi użyć również plików graficznych czy dźwiękowych. Obsługuje on takie języki jak JavaScript, Boo oraz C#. W projekcie po stronie aplikacji klienckiej przeważa zdecydowanie C#, niektóre elementy oprogramowane są przy użyciu JavaScript. Unity Editor można rozbudowywać na podstawie dostarczonego interfejsu. Każda właściwie zaimplementowana klasa, która jest odpowiednio przyporządkowana do obiektu w edytorze jest przez niego wyświetlana tak, że bez pomocy edytora tekstowego można zmieniać jej publiczne argumenty. Możliwe jest tworzenie komponentów edytora które będą pozwalały na szybsze tworzenie gier. Edytor obsługuje takie języki jak JavaScript, Boo oraz C#. W projekcie po stronie aplikacji klienckiej przeważa zdecydowanie C#, niektóre elementy oprogramowane są przy użyciu JavaScript. Rys. 1.4.1.1 Unity Editor dostarczany wraz z silnikiem Unity 3D 2. Sztuczna inteligencja w grach komputerowych 2.1 Zadanie sztucznej inteligencji w grach komputerowych 2.2 Historia sztucznej inteligencji w grach komputerowych 2.3 Automaty stanów skończonych 2.4 Logika rozmyta 2.5 Algorytmy stadne 2.6 Drzewa decyzyjne 2.7 Algorytmy grafowe i heurystyczne przeszukiwanie drogi 2.8 Sztuczne sieci neuronowe 3. Projekt komputerowej gry strategicznej 3.1 Plansza 3.2 Zasady rozgrywki 3.3 Warunki zwycięstwa 3.4 Funkcjonalności 4. Implementacja komputerowej gry strategicznej 4.1 Graficzny interfejs użytkownika 4.2 Struktura programu 5. Zastosowane metody sztucznej inteligencji 5.1 Algorytmy grafowe 5.2 Logika rozmyta i automaty stanów skończonych 5.3 Algorytmy stadne 5.4 Drzewa decyzyjne 6. Podsumowanie 6.1 Efekty implementacji 6.2 Wady i zalety aplikacji 6.3 Możliwość rozwoju 6.4 Podsumowanie użytych metod sztucznej inteligencji 6.5 Zakończenie 7. Bibliografia • • • • • • • • • • • • Perełki programowania gier. Vademecum profesjonalisty. Dante Treglia, Mark DeLoura. Tom 1-6. http://ai-depot.com/GameAI/ – Artykuł (ang.) http://aigamedev.com/ – Forum, artykuły, gotowe rozwiązania (ang.) http://www.gameai.com/ – Lista dyskusyjna, zbiór publikacji (ang.) Unity 3D Game Development by Example Beginner's Guide - Ryan Creighton (ang.) Unity Game Development Essentials - Will Goldstone (ang.) Unity3d.com/ Unity: Game Development Tool (ang.) Unity3d.com/support/documentation/ScriptReference/index.html (ang.) Unity3d.com/support/documentation/Manual/index.html (ang.) Grafy, drzewa, algorytmy genetyczne • Algorytmy i struktury danych - Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman P# • http://zine.net.pl/blogs/mgrzeg/archive/2007/04/10/psharpintro.aspx Algorytmy stadne • http://zsi.ii.us.edu.pl/~mboryczka/IntStad/ • http://zsi.ii.us.edu.pl/~mboryczka/materialy.html