Kúpiš si najočakávanejšiu AAA novinku, tvoja grafika za tisíc eur hučí ako vysávač, hra zamŕza a hneď v prvý deň musíš sťahovať 50-gigabajtový patch, aby to vôbec fungovalo. Tento scenár pozná každý moderný hráč. Prečo to tak je, keď máme k dispozícii brutálny výpočtový výkon? Odpoveď nájdeme v histórii. V deväťdesiatych rokoch nemali vývojári k dispozícii gigabajty RAM ani cloud. Museli bojovať o každý jeden bajt pamäte. Pozreli sme sa na zlatú éru herného kódovania (ako Doom či Quake) a rozobrali sme, prečo bol starý kód čistým umením, ktoré dnešným herným štúdiám zúfalo chýba.
Keď bola RAM luxusom: Umenie extrémnej optimalizácie
Dnes vývojári často pristupujú k optimalizácii s heslom: „Však hráč má 32 GB RAM a rýchle NVMe SSD, ono sa to nejako poddá.“ Výsledkom sú hry, ktoré zaberajú 150 GB na disku, hoci polovicu z toho tvoria nekomprimované textúry a audio súbory.
V 90. rokoch bol hardvér neúprosným sudcom. Ak tvoja hra prekročila limit pamäte o jediný kilobajt, systém skolaboval.
Zázraky Johna Carmacka (id Software): Keď v roku 1993 vyšiel pôvodný DOOM, bežal na počítačoch s 4 MB RAM. Carmack musel vymyslieť revolučný systém vykresľovania prostredia (Binary Space Partitioning), vďaka ktorému procesor spracovával len tie steny, ktoré hráč reálne videl. Zvyšok sveta bol pre počítač neviditeľný, čo uvoľnilo drahocenný výkon.
Trik s hmlou v Silent Hill (PS1): Prvá PlayStation mala iba 2 MB systémovej pamäte a 1 MB video pamäte. Keď vývojári z Konami zistili, že konzola nedokáže vykresliť celé trojrozmerné mesto naraz, nesklopili uši. Vymysleli hustú, ikonickú hmlu, ktorá zakrývala nedotiahnuté textúry v diaľke. Z hardvérového obmedzenia tak urobili najväčšiu atmosférickú zbraň hernej histórie.
Rýchla inverzná prevrátená hodnota odmocniny: Matematická mágia
Jedným z najslávnejších príkladov čistého programátorského vizionárstva je kód z hry Quake (1996). Hra potrebovala v reálnom čase počítať 3D fyziku a odrazy svetla, čo si vyžadovalo milióny matematických operácií so strednou hodnotou – konkrétne výpočet rovnice $1/\sqrt{x}$.
Bežné procesory tej doby by pri takomto masívnom počte delení skolabovali. Vývojári preto do kódu implementovali trik, ktorý obišiel klasické delenie a pomocou priamej manipulácie s bitmi v pamäti a jednej magickej konštanty (0x5f3759df) vypočítal výsledok štyrikrát rýchlejšie s presnosťou na 99 %.
Tento kód bol taký geniálny, že dlhé roky nikto presne nechápal, ako tá magická konštanta vôbec funguje, no udržal hru v plynulých snímkach za sekundu. To je definícia inžinierskeho umenia.
Prečo dnešné štúdiá zlyhávajú?
Netvrdíme, že moderné hry sú zlé. Grafika, fyzika a svety, ktoré dnes navštevujeme, sú dychberúce. Problémom je však priemyselné nastavenie.
Manažérsky tlak vs. čas: Vývojári sú tlačení investormi a prísnymi termínmi. Je jednoduchšie a lacnejšie vydať nedokončenú hru a opravovať ju za pochodu pomocou online aktualizácií, než investovať pol roka čistého času do čistenia a optimalizácie kódu.
Slepá viera v herné enginy: Moderné enginy (ako Unreal Engine 5) umožňujú poskladať hru neskutočne rýchlo. Daňou za to je však obrovská vrstva generického kódu na pozadí, ktorú hra ťahá so sebou, hoci ju vôbec nepotrebuje. Staré hry sa písali „na kov“ (bare-metal) priamo pre konkrétny hardvér.
Keď si dnes pustíš hru z 90. rokov cez emulátor alebo na retro stroji, zapne sa v priebehu sekundy. Žiadne načítavanie profilu, žiadne overovanie licencií na serveri, žiadne sťahovanie aktualizácií. Čistý, surový kód, ktorý bol otestovaný a vyladený do absolútnej dokonalosti pred tým, než sa vylisoval na CD.
Záver
História digitálnych hier nám ukazuje, že najlepšie nápady nevznikajú vtedy, keď máš neobmedzené možnosti, ale vtedy, keď si pritlačený k stene. Starí programátori boli digitálni architekti, ktorí stavali mrakodrapy na základoch z piesku. Ich nesmrteľný kód je dodnes pripomienkou toho, že skutočné inžinierstvo nespočíva v tom, koľko výkonu dokážeš spotrebovať, ale v tom, ako efektívne ho dokážeš využiť.
