RSS odběr

Umělá inteligence v Left 4 Dead (1.část)8. Únor 2010
0:01

autor: Michal "Vodny" Bayerl | rubrika: Akční, FPS, Hry, Na vrcholu, PC, Slideshow, Téma

Michael Booth z Valve nedávno přišel s prezentací o umělé inteligenci v jejich kooperativním hitu z roku 2008 – Left 4 Dead. AI použitá v L4D spadá pod systém trefně nazvaný AI Director, který řídí veškeré dění na obrazovce. Psal jsem o něm dvoudílný seriál u sebe na blogu (1. část – Filmové efekty, 2. část – Jak se dělá temnota). Vše od pohybu zombíků, umístění předmětů až po adaptivní hudbu, zvukové efekty, načasování jednotlivých vln útoků nebo chování uměle ovládaných spoluhráčů, tzv. botů, je dílem AI Directoru. První část tohoto dvoudílného seriálu o AI v L4D je zde.

V první řadě je potřeba říct, že L4D je primárně kooperativní akcí bez klasického singleplayerového příběhu. Hráči opakovaně procházejí kampaněmi, které se skládají z určitého počtu na sebe navazujících levelů a po dohrání si buď zahrají to samé na vyšší obtížnost, nebo si vyberou jeden z dalších herních módů či jinou kampaň. Nicméně L4D je tak jako každá multiplayerová/kooperativní střílečka založena na opakovaném hraní stejných map. Zásadní rozdíl je ovšem v počtu hráčů a v protivnících. Základem je kooperativní režim hry pro max. 4 hráče a multiplayerový režim až pro 8 hráčů (Versus). Chybějící hráče nahrazuje AI a stejně tak ovládá i hordy zombíků. Důraz na kvalitu umělé inteligence je tedy v případě L4D mimořádný a hlavním cílem AI Directoru je:

  1. Nabídnout robustní a mimořádně výkonnou AI.
  2. Zajistit kompetentní náhradu lidského faktoru.
  3. Nabídnout znovuhratelnost.
  4. Generování dramatického herního tempa.

1. Nabídnout robustní a mimořádně výkonnou AI
Základem kvalitní AI je realistický pohyb postav v prostředí. Zombie v L4D nejsou těmi nemotornými bezmozky ze starých hororů, kteří se plouží světem a čekají, až jim někdo zemře pod nohama. Jsou velice agresivní a ve sprintu si nezadají ani s Usainem Boltem. V případě agresivních zombie musí být jejich pohyb rychlý, plynulý, efektivní a co nejpřímočařejší. Ovšem taková optimalizace cesty sebou nese řadu problémů:

  • Nezanedbatelná ztráta výkonu při výpočtu trasy.
  • Trasy musejí být přepočítávány velice často.
  • Následování vypočítané trasy přímo vypadá příliš roboticky.

Mnohem lepší je využití reakčního sledování cesty. Sledování cesty takříkajíc „dopředu“ s mnohem větším odstupem vytváří zároveň dostatečný prostor a čas pro vyhnutí se případným překážkám (auta, zdi, ploty, dveře atd.). Výhody tohoto systému jsou:

  • Menší nároky na výkon.
  • Dobrá pohybová orientace v prostředí.
  • Dobře se vyrovná s davovými situacemi.
  • Výsledný pohyb je plynulý.

Malou nevýhodou je fakt, že se AI může ze své trasy oddálit natolik, že návrat zpět může vyžadovat přepracování trasy, což vede k prodlevě a zvýšení nároků na hardware. Na následujícím schématu se podíváme, jak reakční sledování cesty vypadá v praxi. Všimněte si, že v místech, kde AI přemýšlí (červený obdelníček) se rozhodne vybrat vzdálenější bod cesty a původní bod opouští, protože jej vyhodnotí jako ztrátu času a vydává se tak přímější cestou.

Výsledkem je velice realistická a plynulá trasa, kterou by pravděpodobně zvolil i člověk. Zároveň při porovnání s klasickým naplánováním přímé trasy jsou si obě dost podobné, přičemž reakční sledování trasy není tak okatě přesné a robotické.

Reakční sledování cesty: lezení
Aby byla zajištěna neustálá „bojeschopnost“ zombie v tak složitém prostředí jaké nabízí L4D, museli tvůrci zapracovat na šplhacím/lezecím algoritmu, který dovolí všem AI ovládaným postavám ve hře překonávat reálně překonatelné překážky jako auta, ploty, zdi, šachty a další místa. Využívá se podobná technika jako při lokálním vyhnutí se překážce za pomoci algoritmů. Pro tento účel je AI ovládaný bot v neustálé „pohotovosti“ a zkouší, zda-li objekt před ním splňuje požadavky pro přelezení.

Následuje sada skenovacích procesů prostoru nad botem. Musí se vyhodnotit výška překážky, šířka mezery mezi stropem a překážkou, okraj překážky pro zachycení a nakonec se musí vybrat odpovídající animace výskoku a šplhání.

Chování a rozhodování se
Každá postava ovládaná AI ve hře včetně Survivors se musí neustále rozhodovat, jakou zbraň použije, kdy jí použije, jaký předmět sebere, kdy vyléčí sebe nebo někoho z kamarádů. Stejně tak je to u Boss Infected, přičemž jejich starostí je koordinovaný útok a správné použití speciálních dovedností. Nutno podotknout, že zrovna Survivors boti často plýtvají lékárničkou v situacích, kdy to není na místě.

V této části výkladu se omezím pouze na srozumitelné vysvětlení základních rozhodovacích procesů, které musí boti neustále vyhodnocovat a řešit. Základem je pohyb prostředím, výběr animací pro pohyb, vizuální kontakt s okolním prostředím (dotazy typu „je daný objekt v mém zorném poli? „) a cílené chování na základě výběru ze sady dostupných akcí (postupných, náhodných, přesných, aktuálních, odložených atd.). Chování botů je tedy založeno na procesech, které spolu komunikují, navzájem se aktualizují, vyhodnocují, zavádí se a ukončují. Základem jsou akce typu OnStart, Update, OnEnd, OnSuspend a OnResume, které se spustí za určitých podmínek.

Pak se musí kalkulovat s prolínáním těchto akcí, které mohou vypadat různě a které odrážejí dění na obrazovce. Dejme tomu, že hrajete jenom s boty. Ti postupují tempem, jaké udáváte vy. Zaměří se na blížící hordu, ale z ničehonic se objeví Smokerův jazyk a odtáhne vás pryč. AI právě prováděnou činnost (kosení hordy zombie) dočasně přeruší, zaběhne vás zachránit, přidá další akci pro použití lékárničky a po splnění této akce se vrátí k původnímu procesu, který byl pozastaven na pozadí. To je velmi jednoduše a laicky řečeno, ale ve skutečnosti probíhá rozhodování mnohem složitěji a podmínek pro splnění dané akce je daleko více, nehledě na množství situací, do kterých se boti mohou dostat. Vše musí být naplánováno tak, aby boti někde nezamrzli. Občasné vytuhnutí botů nemusí být nutně trvalý bug, ale může se jednoduše stát, že v jednu chvíli dojde k takovému množství nepředvídatelných akcí, že bot je nedokáže vyhodnotit a zatuhne.

AI botů v L4D je zkrátka mimořádně složitá a musí vědět co dělat při:

  • zranění, blokování pohybu, spuštění animace, dokončení animace, kontaktu s nepřítelem, zabití, zabití ostatních, sledování, ztráty z dohledu, zvukovém efektu, sebrání předmětu atd.

Pro tyto potřeby jsou ve hře použity tzv. „obsluhovače událostí“, které mají pro každou událost připravenou adekvátní reakci. Pak je zde ale řada událostí, kterým není možné přiřadit jednu odpovídající akci, ale je nutné vybrat z množství dostupných akcí. Otázkou je, která akce je v dané situaci správná. Teď už jdu možná až do zbytečných detailů, které ve výsledku nemají význam. Někdy je zkrátka pouze důležité, aby se něco stalo. Např. bot Francis narazí na mapě na pipebomb a molotov, nebo nové zbraně. Není zase tak důležité, jakou zbraň si vybere, ale že si nějakou vybere. Hráč třeba zvolí brokovnici a molotov, bot Francis ale vezme Uzi a pipebomb (údajně také proto, že boti s molotovem neumí zacházet, protože nedokáží vyhodnotit přesné místo hození a mohli by spíše týmu uškodit). Hráč může nabýt dojmu, že si Francis vybral „špatně“, nicméně ve výsledku je to jedno, protože i s živými hráči by to mohlo dopadnout stejně a objektivně žádná zbraň v L4D není nejlepší. Záleží jen na tom, kdo jak s ní umí zacházet.

Přečtěte si také 2. část povídání o umělé inteligenci v Left 4 Dead

Related Posts Plugin for WordPress, Blogger...
  • SKACE

    Odkázat na PDFko a pak se ho snažit celé přeložit vyžaduje hodně odvahy…
    Davy vykřikují: „Nemůžeme se dočkat druhé části…“

  • http://fakeeverest.cz Michal „Vodny“ Bayerl

    SKACE: Uvádět zdroje je slušnost. Klidně bych mohl zdroj neuvést a dělat tady machry, že jsem si to snad zajel zjistit od Valve. Tak to dělají jiné weby, my ne. Kdo chce číst v originále, má možnost. Kdo neumí AJ nebo ho to nebaví přelouskávat, rád si to přečte. A pokud si to četl i ty, pak byla mise splněna. ;-)

  • SKACE

    V tom případě bych ti to nandal hned jak by si to sem dal, že jsi zase aktuální jak měsíc opožděnej translator :)

  • http://www.google.com/profiles/104334027090093751631#about gage

    Davy vykřikují: „SKACE, drž prosím zobák a najdi si místo rádoby inteligentní a podnětné buzerace jinou zábavu.“
    „Odkázat na PDFko a pak se ho snažit celé přeložit vyžaduje hodně odvahy…“
    a hlavně něčí práce, kterou ty akorát schazuješ. Tomu říkám pravý virtuální kult osobnosti.

    Zrovna tenhle článek mi přijde dobrej a pro spoustu lidí zajímavej. Mě osobně se třeba nechtělo louskat prezentaci v AJ a takhle to mám pěkně přehledně přímo pod nosem.

  • SavageCZ

    Já také patřím k těm línějším a nepříliš dobře jazykově vybaveným, takže tímto děkuji.

  • Pingback: » To nejlepší z Fake Everestu za rok 2010 Fake EVERest