Umělá inteligence ve hrách #2: s AI je to peklo, bez ní ale také

3. 8. 2011 12:47 - Téma
autor: Dan Vávra

Vychází na platformách: Windows, PS2, Xbox

V prvním díle seriálu o AI ve hrách se Dan Vávra zabýval základními úkoly umělé inteligence a důvody, proč moderní střílečky AI odsouvají na druhou kolej na úkor skriptů. Poďjme se podívat, čím se zabývá v díle druhém:

Kvalita AI se většinou v plné kráse projeví teprve v boji. Stěžejní roli v tom, aby vypadal boj, co nejpřirozeněji, však hrají „smysly“ umělé inteligence, tedy zrak a sluch. Počítač samozřejmě vždy ví, kde se hráč nachází. Cílem ale je, aby se bojovníci chovali jako živé bytosti, a tak se musí počítat, jestli nepřítel hráče vidí, nebo slyší. To se dělá tak, že se z jeho hlavy, směrem kam se dívá, vykresluje mnohokrát za sekundu neviditelná čára. Pokud tato čára narazí na překážku, nepřítel hráče nevidí, pokud nenarazí, tak ho vidí.

Samozřejmě, že je to celé poněkud složitější. Co když hráči kouká zpoza rohu například jen kus ruky? Čára se tedy nejdříve vykreslí třeba jen k trupu, a pokud se nezadaří, zkusí se to s hlavou a končetinami. I tak se ovšem může stát, že z hráče bude směrem k nepříteli kousek koukat, ale jelikož se „zrak“ testuje na jiný kousek, nepřítel hráče neuvidí. Výpočet těchto čar je pak v zásadě výpočtem kolizí, které jsou společně s vykreslováním grafiky jedním z nejnáročnějších úkolů na výkon. Při tom samozřejmě platí, že čím víc je na scéně nepřátel, tím víc je i výpočtů zraku a tím větší je zpomalení hry.

Do hry se pak zapojují ještě další parametry, jako kupříkladu nasvícení. I když nepřítel hráče vidí, může se hráč nacházet ve tmě a vlastně tak vidět není. To ještě není tak složité, protože počítač ví, jak moc světla je na postavu hráče vrženo. Největší masakr je, když hráč sice stojí ve stínu, ale za ním se nachází světlo, takže ve skutečnosti je zcela jasně viditelná jeho silueta. S touhle situací si dodnes většina her moc poradit neumí.

Samostatnou kapitolou je vegetace a další legrace. Možná se vám už taky stalo, že jste třeba ve Flashpointu/Armě leželi za naprosté tmy v metr vysoké trávě kilometr od nepřítele. Vy sami jste přes tu trávu neviděli i s noktovizorem ani prd a najednou jste dostali headshot. Nebo naopak, když jste leželi ve křoví a půl metru od vás stál nepřítel, aniž by vás zaregistroval. Určit pro AI, zda vás má vidět v husté vegetaci či nikoli, je snad nejtěžší problém. Autoři se tak uchylují k všelijakým zjednodušením, které následně vedou k podobným situacím.

Tak tenhle voják z Army už se nikam nedoplazí a tráva mu nepomůže

Podobné to je i se zvukem. Pokud se hráč nachází s nepřítelem ve stejném prostoru, je to vcelku brnkačka. Kolize není potřeba počítat a stačí řešit vzdálenost, na kterou je daný zvuk slyšet. Podstatně složitější to ovšem je, když se hráč nachází v budově s celou řadou místností a kupříkladu vystřelí. Výpočet šíření zvuku takovým prostorem není až zas taková legrace. V potaz je potřeba brát kolize, ale kvůli tomu, že se zvuk šíří odrazem, tak je potřeba počítat i s tím, jak prochází otvory do jiných prostor a následně se rozhodnout, jestli má být AI schopná určit polohu jeho zdroje.

Většinou tvůrci dospějí k názoru, že výsledný efekt je pro hráče tak obtížně postřehnutelný, že se spokojí pouze s jednoduchou detekcí. Výsledkem toho někdy je, že vás nepřítel sice slyší skrze zdi a stropy, ale vzhledem k tomu, že dnešní hry jsou často designované tak, aby se nepřátelé v jiné části budovy nikam nepřesouvali a „trpělivě“ tam na hráče čekali, ničemu to moc nevadí. K realitě to má samozřejmě daleko.

Ve většině her, když hráč vleze do baráku a vystřelí, vrhnou se na něj jen postavy z jedné místnosti, a jak hráč postupuje prostorem, postupně na něj vyskakují další a další vlny, které o něm doposud „nevěděly“. V realitě, kdyby někdo vlezl do budovy plné nepřátel a vystřelil, pravděpodobně by byl velmi rychle obklíčen ze všech stran a zlikvidován celou osádkou najednou.

Thief: Deadly Shadows je příkladem hry, kde velmi záleží na tom, jak AI dokáže sledovat a vyhodnocovat zvuky a pohyb hráče v prostředí

Boj!

Naše AI už se tedy umí pohybovat a svými smysly na bojišti identifikovat nepřítele. Teď ji ještě musíme naučit, jak toho využít v boji. Začneme tím nejběžnějším typem - přestřelkou. Taktika střeleckého souboje je vlastně jednoduchá: musíte se dostat k nepříteli na nejvhodnější vzdálenost, pokud možno nepozorovaně a následně ho trefit.

Poslední úkon je nejjednodušší. Když budou autoři chtít, trefí vás AI vždycky první kulkou. Proto je potřeba zapojit do hry náhodu. Pravděpodobnost zásahu se tak zmenšuje spolu se vzdáleností, záleží na tom, jestli se pohybujete vy, nebo střelec, jestli jste ve tmě nebo na světle, kterou část vašeho těla vidí, jestli stojíte nebo ležíte atd. Ani nepozorované přiblížení a manévrování není až zas takový problém. Většina komerčně dostupných AI si už dneska dokáže sama určit, kde je krytá a pohybovat se tam, kde ji hráč nemůže zasáhnout.

Problém nastává při rozhodování kdy zaútočit. Jaká je ideální vzdálenost pro to, abych se odkryl a vystřelil na hráče? V reálu se bude skutečný voják rozhodovat podle neuvěřitelného množství detailů, mnohdy čistě subjektivních. Ve hře, musí tento proces opět vyřešit designér s programátorem a musí AIčku natvrdo říct, jak se má chovat.

I v Ghost Recon: Advanced Warfighter byly s chováním spolubojovníků menší problémy

Musí mu určit ideální vzdálenost pro střelbu z dané zbraně; musí mu určit, kolikrát má vystřelit, než provede nějaký další úkon; musí mu říct, co má dělat, pokud se ocitne příliš blízko k hráči. Musí prostě zabránit tomu, aby přestřelka nevypadala jako z napoleonské války, kdy proti sobě stojí dvě jednotky a střílí tak dlouho, dokud se jedna strana neskácí k zemi. Všemožných parametrů, které se dají brát v potaz, jsou mraky a odladit to představuje doslova peklo.

Jistě jste například ve hrách, kde na hráčově straně stojí i počítačem ovládané NPC, zažili situace, kdy se protivníci dostali k sobě na velmi malou vzdálenost, střílí po sobě jako zběsilí a nikdo při tom nemůže nikoho trefit. To je důsledek nastavení, kdy AI má nablízko stejně malou pravděpodobnost zásahu, jako na dálku.

Vypadá to celé komicky, ale má to bohužel svůj důvod. Kdyby totiž tvůrci nastavili AI větší přesnost nablízko, neplatilo by to jen pro souboje NPC mezi sebou, ale i na hráče. A většina z nich by asi příliš neocenila, že by přiblížení se nepřítele na vzdálenost menší než patnáct metrů znamenalo prakticky instantní smrt.

Na první F.E.A.R. se nemusí jen vzpomínat, klidně si hru zahrajte, abyste viděli jednu z nejpovedenějších AI ve střílečce

Využívání prostředí

Přirozenou součástí boje je samozřejmě krytí a logicky tuto schopnost budeme chtít i po postavách ve hře. Dnešní komerční AI dokáží panákovi říct, zda je vůči hráči vidět nebo ne, funguje to ovšem spíše na situace, kdy je hráč za rohem nebo v jiné místnosti. My bychom ale samozřejmě chtěli, aby se AI schovávala za překážky uvnitř místností, vykukovala zpoza rohů, střílela naslepo z úkrytu, a při tom všem vypadala strašně dobře. A to AI bez pomocí designérů a programátorů nezvládne.

AI se proto musí říct, kde se může krýt, a jak takové krytí má vůbec vypadat. Ve výsledku jsou tak herní levely zaplaveny tisícovkami značek pro AI, které jim definují, kde se dá co dělat. Vidět to je například na jednom z videí, kde Crytek předváděl AI Crysis 2. Central Station v New Yorku, což je jeden z levelů hry, byl doslova zaplavený nejrůznějšími značkami a to nejen na krytí, ale třeba i pro místa, kde můžou nepřátelské potvory skákat z patra do patra. Prostě a jednoduše, pokud chcete, aby postavy ve hře například proskakovaly okny, musíte jim na každé okno, u kterého je to možné, umístit značku, která jim řekne, že právě tam to lze dělat.

Video názorně ukazuje, jak se AI potvora pohybuje levelem po předem vymezených značkách

Herní mechanismy

Pravděpodobně jste si už všimli, že když zabijete ve hře nepřítele a chcete sebrat jeho majetek, v drtivé většině her se to, co můžete sebrat, zcela zásadně liší od toho, co daná postava zaživa používala. Stejně tak si pravděpodobně jen těžko dokážete vzpomenout na okamžik, kdy by některému nepříteli v libovolné hře došla munice. Nebo když chcete obrat mrtvolu vojáka, který má bezedný zásobník, zjistíte, že u sebe má pár posledních nábojů nebo dokonce vůbec nic.

Hráči si na to zvykli, i když ve skutečnosti je to nepochopitelný a nelogický nesmysl. Zabijete obra s ultimátní sekerou ve strašlivém brnění a on u sebe má roztrhanou košili a žabikuch. Proč? Nepřátelům nedochází munice, protože co bychom dělali, kdyby jim došla? Je fascinující, že v průmyslu, kde vývojáři musí řešit celou řadu neuvěřitelně složitých problémů, jen málokdo dokázal vyřešit problém co dělat, když dojde nepříteli munice.

A nejde jen o munici. Ve hrách jsou mraky situací, kdy se AI chová naprosto příšerně a nesmyslně a ne proto, že by za to mohlo nějaké technické omezení, ale proto, že designer je lajdák. Vezměte si kupříkladu zcela běžnou situaci, kdy hráč začne střílet na místě plném civilistů. V drtivé většině her se všichni začnou válet po zemi s rukama před obličejem a hystericky ječet „nou plís!“, maximálně běhají zmateně v kruhu za stejného povyku. Jsme na to zvyklí, civilové ve hrách přece běhají s rukama nad hlavou a volají „nou plís“. Udělali byste to samé i vy? A je takový problém, aby volali něco jiného a nevypadali u toho všichni jako hysterické důchodkyně?

State of Emergency byla pořádná kravina, která ve své době utáhla pozornost hráčů na velké davové scény...ve kterych se paňáci chovali opravdu hloupě

Je to možná zvláštní, ale hry začaly zpracovávat většinou situací nikoli na základě reality, ale podle jiných, dřívějších her. Samozřejmě, že určitým otravným věcem, se chceme v zájmu zábavy vyhnout a jiné složité věci je zase potřeba zjednodušit, hry to ale často poněkud přehánějí.

Díky tomu jsme svědky zcela absurdních situací, které ovšem, jak se zdá, nikomu nevadí, přestože každý člověk má ze skutečnosti naprosto odlišné zkušenosti. Tvůrci i konzumenti takových her prostě akceptovali jakási absurdní pravidla, která budou jednou našim potomkům k smíchu, stejně jako nám připadají směšné herecké výkony (jak komu - pozned) ve filmech z počátků filmového průmyslu.

Ve třetím dílu o AI ve hrách se podíváme na problém vzájemné spolupráce AI ovládaných postav, vysvětlíme si, proč se AI nedá ve hrách použít v plné míře, a jak vůbec může na první pohled chybná AI vlastně odpovídat skutečnosti.

Tagy: umělá inteligence

Zdroj: 1UP

Poslední komentáře (0 / nových)

Vstoupit do diskuze (0 příspěvků)