Tower Defense AI Turnaj Student: Martin Sedláček Vedoucí: Ing
Total Page:16
File Type:pdf, Size:1020Kb
ZADÁNÍ BAKALÁŘSKÉ PRÁCE Název: Tower Defense AI turnaj Student: Martin Sedláček Vedoucí: Ing. Eliška Šestáková Studijní program: Informatika Studijní obor: Webové a softwarové inženýrství Katedra: Katedra softwarového inženýrství Platnost zadání: Do konce letního semestru 2019/20 Pokyny pro vypracování Seznamte se s problematikou implementace strategických her typu Tower Defense - analyzujte použité algoritmy pro navigaci jednotek po herní mapě a existující způsoby rozlišení herní obtížnosti. Dále se seznamte s hrami, které poskytují API pro napojení externí umělé inteligence. Na základě této analýzy navrhněte a implementujte prototyp vlastní strategické hry typu Tower Defense, jenž bude kromě lidského hráče poskytovat také komunikační API zpřístupňující ovládání hry pro napojení umělé inteligence (externích agentů). Hru vhodně parametrizujte, aby poskytovala více herních úrovní (základní, střední a těžká obtížnost). Navrhněte též algoritmus pro generování náhodné herní mapy. Proveďte uživatelské testování výsledné implementace. Navrhněte alespoň tři různé umělé inteligence, otestujte jejich chování a vyhodnoťte jejich úspěšnost ve hře. Seznam odborné literatury Dodá vedoucí práce. Ing. Michal Valenta, Ph.D. doc. RNDr. Ing. Marcel Jiřina, Ph.D. vedoucí katedry děkan V Praze dne 27. listopadu 2018 Poděkování Chtěl bych poděkovat především své vedoucí bakalářské práce Ing. Elišce Šestákové za její vedení a trefné poznámky. Dále děkuji všem testerům za je- jich pomoc. Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů. V souladu s ust. § 46 odst. 6 tohoto zákona tímto uděluji nevýhradní oprávnění (licenci) k užití této mojí práce, a to včetně všech počítačových programů, jež jsou její součástí či přílohou, a veškeré jejich dokumentace (dále souhrnně jen Dílo“), a to všem osobám, které si přejí Dílo užít. Tyto osoby jsou oprávněny ” Dílo užít jakýmkoli způsobem, který nesnižuje hodnotu Díla, a za jakýmkoli účelem (včetně užití k výdělečným účelům). Toto oprávnění je časově, teri- toriálně i množstevně neomezené. Každá osoba, která využije výše uvedenou licenci, se však zavazuje udělit ke každému dílu, které vznikne (byť jen zčásti) na základě Díla, úpravou Díla, spojením Díla s jiným dílem, zařazením Díla do díla souborného či zpracováním Díla (včetně překladu), licenci alespoň ve výše uvedeném rozsahu a zároveň zpřístupnit zdrojový kód takového díla ale- spoň srovnatelným způsobem a ve srovnatelném rozsahu, jako je zpřístupněn zdrojový kód Díla. V Praze dne 13. května 2019 ………………… České vysoké učení technické v Praze Fakulta informačních technologií © 2019 Martin Sedláček. Všechna práva vyhrazena. Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními před- pisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných li- cencí a nad rámec oprávnění uvedených v Prohlášení na předchozí straně, je nezbytný souhlas autora. Odkaz na tuto práci Sedláček, Martin. Tower Defense AI turnaj. Bakalářská práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2019. Abstrakt Práce se zabývá návrhem a implementací prototypu hry žánru Tower Defense. Za tímto účelem jsou prozkoumány existující Tower Defense hry a jejich herní prvky. Dále jsou popsány algoritmy pro hledání cest a hry umožňující externí napojení umělé inteligence. Vytvořený prototyp umožňuje pomocí skriptování napojení umělé inteligence, jež může hrát hru místo hráče. Klíčová slova Tower Defense, strategická hra, umělá inteligence, skripto- vání, generování mapy, AI agent Abstract This work is dealing with a design and implementation of a Tower Defense game prototype. For this cause the analysis of existing Tower Defense games and their game elements was performed. Pathfinding algorithms and games allowing external plug-in of artificial intelligence were also described. The created prototype allows such plug-in of artificial intelligence via scripting. Keywords Tower Defense, strategy game, artificial intelligence, scripting, map generation, AI agent 7 Obsah Úvod 1 1 Průzkum existujících řešení 3 1.1 Prvky a herní mechaniky her typu Tower Defense . 3 1.1.1 Mapa ............................ 4 1.1.2 Věže ............................. 5 1.1.3 Suroviny ........................... 6 1.1.4 Nepřátelé .......................... 6 1.1.5 Podmínky vítězství ..................... 7 1.1.6 Obtížnosti .......................... 7 1.2 Existující Tower Defense hry ................... 8 1.2.1 Bloons Tower Defense ................... 9 1.2.2 Plants vs. Zombies ..................... 11 1.2.3 Kingdom Rush Frontiers . 12 1.2.4 Cursed Treasure 2 ..................... 14 1.2.5 Desktop Tower Defense . 17 1.2.6 Shrnutí ........................... 18 1.3 Hry poskytujících napojení umělé inteligence . 19 1.3.1 Herní AI ........................... 19 1.3.2 Umělá inteligence v roli hráče . 19 1.3.3 Age of Empires 2 ...................... 20 1.3.4 Angry Birds AI Competition . 21 1.4 Algoritmy pro navigaci jednotek po mapě . 23 1.4.1 Breadth-first Search .................... 24 1.4.2 Dijkstrův algoritmus .................... 24 1.4.3 A* .............................. 25 2 Návrh 29 2.1 Mapa ................................ 29 9 10 OBSAH 2.2 Věže ................................. 30 2.3 Suroviny ............................... 31 2.4 Nepřátelé .............................. 32 2.5 Podmínky vítězství ......................... 34 2.6 Obtížnosti .............................. 34 2.7 Funkční požadavky ......................... 34 2.8 Nefunkční požadavky ........................ 35 2.9 Případy užití ............................ 35 3 Realizace 39 3.1 Struktura projektu ......................... 39 3.2 Základní herní objekty ....................... 40 3.3 Napojení externí umělé inteligence . 42 3.4 Náhodné generování mapy ..................... 43 3.5 Výběr nalezených cest ....................... 48 3.6 Časovač ............................... 50 4 Testování 51 4.1 Měření ................................ 55 Závěr 59 Seznam použité literatury 61 A Seznam použitých zkratek 65 B Dokumentace skriptovacího API 67 C Obsah přiloženého média 73 Seznam obrázků 1.1 Hra Bloons TD 5 ............................ 9 1.2 Hra Plants vs. Zombies ........................ 11 1.3 Hra Kingdom Rush Frontiers ..................... 13 1.4 Základní typy věží v Kingdom Rush Frontiers . 13 1.5 Hra Cursed Treasure 2 ......................... 15 1.6 Vylepšení věží v Cursed Treasure 2 . 16 1.7 Hra Desktop Tower Defense ...................... 17 1.8 Ukázka pravidla v Age of Empires 2 . 21 1.9 Detekce objektů v Angry Birds pomocí computer vision . 22 1.10 Ukázka kódu základního agenta .................... 23 2.1 Věže ve hře ............................... 32 2.2 Diagram případů užití v menu hry . 37 2.3 Diagram případů užití ve hře ..................... 38 3.1 Diagram tříd dědících z GameObject . 41 3.2 Ukázka mapovací metody ....................... 43 3.3 Kompilace skriptu ........................... 44 3.4 Spuštění skriptu ............................ 45 3.5 Sekvenční diagram spouštění skriptu . 46 3.6 Kód metody GeneratePathUtil .................... 47 3.7 Kód rozhraní IPathSelector ...................... 48 3.8 Kód třídy InOrderPathSelector .................... 49 3.9 Kód třídy PathSelectorFactory .................... 49 3.10 Kód Update metody třídy Timer ................... 50 11 Seznam tabulek 1.1 Shrnutí her a jejich prvků ....................... 19 2.1 Schopnosti věží na úrovni 5 ...................... 31 2.2 Systém vylepšení věží ......................... 31 2.3 Ceny vylepšení věží ........................... 32 2.4 Přehled nepřátel ............................ 33 2.5 Modifikace poškození dle elementů . 34 4.1 Výsledky měření externích AI agentů na mapě Level 1 s lehkou obtížností ................................ 55 4.2 Výsledky měření externích AI agentů na mapě Level 1 s normální obtížností ................................ 55 4.3 Výsledky měření externích AI agentů na mapě Level 1 s těžkou obtížností ................................ 56 4.4 Výsledky měření externích AI agentů na mapě Level 2 s lehkou obtížností ................................ 56 4.5 Výsledky měření externích AI agentů na mapě Level 2 s normální obtížností ................................ 56 4.6 Výsledky měření externích AI agentů na mapě Level 2 s těžkou obtížností ................................ 56 4.7 Výsledky měření externích AI agentů na mapě Level 3 s lehkou obtížností ................................ 56 4.8 Výsledky měření externích AI agentů na mapě Level 3 s normální obtížností ................................ 57 4.9 Výsledky měření externích AI agentů na mapě Level 3 s těžkou obtížností ................................ 57 13 Seznam algoritmů 1 Breadth-First Search ........................ 25 2 Dijkstrův algoritmus ......................... 26 3 A* ................................... 27 15 Úvod Herní průmysl je nedílnou součástí oblasti informačních technologií. Vývoj videoher s sebou přináší nutnost řešit složité algoritmické i matematické pro- blémy. Mnoho algoritmů vzniklo právě díky hrám. Hry a umělá inteligence jsou témata, která jsou propojená čím dál více a problematika