Obsah
1. Historie vývoje počítačových her (117. část – vznik herních enginů)
4. Boulder Dash Construction Kit
5. Pinball Construction Set (PCS)
6. Přehlídka her vytvořených v PCS
7. Isometrické zobrazení v počítačových hrách
8. Obsah následující části seriálu
1. Historie vývoje počítačových her (117. část – vznik herních enginů)
Jak jsme si již řekli v předchozí části tohoto seriálu, byly první počítačové hry vznikající v době osmibitových herních konzolí i osmibitových domácích mikropočítačů vytvořeny většinou v assembleru (jazyku symbolických instrukcí/adres) a teprve později – společně s příchodem výkonnějších šestnáctibitových a 32bitových mikroprocesorů – můžeme vidět postupný přechod směrem k vyšším programovacím jazykům. Současně se taktéž vyvíjely specializované jazyky pro skriptování her (resp. jejich částí) a dokonce i jednoduché virtuální stroje, které se zpočátku používaly v klasických textovkách (a to již na osmibitových mikropočítačích). Příkladem může být již minule zmíněný Zork Interactive Language využívaný společně se Z-machine, popř. konkurenční A-Code.
Obrázek 1: Úvodní nabídka herní trilogie „Jewels of Darkness“. Tyto textovky využívaly A-Code společnosti Level 9 Computing.
Zatímco na příkladu textovek je velmi dobře patrná snaha o vývoj univerzálního „textovkového enginu“, který by na základě vhodných dat (popisu herního světa, předmětů a protivníků, pravidel) dokázal realizovat různé hry a rozdílné příběhy, bylo tomu v případě akčních her zpočátku jinak, protože naprostá většina akčních her, které vznikly v sedmdesátých a počátkem osmdesátých let minulého století, byla vytvořena takovým způsobem, že se jen poměrně malá část programového kódu hry dala smysluplně znovu využít v jiné hře. Běžný postup aplikovaný při tvorbě těchto her byl takový, že se mohly znovu použít jen některé subrutiny (podprogramy), ale již nikoli celá „logika“, na níž byla hra postavena. Důvod byl jednoduchý a pochopitelný – vzhledem k omezeným kapacitám operačních pamětí musela být logika hry (mapa hry, pohyb protivníků, veškerá pravidla, na nichž je hra postavena…) zapsána přímo v programovém kódu a nikoli deklarativně v nějaké vhodné datové struktuře.
Obrázek 2: Screenshot z textovky Price of Magik (A-Code) ve variantě pro osmibitové počítače Atari.
2. Herní enginy a datadisky
Styl tvorby akčních her popsaný v předchozí kapitole měl své kladné, ale i záporné stránky. Mezi kladné stránky lze počítat schopnost vývojářů velmi rychle reagovat na vývoj nového hardware či nových způsobů využití stávajícího HW i to, že vývojáři nebyli při tvorbě nových her svázáni původní (mnohdy překonanou) technologií. Ovšem nesmíme zapomenout ani na zápory, které tento přístup přinesl: nutnost investovat nemalé úsilí do tvorby nové hry.
Obrázek 3: Úvodní nabídka herní trilogie „Silicon Dreams“. Opět se jedná o textovky využívající A-Code.
Softwarové společnosti, které se vývojem her zabývaly, si byly tohoto problému vědomy, a proto můžeme již v osmdesátých letech minulého století vidět snahu o tvorbu takzvaných herních enginů, tj. mnohdy velmi komplexních systémů, které na základě dodaných dat (mapy, jednotlivé obrazovky, deklarativně popsaná pravidla, obrázky, sprity, …) mohly být využity hned v několika hrách s odlišným příběhem i grafikou, ale s podobným systémem zobrazení (2D grafika, isometrické zobrazení a později i plnohodnotná 3D grafika) či zpracování.
Obrázek 4: Ve hře Spindizzy byl využit engine umožňující deklarativně popsat jednotlivé obrazovky i chování objektů (výtahy, přepínače apod.).
První herní enginy byly využívány přímo v těch vývojářských společnostech, kde došlo k jejich naprogramování, ovšem s rostoucím herním trhem a současně i zvětšující se specializací v této oblasti se začaly vytvářet herní enginy, které se prodávaly dalším vývojářům. Ve stejném období taktéž vznikly první varianty specializovaných nástrojů nazývaných „construction kit“. Jednalo se o nástroje, které umožňovaly i běžným uživatelům vytvořit si vlastní počítačovou hru, a to dokonce bez nutnosti programování. Pro tvorbu nové hry s využitím těchto kitů postačilo v editoru vytvořit herní mapu, design jednotlivých obrazovek a popř. i nastavit herní pravidla. Jednotlivé kity se od sebe odlišovaly podle svého zaměření – poměrně populární byl například Boulder Dash Construction Kit v němž bylo vytvořeno minimálně několik desítek variant hry Boulder Dash popř. Pinball Construction Set, jehož zaměření je zřejmé již z názvu tohoto nástroje.
Obrázek 5: Další snímek ze hry Spindizzy.
3. Boulder Dash
Jednou ze softwarových společností, která se již v první polovině osmdesátých let minulého století postarala o vývoj vlastního herního engine, je First Star Software (FSS). Programátoři z této firmy vytvořili například hru Spy vs. Spy určenou pro jednoho či dva hráče. Ovšem mnohem známějším herním titulem, za jejímž vývojem stojí First Star Software, je hra Boulder Dash. Původní verzi této hry vytvořil programátor Peter Liepa pro osmibitové domácí mikropočítače Atari (kde využil především plynulý scrolling a vícebarevný textový režim čipu Antic), ovšem díky velkému úspěchu byla tato hra portována i na mnoho dalších osmibitových počítačů a později též na herní konzole a osobní počítače. Navíc byly vydány i další verze této hry, v nichž se využil již vytvořený engine, který byl pouze zdokonalen o další funkce (například simulaci lávy atd.).
Obrázek 6: Boulder Dash I – úvodní obrazovka. Autorem je Petr Liepa, jenž realizovat myšlenky Chrise Graye.
Ve hře Boulder Dash hráč ovládá postavičku, která se musí prokopávat jeskyněmi, hledat v nich diamanty a naopak se vyhnout nepřátelům, kteří v jeskyních žijí (výhodou je, že pohyb nepřátel lze jednoduše odhadnout). V jeskyních se taktéž nachází různé předměty, které se musí využít při řešení některých hádanek – jedná se především o kameny, „magické zdi“ měnící kameny na diamanty a naopak, „láva“, která se rozlévá po jeskyni a změní se na diamanty nebo kameny atd. atd.
Obrázek 7: Boulder Dash I – první level.
Navíc ještě hráče většinou omezuje odpočítávaný čas, protože pro každou jeskyni je určeno, do kolika sekund (resp. do kolika desítek sekund) musí být nasbírán určený počet diamantů, načež hráč posléze musí najít východ z jeskyně. Celkově je možné říci, že se jedná o velmi dobrou hru (jednu z nejlepších her osmibitové éry), která klade požadavky jak na hráčův úsudek a dobrý odhad, co se stane o několik kroků dále, tak i na rychlé reakce – jedná se tedy o podobné nároky, jaké na hráče klade další veleúspěšná hra osmibitové éry: Tetris.
Obrázek 8: Boulder Dash II – úvodní obrazovka.
Peter Liepa se podílel pouze na vzniku první a částečně i druhé verze Boulder Dashe, kdežto verze další již byly vytvořeny nezávisle na něm dalšími programátory. A právě v tomto okamžiku se ukázala jedna z největších předností existence herního enginu – další díly se vytvořily jednoduše návrhem nových obrazovek, rozšířením možností enginu, změnou úvodní obrazovky atd., jednalo se tedy o poměrně snadný vývoj, nepochybně mnohem rychlejší a levnější, než vývoj zcela nové hry.
Obrázek 9: Boulder Dash II – první level.
Obrázek 10: Titulní obrazovka hry Boulder Dash (verze pro NES).
4. Boulder Dash Construction Kit
Společnost First Star Software využila svůj herní engine pro tvorbu her, které sama distribuovala, protože okamžik, kdy se samotný herní engine stane nástrojem, jenž je možné prodávat či licencovat, ještě nenastal. FSF se ovšem rozhodla provést jinou velmi zajímavou a svým způsobem i přelomovou věc – vydala totiž nástroj nazvaný Boulder Dash Construction Kit. Jednalo se o specializovaný editor, v němž si mohli samotní hráči vytvořit jak jednotlivé obrazovky (jeskyně) Boulder Dashe, tak i celé hry, tj. sekvence jeskyní. Samotná editace byla velmi snadná – v pravé části se nacházel „toolbar“ s jednotlivými předměty, které bylo možné vložit do vytvářené scény; celý editor se pak ovládat joystickem a vybrané speciální příkazy se zadávaly z klávesnice.
Obrázek 11: Boulder Dash Construction Kit – informace o vydavateli. Autorem je Jeffrey Schneider, tento kit byl vydán v roce 1986.
Ovšem nejdůležitější vlastností tohoto editoru byl fakt, že obsahoval i samotný herní engine použitý v reálných hrách Boulder Dash I až Boulder Dash III. To znamenalo, že v kterýkoli okamžik se bylo možné přepnout z režimu editace obrazovky do herního režimu a otestovat tak například obtížnost navržené obrazovky či jednotlivých hlavolamů, způsob pohybu nepřátel atd. Vytvořené obrazovky (obtížnosti) bylo možné kdykoli nahrát na disketu či na kazetu a využít později, opět s využitím zcela stejného univerzálního herního enginu.
Obrázek 12: Boulder Dash Construction Kit – hlavní menu editoru bylo velmi jednoduché.
Obrázek 13: Boulder Dash Construction Kit – takto vypadá práce s editorem (v pravé části je zobrazen toolbar).
Obrázek 14: Boulder Dash Construction Kit – pomocí klávesové zkratky lze zobrazit celou obtížnost a nikoli pouze jednu čtvrtinu herního světa.
Obrázek 15: Boulder Dash Construction Kit – pomocné menu s výběrem čtyř barev, z nichž je vykreslen herní svět (ve skutečnosti je při zobrazení použito pěti barev, ovšem pátá barva je vždy vyhrazena pro černé pozadí).
5. Pinball Construction Set (PCS)
…a programming work of art…
Boulder Dash Construction Kit ovšem zdaleka nebyl jediným nástrojem prodávaným již v první polovině osmdesátých let minulého století, který umožňoval i běžným uživatelům (hráčům) vytvořit si vlastní novou hru. Podobný nástroj, který nesl jméno Pinball Construction Set byl vytvořen Billem Budgetem již v roce 1983 (tedy celé tři roky před vznikem Boulder Dash Construction Kitu) a jak již název tohoto nástroje napovídá, jednalo se o editor určený pro návrh stolů pro pinball. Tento nástroj byl původně naprogramován pro Apple II, ovšem později vznikly i verze pro další osmibitové mikropočítače, především Atari a Commodore C64; dále můžeme Boulder Dash Construction Kit najít i na Macintoshích (původní systém se 128kB RAM a procesorem řady M68000) a PC s DOSem.
Obrázek 16: Pinball Construction Set – na levé straně se nachází prozatím prázdný stůl, na pravé straně pak dostupné prvky, které je možné na stůl vkládat.
Bill Budge mohl při psaní tohoto editoru využít své zkušenosti získané při vývoji hry Raster Blaster, což byla vůbec první hra typu pinball naprogramovaná pro osmibitové mikropočítače Apple II. Pinball Construction Set se stal záhy po svém vydání velmi populární a to především z toho důvodu, že uživatelé mohli vytvářet nové návrhy stolů velmi jednoduše s využitím techniky „drag and drop“ (a to se stále bavíme o programu běžícím na strojích vybavených osmibitovým mikroprocesorem a maximálně 64 kB RAM!). Editor byl propojen s herním enginem, který sloužil zejména pro výpočet trajektorie kuličky, ovládání pák, pružin apod. Popularita PCS dosáhla takových rozměrů, že bylo prodáno více než 300 tisíc kopií, což vydavatele – společnost Electronic Arts – vedlo k tomu, že později nabídl i další podobné nástroje, například Music Construction Set či Racing Destruction Set.
Obrázek 17: Pinball Construction Set – pomocí techniky drag and drop (zde s využitím joysticku) je možné postupně vytvářet design stolu pro pinball (povšimněte si kurzoru ^W ručičky ovládané joystickem).
6. Přehlídka her vytvořených v PCS
Vzhledem k velké popularitě Pinball Construction Setu není divu, že vzniklo velmi mnoho her typu pinball vytvořených v tomto nástroji. PCS totiž v některých svých variantách umožňoval uložit vytvořený stůl na disketu/kazetu společně s vlastním enginem, takže výsledkem byla plnohodnotná hra, kterou bylo možné kopírovat a tak dále šířit. Na screenshotech umístěných pod tímto odstavcem jsou zobrazeny některé varianty pinballu z mé sbírky, ve skutečnosti ovšem takto navržených stolů existují minimálně desítky, ale spíše stovky.
Obrázek 18: Canuck Pinball.
Obrázek 19: Action Pinball.
Obrázek 20: Magic Pinball.
Obrázek 21: Pinball 3 – obsahuje zajímavý „zásobník míčků“ uprostřed stolu.
Obrázek 22: Pinball 3 – obsahuje zajímavý „zásobník míčků“ uprostřed stolu.
Obrázek 23: Space Pinball – jeden ze stojů, kde se používá jednosměrná záklopka (levý dolní roh).
Obrázek 24: Space Pinball – jeden ze stojů, kde se používá jednosměrná záklopka (levý dolní roh).
Obrázek 25: Ultima III Pinball s postavičkami získanými skutečně z Ultimy.
Obrázek 26: Moon Lover Pinball.
7. Isometrické zobrazení v počítačových hrách
Zajímavé je, že mnoho specializovaných i univerzálních herních enginů, stejně jako specializovaných jazyků určených pro popis obrazovek, můžeme najít ve hrách využívajících isometrické zobrazení, a to již ve hrách, které vznikaly v období 1983 až 1990.
Obrázek 27: Hra Chimera využívající velmi jednoduchý engine a isometrické zobrazení herního světa.
Již od samotného začátku vývoje video her můžeme vidět snahu programátorů o trojrozměrné zobrazení herního světa, přesněji řečeno o přiblížení se k trojrozměrnému zobrazení. Prvním přechodem od 2D půdorysu ke skutečné 3D projekci je takzvané rovnoběžné (kosoúhlé) promítání, které bylo využito například v budovatelské strategické hře Castles. Při použití rovnoběžného promítání lze použít různé úhly natočení jednotlivých os, přičemž ve hře Castles je y-ová osa skloněna o 45° a samozřejmě není využita perspektiva (potom by nešlo o rovnoběžné promítání). Díky sklonu osy o přesně 45° se do značné míry podařilo minimalizovat problém „schodů“ při kresbě úseček (jagged lines). Popravdě řečeno je však tento způsob promítání vhodný spíše pro technické výkresy a nikoli pro počítačové hry, už jen z toho důvodu, že úsečky se sklonem 45° mají po své rasterizaci nižší kontrast, než úsečky vodorovné či svislé.
Obrázek 28: Rovnoběžná projekce použitá u budovatelské strategické hry Castles.
Mnohem výhodnější je využít dalšího typu rovnoběžného promítání, které se nazývá promítání isometrické (isometric projection). Při využití tohoto typu promítání je využito faktu, že rasterizované úsečky natočené o úhel 30° a 60° tvoří charakteristické pravidelné „schody“ ve kterých se vždy dva pixely nachází na stejné svislici či kolmici a další dva pixely na svislici/kolmici sousední. Výsledkem je hrana, která vypadá pravidelně a přitom má dostatečný kontrast (úsečky s úhlem 45° mají naproti tomu výrazně nižší kontrast, protože se oko nedokáže dobře soustředit na pixely vázané pouze po úhlopříčce). Kombinace kolmých úseček a úseček o náklonu 30° (popř. 180°-30°) dostačuje pro kreslení trojrozměrných modelů v isometrickém promítání, tj. bez použití perspektivy – původně svislé hrany v modelu jsou po promítnutí opět zobrazeny jako svislice a původní vodorovné hrany jsou promítnuty na úsečky o sklonu 30° a 150°.
Obrázek 29: Hra Head Over Heels využívající isometrické promítání.
Isometrické promítání bylo velmi často využito v mnoha počítačových hrách, protože je velmi jednoduše použitelné a existují algoritmy pro rychlé vykreslování herního světa v tomto promítání (typicky se používá malířův algoritmus spolu s jednoduchými sprity). Ve skutečnosti se (většinou) nejedná o pravou 3D grafiku, proto se pro tento typ zobrazování ujal termín 2,5D grafika. Mezi známé hry, které tento typ zobrazování používají, patří například Head Over Heels, Spindizzy, Populous I a Populous II, Cadaver (mimochodem, snad nejlepší ukázka pixel artu, podobně jako další hry od Bitmap Brothers, například Chaos Engine) a Civilization 2. Ovšem ještě předtím, než tyto hry vznikly, byl vytvořen revoluční herní engine Filmation společnosti Ultimate Play the Game.
Obrázek 30: Hra Head Over Heels využívající isometrické promítání.
8. Obsah následující části seriálu
Doslova revolučním herním enginem v oblasti her používajících isometrické promítání, je bezesporu již zmíněný Filmation Engine, který byl vyvinut společností Ultimate Play the Game. Tento engine způsobil v oblasti videoher podobné změny, jako o mnoho let později 3D enginy využité ve hrách Wolfenstein a později i Doom. Proto si v následující části tohoto seriálu přiblížíme jak Filmation Engine tak i další podobné nástroje.
Obrázek 31: Úvodní obrazovka legendární hry Knight Lore.
Obrázek 32: Úvodní obrazovka legendární hry Knight Lore (originál na ZX Spectru).
9. Odkazy na Internetu
- Boulder Dash
http://www.firststarsoftware.com/boulderdash.htm - Arno's Boulder Dash Fansite
http://www.boulder-dash.nl/ - Pinball Construction Set
http://en.wikipedia.org/wiki/Pinball_Construction_Set - Isometric projection
http://en.wikipedia.org/wiki/Isometric_projection - Oblique projection
http://en.wikipedia.org/wiki/Oblique_projection - Seriál o programovacím jazyku Lua (root.cz):
http://www.root.cz/serialy/programovaci-jazyk-lua/ - Domovská stránka systému LÖVE
http://love2d.org/ - Domovská stránka programovacího jazyka Lua
http://www.lua.org/ - Web o Lieru, Gusanos, GeneRally, Atari atd.
http://karelik.wz.cz/ - Web o Lieru, Gusanos
http://karelik.wz.cz/gusanos.php - GUSANOS
http://gusanos.sourceforge.net/ - GUSANOS Download
http://sourceforge.net/projects/gusanos/ - Lua
http://www.linuxexpres.cz/praxe/lua - Lua
http://cs.wikipedia.org/wiki/Lua - Lua (programming language)
http://en.wikipedia.org/wiki/Lua_(programming_language) - The Lua Programming Language
http://www.tiobe.com/index.php/paperinfo/tpci/Lua.html - Lua Programming Gems
http://www.lua.org/gems/ - LuaForge
http://luaforge.net/ - Forge project tree
http://luaforge.net/softwaremap/trove_list.php - gamedev.net: Lua
http://www.gamedev.net/reference/programming/features/lua/ - Category:Lua-scripted games
http://en.wikipedia.org/wiki/Category:Lua-scripted_games - Category:Lua-scriptable games
http://en.wikipedia.org/wiki/Category:Lua-scriptable_games - BZFlag
http://en.wikipedia.org/wiki/BZFlag - BZFlag.org
http://bzflag.org/ - GrimE
http://en.wikipedia.org/wiki/GrimE - Grim Fandango
http://www.mobygames.com/game/grim-fandango - Escape from Monkey Island
http://www.mobygames.com/game/escape-from-monkey-island - Angband na rephial.org
http://rephial.org/ - Angband.oook.cz
http://angband.oook.cz/ - Angband – stránka s možností downloadu hry
http://angband.oook.cz/download.php - Angband a její klony (varianty)
http://angband.oook.cz/variants.php - Další seznam klonů hry Angband (podrobnější)
http://roguebasin.roguelikedevelopment.org/index.php?title=List_of_Angband_variants - Angband (pevnost ve Středozemi)
http://en.wikipedia.org/wiki/Angband - Angband (hra)
http://en.wikipedia.org/wiki/Angband_(video_game) - Adventure International
http://en.wikipedia.org/wiki/Adventure_International - Stránky o firmě Infocom a jejích hrách
http://www.csd.uwo.ca/Infocom/ - Zork I: The Great Underground Empire (Moby games)
http://www.mobygames.com/game/dos/zork-the-great-underground-empire/reviews/reviewerId,4465/ - Zork I (Wikipedia)
http://en.wikipedia.org/wiki/Zork_I - Zork I Walkthrough
http://www.gamefaqs.com/pc/564446-zork-i/faqs - Zork I: The Great Underground Empire
http://www.csd.uwo.ca/Infocom/zork1.html - Zork II: The Wizard of Frobozz (Moby games)
http://www.mobygames.com/game/dos/zork-ii-the-wizard-of-frobozz - Zork II (Wikipedia)
http://en.wikipedia.org/wiki/Zork_II - Zork II: The Wizard of Frobozz
http://www.csd.uwo.ca/Infocom/zork2.html - Zork III: The Dungeon Master (Moby games)
http://www.mobygames.com/game/zork-iii-the-dungeon-master - Zork III (Wikipedia)
http://en.wikipedia.org/wiki/Zork_III - SAGA – Scott Adams Grand Adventure
http://www.msadams.com/index.htm - Player 4 Stage 1: The Productivity Eaters
http://www.thedoteaters.com/p4_stage1.php - Textovky.cz – Textovkářův ráj
http://www.textovky.cz/ - Scott Adams (game designer, Wikipedia)
http://en.wikipedia.org/wiki/Scott_Adams_(game_designer) - Interview with Scott Adams (Adventure Classic Gaming)
http://www.adventureclassicgaming.com/index.php/site/interviews/129/ - Scott Adams game interpreter
http://www.ifarchive.org/indexes/if-archiveXscott-adamsXinterpreters.html - Ohlédnutí za herní historií: Textovky
http://www.slunecnice.cz/tipy/ohlednuti-za-herni-historii-textovky/ - Richard Hewison – Level 9: Past masters of the adventure game
http://www.sinclairlair.co.uk/level9.htm - Level 9 Computing
http://en.wikipedia.org/wiki/Level9 - Worm in Paradise – Level 9 (CZ recenze)
http://sinclairzxspectrum.cz/software/recenze/worm_in_paradise.php - World of Spectrum: Jewels of Darkness
http://www.worldofspectrum.org/infoseekid.cgi?id=0011293 - World of Spectrum: Hry společnosti Level 9
http://www.worldofspectrum.org/infoseekpub.cgi?regexp=^Level+9+Computing+Ltd$&loadpics=1 - BASIC Computer Games (published 1978) – Hammurabi
http://atariarchives.org/basicgames/showpage.php?page=78 - Hamurabi – zdrojový kód v BASICu
http://www.dunnington.u-net.com/public/basicgames/HMRABI - Hamurabi (Wikipedia)
http://en.wikipedia.org/wiki/Hamurabi - Hammurabi naprogramovaný v JavaScriptu
http://www.hammurabigame.com/hammurabi-game.php