1 IEEE Conference on Computational Intelligence and GamesCzyli gdzie gry łączą się z nauką
2 O co w ogóle chodzi? Jak w tytule: łączymy granie w gry z nauką, a konkretnie ze sztuczną inteligencją Różne rodzaje gier: komputerowe, planszowe, matematyczne… Mądrzy ludzie wysyłają papery związane z tematem konferencji i prowadzą wykłady Zawody botów do gier (niestety, tylko komputerowych…) – o tym będziemy mówić Konferencja odbywa się co roku od 2005, na początku jako IEEE Symposium on Computational Intelligence and Games, od 2010 pod aktualną nazwą
3 Jakie mamy zawody? The 2K BotPrize Competition (Unreal Tournament 2004) Simulated Car Racing Championship StarCraft Competition Physical Travelling Salesman Problem Ms Pac-Man vs Ghost Team Competition Ms Pac-Man Screen Capture Competition Mario AI Championship: Gameplay and Learning Tracks Mario AI Championship: Level Generation Track Mario AI Championship: Turing Test Track
4 Mario AI Championship - zasadyMario chodzi w lewo i w prawo, może skakać, biegać i strzelać ognistymi kulkami (tylko w stanie Fire) Są trzy stany Mario: Small, Big i Fire Przeszkody to dziury i potwory, dziury zabijają całkiem, potwory robią „downgrade” stanu Czas nie jest rzeczywisty – 25 razy na sekundę pytamy o aktualnie wciśniętą kombinację klawiszy
5 Gameplay and Learning TracksMamy generator map, pod który podłączamy agenta Generator jest jawny, ale nie znamy seeda, który zostanie użyty podczas konkursu Wygrywa ten, kto przejdzie średnio największy dystans W przypadku remisu decydują kolejno: liczba zabitych potworów, liczba zebranych monet, czas w mariosekundach, czas działania aplikacji
6 Algorytm Robina BaumgartenaPomijając wszelkie bonusy (monety, punkty za zabite potwory itp.), szukamy najszybszej drogi, którą Mario może przejść i nie zginąć – zgodnie z podstawowym kryterium oceny, jakim jest liczba ukończonych poziomów Krok 1/3: odtwarzamy fizykę gry w kliencie, uwzględniając stan świata i ruch obiektów Choć fizyka jest w generatorze, chcemy ją oczyścić ze „śmieci” (np. funkcji odpowiedzialnych za wizualizację) oraz stworzyć model, który potrafi przewidzieć stan gry w przyszłości (np. po wykonaniu konkretnego ruchu)
7 Algorytm Robina BaumgartenaKrok 2/3: implementacja algorytmu A* A* to prosty algorytm heurystyczny, który szuka najtańszej drogi od punktu startowego w grafie do pewnego punktu końcowego (jednego z wielu) W uproszczeniu: od wierzchołka startowego tworzymy krok po kroku ścieżkę, za każdym razem wybierając następny wierzchołek tak, by minimalizować sumę długości stworzonej dotychczas ścieżki i przewidywanej długości ścieżki do mety Jak jednak w Mario zdefiniować wierzchołki i krawędzie? Jak należy estymować odległość od mety?
8 Algorytm Robina BaumgartenaWierzchołek to aktualny stan świata: położenie i stan Mario, położenie potworów (i kierunek ich ruchu), klocków, monet itd. Wierzchołki sąsiadują, jeśli można przejść pomiędzy nimi w jednym kroku symulacji (patrz rys.)
9 Algorytm Robina BaumgartenaA tak to wygląda w grze:
10 Algorytm Robina BaumgartenaPonieważ nie widzimy nic poza ekranem gry, planowanie dalej niż koniec tego ekranu mija się z celem – za wierzchołki końcowe przyjmujemy najdalsze widoczne wierzchołki Funkcja oczekiwanej drogi do celu jest prosta: zakładamy, że Mario pędzi do prawej krawędzi najszybciej, jak to możliwe (uwzględniamy przy tym jego aktualną prędkość) Krok 3/3: optymalizacja (konieczna, bo na ruch mamy tylko 40 ms) Jeśli nie mamy już czasu, zgłaszamy najlepszy ruch z tych, które dotąd sprawdziliśmy (nie jest kłopot, gdyż generator map nie tworzy ślepych zaułków)
11 Algorytm Robina BaumgartenaTrochę łagodzimy zasady – mnożymy przewidywaną długość optymalnej ścieżki przez pewien współczynnik w > 1 (z badań wynika, że w ≈ 1,11 jest dobre) Ograniczamy liczenie tego samego wielokrotnie, gdy odkrywamy nowy fragment mapy – okazuje się, że najlepiej liczyć ścieżkę od nowa co drugą turę (planowanie od razu większej ilości ruchów doprowadza do wpadania na potwory lub straty dużej ilości czasu)
12 Inne pomysły? Definiowanie „danger level” dziur i przeciwników, ruchy bazujące na tym „Czy skaczę?” i „Jak skaczę?” Maszyna stanowa Drzewo wyrażeń badane algorytmami genetycznymi Baza: wirtualna maszyna ze stosem, algorytm genetyczny Uczenie się na ruchach ludzi (!) połączone z algorytmami znajdowania ścieżek, wykorzystujemy sieci neuronowe I było jeszcze trochę innych pomysłów, ale…
13 Inne pomysły? …i tak A* jeszcze w 2009 roku niszczył system:
14 Mario AI Championship – konkurencjaW 2010 zaczęły pojawiać się inne, konkurencyjne rozwiązania, Baumgarten zaś nie wprowadzał do swojego znacznych poprawek Sieć neuronowa Siergieja Polikarpowa pokonała Baumgartena na konferencji WCCI, ale na CIG bezkonkurencyjny okazał się silnik REALM, stworzony przez Sławomira Bojarskiego i Clare’a Batesa Idea: rule-based, do którego wprowadzamy algorytmy ewolucyjne Zaczynamy od zahardkodowanych danych, które stanowią nietykalną podstawę, potem szukamy coraz lepszych rozwiązań
15 Mario AI Championship – Level GenerationTworzymy generator map do gry – te mapy są później oceniane przez jury Mapa musi zawierać konkretną liczbę bloków, potworów itp. (zapobieganie zahardkodowanym mapom) – regułę ostatecznie nieco złagodzono, gdyż uczestnicy uznali, że trudno stworzyć ciekawą mapę przy takich ścisłych zasadach Ocena: sędzia dostaje dwie mapy i wybiera, która była bardziej „funowa” Aby było uczciwie, każdy sędzia ocenia każdą parę generatorów tyle samo razy
16 Level Generation - algorytmyTworzenie etapowe: podłoże -> wzgórza -> rury -> potwory -> klocki -> monety. W każdym etapie wprowadzamy zdarzenia, których prawdopodobieństwo ustalił autor (np. w pierwszym etapie: zacznij/zakończ przepaść, zmień wysokość gruntu)
17 Level Generation - algorytmyZgodnie z teorią pana Csikszentmihalyi, przyjemność gracza ma „przepływać” i zależy od trudności poziomu oraz umiejętności gracza. Idea algorytmu: mamy zbiór zbudowanych fragmentów mapy, które oceniamy, z najlepszych budujemy całość
18 Level Generation - algorytmyAlgorytm ewolucyjny z wykorzystaniem funkcji dopasowania oraz teorii mieszania trudnych i łatwych fragmentów w levelach Programowanie liniowe: na podstawie gry gracza tworzymy wektor z informacjami o nim, klasyfikując go i dostosowując do niego mapy
19 Mario AI Championship – test TuringaPrzerobieni agenci z Gameplay Track W 2010 najlepszy REALM, w 2012 niejaki Vinay Sudha Ethiraj Niestety, brak dobrych paperów na temat
20 Mario AI Championship To teraz na YouTube’a!
21 StarCraft CompetitionZasady właściwie nie różnią się od standardowych gier – z tą różnicą, że gry toczone są bardzo szybko Choć wszystkie rasy są dozwolone, w dwóch ostatnich podium było zajęte przez boty grające Protossami Co więcej, dwa pierwsze miejsca należały do tych samych uczestników Crash bota oznacza porażkę W 2012 roku było 6 map – po trzy dla trzech i sześciu graczy Olbrzymia ilość gier – na każdej mapie każda możliwa kombinacja 10 botów grała ze sobą 15 razy (!), co daje 810 meczów na bota
22 Strategie 2011 BroodwarBotQ (4. miejsce): techniki probabilistyczne dla mikrozarządzania oraz ekonomii. Wykorzystuje model Bayesa utworzony na podstawie gier dobrych graczy, by odkryć strategię przeciwnika (i ją wykorzystać) oraz inny model Bayesa do mikrozarządzania. Choć wyszedł z grupy, w finale wygrał tylko 1 mecz z 30 Xelnaga (3. miejsce): prosty kod, bot nastawiony na wykonanie celu. Wykorzystuje bazę reguł
23 Strategie 2011 UAlbertaBot (2. miejsce): taktyka wywierania bardzo szybkiej i ciągłej presji na przeciwniku. Budowy są planowane i implementowane za pomocą heurystycznego przeszukiwania w głąb Skynet (1. miejsce): szybka analiza terenu, zaawansowane algorytmy budowania (budujemy na małej przestrzeni, ale tak, by jednostki mogły przejść pomiędzy budynkami), makrosystem zadań, który tworzy plan działania i na bieżąco go aktualizuje
24 Spostrzeżenia i ciekawostkiBoty się gubią, kiedy dzieje się coś niespodziewanego (crashe) Częsta taktyka: zealot rush Praktycznie wszystkie boty specjalizują się w jednej rasie (jeden wyjątek), ale taktykę dostosowują do rasy przeciwnika… …choć podobno wychodzi im to marnie Jeden z botów (BotQ) aktywnie korzystał z zasobów przeciwników. Inny bot (BTHAI) stosował taktykę krycia się we wrogich bazach Boty nie umieją dokończyć prawie wygranej gry Boty mają problemy, gdy nie znają terenu
25 Spostrzeżenia i ciekawostkiBoty nie współpracują, by wyeliminować wspólnego przeciwnika Wyniki botów często zależą od wielkości mapy (np. UAlbertaBot był lepszy na dużych mapach dzięki rozbudowanemu skautingowi) W 2012 roku żaden bot nie grał Zergami
26 The 2K BotPrize Competition: DeathMatch, czyli zbieramy jak najwięcej fragów w 10 minut Trzech uczestników: sędzia, gracz i bot Po meczu sędzia ocenia w skali 1-5 (1 – marny bot, 5 – prawdziwy człowiek) Gramy w real time, mapy w 3D, często zawierają „hinty” (np. tabliczka sygnalizująca, że warto używać snajperki) – te hinty usuwamy Mechanizm podpowiadania botom dobrej broni w danej sytuacji - usunięty
27 The 2K BotPrize CompetitionWyniki takie sobie – w 2008 było pięciu sędziów, dwa boty „ogłupiły” dwóch z nich W 2009 każdy bot nabrał dokładnie jednego sędziego (co ciekawe, nie tego samego) Główne grzechy: zapominanie o przeciwnikach, nienaturalne przestoje, zbyt celne strzały, upartość Cechy ludzi: agresywność, reagowanie na sytuację, korzystanie ze specjalnej broni
28 Strategie SQLite Bot, zwycięzca 2009: bot wykorzystujący bazę danych w SQL-u do zapamiętywania wydarzeń Zapamiętywanie „hotspotów” – miejsc, w których działa się akcja Analiza mapy pod kątem mało widocznych miejsc – dobre do ucieczki z małym HP Unikanie powtarzania nieskutecznych akcji – jeśli nic się nie dzieje, zmieniamy strategię Aby nie być „podejrzanym”, czasami specjalnie pudłujemy
29 Strategie ICE, 2. miejsce 2008-2009: u podstawy maszyna stanowaDwa stany: zbieranie itemów i walka System bodźców, które wywołują zmianę stanu (np. dostrzeżenie przeciwnika, zabicie przeciwnika) W trybie poszukiwawczym szukamy optymalnych ścieżek zbierania przedmiotów (algorytm A*) W trybie walki wybieramy jedną z siedmiu strategii na podstawie ustalonych reguł, tak samo wybieramy broń Umyślnie obniżamy trochę swoje umiejętności (celność strzałów)
30 Strategie ISC, 3. miejsce 2008: sieć neuronowaDwa systemy uczenia się, na podstawie których określamy zachowanie i wybieramy broń Wprowadzenie losowości, by udawać ludzi (np. po trafieniu przez przeciwnika czekamy losową ilość czasu przed odwróceniem się i strzelamy też po losowym czasie) Uczymy się reguł, np. „jeśli masz przewagę nad przeciwnikiem, to inicjuj walkę”, nagrody za postępowanie zgodnie z nimi
31 Zasady 2010 W 2010 roku znaczna zmiana reguł – na serwer wchodzimy kiedy i jak chcemy Specjalna broń (przerobiony Link Gun), która ma dwa tryby działania: w trybie „podstawowym” zabijamy boty jednym strzałem, dostając 10 fragów, ale trafienie człowieka to nasza śmierć za -10, w trybie „alternatywnym” – na odwrót System bardzo wygodny – nie trzeba synchronizacji meczów, bez problemów z zamykaniem w pokojach itd. Ocena odbywa się poprzez strzelanie Link Gunem, bez czekania na werdykty
32 The 2K BotPrize CompetitionOglądamy filmiki
33 KONIEC