Zákulisní zajímavosti o vývoji počítačových her | Kapitola 6
Seznam kapitol
Před pár dny jsme vám přinesli článek o vývoji počítačové hry. Na ten dnes nepřímo navážeme. Ze setkání s vývojáři Mafie 2 nám totiž zbylo ještě dost informací, které by bylo škoda nechat si jen pro sebe. Prozradíme, jak se tvoří animace, ozvučení anebo třeba implementuje fyzika PhysX.
![Zákulisní zajímavosti o vývoji počítačových her](https://storage.googleapis.com/pctuning-cz/media/images/efbpqksaf490fi160d30db9199b8196567197.jpg)
Víme, jak by umělá inteligence měla fungovat a nyní tento mechanismus chceme převést do praxe. Ilustrovat to budu na druhé Mafii a chování civilistů. Obecně platí, že v Mafii 2 jsou pro umělou inteligenci implementované dva enginy. Jeden se stará o to, co bude daná postava aktuálně dělat (tedy jestli půjde po chodníku, nastoupí do auta, bude střílet, podívá se do výlohy apod.), druhý se pak stará o vyhledávání ideální cesty z bodu A do bodu B. O tom, že jde o dva rozdílné enginy svědčí třeba fakt, že zatímco první jmenovaný si studio 2K Czech programovalo samo, druhý zakoupili hotový jako middleware třetí strany a do hry jej pouze implementovali.
![Zákulisní zajímavosti o vývoji počítačových her](https://storage.googleapis.com/pctuning-cz/media/images/93bt4fn7hq9pc6160d30db9d0900063810019.jpg)
Civilisté (auta i pěší) se v Mafii 2 chovají náhodně. Představit si to lze tak, že jakmile se auto blíží ke křižovatce, spustí se algoritmus určující, kam pojede. S největší pravděpodobností pojede rovně po hlavní silnici jako ostatní auta, může se ale stát, že se rozhodne odbočit do vedlejší ulice a tam se rozhodne zaparkovat. Podobné je to s pěšími civilisty. U nich se během chůze po chodníku zase rozhoduje, zda se nezačnou dívat do výlohy obchodu, nezalezou do telefonní budky anebo třeba neodjedou s autem zaparkovaným u silnice.
Situace parkování a odjíždění je obecně poměrně zajímavá. Hra totiž z pohledu NPC rozlišuje dva typy parkovišť. Jedna jsou statická a většinou jde o uzavřená velká parkoviště, kde jsou umístěna auta, do kterých NPC neumí nastoupit ani tam zaparkovat. Druhá (většinou odstavné pruhy u kraje silnice) jsou pak dynamická a právě zde se NPC při rozhodování rozhodne zastavit a vystoupí. Jakmile vystoupí, přepne se z režimu „jízda“ do režimu „chodec“ a pokud například k autu jen těsně po jeho odchodu přijdete a začnete jej krást, reaguje na to maximálně jako na obecnou krádež, nikoliv krádež jeho vozu.
![Zákulisní zajímavosti o vývoji počítačových her](https://storage.googleapis.com/pctuning-cz/media/images/70x6ukvm3shqq5z60d30dba8cbcb512461277.jpg)
Pokud se na scéně začne dít něco pro NPC nečekaného (například někdo někoho zastřelí), vstupují do hry charakterové vlastnosti postav (každá postava má přednastavené atributy), které rozhodují o tom, co bude dané NPC dělat. Pokud tedy někoho na ulici zastřelíte, část lidí začne v panice utíkat, část se půjde zvědavě dívat na mrtvolu a část vytáhne svoji případnou zbraň a začnou po vás střílet. Dané rozhodování záleží opravdu výhradně na charakterových vlastnostech dané postavy, kterých je mnoho. Část se s vámi pustí do pěstního konfliktu, ale do přestřelky nepůjdou (místo toho začnou se zbytkem v panice utíkat), část si to rozmyslí až poté, co vzduchem začnou létat granáty a část si to nerozmyslí vůbec.
![Zákulisní zajímavosti o vývoji počítačových her](https://storage.googleapis.com/pctuning-cz/media/images/gserb5byctjhsfr60d30dbb3b3d8883435230.jpg)
Podobné chování platí také pro automobily, které mají tři režimy chování. V běžném provozu se chovají normálně a respektují všechny dopravní předpisy. Pokud se však začne střílet, vozidlo se pravděpodobně přepne do režimu, kdy začne zběsile ujíždět bez ohledu na to, jestli na semaforu svítí červená nebo nikoliv. Úplně speciální režim zvaný „escaper“ pak mají ve hře taxíky s hráčem a auta v misích. Ta se totiž na křižovatkách nerozhodují náhodně, nýbrž mají předem vygenerovanou ideální cestu, kterou se snaží držet a už záleží jen na tom, zda dodržují dopravní předpisy anebo nikoliv. Cestu mimochodem hledají ve speciální neviditelné síti, kterou jsou silnice pokryté. Tato síť má jen 400 KB a načítá se při startu hry.
Kromě režimu escaper existuje ještě druhý speciální režim „hunter“, který používá například policie jdoucí po vás. Jak už jeho název napovídá, vozidlo v tomto režimu se snaží ulovit jiné vozidlo. Algoritmus sledování vozidla je v tomto případě trochu jiný než pomocí sítě, protože hráč je z pohledu vývojářů hry zlý a jejich síť nerespektuje (jezdí tedy i tam, kde normální vozidla nikoliv). Sledování hráče proto probíhá tak, že hráčovo auto za sebe při jízdě klade neviditelné značky, které se snaží pronásledovatel co možná nejlépe sledovat.
![Zákulisní zajímavosti o vývoji počítačových her](https://storage.googleapis.com/pctuning-cz/media/images/6b8h6oq90fkxt4760d30dbbf39c4515412639.jpg)
Pár slov si zaslouží také samotný algoritmus vyhledávání trasy. Pokud se už automobil rozhodne jet určitým směrem do konkrétního bodu na silnici, nastaví směrem k tomuto bodu kola a začne zrychlovat. Rychlost pak reguluje podle zakřivení čáry tak, aby automobil nevyletěl ze silnice a zároveň byl schopen zastavit třeba v případě, že se na semaforu objeví červená. Platí také, že čím rychleji automobil jede, tím vzdálenější je bod, do kterého jede. Důvodem je korekce nasměrování kol, jejichž rychlá změna při vysoké rychlosti by znamenala rozkmitání celého vozu.