25. 11. 2013

Forza Motorsport 5 - na križovatke ciest


Videohra by mala vždy nekompromisne bežať v maximálnom rozlíšení a frekvencii, ktoré mainstreamová telka tej ktorej doby zvládne. A extra sa zdôrazňuje tých rock solid 60 fps. To nie je /nebol/ žiaden problém pre staré arkáde kabinety, nech im je zem ľahká, kde toho silikónu natlačilo koľko bolo treba. Pri konzolách sa s tým však bojuje od nepämati - treba na to kopu ram, priepustnosti a CPU/GPU výkonu. A keď konkurencia vytiahne lepšiu grafiku aj keď s horším rozlíšením a framerejtom a v reklamných traileroch to vyzerá dobre, tak sa musíme prispôsobiť aj my. Ak si zoberieme aktuálnu 8. generáciu a PS4ku, tak každá hra na nej môže bežať na magických 1080p/60 fps ak sa zmestí do časového intervalu 17 milisekúnd /1000:60=16.666ms na jeden frame/ aj keď to objektívne niekedy znamená - mnoho až drakonických kompromisov. Flopza 5 /Xbone/ urobila to, o čom tu roky mekotáme - beží v tých báječných 1080p/60fps ale dev tím Turn11 musel obetovať veľa zo svojich pôvodných predstáv /najmä grafických/ - až tak, že hra skončila ako jemne graficky lepší updejt staršej flopzy 4 vo full HD. Čo sa teda vlastne stalo ?

Herný kód to je veľmi intezívne zaťaženie CPU /herná logika, scripty, fyzika, AI, často aj audio plus niektoré grafické operácie a samozrejme riadenie GPU skrze draw calls atď./ a GPU - moderná grafická karta má tiež svoju výpočetnú časť /ALU, shaders/ a vykresľovaciu /ROPs, rasterizácia/ a potom je tu RAM a zbernice. Všetku tu prácu musíte stihnúť do 17ms. A aby ste to dosiahli ostrúhavate každú z vyššie uvedených operácii podľa výkonu jednotlivých častí vašej mašín a dizajnu vašej hre /väčší dôraz na fyziku, či na grafiku, obe naraz na 110% mať nemôžte/. Takže dostanete tu jednoduchšia fyzika, tam blbejšiu AI, hentam menej načančanej grafiky. A grafika Flopzy 5 sa oproti E3 2013 traileru /evidentne nebežal na Xbone HW, Microsoft nám teda klamal sprosto do očí/ zmenila výrazne ku horšiemu pri zachovaní tých 1080p/60. A zhoršila sa to prečo ?

Vymenuje vám 100+1 dôvod. Alfa /a omega/. Alfa je familiárne, aj keď nepresné označenie pre riešenie transparencie - priesvitnosti v hre /32 bitové farby =  RGBA = po 8 bitov na red, green, blue zložku a 8 bitov na alfu/. Ide o jeden z klasických problémov počítačovej grafiky. Predstavte si, že vo FPS hre čumíte na stenu v 1080p - vidíte 2.1 miliónov pixelov /z didaktických dôvodov budem silne zjednodušovať/. Postavte pred stenu DOOM IMPa. Stále je tam iba tých 2.1M pixelov /časť steny render jadro vyhodilo a nahradilo korpusom nášho impa/. Postavte pred impa sklenenú tabuľu, ktorá pokryje celú obrazovku. V tejto chvíli musíte rátať s ďalšími 2.1M pixelu, ku tým pôvodným. Odpáľte full screen explóziu pred tým sklom. Ďalších 2.1M pixelov nyvaše. Takto môžte pokračovať až do kolapsu vášho HW. A v pozadí číha konflikt transparancie a geometrie /Z-buffer, hierarchia vykresľovania scény - veľké problémy/.

replay beží iba na 30 fps a engine hry má teda na všetko "dosť času" - aj tak však používa triviálne riešenie efektov depth of field a motion blur - vyslovene PS2-PS3 triedy /6-7. generácie konzol/

Transparencie sú všadeprítomné /ošetrujete aj hrany alfa textúr oproti okoliu - teda drôtené ploty atď/. Dym od kolies auta, sklá aut, časticové efekty, keď si podvozok škrtne o zem, kilometre tráv, kríkov, stromov /aka foliage/ popri trati, vlajky. Transparencie enormne zaťažujú podvýživený Xbone /fillrate, zbernice/. Takže pri driftovaní uvidíte niečo malé, anemické, dvojrozmerné a nie tučné oblaky dymu tiahnuce sa diaľky. Vykosíme polovicu stromov, tie čo ostanú "omladíme" početnými rezmi. A zároveň použijeme, kde to len bude možné /hlavne foliage/ to najjednoduchšie riešenie alfa efektov /OIT A2C/. Je veľmi rýchle a vlastne ani nejde o pravý alfa blending. Proste ak tá tránsparentná textúra prekrýva tu nepriehľadnú, tak aby ju bolo vidieť, v tej priesvitnej - šachovnico vystrihneme dierky /dithering/ aka stipple pattern effect - nemusíte sa plašiť, našiel som to hojne aj v BF 3 na ninja PC, dokonca menej hojne v KZ:SF na PS4ke /zlá kompresia, ale pozerajste sa na stred a hore do explózie/. Transparencie zaťažujú najmä nevypočetnú čať GPU /ROPs a samotnú VRAM/. A Xbone má polovičný počet ROPS a teda dramatický nižší pixel fillrate oproti PS4ke a zároveň nevýkonný mem systém.

tragický aliasing a celý Turn 11 dev tím aj s ich šéfom v luxusnej 2D podobe

A pomôžeme grafickej karte Xbone ešte viac. Zrušíme aj antialiasing, necháme tam iba veľmi neisto bežiace /pravdepodobne/ selektívne 2xMSAA na niektorých hranách a trochu nepodareného asi post AA /temporal/. Výsledkom je však hovadsky zubatá hra, interiér, drôty, káble, pletivo. Nezabúdajme, že hra nepodporuje denný cyklus /obrovský nárast náročnosti grafického kódu/ a tiež dynamické počasie. V aktuálnej situcácii, bude to ani značne degradovaný engine Flopy už v 1080p/60 neutiahol. Pozorujeme totiž aj dosť nepochopiteľnú stratu anizotropného filteringu textúr, ktorý nahradilo archaické trilineárne filtrovanie z čias prvých 3Dfx Voodoo grafík. ďalej zbohom volumetricita /priestorovosť/ svetelných a časticových efektov. Adios ambientná oklúzia /nepriame tiene odrazeného svetla/. Častice neprijímaju vrhaný tieň ani svetlo ako Gran Turismo 5/6. Selfshadows, subsurface skatering, absentujúci motion blur, hnusný depth of field, jednoduchšie shaders. Hotové jatky.

strach a bieda - neanimovaní 2D paňáci /bacha, cez jedného prerastajú oceľové zvodidlá/, 2D lesy - bitmapa na horizonte, katastrofálny nedostatok tieňov /direct, indirect/ a ich nízke rozlíšenie, sociálne svetlo /sekundárne odrazy sú kde ?/ a filtrovania textúr /zbohom AF/ a mnoho, mnoho ďalšieho

Napriek tomu, že hra už definitívne strácala vizuálne kvality, ktoré by niesli next gen pečať - k tomu "najhoršiemu" sa zúfale Turn 11 ešte malo uchýliť. Polycount - počet polygónov na frame. Vylágrovaná krajinka síce už vyzerá ako keby ňou prešlo stádo  hladných cigošov, tak kde sa tu dá ešte niečo ubrať ? Správne - zmeníme tých bielych gadžov čo stoja za mantinelami na 2D sprajty /neanimované, takže sub Mortal Kombat level/. Ak si myslíte, že to bude vyzerať komicky a do hier pre konzolu s 8000 mega ram to už nepatrí, tak pamätajte - všetko pre blaho 1080p/60 módu.  A ide to potom hravo aj na slabučkom HW ak nebudete trvať na dobrej grafike /AI, fyzike, deštrukcii, dynamike svetla a ďalších next gen fičúrach/.

------------------------------------

Budúcnosť. Turn 11 nie je banda idiotov, sú to veľmi dobri programátori a majú úplný a skorý prístup ku hardvéru Xbone už mnoho mesiacov. Vidia tiež o aký značný kus je pred nimi konkurencia v podobe Gran Turismo 6 pre PS3. Najbližší plán, ak teda MS prejaví záujem mať z Flopzy komplexnú simulačnú hru a nie jednoduchú akciu v štýle Ridge Racer, bude následovný. Turn 11 nájde ešte nejaké optimalizačné rezervy a poladí všetky tie nedostatky spomenuté vyššie. Dokonalá náprava, respektíve návrat ku tomu fake E3 videu však nebude možný. Xbone na to skutočne nemá dostatočný výkon a nutnosť konečne do série dostať dynamické počasie /slnko, mraky, vzdušná vlhkosť, sneh, vietor/ a denný cyklus /dynamické tiene - ups !!/ pošle Xbone do kolien a nepochybne smerom ku rozlíšeniu nižšiemu ako 1080p, povedzme tých 900p pri zachovaní stabilných 60 fps.