Boti ve First Person Shooter hrách

Podobné dokumenty
Úprava bota pro počítačovou hru Counter Strike

Aplikace umělé inteligence v počítačových hrách


Úvod do počítačových sítí

JAK HRÁT ON-LINE? 0. PŘIZPŮSOBTE SI SVŮJ ŠTÍT A SVÉ BARVY

Úvodem... 9 Kapitola 1 Karetních

Základy umělé inteligence

Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19

MASSIV. Middleware pro tvorbu online her

Přidělování CPU Mgr. Josef Horálek

strategická desková hra pro dva hráče

Dokumentace programu piskvorek

1 Uživatelská dokumentace

Prohledávání do šířky = algoritmus vlny

Záznamník trasy. Michal Sluštík Y39PDA ČVUT, FEL, Popis aplikace. Specifikace požadavků

Testování mobilní navigace NACESTY

Implementace systémů HIPS: ve znamení 64bitových platforem. Martin Dráb

DUST SETUP. následně každý hráč odloží hranou kartu a začíná první kolo. HERNÍ KOLO

Propojení systému MICROPEL a inteligentní elektroinstalace ABB Ego-n

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

MOBILNÍ MULTIPLAYEROVÁ HRA THE HUNT. Y39PDA, školní rok 2010/2011 Ondřej Šíma

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Herní engine. Co je Engine Hotové enginy Jemný úvod do game designu

Učící se klasifikátory obrazu v průmyslu

PRAVIDLA: ÚROVEŇ 4 BALÍČEK VS BALÍČEK

Martin Milata, Pokud je alespoň jeden rozměr čokolády sudý (s výjimkou tabulky velikosti 1x2, která už je od

Algoritmy pro práci s neúplnou informací

PROJEKT MINY - DOKUMENTACE

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

HISTORIE A ZÁKLADNÍ MYŠLENKY SYSTÉMU

Hledání správné cesty

UVĚZNĚNI ÚSMĚVEM MONY LISY ÚROVEŇ

Dijkstrův algoritmus

Testování Mapy.cz. David Říha. Semestrální práce z předmětu Testování uživatelského rozhraní.

Modul Konfigurace MTJ Service, s.r.o.

CÍLOVÝ KONCEPT. Ghoul Wars. pro. Jihočeskou univerzitu Pedagogickou fakultu Předmět: TDSA

FragHammer v0.1 freečkový FANbase MOD pro hráče WH40k, Necromunda apod. her.

Simulace TCP - Didaktická akční hra

2) Nový druh připojení Ethernet-CA5 umožňující připojit nové zařízení CA5 a to přes Ethernet nebo přes GPRS

CineStar Černý Most Praha

PRAVIDLA HRY. 2 4 hráči / 20 minut

Specifikace projektu Ocerus

Registrační číslo projektu: CZ.1.07/1.5.00/ Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

Navigace na webových stránkách

Možnosti využití prostorových informací pro osoby se zdravotním postižením

Source Defender. PPJ semestrální projekt. Martin Přeták, ARI

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Architektura informačních systémů. - dílčí architektury - strategické řízení taktické řízení. operativní řízení a provozu. Globální architektura

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Procesní přístup k projektům informačních systémů. RNDr. Vladimír Krajčík, Ph.D.

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

Překladač a jeho struktura

Modul Číselníky MTJ Service, s.r.o.

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY ROČNÍKOVÝ PROJEKT KLOKAN. Informatika, II. ročník

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Bezpečnostně právní akademie Brno, s.r.o., střední škola

40 označovacích kamenů vždy 10 v červené, oranžové, černé, modré barvě. 7 slonů 3 lvi 6 normálních 1 super

PRVNÍ ELASTICKÝ INFORMAČNÍ SYSTÉM : QI

Desková Finanční svoboda

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Željko Obradovič (Panathinaikos Atheny) Sample Practice

Školení zisku licence B. Kladno Martin Komárek

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

Mapa Česka:

MOŽNOSTI KNIHOVEN V OBLASTI DALŠÍHO VZDĚLÁVÁNÍ UČITELŮ

Microsoft Windows Server System

Komunikace s automaty MICROPEL. správa systému lokální a vzdálený přístup do systému vizualizace, umístění souborů vizualizace

[BAL-MLP] Multiplayer

1. Dříve než začneme Trocha historie nikoho nezabije Co budete potřebovat Microsoft versus zbytek světa...

Číslo výrobku: Sada na pétanque. Návod na hraní. Tchibo GmbH D Hamburg 95091AB2X3VIII

FRAGMASTER ORIGINS. Vítejte u základní návrhové verze hry Fragmaster Origins, která dodává jednoduchá pravidla pro Deathmatch sci-fi arény.

IMPLEMENTACE ECDL DO VÝUKY MODUL 6: GRAFICKÉ MOŽNOSTI PC

Trosečník v džungli, adventura

ČAS LÉTAT Evoluce: O původu druhů rozšíření

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Grafové algoritmy. Programovací techniky

Logické řízení s logickým modulem LOGO!

Teorie her a ekonomické rozhodování 5. Opakované hry

Obsah. Úvod 9 Členění knihy 10

To vše odděleně! Přitom mají stejný cíl: spokojeného zákazníka.

Instalace a konfigurace web serveru. WA1 Martin Klíma

Y13ANW ÚVOD DO WEBOVÝCH METODIK. Ing. Martin Molhanec, CSc.

Algoritmizace prostorových úloh

Metodický dopis č. 14/2014 Enrique Pisani: Mini volejbal, 2. část

LETECKÁ BITVA NA KKY. Letní semestr, Katedra Kybernetiky Západočeská Univerzita v Plzni. Speciální zadání semestrální práce MATLAB

HERNÍ ENGINE PRO TVORBU DIDAKTICKÝCH HER VE FLASHI

TESTOVÁNÍ UŽIVATELSKÉHO ROZHRANÍ VIDEO PŘEHRÁVAČE VLC

Implementace A* algoritmu na konkrétní problém orientace v prostoru budov

Simluátor Trilobota. (projekt do předmětu ROB)

TÉMATICKÝ OKRUH Softwarové inženýrství

Integrovaná střední škola, Sokolnice 496

Hotline Helios Tel.: Pokročilé ovládání IS Helios Orange

Obsah. Zpracoval:

Jan Kratochvíl, F 3 MOD. 15. února 2004

Semestrální práce z KIV/PC. Kolja Matuševský (A14B0310P)

TJ Sokol Žižkov oddíl kulečníku

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Transkript:

Boti ve First Person Shooter hrách Vysvětlení pojmů z nadpisu: First Person Shooter Střílečka z pohledu první osoby. Hráč ovládá postavu, u které vidí jakoby jejíma očima a zároveň jediné co z ní vidí, jsou většinou ruce se zbraní. Příkladem takovéto hry je např. hra Counter Strike, postavená jako rozšiřující mód na enginu hry Half life. Na této hře bude demonstrována problematika botů v tomto referátu. Mód Hra, která používá většinu prvků z enginu, ale v některých prvcích se liší. Např Counter Strike je modem enginu Half life, na kterém je postavena i stejnojmenná hra. Rozdíl je v tom, že Half life je vesmírná sci fi střílečka, odehrávající se ve smyšleném prostředí s nereálnými zbraněmi a upravenou fyzikou, ale Counter Strike je do jisté míry reálná hra, kde jsou hráči rozděleni na dva týmy. Na teroristy a policisty. Tyto dva týmy proti sobě bojují na dvou různých typech map na mapách s rukojmími, kde je úkolem policistů rukojmí osvobodit a úkolem teroristů jim v tom zabránit a na mapách s bombami, kde teroristé musí bombu položit, spustit a nechat vybuchnout, v čemž jim mají naopak policisté zabránit. Hra končí buďto splněním úkolu daného týmu nebo smrtí všech členů jednoho z týmů. Bot Počítačem simulovaný hráč užívaný k tréninku, nebo když není momentálně možnost živých spoluhráčů. Nahrazuje protivníky i spoluhráče. Z této definice vyplývá, že boti jsou používáni především ve hrách pro více hráčů tzv. on line multiplayer hrách, jako jsou Counter Strike, Quake, Unreal Tournament, atd. Zdroje: http://developer.valvesoftware.com/ http://www.kiv.zcu.cz/ semestrální práce na téma Multibot http://scienceworld.cz článek Umělá inteligence v PC hrách + části zdrojových kódů hry Couter Strike a enginu Half life

Co musí bot umět: Navigace Základním problémem, který musí každý bot řešit, je navigace a pohyb v herním prostředí. Bot si za tímto účelem musí nejen pamatovat pozici významných prvků v herní mapě (protivník, umístění rukojmí, místo na položení bomby apod.), ale musí být i kdykoliv schopen najít do vybraného místa pokud možno nejkratší cestu. O to se stará tzv. pathfinding, dnes v naprosté většině her založený na algoritmu heuristického prohledávání grafu. Pro jeho efektivní nasazení je potřeba k dané úrovni nejdříve zkonstruovat tzv. navigační síť (angl. navigation mesh), tedy graf, který popisuje odkud kam je možno se v dané úrovní dostat. Kromě informací týkající se pohybu může navigační síť obsahovat i speciální značky (waypointy) označující místa výhodná pro obranu či naopak pro číhanou na protivníka. V tomto pojetí se z navigační sítě stává komplexní mentální reprezentace úrovně, kterou bot využívá nejen k navigaci, ale i k taktickým bojovým rozhodnutím. Aby se dosáhlo její maximální optimalizace, je navigační síť často konstruována přímo designéry úrovní. Manuální konstrukce navigační sítě má ale některé významné nevýhody. Kromě zřejmé pracnosti je to především neschopnost reagovat na dynamické změny prostředí v průběhu hry (prorážení zdí, zasypání chodeb, zhroucení mostů ). V poslední době se proto objevuje snaha tvořit navigační síť automaticky pomocí nástrojů umělé inteligence, což však představuje nelehký úkol. Řídicí systém Zatímco navigaci lze považovat za podpůrný systém, skutečným mozkem bota je jeho řídicí systém. Na základě aktuálního stavu bota, jeho záměrů a situace v nejbližším okolí volí akce, které bot v příštích okamžicích provede. Tyto akce lze většinou rozdělit do několika úrovní hovoříme proto o hierarchickém řídicím systému. Na nejvyšší úrovni jsou akce, které se váží k dlouhodobějším a strategičtějším rozhodnutím bot si (ve hře určitého typu) může vybrat, zda bude prozkoumávat aktuální úroveň, doplňovat střelivo, útočit či naopak ustupovat z boje. O úroveň níž bot rozhoduje např. o tom, kterým směrem se v mapě při svém průzkumu vydá, na jaký konkrétní cíl zaútočí a jakou přitom použije zbraň. Nejnižší úroveň se pak týká konkrétních atomických úkonů, tj. např. kdy vystřelit, kam zamířit, kudy uhnout střele protivníka apod. Zdaleka nejčastějším způsobem implementace řídicího systému je určitá obdoba tzv. hierarchického stavového automatu. Základní myšlenka konečných stavových automatů je velmi jednoduchá, navíc jsou výpočetně velmi efektivní. Problémy ovšem nastávají při jejich realizaci, která má obvykle podobu kódu v běžném procedurálním jazyce, nejčastěji přímo v C++. Takto implementovaný stavový automat se totiž při větším počtu stavů a stavových přechodů rychle stává nepřehledným, obtížně rozšířitelným a testovatelným. Další nevýhodou jsou jeho omezené schopnosti adaptace a

plánování. Sílí proto poptávka jednak po specializovaných nástrojích pro implementaci stavových automatů, jednak po jiných způsobech realizace řídicího systému. Slibnou alternativou, rozvíjenou především na akademické půdě, jsou v současné době tzv. plavidlové systémy, v delším horizontu pak i systémy pro cílově orientované dynamické plánování. Jak bot pro Half life funguje? Obyčejně mody pro Half life nemohou používat boty, pokud je tvůrci nezapracují přímo do modu (např. Counter Strike). Nedá se tedy použít jeden bot pro více modů. Bot může být přidán do modu, bez toho aniž byste vlastnili zdrojový kód modu. Většina vývojářů modů nezveřejňuje své zdrojové soubory. Přesto lze vlastního bota do některého z modů přidat. Je to díky tomu, že engine Half lifu používá pro herní entity interní strukturu. Ta samá struktura je pak použita i pro entity v modech. Když se hráč připojí k serveru, engine Half lifu vytvoří entitu pro toho hráče a v modu pak volá funkce, které představují akce prováděné s entitou. Boti fungují na stejném principu jen s tím rozdílem, že u nich neexistuje síťové spojení, protože existují pouze na serveru. Je důležité pochopit, jak funguje interface mezi enginem a modem. V enginu Half lifu existuje seznam funkcí, které může mod volat a naopak v modu existuje seznam funkcí, které muže volat engin. Ostatní kód v modu je "samostatný" a nepotřebuje (kromě zmíněných funkcí) žádné spojení s enginem Half lifu. Je možné vytvořit DLL knihovnu, která "sedí" mezi enginem Halflifu a modem, a která přenáší volání funkcí z jedné strany na druhou. Když chce engin Half lifu zavolat nějakou z funkcí modu, zavolá nejprve DLL a to předá volání dále modu a naopak mod volá prostřednictvím DLL knihovny funkce enginu. Pro vlastní naprogramování bota je nutné použít právě tuto knihovnu a to protože v Counter Striku jsou boti jakoby předchystáni, ale samotné nastavování paramaterů probíhá pouze v této knihovně, do původního kódu hry se nezasahuje (nebo jen minimálně). Konkrétní ukázky některých funkcí Na začátku hry (každého kola) je provedena funkce BotSpawnInit(), která zinicializuje všechny potřebné struktury, popřípadě bota teprve vytvoří (pokud začíná úplně první kolo). Bot má na svoje akce každou vteřinu k dispozici 30 framů (ve smyslu časového úseku). Na začátku každého framu je spuštěna funkce StartFrame(), která volá pro každého bota funkci BotThink(), což je hlavní funkce inteligence bota. Právě funkce BotThink() se stará o zjišťování stavu bota (živý/mrtvý/zraněný) a provádění na něm závislých reakcí. V případě, že má bot zadány nějaké úkoly (tasky), stará se o jejich provedení atd. S trochou nadsázky se dá říci, že všechny ostatní klíčové funkce se volají v těle této rutiny nebo v tělech jí volaných rutin. Na konci kola je provedena funkce UpdateGlobalExperienceData(), která vyhodnotí úspěšnost bota a nastaví podle toho příslušné dovednosti, např. zaznamená nebezpečná místa, kde byl bot zabit.

Úkoly Boti mohou mít zadány úkoly, které se snaží vyplnit. Například zadání (ve hře) požadavku "Cover me" použitím vysílačky vyústí v uložení zprávy do fronty pro všechny boty v "doslechu". Pokud některý z kolemstojících botů tuto zprávu "pozitivně" vyhodnotí, přidělí se mu úkol TASK_COVERME. Ten pak plní, dokud není splněn nebo pokud mu není zadán další úkol. Všechny zadané úkoly se ukládají do zásobníku, což znamená, že bot vždy plní poslední zadaný úkol. Po jeho dokončení začne plnit předposlední úkol atd. Splnění úkolu může vypadat různě. Například u úkolu TASK_FOLLOWUSER (provádí radio příkaz "Follow me") je vyhodnocováno (ve funkci BotFollowUser()), zda bot může svého kolegu stále následovat, tzn., jestli je naživu, jestli je v dohledu apod. Pohyb bota Bot má několik základních parametrů, které určují jakým směrem a jak rychle se pohybuje. Tyto parametry se v DLL vlastně jen nastavují jejich zpracování a "provedení" si pak zajišťuje přímo engine hry. Příklad float f_max_speed maximální rychlost bota se zbraní, kterou drží float f_move_speed aktuální rychlost pohybu vpřed (vzad záporná hodnota) float f_sidemove_speed aktuální rychlost do strany (úkroky) Obecně se boti pohybují po předem známých waypointech. BOT se vlastně stále pohybuje od waypoint k waypointu. Pouze setkání s nepřítelem nebo následování kolegy může vyústit v "neowaypointovaný" pohyb. BOTi mají předdefinované útočné waypointy, obrané waypointy atd. pro každou mapu. Pokud tyto waypointy pro danou mapu neexistují, není ani možné boty do takové mapy přidat. Vlastnosti a dovednosti bota Bot má veliké množství vlastností a dovednosti. Ty jsou sdruženy ve struktuře botabot_t. Příklady: float fagressionlevel aktuální úroveň agresivity bota

float ffearlevel aktuální úroveň strachu bota boolean bdead určuje, zda je bot ještě na živu int iteam index týmu Podle hodnot těchto (a mnoha dalších) atributů bot reaguje na většinu podnětů ze svého okolí, provádí rozhodnutí o svém pohybu, střelbě nebo vyhledává nejbezpečnější úkryt. Většina hodnot se mění skoro neustále s ohledem na mnoho podnětů, i herní engin je nelineární a proměnliví během hry, proto, když vedle sebe postavíme boty dva, bude se každý z nich chovat odlišně. Shrnutí Pro přibližnou ukázku toho, jak bot přibližně funguje, máme informací už dost, takže bych údaje z referátu ještě na závěr krátce shrnul. Před samotným programováním bota je potřeba nachystat si navigační mapu, připravit si hru s módem a předpřipravit si dll knihovnu. U bota je třeba naprogramovat jeho existenci, pohyb, vlastnosti a akce, které provádí a to mnoha příkazy, z kterých jsme si ty důležité ukázaly. Pokud by někoho tvorba botů zajímala více a podrobněji, doporučuji stránky pro tvůrce her od firmy Valve http://developer.valvesoftware.com/ Co bude dál Jaká tedy bude herní AI budoucnosti? Především bude schopna učit se, ať už ze svých vlastních zkušeností nebo z hráčových postupů, a výrazně tak omezí možnost opakovaného využívaní stejné strategie ze strany hráče. Hra si bude vytvářet model zachycující herní styl a preference hráče a tomuto modelu pak přizpůsobí svůj průběh tak, aby hráče ještě více bavila. Použití technik cílově orientovaného plánování umožní herní AI realizovat komplexní strategie šité na míru aktuální herní situaci. Umělá inteligence začne hrát významnou roli i jako hráčův asistent. Dokáže hráči poradit, nebude li vědět jak dál nebo bude li se chtít ve hře dále zdokonalit. Adaptivní uživatelské rozhraní bude schopno předvídat úmysly hráče a ulehčí mu od nutných rutinních činností, které se i dnes ve hrách vyskytují. Ve větší míře bude využívána komunikace hlasem.

Herní postavy budou vybaveny moduly pro komunikaci v přirozeném jazyce, což nahradí monotónní předskriptované dialogy volnou komunikací. Bouřlivý rozvoj zřejmě čeká metody reprezentace nelineárních příběhů a tzv. adaptivního vyprávění. Ač by se mohlo zdát, že se jedná o hudbou vzdálené budoucnosti, velká většina těchto technologií už byla v určité míře použita i v existujících hrách. V nejbližších letech se proto nejspíš máme na co těšit.