IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Dungeon

Informace | Nepřátelé | Versionlist | Screenshoty | Stáhnout

Na tomto projektu jsem začal pracovat poháněn nadšením z vytvoření enginu v Pascalu, který by byl schopný procházet jednoduché 3D prostory. To se mi také povedlo :) , jeho vývoj můžete sledovat na obrázcích níže. Z Dungeonu měla být později hra, jako např. Eye of the beholder, Dungeon master nebo Forgotten realms Unlimited adventure.

Kontaktoval jsem Mircosofta, jestli by nebyl nápomocen s grafikou a příběhem. Ten vše potřebné dodal. Postupně jsem grafiku zpracovával a převáděl na sprity, na enginu jsem strávil velmi mnoho času, ale pokrok byl vidět. Objevily se však problémy...

Ono napsat něco v prastarém Pascalu je velmi složité, člověk musí pracovat s malou pamětí, v malém rozlišení a jen pod 256 barvami. Každou sebemenší funkci (např. zmenšení nebo zkosení textur) si musí napsat sám a nakonec má mnoho lidí problémy jeho DOSovou hru vůbec na počítači spustit. S větou "Proč dávat tolik energie a času do něčeho, co bude vždy vypadat ošklivě a co si nikdo nespustí, když mohu vytvořit něco pěkného a kvalitního pro Windows?" jsem ukončil vývoj Dungeonu. Když nad tím nyní přemýšlím, udělal jsem dobře, ale také mě to programování vlastních funkcí naprosto pro všechno dokopalo k pochopení toho, jak a co dělají Windowsácké vývojové nástroje za nás.

Níže si můžete stáhnout zdroják, obsahuje opravdu velmi zajímavé funkce a je to velký kus práce. Obsahuje např. zmíněné funkce pro manipulaci s obrázky, algoritmy stmívání, jak vnitřní, tak venkovní prostory, ukládání a loading hry, editor map, nepřátel a náhodný generátor map.


Další vývoj na čas přebral Mircosoft, ale nakonec mu došla motivace (spousta jiné práce - znáte to).

Jak šel čas (řazeno chronologicky odspoda nahoru):

Červenec 2015:

  • Po třech letech, kdy se Dungeon skoro nehnul, je asi načase ohlásit definitivní exitus. Nějaký zájemce o pokračování?

2012:

  • Nějak jsem se zasekl, bylo dost jiné práce.

Konec ledna:

  • Po tuhém boji jsou zvuky konečně plně provozuschopné a nezpůsobují pády. Obsluha příslušného přerušení je asi největší souvislý kus Assembleru, jaký jsem kdy vyplodil :-). Do hry zbývá zabudovat regulaci hlasitosti podle vzdálenosti a uživatelského nastavení, pak se pustím do editoru.

Stav do půlky ledna:

  • Dopsána kontrola viditelnosti a slyšitelnosti mezi dvěma body.
  • Dopsáno otvírání, zavírání a rozbíjení oken a všechny funkce dveří.
  • První pokus o ozvučení. Namluvil jsem pár provizorních hlášek pro nepřátele a kupodivu všechno hned napoprvé fungovalo. Jenom mi ještě někde něco přetéká a hra kvůli tomu padá, takže mám co debugovat.

Stav na začátku ledna 2012: Máme tady první hratelné beta demo (předchozí chyba s fontem je opravená).

  • Dopsány dveře (odemykání, otvírání a zavírání), načaty ostatní akce se stěnami (páky a okenice).
  • Doladěny zbraně a boj.
  • Hotové sbírání předmětů, léčení a tak, plus příslušné grafické efekty.
  • Uživatelské rozhraní se až na provizorní grafiku začíná podobat plánované finální verzi.
  • Změněna funkce štítu, teď funguje jako trvalá pasivní obrana zleva a zepředu.

Na konci prosince:

  • Engine je ve finální realtime podobě. Zobrazovací cyklus točím po 30 ms, což znamená zhruba 33 FPS. Ještě je tam bohatá rezerva pro pomalejší procesory, na mém 166 MHz zatím bylo vždycky všechno hotové do 10 ms a zbytek už se jenom čekalo.
  • Po těžkém boji jsem vychytal poslední bugy u nepřátel, teď běhají a bojují tak, jak mají. Algoritmus hledání nejkratší cesty se podstatně zrychlil použitím kruhové fronty na souřadnice, takže teď není problém, aby si každá potvora omrkla cestu hned dvakrát (takže už nejsou bezradné, když se jim někdo postaví do jediného možného průchodu). Z deseti typů nepřátel jsou čtyři stopaři, kteří hráče umí sledovat třeba přes celou mapu. Ostatní se po jeho útěku vracejí na místo, které mají hlídat. Kromě sledování hráče ještě umí náhodně bloumat v zadané oblasti nebo cíleně dojít na určité místo. V kombinaci se skripty by to mělo stačit na docela slušnou UI.
  • Proběhnul jsem se v noci s foťákem po parku a teď z toho vyrábím textury stromů. Sice to asi trochu naruší celkový komiksový styl, ale kašlu na to - kreslit listí nebo jehličí je strašná piplačka :-).

Začátek prosince:

  • Základ hry běhá jako po másle.
  • Dlouho jsem se nemohl dobabrat k nějaké jakž takž optimální struktuře paměti, která by umožnila využívat skripty na co nejvíc věcí bez složitých speciálních instrukcí. Ale povedlo se, kompilátor už je skoro provozuschopný.
  • Editor už původní verzi moc nepřipomíná, ani zvenčí, ani v kódu. Snad jenom ta bleděmodrá barva pozadí zůstala stejná :-).
  • Dokončuji funkce nepřátel, už se chovají skoro tak, jak bych si to představoval.

Červenec 2011:

  • Kompletně eliminováno načítání grafiky z disku v průběhu hry, teď je všechno v XMS. Rozdíl je nejlíp vidět, když se hra pustí z diskety na počítači bez zapnutého Smartdrivu :-).
  • Přepsáno jádro enginu, teď zobrazuje bez aproximací přesně podle 3D souřadnic. To sice znamená patnáct spritů pro každou zeď, ale to nevadí, paměti je habaděj (předpokládám, že min. 4 MB RAM má každý).
  • Dopsáno skládání podlahy a stropu z textur pro jedno políčko.
  • Od základů překopány vnitřní datové struktury (mapa, nepřátelé, parametry hráče a tak), takže zabírají méně místa a hlavně budou přístupné ze skriptů.
  • Mám navržený skriptovací jazyk a instrukční sadu. Bude to takové jednoduché assembleroidní něco, co půjde implementovat za pár týdnů (doufejme :-)) a zásadně to zjednoduší snad úplně všechno: místo programování obslužných procedur pro x typů aktivních objektů bude jenom interpret skriptů a konkrétní funkce si napíše každý tvůrce mapy takové, jaké potřebuje.
  • Cca polovina grafiky je dotažena do finální podoby. Pár textur ještě úplně chybí, ale to nespěchá. Z formátu PCX jsem přešel na výrazně úspornější CUT (Paintshop ho naštěstí zvládá, takže si nemusím psát vlastní editor).
  • Probíhá přizpůsobování editoru novému formátu dat. Jako bonus pro pohodlí a kompatibilitu se dá dynamicky přepínat rozlišení od 640x480 do 1024x768.

Zdrojáky zatím nečekejte, vzhledem k rozpracovanosti by vám stejně k ničemu nebyly. Ve finální verzi samozřejmě budou a snad doplním i nějaké vysvětlivky a komentáře.

Následuje přehled předchozích verzí od soul_draca a ukázky grafiky:


Nepřátelé

Dark wolf Soldier Knight Skeleton Vampire Hell head
Necrobat Ogre Octopus Worm ;)

Zde naleznete původní kreslené skicy k postavám.

 

Version list

  • 0.5 - 22.1.2006
    • Uprava settings menu - provedene zmeny se ukladaji do souboru a pri dalsim spusteni hry znovu nacitaji, lze nastavit gammu. Policka na zadavani cisel ( "spinedity" ) uz maji dany interval.
    • Opraveny bugy : Potvory dokazi pronasledovat hrace po cele mape (uz nejsou omezeny na ctverec 30x30), ve vygenerovanych mapach uz neni na startovni pozici stary znak, zpusoboval pady enginu. Opravena chyba pri vypnuti hudby a ukonceni ( opet pad enginu ). Opraveny nektere bugy, ktere se projevovaly jen ve velkych mapach a chyba pri vytvareni bitmap pri loadingu hry ( u textur se zblaznily barvy )
    • Zbrane lze prepinat ("0" - "9") a ke kazde se objevi kratky komentar. Podobny komentar se zobrazuje i po stisknuti "enter" pred stenou. Komentare se nacitaji ze souboru list.txt ( adresare doors, walls, weapons . . . ) a # v nich znamena novy radek.
    • Pridal jsem podporu predmetu ( itemu ). Podle skriptu v textovem souboru mohou pridavat nebo ubirat zivot a armor nebo se pridat do inventare, ktery je take novy a ktery se vyvola klavesou "I"
    • Mapka ma nyni druhy mod, ve kterem je zobrazena jen cast, ktera se nataci podle pohledu hrace. Mezi mody se prepina klavesou "M". Na mapce se barevne rozlisuji sprity, nepratele, dvere a zdi
    • Konecne jsem dokoncil program Place, ktery dokaze kompletne nastavit napratele ( jejich rozsah utoku, zivot, rychlost a pozici na scene ). Nepratele se nyni zarovnavaji podle nastavenych souradnic a utoci s nastavenou prodlevou.
    • Pridana uvodni loga s fadem palety. Tyto 2 loga maji svou vlastni paletu. Jinak paleta ve hre se nyni taha z "main\palette.pcx", plati to i pro Mapeditor
    • Engine nyni podporuje hints ( hlasky ). Pokud se vstoupi na policko s hlaskou, vypise se dolu jeji text
    • Urychlen loading pouzitim jine velikosti textur
    • Vsechny zdi, predmety, dvere a pod. se nyni vykresluji podle vzdalenosti v jednom cyklu podle Nashornova vzorce. Tim se opravilo par chyb, zjednodusil engine, ale jeste se nevykresluji nektere postranni zdi
    • Dalsi novou veci, co engine umi, jsou dvere. Ty jsou bud zamcene ( zobrazi se hlaska definovana v souboru ) a v pripade, ze je v inventari zadany predmet, otevrou se nebo jsou proste odemcene a kdyz se pred nimi stiskne enter, zmizi
    • V testovaci mape, v male prazdne mistnosti nahore je vlozena takova magicka vychytavka - turner ( otacedlo ). To hrace pri vstupu na toto policko otoci o 90 stupnu v zadanem smeru tak rychle, ze si toho ani nevsimne
    • Mezi jednotlivymi mapami lze prochazet pomoci portalu. Je to policko, ktere usti na zadane misto, do jine mapy
    • BkDrop se uz bere z mapy, takze neni vsude stejny
    • Mapeditor :
      • Tlacitka new a save uz funguji. Pokud je mapa nova, vyvola save-as, jinak ulozi pod stejnym nazvem, ktery je zobrazen v caption okna
      • Na vyber BackDropu a nastaveni startovni pozice hrace je docela pekny dialog
      • Pribyla zalozka sprites, doors, items, signs ( ukazatele ) a messages ( napis na stene ) . Vsechny tiles se ted pocitaji od nuly
      • Program zobrazuje souradnice policka, na kterem je momentalne kurzor
      • Nahledy vsech nepratel, spritu, dveri a predmetu jsou ted presne vycentrovany a je zachovan pomer jejich stran ( jak na panelu, tak na scene )
      • Pokladani hlasek ( hintu ), pokladani portalu, otacedel, dialogu a portretu. Dialog je takovou pokrocilou hlaskou. Jeden dialog muze byt na vice mistech a muze mit narozdil od hintu az 20 radku. Da se pouzit napriklad pro rozhovor dvou postav. Portret je takova vecicka, ke ktere kdyz se prijde a natuka se na klavesnici heslo, teleportuje vas na jine misto v mape
      • Opraveny desitky mansich bugu typu : mys vyjizdi z obrazovky, pri nacteni nove mapy se neobnovi mapka, potvrzovaci dialog pri ukladani souboru se stejnym jmenem, , osetreno promazavani dolniho panelu s nahledy pri posunuti doleva ci doprava, pri mazani policka dela mrizku i kdyz je vypnuta, v info rezimu se da oznacovat. Opraven bug v pretekani mapy, ktera byla zmensena na 63x64 policek
  • 0.4 - 14.11.2005
    • Engine jiz podporuje sprity. Nyny je mozne do map vkladat ( zatim ne pres Mapedit, na ktery jsem skoro ani nesahl ) stromy, cedule a jine objekty, ktere nejsou krychle
    • Format mapy byl prekopan a to umoznilo saving/loading hry
    • Napsal jsem program Place, ktery umoznuje vkladat nepratele na scenu ( uzivatel si ho vycentruje, jak potrebuje ) a upravovat jejich atributy ( hp, rychlost atd. ). Ale tato verze enginu tyto informace jeste nepouziva . . .
    • Spousty drobnych uprav typu : Mys nevyjizdi z obrazovky, scena nemuze vytect z mapy, osetreno pretekani mapy ( takove ty pruhy nahore ), dest . . .
    • Konecne jsem se dostal k tomu, abych pridal posledni 2 horizontalni C zdi, ktere engine nezobrazoval.
      Dale jsem orizl vertikalni A zdi postranach, takze se jich zobrazuji jen pulky, jak to ma byt. Nyni je jiz zobrazena kompletni 3D scena
    • Nashorn nasel ten bug v generovani mlhy a ta je nyni dokonale plynula. Ja jsem si s ni pak jeste hral a urychlil ji o 50%
    • Nepratele zacinaji hrace pronasledovat, pokud se k nim priblizi na 5 kroku. Vyhybaji se sobe navzajem a hledaji nejkratsi cestu k hraci. Zatim vsak na hrace neutoci a daji se zabit jednou ranou mecem
    • Uplne nove menu s hrou na pozadi ( Nashornuv algoritmus, bohuzel s bugem :( ) a s aktivnimi dialogy
  • 0.3a - 25.10.2005
    • S nashornem jsme se poradne podivali na jednotku Textures ( zkosovani, zmensovani, zvetsovani ) a opravili vsechny chyby. Procedury jsou ted nekolikrat rychlejsi a maji polovinu radku, nez predtim . . .
    • Napsal jsem algoritmus na vytvoreni mlhy. Zatim muze byt jen cerna a pri generovani nejvice vzdalenych zdi vznikaji nejake nesrovnalosti. Jeji generovani trva dost dlouho ( testovaci mistnost cca 10 sekund )
    • Engine je schopny nacist a vykresli nepratele, ktere si vygeneruje podle informaci v souboru se seznamem nepratel. Timto zpusobem nelze samozrejme zobrazit jen nepratele, ale i stromy, sloupy, ruzne cedule a podobne veci. Vykreslovani sice neni jeste presne, ale plati na ne i mlha
    • Trochu jsem si hral a pridal zbrane, ale jeste toho moc neumi. Mapa je ted pruhledna.
    • Nashorn dopsal naprosto dokonaly generator nahodnych bludist. Zatim sice zvlada jen jednu texturu a vnitrni prostory, ale vygenerovane mapy jsou bezchybne
    • Opraveno hodne chyb v level editoru, dokaze zobrazovat, nacitat, ukladat a umistovat nepratele pomoci nahledu v dolnim panelu. Zobrazuje nahled mapy
  • 0.2 - 29.9.2005
    Prvni pokusy s texturami. Nashorn mi pomohl udelat zkosovani, zmensovani a zvetsovani. Je to sice trochu neohrabane a pomale, ale funguje to Updaty :
    • Engine byl totalne prekopan, bylo pridano pole scena, ve kterem jsou steny presne tak, jak je vidime na obrazovce. Diky tomu jsme mohli udelat lepe otaceni a vykreslovani sceny
    • Nyni engine dokaze zobrazit az 1.000 ruznych druhu zdi, ktere jsou otexturovane. Kvuli tomu byl zmenen format mapy.
    • Zdi se uz negeneruji pri kazdem kroku, ale vygeneruje se vsech 9 kombinaci kazde steny a ty se ulozi jako pruhledne PCX soubory. Hra na zacatku chvilicku loaduje, ale potom je velice rychla
    • Trochu jsme s Nashornem opravili zkosovani, ale porad to neni ono . . .
    • Rekl jsem si, ze psat jiz slozitejsi mapy v pspadu neni to prave a zacinam delat na 1. betaverzi editoru levelu. Napsal jsem si svoji jednotku Dialogs, kde jsou vselijake tlacitka, klikatka, funkce typu showmessage, getstring a podobne. Zatim ponekud neohrabany level editor dokaze vytvaret, ukladat a nacitat mapy, vytvari uzivatelsky privetive nahledy textur a je cely ve vizualni forme
    • Engine uz vykresluje spravne skoro vsechny zdi ( uz chybi jen 2 )
    • Pridal jsem takove opravdu jednoduche hlavni menu
    • Prvni Nashornovy pokusy s generovanim nahodneho bludiste ( klavesa 2 v hlavnim menu ). Generovani je ale pro stary format mapy a vysledky algoritmu nejsou zatim takove, jake by mely byt
  • 0.0 - 6.5.2005
    • Za jeden den jsem napsal holy engine, ktery je schopen zobrazit 3D scenu, ulozenou v souboru. Jeste ji vsak nezobrazuje spravne ve vsech uhlech pohledu

 

Screenshoty

Screenshoty z verze 0.5

 

 

Screenshoty z verze 0.4 - engine umoznuje sprity a pronasledujici nepratele




 
 

 

Screenshoty z verze 0.3a

 
Mapeditor

 

Screenshoty z verze 0.2

Mapeditor

 

Screenshoty ze prvni verze 0.1 - holý engine

 


Galerie


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 278x (8.24 MB)
Aplikace je včetně zdrojových kódů v jazyce Pascal

 

Všechny články v sekci
Pascal
Článek pro vás napsal Mircosoft
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor je amatérský pascalista, assemblerista a bastlíř. Profesionálně psal nebo píše v HLASM, Rexxu, Cobolu, ST, LAD, FBD, PHP, SQL, JS, Basicu a pár dalších jazycích, které kupodivu stále existují a používají se :-).
Aktivity