Dik moc za paradni clanek. Dungeon a RPG jsou snad nejkrasnejsi a mnohdy i nejobtiznejsi hry na PC.
Jen bych se chtel zeptat jak se takove Dungeony vlastne tvorily? Neco malo se dalo najit na stare Vyhni, ale tam byl jen naznak toho jak vykreslovat dojem trojrozmernych chodeb… :) Obvzlast by me moc zajimalo, jak se resi ony v RPG casto velmi rozsahle svety a jejich narvani do pameti. Clovek si kolikrat rika, ze to snad ani nejde… >-D
tak tak. V beholderech (ocekavam, ze i jinde) opravdu meli ulozene vsechny 3 velikosti sten, pro vsechny otoceni. Komprese byla tuha. Vysledek byl nadherny a vypocetne to pak bylo jen plosne kresleni sprite-u malirem, takze to davala uz 286ka… to byly casy. Pro eob2 mam slabost. Bohuzel dosemu/dosbox taky, takze mi to v pokrocilejsich stadiich pada na ruzne deleni nulou :-(
Prechodove animace melo treba Lands of lore… trochu to pomohlo v orientaci. :-)
To ano. Pokud si pamatuji, tak plocha chodeb dungeonu/obrazovka byla rozdělena na určité dílky, představující jednotlivé stěny, strop a podlahu; ty byli na tvrdo nakresleny (včetně stínovaní) a potom v závislosti na tvaru a vzdálenosti v chodbě vykresleny. O proti dnešním polygonům a pod. nic moc, ale musíte uznat, že na tu dobu to byla skvěla iluze :)
Je to překvapivě prosté :-) Svět je rozdělen na jednotlivé mapy, každá mapa je vlastně jen čtvercová síť (dvourozměrné pole) a každé políčko obsahuje nějaké informace. Např. zda je políčko průchozí nebo zda na něm stojí zeď a případně jaká. Někdy naopak zdi nestály „na políčku“, ale na hranici mezi dvěma políčky (Bard's Tale, staré Wizardry, stará RPG od SSI jako Pool Of Radiance).
Do paměti se obvykle nahrávala jediná mapa, ve které se hráč zrovna nacházel. Při přechodu do jiné mapy se stará „zahodila“ a nahrála nová. Většinou si toho nahrávání nešlo nevšimnout :-)
No a samotné stěny se vykreslovaly pomocí tzv. wallsetů, jak už tu někdo myslím zmiňoval – viz např. http://www.tgeweb.com/…llsets.shtml. Nejdřív vykreslíš nejvzdálenější zdi, pak je „přeplácneš“ bližšími atd.
Brány Skeldalu nepoužívala dvojrozměrné pole, ale orientovaný graf, kdy jednotlivé čtverečky byly pospojovány k sobě pomocí hran .. čísel sousedů pro každý směr. Hráč se pak nacházel na konkrétním čísle uzlu (sektoru) a podle toho, kam byl otočen se mi kreslily sousední sektory do výhledu. Výhod to mělo mnoho, například jednodušší kreslící rutiny a prakticky neomezený tvar bludiště. Velikost mapy byla omezena jen velikostí paměti. Nevýhodou bylo komplikovaný způsob hledání sektoru na souřadnicích X,Y, protože se musela prohledat celá mapa. Řešil jsem to různě, například tím, že se souřadnice ukládaly předpočítané spolu s mapou, atd.
Skeldal také měl části grafiky jen v základnim tvaru a zbytek uměl plynule zvětšovat, či různě tvarovat, aby to vypadalo dobře. Podlaha byla ve formě jednoho obrázku, ze kterého se podle masky řezaly výřezy podle aktuálního typu podlahy.
Zdrojáky jsou na Source Forge, project Skeldal.
To řešil editor, ten si tyhle situace sám pohlídal. Takže to samozřejmě normálně fungovalo, ale editor nabízel i možnost, že autor bludiště mohl ty čísla ručně upravovat. Bylo tak možné vytvářet různá podivná místa, jako nekonečné chodby nebo jednosměrné portály… tam to šlo, zpátky ne, případně tam se šlo jedním směrem a zpátky se šlo jinudy. Nebo okna… hráč viděl nestvůry, nestvůry jeho ovšem nikoliv (měli tam stěnu)… případně viděl sám sebe zezadu :-).
Dobrý také bylo, že to pěkně optimalizovalo kreslení, kreslilo se jen to nejnutnější, což bylo … v tehdejší době… docela důležitý. Hra běhala v 640×480×16b na P75 docela svižně (herní okno 640×360) … testoval jsem to i na školních počítačích, kde byly 486.