Pamatujete Pac-Mana? Jak by ne, nedávno jej vtisknul i Google do svého loga. Pohyb nepřátel v této hře řídí na pohled komplexní logika a my vám ji ve dvojici článků přiblížíme. V tomto prvním díle se seznámíte se základy, v druhém pak s "osobnostmi" jednotlivých duchů a možnými fintami pro boj s nimi.
Chad Birch si nedávno otevřel blog, na kterém by rád postupně odkrýval fungování herních mechanismů známých her. Nazval ho GameInternals a inspirací mu byl Jamey Pittman a jeho sbírka „Pac-Man Dossier“, která je fascinujícím rozborem mechanik hry Pac-Man. První článek tak má být, dle Chadových slov, i jakousi poklonou a pokusem o přístupnější vysvětlení komplexní umělé inteligence, která se za hrou schovává.
Tento článek je překladem originálu „Understanding Pac-Man Ghost Behavior“, který napsal Chad Birch. Originál najdete na jeho blogu GameInternals.
O hře
Všechny počítačové hry té doby byly násilné – buď válečné, nebo typu space invader. Neexistovaly žádné, které by si mohl užít kdokoliv, obzvlášť ženy. Chtěl jsem vytvořit „legrační“ hru, která by se líbila i něžnější polovině lidstva.
Toru Iwatani, tvůrce hry Pac-Man
Pac-Man je jedna z nejsymboličtějších videoher všech dob a alespoň zběžně se s ní setkala většina lidí (včetně „nehráčů“). Cíl hry je velice jednoduchý - hráč (reprezentovaný postavičkou zvanou Pac-Man) se nachází v bludišti plném jídla (které je znázorněno jako kuličky nebo tečky, chcete-li) a k postupu do další úrovně ho musí všechno sníst. Aby to nebylo tak jednoduché, jsou v bludišti čtyři duchové, kteří Pac-Mana pronásledují. Jakmile dojde ke kontaktu, hráč ztrácí život a Pac-Man i duchové se vrátí na výchozí pozici, snědené tečky se ale neobnovují.
Kromě prostého vyhýbání se má Pac-Man proti duchům jedinou obranu – čtyři větší kuličky, „budiče“, které se nacházejí v rozích bludiště. Když jeden z nich sní, duchové se na krátkou dobu vyděsí, začnou utíkat a v počátečních úrovních je může Pac-Man dokonce jíst a získat tak bonusové body. Sežraný duch není kompletně eliminován, pouze se vrací na výchozí pozici a pokračuje v pronásledování.
Vedle pojídání teček a duchů je ještě jeden způsob získávání bodů – ovoce. V průběhu každé úrovně se poblíž středu bludiště objevují dva kousky. První přijde na scénu po konzumaci 70 teček a druhý se objeví, když jich Pac-Man sní 170.
Každá úroveň používá stejný tvar bludiště, v kterém je 240 obyčejných teček a čtyři budiče. Tunely na krajích, které vedou mimo hrací plochu doleva a doprava, fungují jako zkratka a může je používat jak Pac-Man, tak duchové, jejichž rychlost je ale v tunelu značně omezená. Ačkoliv se rozložení nemění, jednotlivé úrovně jsou postupně čím dál obtížnější kvůli změnám Pac-Manovy rychlosti, rychlosti duchů a jejich chování. Po dosažení úrovně 21 už k žádným změnám nedochází a všechny další levely jsou identické.
Společné prvky chování duchů
Inu, ve hře o pojídání není zrovna moc zábavy, takže jsme se rozhodli vytvořit protivníky, kteří by přidali trochu vzrušení. Mají svou vlastní povahu a aby se hráč dostal k jídlu, musí s nimi bojovat. Nepřáteli jsou čtyři příšerky ve tvaru duchů, každý v jiné barvě - modrý, žlutý, růžový a červený. Použil jsem různé barvy hlavně proto, abych potěšil dámy, které by hru hrály - měl jsem za to, že se jim barvičky budou líbit.
Toru Iwatani, tvůrce hry Pac-Man
Každý z duchů je naprogramován tak, aby měl individuální „osobnost“, neboli odlišný algoritmus, který používá k určování způsobu pohybu bludištěm. Porozumění tomu, jak se duchové chovají, je extrémně důležité při efektivním unikání. Než se však pustíme do rozebírání jednotlivých modelů chování, prohlédneme si nejprve logiku, kterou mají protivníci společnou.
Domeček
Na začátku hry neútočí všichni duchové najednou. Jak ukazuje obrázek počáteční pozice, v prostoru bludiště začíná jenom jeden z duchů, ostatní jsou zavřeni na místě uprostřed, které je často označováno jako „domeček“ (v originále „ghost house“). Mimo zahájení levelu se na toto místo duchové vrací, jenom když je Pac-Man sežere při „nabuzení“ nebo v rámci resetu poté, co zemře. Domeček je jinak nepřístupný (jak duchům, tak hráči). Duchové se z něj vydají vždy doleva, ale mohou se takřka okamžitě otočit díky efektu, který bude popsán později.
Podmínky, určující kdy mají duchové povoleno opustit domeček, jsou ve skutečnosti docela komplexní, a proto je do tohoto článku nezahrnu (navíc se po dokončení prvních několika úrovní stávají stále méně relevantními). Pokud vás zajímají a chcete si o nich něco přečíst (a přijít na zajímavý způsob zneužití), zabývá se jimi do hloubky na začátku jmenovaný Pac-Man Dossier.
Cílová pole
Velká část návrhu hry a jejích mechanik se točí kolem představy hrací desky rozdělené na dlaždice. V tomto kontextu „dlaždice“ představuje čtverec o rozměrech 8×8 pixelů. Hra Pac-Man má rozlišení obrazovky 224×288 px, což nám dává celkovou velikost plochy 28×36 dlaždic, z nichž většina je ale nepřístupná (hráči i duchům). Jako ukázku vlivu dlaždic uveďme, že duch „chytí“ Pac-Mana v případě, že se oba nachází na stejném políčku, nebo že každá kulička je uprostřed své dlaždice.
Všimněte si, že obrázky (sprity) duchů a Pac-Mana mají větší rozměry než jednotlivá pole, takže se nikdy nenacházejí pouze v jednom z nich. Z pohledu hry je to řešeno tak, že za aktivní se považuje ta dlaždice, v níž je v daném okamžiku středový bod postavy. Tohle je důležité vědět při unikání duchům, protože ke kolizi dochází pouze v případě, že se jejich středový bod dostane na stejné pole jako ten Pac-Manův.
Klíčem k pochopení chování duchů je koncept cílového pole. Většinu doby má každý duch stanovenou dlaždici, na kterou se snaží z aktuální pozice dostat, a jeho chování je tomu podřízeno. Všichni duchové používají k cestování hracím polem stejné metody, ale při stanovení patřičného cílového pole se projevují jejich rozdílné osobnosti, protože každý má svůj unikátní způsob.
Neexistuje žádné omezení, které by říkalo, že cíl musí být dosažitelný - často je na nedostupné dlaždici a běžné chování duchů z toho vychází. Cílová pole budou rozebrána detailněji v dalších částech, nyní si zapamatujte pouze to, že motivací duchů je ve většině případů dostat se na určitou dlaždici.
Režimy pohybu duchů
Duchové se vždycky nacházejí v některém ze tří dovolených režimů: Chase (pronásledování), Scatter (rozptýlení) a Frightened (děs). Standardní režim je Chase - duchové v něm tráví nejvíc času a loví Pac-Mana. V tomto režimu je určení cílového pole ovlivněno pozicí Pac-Mana, ale u každého protivníka má jinou významnost.
Scatter se liší v tom, že má každý duch pevně danou dlaždici, která je vně jednoho z rohů bludiště. Důsledkem je, že v tomto režimu se duchové rozprchnou směrem ke „svým“ rohům.
Unikátní je režim Frightened, protože v něm duchové nemají určeno cílové pole, ale místo toho se na každé křižovatce pseudonáhodně rozhodují, kam se vydat. Navíc změní barvu na tmavě modrou, pohybují se mnohem pomaleji a Pac-Man je může jíst. Doba trvání tohoto režimu se ale při postupu úrovněmi krátí a od levelu 19 dál se už vůbec nevyskytuje.
Aby byla hra trošku napínavá, chtěl jsem, aby v určité fázi nepřátelé Pac-Mana obklíčili. Měl jsem ale pocit, že být neustále obklopován a udoláván by bylo pro lidskou bytost příliš stresující, takže jsem to zařídil tak, že nájezdy monster přicházejí ve vlnách. Zaútočí a stáhnou se. A postupem času se přeskupí, zaútočí a znovu rozprchnou. Takhle to vypadá mnohem přirozeněji než být pod neustálým útokem.
Toru Iwatani, tvůrce hry Pac-Man
Přechody mezi režimy Chase a Scatter nastávají na základě pevného časovače, který způsobuje efekt „vln“, jenž popsal Iwatani. Časovač je vynulován na začátku každé úrovně a kdykoliv hráč ztratí život. K jeho pozastavení dojde, když duchové přepnou do režimu Frightened (tj. když Pac-Man sní budič), a jakmile ten skončí, vrací se do předchozího režimu a časovač pokračuje, kde přestal. Duchové začínají ve Scatter a jsou definovány čtyři vlny výměn Scatter / Chase, po kterých zůstanou v režimu Chase, dokud se nevynuluje časovač. Pro první level jsou doby jednotlivých fází nastaveny takto:
- 7 sekund Scatter, potom 20 sekund Chase,
- 7 sekund Scatter, potom 20 sekund Chase,
- 5 sekund Scatter, potom 20 sekund Chase,
- 5 sekund Scatter, potom trvale přepnout na Chase.
Délka těchto fází se o něco změní při dosažení druhé úrovně a ještě jednou při dosažení páté. Od levelu 2 se třetí Chase znatelně prodlouží, na 1033 sekund (17 minut a 13 sekund), a následující Scatter trvá pouhou 1/60 sekundy, načež duchové přejdou na permanentní Chase. Změny úrovně pět k tomu přidávají zkrácení prvních dvou režimů Scatter na 5 sekund a přesunutí získaných 4 sekund do třetího Chase, čímž je prodloužen na 1037 sekund (17:17).
Co se týče zkrácení režimu Scatter na 1/60 sekundy ve všech úrovních kromě první, ačkoliv se přepínání na tak zanedbatelně krátkou dobu zdá nesmyslné, má své důvody a odhalíme je zanedlouho.
Zde končí první díl rozboru chování duchů. V druhém díle se mimo jiné dozvíte o osobnostech nepřátel a taktikách úniku.