AZ (algorytmika i złożoność obliczeniowa)PD (przetwarzanie danych)
Opis przedmiotu:
**Artificial Intelligence for Games**
(przedmiot może być prowadzony w języku angielskim na życzenie studentów)
Wykład ma na celu przedstawienie metod sztucznej inteligencji wykorzystywanych
na potrzeby gier. Do tematu podejdziemy z trzech stron: omawiając algorytmy
służące do grania w gry, proceduralnego generowania ich zawartości oraz
wykorzystywane w silnikach gier. Chciałbym zobrazować jak wiele różnorodnych i
skomplikowanych algorytmów znajduje się w przeciętnej grze oraz dać możliwość
ich zaprogramowania korzystając z multimedialnych platform do walk AI.
Oprócz tego znaczna część kursu będzie polegała na omówieniu aktualnie
prowadzonych badań w dziedzinie Artificial Intelligence / Computational
Intelligence in games. Omówimy sobie m.in. metody AI wspomagające tworzenie
gier (głównie oparte na algorytmach ewolucyjnych), ideę i postępy w dziedzinie
General Game Playing oraz algorytm MCTS wykorzystywany m.in. w Google
DeepMind's AlphaGo.
Kurs jest przeznaczony dla osób bezpośrednio zainteresowanych tematyką, a
także chcących pogłębić swoją wiedzę związaną z AI - nie tylko w kontekście
gier; oraz chcących pogłębić swoją wiedzę związaną z programowaniem gier - nie
tylko w kontekście AI. Kurs wymaga dobrej znajomości podstaw Sztucznej
inteligencji oraz umiejętności programistycznych.
Wykonane w ramach kursu projekty, jeśli będą odpowiednio dobrej jakości, mogą
stanowić podstawę do pracy licencjackiej, inżynierskiej lub magisterskiej.
**Struktura kursu:**
Zaliczenie oparte będzie na:
* kilku małych zadaniach (w pierwszej części semestru);
* (prawdopodobnie) drobnym egzaminie połówkowym;
* projekcie grupowym (2-3 osoby) wykonywanym w drugiej części semestru;
* raporcie z projektu zaliczanym do egzaminu.
Proponowane tematy projektów to:
* implementacja agenta na zawody organizowane w ramach konferencji naukowych poświęconych AI, np. [CIG](http://cig16.image.ece.ntua.gr/competitions/);
* wykorzystanie technik proceduralnego generowania zawartości do tworzenia ineteresujących i przydatnych obiektów (najlepiej związanych z grami);
* zaprogramowanie ciekawej gry umożliwiającej podpinanie AI stworzonych przez użytkowników;
* ... lub też inne zaproponowane przez studentów.
**Literatura:**
* głównie prace naukowe z dziedziny (udostępniane przez wykładowcę)
* N. Shaker, J. Togelius, M. J. Nelson, Procedural Content Generation in Games (<http://pcgbook.com/>)
* I. Millington, J. Funge, Artificial Intelligence for Games (2nd Ed.)
* M. Buckland, Programming Game AI by Example
* S. Rabin (ed.), Game AI Pro^2: Collected Wisdom of Game AI Professionals
* S.J. Russell, P. Norvig, Artificial Intelligence A Modern Approach (3rd Ed.)
**Wstępny program wykładu:**
* Monte Carlo Tree Search, advanced min-maxing
* General Game Playing
* Search-based Procedural Content Generation
* Grammar-based and constraint-based PCG
* Game Generation
* Movement, pathfinding: A* (real-time, dynamic environment), hierarchical pathfinding, crowds movement
* Decision making: decision trees, automata, fuzzy logic, ...
* Tactic and Strategy,
* NPC behaviour modelling
* Neuroevolution in games