Umělá Inteligence Pro Openttd S Prvky Emotivního Chování
Total Page:16
File Type:pdf, Size:1020Kb
Masarykova univerzita Fakulta informatiky Umělá inteligence pro OpenTTD s prvky emotivního chování Bakalárska práca Michal Zopp Brno, jar 2018 Na tomto mieste sa v tlačenej práci nachádza oficiálne podpísané zadanie práce a vyhlásenie autora školského diela. Vyhlásenie Vyhlasujem, že táto bakalárska práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Michal Zopp Vedúci práce: Jaroslav Bayer i Poďakovanie Rád by som týmto poďakoval RNDr. Jaroslavovi Bayerovi za vedenie práce, odbornú pomoc, cenné rady pri implementácií a usmernenie pri testovaní. Ďalej by som chcel poďakovať svojej rodine a priateľke za podporu a pomoc pri korektúre práce. ii Zhrnutie Táto práca sa zameriava na rozšírenie umelej inteligencie o prvky emotívneho správania do hry Open Transport Tycoon Deluxe. Pojem emotívne správanie sa v kontexte práce chápe ako detekcia, obrana a reakcia na útoky smerované proti umelej inteligencií. Vytvoreńa umelá inteligencia sa snaží, čo najlepšie napodobniť správanie ľud- ského protivníka. Súčasťou práce je porovnanie dostupných umelých inteligencií a vybratie najlepšieho kandidáta na implementáciu vlast- ného emotívneho správania. Túto implementáciu následne porovnať pri výkone s ostatnými umelými inteligenciami. iii Kľúčové slová game AI, OpenTTD, emotions, Squirrel iv Obsah 1 Úvod 1 2 Open Transport Tycoon Deluxe 3 2.1 Cieľ hry ............................3 2.2 Popis hry ...........................4 3 Programové prostredie 7 3.1 Squirrel ............................7 3.2 NoAI framework .......................8 3.3 Štruktúra AI .........................9 3.4 Práca s AI ........................... 10 4 Typy útokov a obrana 12 4.1 Cestná doprava ........................ 12 4.2 Ostatné typy dopravy ..................... 16 5 Výber vhodnej umelej inteligencie 19 5.1 AdmiralAI ........................... 20 5.2 DictatorAI ........................... 21 5.3 SimpleAI ........................... 21 6 EmotionAI 22 6.1 Základné vlastnosti EmotionAI ................ 22 6.2 Návrh a implementácia EmotionAI .............. 23 6.3 Implementačné detaily .................... 25 7 Porovnanie 29 7.1 Výsledky testov celkovej úspešnosti EmotionAI ....... 29 7.2 Výsledky testov samostatných AI ............... 32 7.3 EmotionAI vs AdmiralAI ................... 35 8 Sumarizácia 37 8.1 Možné vylepšenia do budúcna ................ 37 8.2 Záver ............................. 38 v Zoznam tabuliek 5.1 Zostávajúce AI po aplikácií uvedených parametrov 20 7.1 Tabuľka hodnôt spoločnosti AdmiralAI (v tisícoch £) pri zablokovaniu ciest 33 7.2 Tabuľka hodnôt spoločnosti EmotionlAI (v tisícoch £) pri zablokovaniu ciest 34 vi Zoznam obrázkov 2.1 Stavebné menu pre cestnú dopravu 5 2.2 Stavebné menu pre železničnú dopravu 5 4.1 Jednoduché zablokovanie cesty 13 4.2 Príklad obchádzky pre jednoduchú aj pokročilú blokádu cesty 14 4.3 Zablokovanie príjazdovej cesty do mesta 14 4.4 Vozidlo je stratené 15 4.5 Príklad dvoch staníc pri jednom priemysle 16 4.6 Príklad zrazeného auta na priecestí a následná správa 17 4.7 Príklad zablokovania lode v prístave 18 6.1 Ukážka závislostí medzi triedami v EmotionAI 23 6.2 Príklad pre použitie funkcie IsLevelCrossingTile() 25 6.3 Špirálovitá analýza políčok od daného stredu 27 7.1 Výsledky testov pre mapu 256x256, príjem spoločností 30 7.2 Výsledky testov pre mapu 256x256, hodnota spoločností 30 7.3 Výsledky testov pre mapu 1024x1024, príjem spoločností 31 7.4 Výsledky testov pre mapu 1024x1024, hodnota spoločností 32 7.5 Výsledky kontrolných testov 35 7.6 Výsledky testov cestných blokád 36 vii 1 Úvod Význam umelej inteligencie (ďalej iba AI) sa v poslednej dobe dostáva do popredia, ako možné riešenie problému, nie pomocou striktných počítačových pravidiel, ale vlastným úsudkom. Všetky tieto riešenia majú spoločné to, že nikto nenapísal programu, ako presne má postu- povať, ale on si to zistil sám. AI má potenciál pre mnoho využití, od samo jazdiacich áut až po odhady v ekonómii či prístrojoch v zdravot- níctve [GP95]. Táto bakalárska práca sa zameriava na tvorbu AI pre hru Open Transport Tycoon Deluxe (ďalej iba OpenTTD). AI sú v dnešnom her- nom svete veľmi rozšírené a obľúbené. Príkladom umelej inteligencie v hrách môžu byť takzvaní počítačom ovládaní protivníci, generovanie hráčskej plochy alebo aj simulácie. AI v hrách sa prevažne chápe ako sada algoritmov, ktoré zahŕňajú okrem iného, aj techniky kontroly riadenia. Herné AI teda nepredstavujú „reálne“ umelé inteligencie v tom zmysle, že by sa učili z veľkého množstva dát a rozhodujú na ich základe o výsledku, ale fungujú nad vopred určenou množinou vstupov a produkujú obmedzený počet odpovedí [Mil06]. Cieľom tejto práce je rozšírenie niektorej existujúcej umelej inteli- gencie pre hru OpenTTD o emocionálnu stránku. Hlavným rozdielom od ostatných iných AI pre OpenTTD je, že bude reagovať na rôzne ak- cie z pohľadu hernej stratégie druhého hráča. Pod pojmom „emotívne správanie“ v umelej inteligencii si teda môžeme predstaviť bližšie na- podobnenie správanie ľudského hráča. Takáto AI má teda za úlohu, čo najlepšie replikovať správanie reálneho hráča. Hra dovoľuje naprí- klad zablokovanie cesty tak, aby nebol možný prejazd vozidiel. Po zistení tejto skutočnosti bude vytvorená AI, podľa dostupných pros- triedkov, na túto skutočnosť adekvátne reagovať. Následne sa bude snažiť majiteľovi tejto zátarasy oplatiť jeho zlomyseľné správanie. Kapitola 2 predstavuje základné charakteristiky hry OpenTTD, po- pisuje možnosti hry a jej hlavný cieľ. Na programovanie AI do hry OpenTTD je nutné sa zoznámiť s princípmi jazyka Squirrel a kostrou umelej inteligencie, ktorá je popísaná v kapitole 3. V kapitole 4 sú popísané možné útoky hráčov, ktoré sú v hre realizovateľné. V tejto kapitole sú taktiež možné spôsoby obrany proti daným útokom. Práca zahrňuje výber najlepšieho kandidáta zo zoznamu umelých inteligen- 1 1. Úvod cií 1 a vylepšenie jej emocionálneho správania. Tento proces, ako aj bližší popis iných AI zo zoznamu, je popísaný v kapitole 5. Kapitola 6 obsahuje konkrétnu implementáciu a rozširovanie vybranej AI. Ka- pitola taktiež popisuje komplikácie ktoré nastali pri implementácií rôznych útokov popísaných v kapitole 4. Kapitola 7 obsahuje porovna- nie AI v rámci celkového zárobku. V poslednej kapitole sa nachádza sumarizácia práce a možné vylepšenia AI do budúcna. 1. https://bananas.openttd.org/en/ai/ 2 2 Open Transport Tycoon Deluxe Hra OpenTTD je pokračovanie pôvodnej budovateľskej hry Transport Tycoon Deluxe od firmy MicroProse z roku 1994, ktorá bola podporo- vaná iba na operačných systémoch DOS. Dnes je OpenTTD oficiálne preložená a spustená na rôznych platformách, ako napríklad Micro- soft Windows či Linux. Neoficiálne podporované platformy sú okrem iného, aj mobilné zariadenia. OpenTTD preberá všetky vlastnosti pô- vodnej hry a rozširuje ju o možnosť nastavenia veľkosti mapy, hru pre viac hráčov, jazykovú lokalizáciu, zvuky a podporu pre AI. Hra je do- stupná pod licenciou GNU General Public Licence verzia 2.0 (GPLv2). To znamená, že je každému umožnené pridávať vyššie spomenutú funkcionalitu bez striktných legálnych obmedzení. OpenTTD už podľa svojho názvu vzbudzuje dojem, že v hre nie je núdza o rôzne formy doplnkov, či už z oblasti grafiky alebo hrateľ- nosti hry. Tieto doplnky môžu byť vytvorené aj komunitou hry. Takto vytvorené doplnky sú voľne dostupné a ďalej modifikovateľné podľa vlastnej potreby. 2.1 Cieľ hry Cieľom hry je dosiahnuť čo najväčšiu hodnotu spoločnosti v ustano- venom konečnom čase (typicky do roku 2050). Hodnota spoločnosti zahrňuje celkový príjem, počet staníc, dopravných prostriedkov, doru- čeného tovaru a podobne. Na dosiahnutie tohto cieľa sú k dispozícii tieto druhy prepravy: • cestná – najlacnejšia, výhodná aj v neskorších štádiách hry, pri rozvíjaní mesta, • železničná – možnosť prevozu iba jednej vlakovej súpravy na určitom úseku železnice v daný čas, • letecká – najrýchlejšia, drahá, potreba širokého priestoru pre letiská, • lodná – najpomalšia, výhodná v neskorších štádiách hry. 3 2. Open Transport Tycoon Deluxe Hra začína v roku 1950 s vygenerovanými mestami a priemys- lami, podľa daných špecifikácií hry (nastavenie sa dá zmeniť pred začatím hry). Kdekoľvek na mape je možná stavba staníc a následná preprava tovaru alebo ľudí z jednej stanice do druhej. Kúpa doprav- ného prostriedku je možná v depe. Pre každý typ dopravy je iné depo. Následne, podľa nastavenia jednotlivého dopravného prostriedku, je možné určiť spôsob plnenia nákladu (percentuálne, vždy doplna). Vý- sledná cena za prepravu daného materiálu alebo ľudí je potom určená jeho množstvom, vzdialenosťou staníc a rýchlosťou prepravy. V hre je zavedené takzvané starnutie dopravných prostriedkov, čiže je po- trebná neustála kontrola spoľahlivosti liniek a obmieňanie chybných dopravných prostriedkov. 2.2 Popis hry Po vygenerovaní mapy sa hráč ocitne vo svete plnom osamelých prie- myselných zón a miest. Hráč sa môže cítiť bezradne, lebo na prvý pohľad nemusí byť vôbec jasné, ako v hre postupovať. Napriek tomu je veľmi jednoduché pochopiť, ako a kde hľadať potrebné veci. Všetko v OpenTTD sa dá ovládať z hlavného horného panela hry. Hráč tam nájde všetko potrebné, od grafického nastavenia hry až po signalizačné semafory pre vlaky. Pred začatím stavby si najprv hráč musí rozmyslieť a zrátať, ktorá možnosť je pre neho podľa dostupných údajov na mape najvýhodnejšia. Keď sa hráč rozhodne pre cestnú dopravu, stačí