Tower Defense AI Turnaj Student: Martin Sedláček Vedoucí: Ing

Total Page:16

File Type:pdf, Size:1020Kb

Tower Defense AI Turnaj Student: Martin Sedláček Vedoucí: Ing 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
Recommended publications
  • Platf Orm Game First Person Shooter Strategy Game Alternatereality Game
    First person shooter Platform game Alternate reality game Strategy game Platform game Strategy game The platform game (or platformer) is a video game genre Strategy video games is a video game genre that emphasizes characterized by requiring the player to jump to and from sus- skillful thinking and planning to achieve victory. They empha- pended platforms or over obstacles (jumping puzzles). It must size strategic, tactical, and sometimes logistical challenges. be possible to control these jumps and to fall from platforms Many games also offer economic challenges and exploration. or miss jumps. The most common unifying element to these These games sometimes incorporate physical challenges, but games is a jump button; other jump mechanics include swing- such challenges can annoy strategically minded players. They ing from extendable arms, as in Ristar or Bionic Commando, are generally categorized into four sub-types, depending on or bouncing from springboards or trampolines, as in Alpha whether the game is turn-based or real-time, and whether Waves. These mechanics, even in the context of other genres, the game focuses on strategy or tactics. are commonly called platforming, a verbification of platform. Games where jumping is automated completely, such as The Legend of Zelda: Ocarina of Time, fall outside of the genre. The platform game (or platformer) is a video game genre characterized by requiring the player to jump to and from sus- pended platforms or over obstacles (jumping puzzles). It must be possible to control these jumps and to fall from platforms or miss jumps. The most common unifying element to these games is a jump button; other jump mechanics include swing- ing from extendable arms, as in Ristar or Bionic Commando, or bouncing from springboards or trampolines, as in Alpha Waves.
    [Show full text]
  • Mazekeeper Information Systems and Computer Engineering
    Mazekeeper A Real Time Strategy Browser Game Miguel Francisco Alegra Rebocho de Oliveira Thesis to obtain the Master of Science Degree in Information Systems and Computer Engineering Supervisor(s): Prof. Pedro Alexandre Simões dos Santos Examination Committee Chairperson: Prof. Alberto Manuel Rodrigues da Silva Supervisor: Prof. Pedro Alexandre Simões dos Santos Member of the Committee: Prof. António Manuel Ferreira Rito da Silva August and 2017 ii Acknowledgments I want to thank, my family for their patience, support and participation in this project. Pedro Santos, for his guidence and advice during the entire project, for his participation, and most important, for his exigency. Joao˜ Dias, for his participation and advice during the project development. the group Logoff for developing the music for the last prototype. and all my friends that participated during the testing phase, for their feedback and their enthusiasm. iii iv Resumo Este documento apresenta uma analise´ do desenvolvimento de um conceito de jogo bem como o sistema desenvolvido para suportar esse conceito. E´ feita uma contextualizac¸ao˜ que permite perceber qual as caracter´ısticas, a plataforma, a tecnologia e os jogadores alvo do jogo desenvolvido. Foram desenvolvidos varios´ prototipos´ iniciais do jogos que permitiram tirar conclusoes˜ sobre o conceito, usabilidade e viabilidade do projeto em questao.˜ Apos´ apresentados inqueritos´ e apos´ a participac¸ao˜ em reunioes˜ com um grupo de jogadores, foram extra´ıdas informac¸oes˜ sobre as diversas areas´ do projeto. Uma vez que o jogo apresenta uma componente multi-jogador, sao˜ apresentados os requisitos bem como uma soluc¸ao˜ arquitetural para a implementac¸ao˜ do sistema.
    [Show full text]
  • Izrada Igre Obrane Tornjevima U Programskom Alatu Unity
    Izrada igre obrane tornjevima u programskom alatu Unity Alagić, Aldin Undergraduate thesis / Završni rad 2019 Degree Grantor / Ustanova koja je dodijelila akademski / stručni stupanj: University of Zagreb, Faculty of Organization and Informatics / Sveučilište u Zagrebu, Fakultet organizacije i informatike Permanent link / Trajna poveznica: https://urn.nsk.hr/urn:nbn:hr:211:386295 Rights / Prava: Attribution-NonCommercial-NoDerivs 3.0 Unported Download date / Datum preuzimanja: 2021-10-01 Repository / Repozitorij: Faculty of Organization and Informatics - Digital Repository SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Aldin Alagić IZRADA IGRE OBRANE TORNJEVIMA U PROGRAMSKOM ALATU UNITY ZAVRŠNI RAD Varaždin, 2019. SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE V A R A Ž D I N Aldin Alagić Matični broj: 44924–16R Studij: Informacijski sustavi IZRADA IGRE OBRANE TORNJEVIMA U PROGRAMSKOM ALATU UNITY ZAVRŠNI RAD Mentor: Dr. sc. Mladen Konecki Varaždin, rujan 2019. Aldin Alagić Izjava o izvornosti Izjavljujem da je moj završni rad izvorni rezultat mojeg rada te da se u izradi istoga nisam koristio drugim izvorima osim onima koji su u njemu navedeni. Za izradu rada su korištene etički prikladne i prihvatljive metode i tehnike rada. Autor potvrdio prihvaćanjem odredbi u sustavu FOI-radovi _______________________________________________________________________ i Sažetak U ovom radu je detaljno prikazan kompletan proces razvoja jednostavne računalne igre koja se ubraja u žanr igara koji nosi naziv „obrana tornjevima“ (eng. Tower defense). Igra je razvijena u višeplatformskom programskom alatu „Unity“. Općenito, rad sadrži opis osnovnih elemenata i koraka u razvojnom procesu koji su popraćeni isječcima programskog koda i vizualnim prikazima različitih dijelova igre, kao i modela koji su u njoj korišteni.
    [Show full text]