Zákulisní zajímavosti o vývoji počítačových her | Kapitola 8
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.
Mafia 2 je hrou vyvíjenou pro tzv. „next gen“ generaci konzolí. Ta se proti generaci předchozí (kam patřil i první díl) liší tím, že hry jsou daleko víc interaktivní, ať už jde o nečitelné prostředí, vozidla a podobně. Velký posun vpřed zaznamenala také grafika. Dnes se běžně používá několik zdrojů dynamického osvětlení současně (v Mafii 2 jsou to 3 až 4 světla na jeden objekt) a také velké množství postprocessing efektů, jako jsou různé typy rozmazání obrazu a podobně. Současně také platí, že se na grafické karty přesunuje čím dál tím větší množství výpočtů, čímž se sice odlehčí procesoru (a ten má více času počítat AI a fyziku), nároky na výkon GPU však společně se zlepšující se vizuální stránkou her rostou.
geometrický model džbánu na čaj s nataženou specular mapou (zdroj: reindelsoftware.com)
Jak moc je tvorba počítačové grafiky moderních počítačových her náročná (a na co vše se tedy musí myslet při vývoji) se pokusím vysvětlit na následujících řádcích. Základem každého objektu je jeho drátěná kostra složená z množství polygonů (trojúhelníků), ze které se vytvoří čistý geometrický model. Ten se pokryje základní difúzní texturou. Na model se poté začne nanášet velké množství map jako jsou specular mapy (nesou informace o odlescích), normálové mapy (nese informace o nerovnostech), environmental mapy (nese informace o odrazech okolního prostředí), fresnel efekt (vytváří např. metalický lesk u karoserií vozidel), ambient occlusion mapa (redukce světla v tmavých prostorách) atd. Výčet jednotlivých map je opravdu rozsáhlý a pro každou se musí přepočítat úprava barev na daném objektu.
Po aplikovaní všech map se obraz prožene ještě přes post processing efekty, které se aplikují vždy na celou scénu. Sem patří jednak efekty hloubky jako je Depth of Field, ale také různé úpravy kontrastu a jasu, úprava barevného spektra (při zásahu je obraz černobílý), bloom efekt a podobně. Nyní si vezměte, že i poměrně nízké rozlišení 720p na herních konzolích má celkem téměř jeden milion pixelů v každém snímku (u 1080p jsou to miliony dva) a takovýchto snímků pro iluzi plynulého obrazu potřebujete 25-30 za sekundu. Vaše grafická karta tedy musí v rozlišení 1080p každou sekundu při 30 fps vyrenderovat 62 milionů pixelů. To je solidní číslo, že?
Abyste si proceduru vzniku obrazu a její složitost dokázali představit trochu reálněji, mám pro vás podrobně rozebrané dvě scény. Ta první je z prostředí baru a na obrázku nad odstavcem je scéna vyrenderovaná v čisté geometrii. Všimněte si, že na scéně není žádné velké množství polygonů a třeba postavy úplně ztratily plastický efekt na svém oblečení.
Na druhém obrázku už je scéna obohacena o stíny a zejména o normal mapy. Postavy (zejména ta v popředí), tak konečně vypadají jako postavy a nikoliv uhlazené ledové sochy (to platí i o rádiu na baru, jehož plastický efekt je také tvořený normálovou mapou). Co se týče stínování, využívá Mafia 2 tři typy světel. Světla typu spor a direct vrhající dynamické stíny a světlo typu point, které stíny nevrhá.
Na dalším obrázku je vidět scéna po přidání occlusion mapy. Ty jsou normálně šedé, v našem případě však nesou i barevný tón, protože grafik použil mapu i na získání detailů (ručně do mapy přidal například špínu na zemi). To se dělá proto, že konzole mají omezený výkon a pokud jej lze takto ušetřit, hodí se to.
Na čtvrtém obrázku je scéna už téměř kompletně hotova. Přibyly v ní textury, difúzní a specular mapy.
Na posledním obrázku je hotová scéna včetně všech postprocessing efektů. Všimněte si efektu přesvícení u světel na strop, rozostření scény v dálce a celkového zjemnění obrazu zabarvením dohněda.
Podobným způsobem si rozebereme i scénu venkovní. Na prvním obrázku je opět výhradně čistá geometrie. Všimněte si zejména stromů, které se svými přerostlými listy vypadají opravdu nechutně. Za zmínku stojí také čisté stěny budov a dokonale hladká silnice.
Nyní do scény přibyly stíny a normálové mapy. Stejně jako u první scény přibylo množství detailů na postavě, dále na autě v popředí a některé detaily se objevily i na silnici.
Po přidání textur, difúzní a environmental mapy začíná scéna vypadat konečně jako ze hry. Jak je vidět, budovy v dálce jsou pokryté jen čistou texturou a žádný prostorový efekt na nich není.
Nakonec jsme do scény přidali postprocess efekty a mlhu. Obraz získal žlutý nádech (dle mého názoru až nepříjemně) a postprocess efekty dodaly také pocit hloubky obrazu, který výše chybí.