19. 8. 2011

Osm bitů ve třech rozměrech

Sledge ve svém posledním článku hezky shrnul zajímavé počiny osmibitových platforem, které se dotýkaly 3D grafiky, zejména při použití v FPS hrách. Aniž bych mu chtěl lézt do zelí, myslím, že by bylo dobré pro doplnění se na problematiku 3D grafiky na těchto starých strojích podívat z trochu většího, obecnějšícho nadhledu. Že si někdo dál tu práci a naportoval v jednadvacátém století na ZX Spectrum základní benchmark - tedy Doom - je jedna věc (a technologicky je to spíše Wolfenstein 3D, že). Ale jak se k 3D grafice stavěli tehdejší vývojaři? Už několikrát jsem zde na blogu demonstroval, že v osmdesátých letech byly tyto z dnešního hlediska komické stroječky považovány za vrchol a mnoho her (či softwaru) vznikalo s masovým nadšením "co budeme dělat s olbřímími čtyřicetiosmi kilobajty paměti?" Jistě, nároky tehdejších hráčů a i vývojařů byly nesrovnatelně nižší, než jsou dneska, takže se to dá pochopit, ale podívejme se na to střízlivě. Opravdu se někdo zabýval 3D grafikou na stroji, který disponuje 0.000001% paměti a výkonu proti současným strojům? Inu, když končí odstavec takto okatě formulovanou otázkou, tak je jasné, že ano. Ano, zabýval a to dokonce do té míry, že to vyráží dech. Jako obvykle.

Počítačová grafika, zejména ta trojrozměrná, mne fascinovala od dětství. Prakticky jakákoliv hra, byla-li 3D (do 3D nepočítám paralaxní scrolling, aby bylo jasno!), měla u mne na růžích ustláno. Fascinovaly mne renderované triky ve filmech (na Trávníkáře nikdy nezapomenu), první trojrozměrná dema na Amize a tak dále - prostě co bylo 3D, to jsem šňupal všemi dírkami. Díky tomu jsem se pak dostal i k různým 3D studiím a pracoval jsem pár let jako grafik pro architektonická studia, kde jsem dělal vizualizace domů a zákresy do fotografií. Takže veškeré 3D věcičky na počítačích mi hodně říkaly. A to platí i pro dřevní dobu osmibitových počítačů, v mém případě ZX Spectra, kterým jsem sice disponoval až v devadesátých letech - jenže touha po Doomovi byla silná a tak jsem hrál všechno, co se Doomovi jen trošku v principu podobalo (nemluvě o pokusech o 3D engine na úrovni Wolfenstein 3D psaný v QBasicu (na Amize v PC Tasku samozřejmě)).

Z herního hlediska se dá 3D grafika rozdělit do dvou základních kategorií. Grafika, která se snaží o iluzi 3D a pak "opravdové 3D". Jistě, už tady se může zvrhnout bitka o terminologií. Ono i grafika, která vytváří iluzi, počítá obvykle se třemi body - takový paralaxní scrolling, přestože je "prokazatelně" dvourozměrný, musí mít uvedeno pořadí zobrazovaných vrstev, což je de facto "Z osa". Z hlediska iluzorního 3D bych dal asi mohl jmenovat demo KKOLOR pro ZX Spectrum. Je zřejmé, že onen "pohyb po chodbách" nebo "rotující kostka" jsou udělané velice chytrým posunem 2D vektorů. Kdybychom měli vzít KKOLOR jako engine na hru, zjistili bychom, že se nemůžeme při stávajícím kódu uprostřed zmíněné chodby plynule rozhlížet okolo sebe. To je tedy krásně udělaná iluze, ale asi se shodneme, že nejde o 3D.

Právě tím se liší dema od her. Interaktivita dává hráči do ruky zbraň, že může vidět všechno ze všech stran a úhlů. Tím pádem se 3D grafika musí dělat "doopravdy". Jenže na to nebyl vždy výkon. Stali jsme se tak svědky mnoha 2.5D enginů ála Wolfenstein 3D, de facto i Doom. Ba dokonce i na voxely došlo v demu Insane. Tak jako tak - rozdíl mezi iluzí 3D a interaktivním 3D prostorem je myslím zřejmý. Takže jsem si řekl, že by bylo zajímavé velice stručně shrnout trojrozměrné hry pro osmibitové systémy trochu v jiném úhlu pohledu, než udělal Sledge (a k čemuž mne inspiroval, tímto mu děkuji a nadávám zároveň, zdržuje mne to od psaní Amigácké pecky Fate Gates of Dawn!). Pokusím se dodržet určitou časovou kontinuitu vývoje pro lepší ilustraci a rovněž se pokusím vyhnout demům a homebrew produktům (zejména těm, které potřebují pro svůj běh nějaké rozšíření původního hardwaru). Nechci shrnout všechny hry, ale spíš vypíchnout zajímavé pokusy.

Crypts of Chaos (Atari 2600, 1982)

Není úplně spravedlivé začít tímto krokovacím dungeonem, ale jako příklad (zdaleka ne prvenství!) o 3D grafiku je to myslím podstatné. Hodně her, které využívaly známého krokovacího mechanismu, se považovaly ve své době za "3D" a to včetně všech dungeonů jako Eye of Beholder, Ishar nebo Dungeon Master. Vize perspektivně ustupujího prostoru stačila, i když byl pohyb velice omezený. No z hlediska interaktivity to těžko lze považovat za opravdové 3D. Do stejné škatulky patří i hra Tunnel Runner, která se chlubila vestavěnou RAM v cartridge, což umožňovalo vyšší kvalitu grafiky - skoro by šlo hovořit o texturách na zdech a podlaze. Pořád jde o krokovací systém pohybu.

Crypts of Chaos

Tunnel Runner


Survival Run (Atari 2600, 1983)

Z hlediska částečně interaktivních 3D iluzorních her lze určitě začít například titulem Survival Run. Plynule scrollující grafika provádí postavu ve first person režimu bludištěm, kde si vybíráme cestu dál. Náš pohyb je ale neměnný, těžko hovořit o orientaci v 3D prostoru. Ale záměr autorů je jasný. Přes pasivnost rozhodování hráče a předpočítanou cestu zde jasně vidíme plynulý pohyb chodbou a tak hovoříme o takřka dokonalé iluzi 3D.


Battlezone (Arcade, 1980)

Nyní jsem si trochu odskočil a rovnou to vybalím naplno. Battlezone je totiž hra, ke které lze plně referovat, jako k trojrozměrné. Pohyb po 2D ploše ve first person režimu, drátěné modely tanků a dalších objektů proti nám, svobodný pohyb, rotace, střelba - zkrátka vše, co známe. Je zajímavé, že verze pro Atari 2600, vydaná o tři roky později, je graficky úplně jinak pojatá. Používá více iluzorních triků, ale 3D dojmu nakonec také dociluje jiným způsobem. Battlezone není samozřejmě první 3D hrou, ale musím dodat ještě jeden, interně konkurenční titul. A sice Red Baron, který byl ve vývoji dříve, než Battlezone, ale z marketingových důvodů přišel do heren později. Red Baron nejen, že využívá stejného enginu, ale také je "víc 3D", jelikož je možné měnit výšku ovládaného letadla (i když se více méně jen pohybuje a naklání horizont). To je dobré vědět!

Battlezone - arcade.

Battlezone - Atari 2600.

Red Baron - arcade.



Ant Attack (ZX Spectrum, 1983)

Zpátky k domácím, osobním počítačům. Ant Attack je hra, která interně počítá s trojrozměrným světem, ale graficky je "pouze" izometrická. Ve skutečnosti je ale možné rotovat kamerou o 90° a tím pádem se přesvědčit, že izometrický pohled není dvourozměrný. Přesto hodně her s izometrickým pohledem bylo ve své době považováno za 3D - typicky hry od Ultimate (Knight Lore, Alien 8) či hry jako Quazatron. Zároveň ale bylo i více her, které umožňovaly měnit kameru a tím docílit pocitu 3D prostoru i v 2D grafice - například výborná vrtulníková střílečka Cyclone (pro mnohé předchůdce Desert Strike mimochodem).

Ant Attack

Cyclone

Knight Lore

Quazatron

Elite (BBC Micro, 1984)

Elite je zlomová hra po všech stránkách, grafiku nevyjímaje. Pomáhá si ale některými iluzemi. Samotné kosmické lodě a základny jsou plně trojrozměrné, drátěné modely. Avšak například planety jsou pouhým dvourozměrným kruhem a stejně tak vesmírný prach, který míjíme a který navozuje pocit pohybu, je pouhou dvourozměrnou kulisou (člověku se dere na rty něco o Eve Online). Jednotlivé sektory, ve kterém se odehrává pohyb a souboje, jsou ale plně trojrozměrné, o čemž svědčí nejen výtečně počítaná grafika, ale i navigační radar.



Tomahawk (ZX Spectrum, 1985)

Her, které využívaly drátové grafiky, byla celá řada i na ZX Spectru - no za všechny bych jmenoval Tomahawk - letecký simulátor bojové helikoptéry. Krom toho, že naše cíle byly plně trojrozměrné, setkáváme se zde také s trojrozměrnou krajinou. Nemám nyní na mysli vektorové hory, ale přímo zemi - náš obzor. Zatímco jiné hry (jako třeba Air Raiders pro Atari 2600) pracují s horizontem dvourozměrně a iluzorně naznačují prostor, Tomahawk počítá s plackou pod námi, jako s regulerní plochou v celém prostoru. Dokonce se zde pracuje s viditelností do dálky v závislosti na počasí. Díky tomu je ale hra dost pomalá, což je nevýhoda těchto opravdových 3D enginů. A jako bonbónek přidám - Tomahawk se dá ovládat dvěma joysticky najednou!

Tomahawk - je dobře patrné, že krajina je prostorová - placatá, ale přesto 3D.

Další zmínkyhodné hry podobného typu zobrazení - Tau Ceti, Academy a Mercenary (přechůdce slavné hry Damocles).

Mercenary (Commodore 64)

Rescue on Fractalus! (Atari 5200, 1984)

Lucasfilm Games vydali v roce 1984 z grafického hlediska revoluční hru pro jinak moc nepovedenou konzoli Atari 5200, aby se ta samá hra později objevila s velkou slávou na osobních počítačích. V této hře musíme létat nad krajinou, která je na svou dobu naprosto fantasticky dokonale vymodelovaná a velice rychle počítaná. Na jednu stranu hra vděčí plynulosti prostému faktu, že používá prakticky jen dvou barev pro vykreslení - avšak to co staticky vypadá divně, je v pohybu dokonale trojrozměrné. Samotný název hry napovídá, že engine využívá pro výpočet krajiny fraktálů, tedy procedurální generování krajiny v reálném čase, což činí z této hry jeden z nejoriginálnějších programátorských počinů všech dob (nemluvě o roku 1984) - tohle prostě musíte vidět v pohybu! Mimochodem - hra se původně měla jmenovat "Behind Jaggi Lines!", ale autoři si byli moc dobře vědomi originálního enginu a název se tak skoro na poslední chvíli změnil.


Zig Zag (ZX Spectrum, 1984)

Falešného 3D tato hra dosahuje velice milým krokem. Ve skutečnosti je hra krokovacím dungeonem, jako jsme už viděli mnohokrát do té doby - ale s jednou podstatnou změnou - přechod mezi políčky je plynulý. Není to nepodobné Lands of Lore například. Samozřejmě onen iluzorní trik ve skutečnosti překresluje pouze pár desítek pixelů, což znamená, že je pohyb ďábelsky rychlý a plynulý. Začlenění spritových nepřátel a postupně se zvětšujícího bludiště je hlavní náplní hry. Ta je sice repetetivní, ale za to unikátní.


Sentinel (BBC Micro, 1986)

Další z řady nekompromisních osmibitových her. Vektorová grafika krom samotného vizuálu hry zde hraje zásadní roli při výpoočtu viditelnosti našeho hrdiny. Chytrý zápis stavby levelů do paměti (procedurální generování) navíc znamená opravdu enormní množství úrovní, což engine díky své dynamičnosti unese.


Captain Blood (ZX Spectrum, 1988)

Velice zajímavé pojetí 3D grafiky přinesla hra Captain Blood. Pohyb krajinou byl jakoby složený z několika výřezů, které plynule scrollovaly. Jakmile se postava přestala hýbat, došlo k dopočítání grafiky mezi jednotlivými výřezy, což zabralo několik (desítek) sekund. Výsledkem byl pohled do dokonale vyrenderované grafiky, se kterou se například vzdáleně srovnatelný Rescue on Fractalus nemohl rovnat. Avšak pro plynulý pohyb v takto detailní grafice rozhodně nebyl výkon - z 3D grafiky se tak stává ve skutečnosti jenom 2D kulisa. Ale jako experiment jde o zajímavý způsob, jak vytvořit originální atmosféru pro originální hru.



Rad Racer (NES, 1987)

Her, které simulují 3D prostor pomocí 2D efektů je celá řada. Dobře je to vidět u automobilových her jako Enduro, Pole Position, Lotus, ale také leteckých - Stealth, Afterburner, ATF nebo Space Harrier. Oproti výše zmíněnému triku ve hře Survival Run se zde ale hry soustředí na ubíhající krajinu pod našimi koly a křídly. Toho je docilováno různě animovanými horizontálními 2D pruhy, které se pravidelně střídají. Hráč ve skutečnosti nemá prakticky žádnou vládu nad prostorem. Pohyb je jednosměrný a pouze pohyb spritu našeho vozidla / letounu v jedné či ve dvou osách vytváří hratelnost. Za speciální zmínku stojí jistě Rad Racer pro NES, který k tomu všemu uměl zobrazit grafiku stereoskopicky a tak s brýlemi dociloval skutečného 3D efektu.


Rad Racer (NES) ve stereoskopickém režimu

 After Burner (Master System)

 Lotus Turbo Challenge (ZX Spectrum)

 Space Harrier (Master System)

Stealth (Atari)


Freescape (ZX Spectrum, 1987)

Nyní jsme se už posunuli do fáze, kdy si vývojaři uvědomili, že současná pokročilost počítačů a programování nemusí být použita pouze pro falešné pokusy o trojrozměrnost, ale udělat kompletní 3D prostor, do kterého lze zasadit hru. V rámci her na enginu Freescape tak hovoříme o hrách jako Driller, Castle master, Total Eclipse a Darkside. Jejich společný jmenovatel je jasný - svobodný pohyb po třech osách (jetpack součástí), rozhlížení do všech úhlů a také možnost rotace pohledem - nebál bych se říci, že Freescape je ekvivalent Quake enginu na osmibitech. Po všech pokusech o 3D grafiku pomocí drátů a vektorů je to právě Freescape, který je komplexním simulátorem prostoru včetně viditelnosti, světel a dokonce animací a interaktivity. Konkrétně hra Darkside mne natolik ve své době rozsekala (to teda hovořím o roce 1994, kdy již frčel Doom), že jsem si ji nahrával na video a ukazoval kamarádům, co Doom neumí (neposlouchali).

 Dark Side - komplexní 3D modely v praxi.

Total Eclipse - visutý můstek v prostoru, o kterém se nesnilo any Atomovému Vévodovi.

Do kategorie "plně 3D her" lze ještě zařadit tituly jako Stunt Car Racing, Hard Drivin', Carrier Command a celá řada dalších.

 Carrier Command (ZX Spectrum)

 Hard Drivin' (ZX Spectrum)

Stunt Car Racer (Commodore 64)

Virtual Reality Studio (ZX Spectrum, 1991)

Vrcholem Freescape enginu je bezesporu titul, který není hrou, ale pouze editorem na hry. Hráč si může postavit ekvivalenty výše jmenovaných her bez omezení - stejný editor byl použit při výrobě jmenovaných her. Samozřejmě - vše se děje v herním enginu najednou, takže je možné stiskem jediné klávesy okamžitě začít betatest hry. Připomíná to například editor levelů pro Far Cry 2, akorát pořád hovoříme o procesoru Z80 a 48 kB paměti! Faktem ale je, že v této době byl Freescape engine naportovaný na silnější platformy (Amiga, Atari ST - všechny hry vyšly přibližně s ročním zpožděním) a praktická využitelnost tak postupně opustila osmibitovou platformu (druhá verze Virtual Reality Studio byla již jen pro šestnáctibity - v roce 1992).

Tyto dva screenshoty od sebe principielně nic neliší. Svobodné a dynamické editory světů. Liší se pouze hardwarovými nároky. A to je další důkaz svobodného ducha neomezných programátorů v osmdesátých letech. Vše je možné.

VU-3D (ZX Spectrum, 1982)

Na závěr jsem si nechal perličku. Naprosto regulerní 3D Studio pro ZX Spectrum, včetně možnosti renderingu za pomoci Gouraudova stínování (možná nejde přímo o tento typ stínování, ale jde o podobný výsledek). V tomto editoru se dají vytvořit takřka libovolné objekty - například ukázková sklenička na víno - ty pak nasvítit z několika možných úhlů a nechat vyrenderovat - a výsledek poslat na tiskárnu. Z hlediska "opravdovosti" moderní 3D grafiky na osmibitové platformě asi nelze najít lepší příklad. A to je prosím rok 1982. Nejde teda o interaktivní hru - doba výpočtu je neúměrně dlouhá. Ale například rotace s drátovým modelem sklenice je celkem plynulá a dovedl bych si představit nějakou hru na tomto enginu, která by vypadala lépe, či graficky komplexněji, než třeba Elite. A rok vydání? 1982 - to se nám ten kruh hezky uzavřel. Bez zajímavosti není, že v roce 2003 naprogramoval Claus John dokonce VU-3D animátor - ale to už přesahuje hranici tématu.


Nesnažil jsem se vyjmenovat všechny 3D hry na osmibitech, ale jistě jsem nějaké důležité minul. Budu rád, když mi osvěžíte paměť a podělíte se v komentářích o kousky, které jsem trestuhodně minul.

P.S.: Nezapomeňte, že všechny zmíněné produkty pro ZX Spectrum si můžete online vyzkoušet v emulátoru na dokonalých stránkách World of Spectrum! A to včetně VU-3D samozřejmě.