IDDQD

Jedná se o textový přepis přednášky, kterou jsem měl na nekonferenci jOpenSpace 2025, video záznam ke shlédnutí. Je mi ctí, že jsem mohl dělat předskokana Tomuchovi a jeho povídání o shaderech (náhodička, vůbec jsme se nedomlouvali předem, jako fakt). Nepřináším žádné závratné novinky, nýbrž tichou, ale naléhavou, touhu po úniku z drsné přítomnosti do idylického bezpečí minulosti. Ostatně už jsem vzpomínal na počítač Commodore 64.
Videozáznam
Knihy
Z nostalgie jsem si koupil si knihu 50 let videoher. Ideální dárek pro starý fotry. Sbírka článků z časopisu Level. Úžasné provedení na křídovém papíře. Kromě samotného úniku do dětství mě fascinují technologie, která stojí za skvělými produkty, stejně tak mě fascinují podmínky, které k tomu vedly.
Mezi hrami samozřejmě nesměl chybět Doom. A když jsem hledal téma svůj letošní příspěvek, tak jsem si konečně přečetl knihu The Game Engine Black Book: DOOM, Fabien Sanglard (k dispozici legálně zdarma).
A ohledně názvu přednášky se nakonec ukázalo, že znalost IDDQD
není úplně stoprocentně sdílená.
Tak vězte, že se jednalo o cheat nesmrtelnosti.
Hře Doom předcházela hra Wolfenstein 3D, které se tu nehodlám podrobněji věnovat. Ostatně Fabien Sanglard o ní vydal samostatnou knihu. Nicméně ve zkratce, zlí jazykové tvrdí, že šlo o 2,5D hru. Stěny jsou pravoúhlé, podlahy a stropy bez textur. Pohybujete se po jediné výškové úrovni, chybí výtahy. Sprity jsou vykresleny 2D.
Rok 1993
Píše se rok 1993. Zeman už je v politice. Rozděluje se Československo. Já chodím do třetí třídy.
Mezitím tvůrčí duo John Romero (25 let) a John Carmack (22 let) vydávají ambiciózní tiskovou zprávu, že za 11 měsíců máme čekat převratnou novinku. Romero Doomem dodnes žije a vyjadřuje se k němu, takže nemohl chybět ani v dokumentární seriálu High Score, kde mimo jiné tvrdí, že na konzolích funguje plynulý scroll, to tehdejší PC hry neuměly. Konzole tou dobou znamenalo například Super Nintendo v ceně 199 USD (přepočteno na dnešní inflaci 446 USD).
Když jsem slyšel scrollování, tak jsem si vzpomněl na hru Duke Nukem 2D, známou svým dual-parallax scrollingem, ale vyšel až v prosinci 1993. Ta doba byla těhotná pokrokem.
O hry s 3D grafikou se snažili i na konzolích, první slavná je Star Fox. Nedostatek výkonu mohli dohánět čipem v cartridge.
PC
Platforma PC byla zamýšlená pro textové editory, tabulkové procesory, sem tam zobrazit graf a ne animaci se 70 snímky za vteřinu. 4MB RAM, 14” CRT monitor 320 x 200, bratru za 3000 USD (přepočteno na dnešní inflaci 6726 USD).
Tou dobou máme procesor Intel a ne Pentium, ale 486. Když jsem viděl digramy pipelingu, otevřely se mi staré rány z ČVUT. Na škole mě to deptalo. S příběhem mi to přišlo srozumitelné a bavilo mě to. Jako děti jsme porovnávali jen taktovací frekvence, čím víc herzů, tím víc adidas. Ale je potřeba koukat na změny v architektuře. Procesor 386 například potřeboval dva takty na dekódování instrukce. A přestože procesor 486 s matematickým koprocesorem (takže spíš 487, ale to už nechci zabíhat do detailů) zrychlil operace v plovoucí desetinné čárce až na třetinu, stále to bylo zoufale pomalé oproti celočíselným operacím. Proto Doom zůstává u integerů.
Procesory se vyvíjely rychlejším tempem než paměti. Paměť DRAM byla levná, buňka obsahovala kapacitor a jeden tranzistor. Po přečtení bylo nutné znovu zapsat. Zápis bylo potřeba opakovat i bez čtení, protože kapacitor se vybíjel.
SRAM byla výrazně rychlejší, ale dražší, jelikož konstrukce vyžadovala minimálně šest tranzistorů. Využívala se pro cache. Cache má další rychlostní výhodu, protože procesor s ní komunikuje přímo a nemusí přes sběrnici.
I sběrnice se dočkaly vylepšení. VESA byla asi desetkrát rychlejší než ISA. Zvýšila se přenosová šířka na 32 bitů i frekvence.
Sound Blaster přináší zvukovou kartu s CD kvalitou.
A aby to nebyly jen nostalgické kecy, tak nějaké architektonické poučení. Trh se zvukovými kartami byl značně fragmentovaný. Tehdy sáhli po knihovně DMX, o které se dnes Romero vyjadřuje, že nebyla dobrá, že by si to býval napsal sám. Ale už nepřipouští, že by to nejspíš za 11 měsíců vůbec nestihli.
Můžete si připomenout loňskou přednášku Zákony SW architektury (Lukáš Křečan).
Všechna rozhodnutí v architektuře jsou kompromisy a žádné řešení není dokonalé
Paralelní programování se realizovalo pomocí IRQ (Interrupt Request, signál požadavku na přerušení) a DMA (Direct Memory Access, přímý přístup do paměti).
NeXTSTEP
Ač byll Doom cílený na platformu PC, tak samotný vývoj probíhal na superpočítačích NeXTSTEP. Slavný příběh by vydal na samostatnou přednášku, Steve Jobs byl odejit z Applu, ten pak NeXTSTEP později kupuje atd.
8MB RAM, 17” displej 1120 x 832, volitelně CD ROM bratru za 6 500 USD (přepočteno na dnešní inflaci 14 573 USD)
Programování
Spojenectví mezi Sunem a Nextem symbolizují písmena NS, které dodnes vidíte v API. Je velmi pravděpodobné, že kód, který kdysi běžel na NeXTSTEP a přispěl ke stvoření Dooma, nyní běží na mnoha milionech Apple počítačích nebo telefonech.
Doom byl napsaný v C++.
Kolem toho jsem se mihnul.
C/C++ pro mě znamená pointery.
Když slyším pointery, vybavím si tento vtípek a můj mozek vypíná.
Musíte se starat o pamět.
Funkce Malloc
způsobovala fragmentaci paměti, tak si museli vyvinout vlastní Zone memory manager.
Na PC měli v DOS Borland C++ editor, který měl sice zvýrazňování syntaxe, ale na obrazovku se nevešlo moc řádek a údajně neustále padal. TextEdit na NeXTSTEP neuměl zvýrazňovat, ale zobrazil víc řádek, uměl je zabalovat a hlavně byl stabilní.
Zatímco C++ dával na první místo výkon, tak Objective-C, ve kterém se programovalo na NeXTSTEP, upřednostňoval programátorskou produktivitu. Nikdy jsem v něm nepsal, ale Objective-C pro mě znamená message passing, pro nás Java programátory dodnes něco převratného. Přitom když budete děti učit Scratch, tak je to něco přirozeného.
Doom to jsou brokovnice, démoni a dynamické světelné podmínky. A jak toho dosáhli bez 24 bitové barevné podpory? Připravili si 32 palet o 256 barvách.
Doom přináší multiplayer, hru více hráčů proti sobě, tehdy ještě bez centrálního serveru. My jsme se propojovali přes sériové a paralelní kabely.
Distribuce
Doom distribuovali na dvou disketách jako shareware. Tedy první epizoda zdarma, pokračování k zakoupení.
Plná verze byla menší než 12 MB. Samotný engine něco málo přes 700 KB a data ve WAD souboru (Where’s All the Data?) něco málo přes 11 MB. Toto rozdělení usnadnilo hráčům pozdější vlastní úpravy. Stejně tak umožnilo naportovat engine na současné architektury, viz GZDoom.
Jak jsem již zmiňoval, Romero Doomem dodnes žije. K 25. a 30. výročí vydal Sigil I a Sigil II. Chtěl, aby úrovně působily, jako by patřily k původní hře, jako by to byla skutečná pátá epizoda. Osobně mi přijdou obtížnější než tehdejší úrovně.
Dodnes se hračičkové trumfují, na čem Dooma rozeběhnou.
Závěr
Doom znamenal naše mládí. Ve srovnání s tříáčkovými hrami za nimi stálo několik málo, pravda geniálních, lidí, kteří z tehdejšího hardware vyždímali naprosté maximum. Magie, která za tím stála, je v dnešní Unity/Unreal engine době nepředstavitelná. A proto je dobré si ji připomenout.
Měli jsme vlastně štěstí, že jsme zrod takových legend zažili. Dnes už se nepovažuji za hráče, tak nevím. Vznikají podobně přelomové tituly definující nový žánr?