Proč se Amiga bojí DOOMa?Jan Petkov
Taky vás nejen poslední dobou přepadá otázka proč AMIGA oproti PC stále ztrácí a
ztrácí. Myslím, že daleko od pravdy nebyl jeden můj přítel, když prohlásil, že
Amigu přemohl DOOM. Vidíte ten paradox, jeden z nejlepších herních počítačů
našeho století odstavila právě počítačová hra. A ještě, aby toho nebylo málo,
tak hra vytvořená pro takový počítač, před jehož monochromatickým monitorem
zezelenal nejeden úředník. Na základě této skutečnosti se zkusme dostat o trochu blíže pravdě. Myslím,
že se nespletu, když prohlásím, že takovou škodu těžko napáchá jediná hra, ale
spíš určitá skupina her stejného ražení. Poodhalíme roušku jejich společného
tajemství. Všechny nebo alespoň většina z nich je velmi působivá a okusíte-li
jejich kouzlo jen na okamžik, propustí vaše bolavé oči až po několika hodinovém
maratónu, kdy vám naštěstí a k vaší velké zlosti vypli elektřinu.
Jsou přitažlivé, protože jsou realistické, realistické jsou, protože se podobají
našemu světu co do grafického zpracování, co do prostoru, ve kterém se
odehrávají a co do ovládání, které má velmi blízko k manipulaci s člověkem.
Na mysl mi vytanula další otázka. V čem je tedy tak velký problém, s čím se
Amiga neumí poprat, vždyť 3D her už jsme zažili a jak dobrých a jak rychlých? A
máme to; kamenem úrazu a pro rozvoj Amiga her kamenem smrtelným je právě
realistická grafika, což byl vlastně jediný nový, ale převratný prvek, který hra
DOOM přinesla.
Dříve než se pustíte do programování vlastního DOOMa, pokusím se vám vysvětlit
rozdíl mezi grafikou Amigy a PC klonu. PC má od začátku k dispozici tzv. chunky
grafiku. Jde o to, že jeden bod na obrazovce odpovídá 1 bytu v paměti. 1 byte v
paměti změníte velmi rychle, je to jedna z nejrychlejších operací. Naproti tomu
Amiga disponuje grafikou bitplánovou, kdy se bod na obrazovce skládá pomocí
grafického obvodu z několika bytů v paměti (není to úplně přesně řečeno, ale pro
náš výklad to postačuje).
Proč tvůrci Amigy sáhli na první pohled k tak nešikovné variantě? Důvodů je hned
několik. Bitplánová grafika umožňuje disponovat najednou s velkými bloky dat, to
je taky jeden z důvodů, proč jsme si mohli zahrát tolik krásně plynulých
stříleček. Bitplánů nemusí být aktivní ten nejvyšší možný počet takže jste si
mohli i na počítačích s tak pomalou sběrnicí, jako měla A500, zvolit přiměřený
počet barev. Všichni víme, jak se i A1200 zapotí, navolíte-li 256 barev v
HiResu, což je dnes ve světě počítačové techniky více méně nižší standard.
Bohužel realistické zobrazení 3D objektů, tzv. texture mapping, vyžaduje rychlý
přístup k 1 bodu obrazu, což je pro bitplánovou grafiku facka jako od Heleny
Růžičkové.
Přesto přese všechno neplatí výrok jednoho z tvůrců hry DOOM, že si o takové hře
mohou nechat zdát i majitelé Amigy 4000. I přes svůj bitplánový handicap si
slušnou DOOMovku zahrajete už na Amize s procesorem MC68030 na padesáti. Jak je
možné, že Amiga s procesorem, který snad může konkurovat Intelu80386, zvládne
tak slušnou DOOMovku? Odpověď je jednoduchá: díky šikovnosti svých coderů!
(Programátorské špičky, bohatá základna shareware programů a operační systém, to
jsou v dnešní době největší pozitiva Amigy.) Jedním s největších problémů, se
kterým se museli tvůrci DOOM klonu na Amize poprat, je co nejrychlejší simulace
chunky screenu. V zásadě existují dva přístupy k řešení:
1) Simulace chunky módu pomocí copperu (copper je jeden z grafických koprocesorů
Amigy). Jak je to možné? Vysvětlení následuje. V zásadě nám jde o to, abychom
dokázali přistupovat k 1 bodu obrazovky jedním zápisem do paměti. Připomeneme si
strukturu copper instrukce CMOVE pro přesun 1 wordu do zákaznického registru:
„DC.W registr,hodnota“. Pak nám dejme tomu 20 těchto instrukcí za sebou měnících
barvu pozadí dokáže vytvořit pseudo chunky displej a to dokonce s vypnutými
bitplány! Bohužel nepatří copper k nejrychlejším obvodům a k provedení jedné
instrukce CMOVE potřebuje 8 pixelů LoResové grafiky. Výsledkem našich 20
instrukcí bude řádek 1 pixel vysoký a 160 pixelů široký. Jeden pseudo pixel má
rozměry: 1 řádek na 8 sloupců. Tedy vcelku nic moc, ale ve starších demech
můžeme shlédnout spoustu zdařilých efektů využívajících tohoto módu. Má dvě
velké přednosti: svou rychlost a možnost použít až 4096 barev. Na detailní obraz
je to ovšem trochu málo, co teď?
Tak rychle se pseudo chunky obrazovky nevzdáme a trochu zapojíme mozkové
závity... šrum, šrum... pokud zkombinujeme copper a bitplány dostaneme další ze
zajímavých módů (mimo jiné byl použit i ve hře Alien Breed 3D).
Mód pracuje následovně: copper necháme měnit barvu podobně jako v předešlém
případě s jediným rozdílem, že nebudeme měnit pouze barvu pozadí, ale postupně
všech barvových registrů. Bitplány zapojíme tak, že si nakreslíme obrázek s 1
pixelovými svislými proužky, kde první proužek je v barvě 0, další v barvě 1 a
tak postupně až k barvě 31. Už vám svítá? Copper prostě nahodí pro každý řádek
novou paletu a tím máme hotový chunky displej s body o šířce 1 pixel! A zase vám
musím zchladit hlavu. Určitě vás napadlo, že na obrázku 32 pixelů širokém toho
asi moc nezobrazíte a máte úplnou pravdu. Co vám ale brání, když máte AGA
mašinky, aby byl obraz široký až 256 pixelů? Co? Zase šnek copper. Pod/e mých
testů (a tvůrcové Alien Breedu 3D na to přišli taky) nezvládne copper naplnit
více jak 50 barvových registrů během jednoho řádku. Tady je místo pro kompromis,
vytvoříte si bod o velikostí 2x2 pixely, čímž získáme 2 řádky pro copper (tedy
100 barev) a velikost displeje 200 pixelů na šířku (výškově neomezeně). A přesně
takový obraz vidíte v Alien Breedu 3D.
2) Druhou metodou zobrazení chunky displeje je prosté vytvoření si náhradního
prostoru v paměti, který používáte chunky stylem a ten po každém naplnění
převedete speciální „chunky to planar“ rutinou do bitplánového obrazu. Svého
času rozpoutal tento problém přímo mánii mezi amigisty na síti a pořádali se
konference jen na toto téma. Výsledkem je sada rychlejších či pomalejších anebo
úplně nepochopitelných rutin uskutečňujících tento převod. Tyto rutiny se
nezastaví před ničím, berou si na pomoc i dětské počitadlo, magii, blitter
nevyjímaje. Kdo jednou spatřil toto dílo a snažil se tomu přijít alespoň na
jeden z kloubů, ten ví o čem mluvím. Takto vytvořený chunky displej má už
všechny charakteristiky klasického PC obrazu: 256 barev, velikost bodu shodnou s
pixelem, možnost full screenu. Uvádí se, že takový Amiga chunky obraz má
rychlost 12.5% pravého chunky obrazu, tzn. že čas k převodu není zanedbatelný a
pro pravý požitek z celoplošného obrazu je vyžadován procesor MC68040 (hráči
Alien Breeda 3D II mi to asi jen potvrdí).
Na závěr dnešního povídání si uvedeme malou gameskografii DOOMovek, od těch
prvních a nejjednodušších až po dnešní a zítřejší skvosty (jako je Alien Breed
3DII). Pokud mne paměť neklame, tak toto šílenství odstartovala hra od ID softu
nazvaná „Wolfenstein 3D“. Obsahovala pouze jednopodlažní scény, pravoúhlé stěny
a strop s podlahou nebyly pokryty texturou. Tuším, že hned po ní následoval
raketový nástup DOOMa. Já se ještě mezitím zmíním o hře GLOOM presentované na
Amize, která je vhodným mezičlánkem. Najdeme v ní navíc šikmé stěny, podlahu a
strop obarveny texturou, stále se ovšem jedná o jednopodlažní systém. Lepší
realistický dojem získáme přidáním více horizontálních rovin, schody, patra,...
prostě jako v DOOMovi. Od té doby nepřišlo (a ani pravděpodobně nepřijde) nic
převratného. Dort se zdobí jen okrasou a třešničkami (světelné efekty, pohledy
ve vertikálním směru, apod.) Jsem velmi rád, že se mezi kupou DOOMovek vyjímá
čestný prapor třímající Alien Breed 3D II.
Ovšem, amigisté, neztrácejte hlavu, dobrou hru tvoří především dobrá myšlenka a
šikovný nápad, vždyť většina herních skvostů vyšla právě z našich kruhů, kde je
takový přístup samozřejmostí! Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|