Umělá inteligence ve hrách #1: zapomeňte na inteligenci
zdroj: Archiv

Umělá inteligence ve hrách #1: zapomeňte na inteligenci

24. 7. 2011 13:15 | Téma | autor: Dan Vávra |

Je to jeden z nejdůležitějších stavebních prvků každé dobré hry. Na první pohled je ovšem téměř neviditelný a bývá tedy často opomíjen. Čím je navíc složitější, tím hrozí autorům větší nebezpečí, že se obrátí proti nim. Podívejme se pod kapotu dnešních her a přibližme si, co všechno musí zvládat pořádná AI.

Hned na úvod musím poznamenat, že ačkoli mám s implementací a návrhem AI osobní zkušenosti, nejsem programátor. Tato problematika je navíc dosti složitá, takže seriál následujících čtyř článků představuje opravdu jen letmé a hodně všeobecné seznámení a nejspíš se nechtěně dopustím celé řady nepřesností. Poprosím tak ty, jež se umělé inteligenci věnují profesionálně (takových u nás mnoho nebude a většinu asi budu znát), aby byli shovívaví, protože cílem textu je seznámit naše čtenáře s tím co to vlastně AI je a k čemu se ve hrách používá.

Umělá inteligence ve hrách vlastně není inteligencí v pravém slova smyslu. Skutečná inteligence by měla být schopná učit se, reagovat na vnější podněty a činit samostatná rozhodnutí nebo se o to alespoň snažit. To samozřejmě „inteligence“ ve hrách neumí a zřejmě ještě dlouho umět nebude. Cílem AI ve hrách je, být hráči protivníkem nebo partnerem při hraní a co nejvíce při tom vzbuzovat dojem, že se jedná o živou bytost, chovající se adekvátně k dané situaci. Množství situací ve hrách je pak, naštěstí pro programátory a designery, značně omezené a obvykle sestává především z co nejpřirozeněji působícího boje s hráčem.

Počítačem ovládaná postava se tedy musí umět pohybovat v herním prostředí, útočit na hráče, bránit se jeho útokům, využívat prostředí hry ve svůj prospěch a případně při tom spolupracovat s dalšími počítačem ovládanými charaktery. Kdybychom toto požadovali například po robotovi, pohybujícím se ve skutečném světě, jednalo by se o úkol hodný superpočítače, protože jenom takové rozpoznávání prostředí není žádná legrace.

Ve hře naštěstí autoři mohou AIčku všelijak pomáhat, napovídat a radit, co je co. Ve výsledku tak AI nefunguje jako „inteligence“, ale v zásadě jen jako primitivní automat, který se rozhoduje na základě jednoduchých pravidel: Vidíš hráče? Vystřel po něm; Dostal jsi zásah? Řekni AU a schovej se; Došla ti munice? Támhle leží, běž k ní a seber si ji.

Zvětšit zdroj: Archiv Bulletstorm (2010)

Navigace

Základem, který od AI asi očekáváme je, že se dokáže pohybovat. Kdybychom ji ale jen tak hodili do 3D modelu levelu a nechali, ať si sama poradí, potřebovali bychom onen zmiňovaný superpočítač a skutečnou inteligenci, která dokáže analyzovat, pamatovat si a učit se, což dost dobře není možné. Proto prakticky každá hra obsahuje nějakou formu navigace, podle které se AI řídí, když se potřebuje dostat z bodu A do bodu B. Obvykle je to nějaká navigační síť, nebo vzájemně propojené checkpointy, které panákovi ve hře říkají, kudy může chodit.

Tyto checkpointy dříve ručně rozmísťovali designéři, v dnešní době se už většinou spočítají automaticky. Taková síť vlastně nahrazuje u AI paměť a schopnost rozpoznávání prostředí. Jedinou starostí panáka potom je, spočítat si nejkratší cestu k cíli po těchto bodech. S nástupem fyziky do her ovšem nastal problém co dělat, když hráč postavě něčím pohyblivým zablokuje cestu. AI musí umět změnit trasu, což také není nijak zásadní problém. Ten nastane až v situaci, když hráč zablokuje AI všechny cesty a k cíli se tak nedá dostat.

Vezměme si kupříkladu hypotetickou situaci, kdy hráč má v open world hře typu Fallout následovat panáka do budovy, kde následně nastane nějaký dějový zvrat. Co se stane, když hráč před tím zaparkoval před dveře budovy náklaďák? Stane se průser. Chtít totiž po AI aby do něj nastoupila a zaparkovala ho někde vedle, je vyšší dívčí, která už vyžaduje skutečnou inteligenci. Autoři tak musí nějakým způsobem začít čítovat. Můžou vchod obestavět nějakými nezničitelnými sloupky, aby před něj najet nešlo, čímž ale zkazí dojem z bezva fyziky, pokud ve zbytku hry jde kácet vzrostlé duby. Můžou auto vyzmizíkovat, což hráče, který se pro něj později vrátí, může pěkně nakrknout nebo ho můžou nenápadně přemístit na nějaké vhodnější místo. Všechny tyhle situace ovšem vyžadují od autorů značnou předvídavost, která je vzhledem k možnému počtu takových míst prakticky neproveditelná způsobem, který by zabránil všem podobným situacím. Čím větší svět a čím více možností, tím více problémů a komplikací.

Zvětšit zdroj: Archiv Fallout 3 (2008)

Další variantou je, když má naopak AI hráče někam následovat. Krásným příkladem je série Elder Scrolls. Pamětníci možná vzpomínají na naprostou otravu v Morrowindu, kde se často dělo, že se postava, kterou měli někam doprovodit, prostě ztratila a quest jehož součástí byla, nešel dohrát. To mohlo nastat hned z několika důvodů: ve složitém terénu hráč lezl někudy, kde nebyla navigační síť a postava se tak ocitla v situaci, kdy ho prostě nemohla následovat a někde vytuhla. Pokud si toho hráč nevšiml, znamenalo to konec. Jindy naopak cestou hráč potkal nepřítele a rozhodl se uprchnout, postava ovšem začala s nepřítelem bojovat a hráče ztratila.

Ve Falloutu 3 to tvůrci vyřešili tak, že prostě podvádějí. Pokud se postava od hráče z jakýchkoli důvodů příliš vzdálí, po krátké chvíli ji v okamžiku, kdy to hráč nevidí, vybliknou někde v jeho okolí, jako by se nic nestalo. Někdy to působí lehce komicky, když kupříkladu vycházíte jediným východem z budovy a chlapík, který byl sto metrů za vámi, na vás najednou čeká venku, zabraňuje to ovšem mnohem horším situacím.

Oba tyto příklady ukazují, proč se tvůrci her moc nehrnou do složitějších misí, kde by měla příliš silné slovo fyzika, nebo kde by hráč musel kooperovat s větším množstvím postav, na kterých by byl závislý další postup ve hře. Když už něco podobného chtějí tvůrci ve hře mermomocí mít, raději to řeší skriptem...

Zvětšit zdroj: Archiv Killzone 2 (2009)

Divadýlko

Skript je, s výjimkou her založených opravdu čistě jen na AI (strategie jako Sims či Spore), součástí herního designu víc než skutečná AI. Téměř vždy totiž musí tvůrci NPC postavám říct, co mají v každém okamžiku hry dělat. V případě některých základních činností to může být přímo součástí AI (panáci procházející se po městě v Assassin’s Creed), ale ve většině složitějších nebo jednorázových úkonů prostě musí designér postavě napsat, co má dělat.

Hráč někam dojde, tam mu má postava něco říct a následně ho někam odvést? To designér vyřeší tak, že natvrdo dané postavě naskriptuje krok za krokem, jak se má chovat: až hráč stiskne čudlík, přehraj větu a animaci XY, běž na bod A, otevři dveře, běž na bod B a přehraj animaci YZ. Pokud se hráč vzdálí víc než na 10m, zastav se a počkej na něj. Pokud se nepřiblíží do X sekund, zavolej na něj, ať pohne zadkem.

Aby se to nemohlo nějak podělat, musí designér AIčku zamést cestu, nestrkat mu na ní nepřátele a překážky, zabránit hráči, aby něco provedl, a když už, musí zajistit aby AI nezahynula, takže ho například učiní nesmrtelným. V Crysis 2 nebo Bulletstorm to jsou kupříkladu ty situace, kdy sice můžete chodit, ale jen pomalu a nemůžete při tom střílet, abyste náhodou nevlezli někomu do cesty, nebo neodbachli někoho důležitého.

Nejvýraznější v Crysis 2 to bylo například v okamžiku, kdy jdete s Gouldem do laboratoře Cellu sednout si na diagnostické křeslo a v okamžiku, kdy se Gould protáhne skleněnými dveřmi, ty se vám zacvaknou před nosem, abyste se nestačili dostat dovnitř a postřílet personál, se kterým se Gould potřebuje bavit.

Zvětšit zdroj: Archiv Crysis 2 (2011)

Divadýlkový design dotahují do extrému dnešní střílečky, kde skript hraje hlavní roli a AI je zcela odsunutá na druhou kolej. Hráč se tak pohybuje koridorem, ve kterém je chování všech okolo něj předem pevně dané. Divadýlko se pouze občas zastaví, aby na hráče počkalo, pokud se někde zdržel. Vždy když se hráč dostane do nějakého místa, spustí tím (natrigruje) další sled animací. Jedinou interaktivitu, řízenou jakousi AI, v tomto případě představuje fakt, že hráč musí část aktérů divadýlka postřílet dřív, než oni zastřelí jeho nebo se jim podaří dokončit skript vedoucí ke Game Overu (třeba odpálit bombu).

Umělá inteligence je v těchto případech omezená na naprosté minimum, nepřátelé prostě čekají na hráčův trigger a v okamžiku kdy se spustí, vyskočí a začnou to do něj sypat. V lepším případě se dokážou pohybovat v nějakém omezeném prostoru a schovat se před střelbou. Celá situace je ovšem většinou nastavená tak, aby hráč nemohl udělat nic, čím by tohle divadýlko pokazil: utéci někam zpátky, proběhnout skrz nepřátele aniž by je zabil. Součástí představení prostě je, že hráč musí všechny zabít, aby se spustila další část.

Čestnou výjimkou budiž Modern Warfare 2, kde se Infinity Ward odvážili hráče občas vypustit do otevřenějších nelineárních prostor a v jejich rámci pak nechali umělou inteligenci, aby se při přestřelce s hráčem vcelku svobodně a přirozeně pohybovala. Teprve když hráč danou lokaci vyčistil, pokračoval znovu divadýlkový skript.

Zvětšit zdroj: Archiv Modern Warfare 2 (2009)

Pro dnešek už toho ale máte na přemýšlení o AI v dnešních hrách opravdu dost. Příští týden se v druhém díle podíváme na smysly umělé inteligence a jejich využití v boji i při navigaci prostředí, potažmo na nelogičnosti, kterých se vývojáři při práci s AI dopouští.

Nejnovější články