Historie vývoje počítačových her (117. část – vznik herních enginů)

27. 2. 2014
Doba čtení: 15 minut

Sdílet

V předchozí části seriálu o historii vývoje počítačových her jsme se zmínili o postupné změně vývojářských nástrojů používaných programátory her. Dnes se budeme zabývat tématem, který s vývojářskými nástroji do značné míry úzce souvisí – jedná se o herní enginy, které se začaly rozšiřovat v 80. letech.

Obsah

1. Historie vývoje počítačových her (117. část – vznik herních enginů)

2. Herní enginy a datadisky

3. Boulder Dash

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

9. Odkazy na Internetu

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.

ict ve školství 24

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

  1. Boulder Dash
    http://www.firststarsoftwa­re.com/boulderdash.htm
  2. Arno's Boulder Dash Fansite
    http://www.boulder-dash.nl/
  3. Pinball Construction Set
    http://en.wikipedia.org/wi­ki/Pinball_Construction_Set
  4. Isometric projection
    http://en.wikipedia.org/wi­ki/Isometric_projection
  5. Oblique projection
    http://en.wikipedia.org/wi­ki/Oblique_projection
  6. Seriál o programovacím jazyku Lua (root.cz):
    http://www.root.cz/serialy/pro­gramovaci-jazyk-lua/
  7. Domovská stránka systému LÖVE
    http://love2d.org/
  8. Domovská stránka programovacího jazyka Lua
    http://www.lua.org/
  9. Web o Lieru, Gusanos, GeneRally, Atari atd.
    http://karelik.wz.cz/
  10. Web o Lieru, Gusanos
    http://karelik.wz.cz/gusanos.php
  11. GUSANOS
    http://gusanos.sourceforge.net/
  12. GUSANOS Download
    http://sourceforge.net/pro­jects/gusanos/
  13. Lua
    http://www.linuxexpres.cz/praxe/lua
  14. Lua
    http://cs.wikipedia.org/wiki/Lua
  15. Lua (programming language)
    http://en.wikipedia.org/wi­ki/Lua_(programming_langu­age)
  16. The Lua Programming Language
    http://www.tiobe.com/index­.php/paperinfo/tpci/Lua.html
  17. Lua Programming Gems
    http://www.lua.org/gems/
  18. LuaForge
    http://luaforge.net/
  19. Forge project tree
    http://luaforge.net/softwa­remap/trove_list.php
  20. gamedev.net: Lua
    http://www.gamedev.net/re­ference/programming/featu­res/lua/
  21. Category:Lua-scripted games
    http://en.wikipedia.org/wi­ki/Category:Lua-scripted_games
  22. Category:Lua-scriptable games
    http://en.wikipedia.org/wi­ki/Category:Lua-scriptable_games
  23. BZFlag
    http://en.wikipedia.org/wiki/BZFlag
  24. BZFlag.org
    http://bzflag.org/
  25. GrimE
    http://en.wikipedia.org/wiki/GrimE
  26. Grim Fandango
    http://www.mobygames.com/game/grim-fandango
  27. Escape from Monkey Island
    http://www.mobygames.com/game/escape-from-monkey-island
  28. Angband na rephial.org
    http://rephial.org/
  29. Angband.oook.cz
    http://angband.oook.cz/
  30. Angband – stránka s možností downloadu hry
    http://angband.oook.cz/download.php
  31. Angband a její klony (varianty)
    http://angband.oook.cz/variants.php
  32. Další seznam klonů hry Angband (podrobnější)
    http://roguebasin.rogueli­kedevelopment.org/index.php?ti­tle=List_of_Angband_varian­ts
  33. Angband (pevnost ve Středozemi)
    http://en.wikipedia.org/wiki/Angband
  34. Angband (hra)
    http://en.wikipedia.org/wi­ki/Angband_(video_game)
  35. Adventure International
    http://en.wikipedia.org/wi­ki/Adventure_International
  36. Stránky o firmě Infocom a jejích hrách
    http://www.csd.uwo.ca/Infocom/
  37. Zork I: The Great Underground Empire (Moby games)
    http://www.mobygames.com/game/dos/zork-the-great-underground-empire/reviews/reviewerId,4465/
  38. Zork I (Wikipedia)
    http://en.wikipedia.org/wiki/Zork_I
  39. Zork I Walkthrough
    http://www.gamefaqs.com/pc/564446-zork-i/faqs
  40. Zork I: The Great Underground Empire
    http://www.csd.uwo.ca/Info­com/zork1.html
  41. Zork II: The Wizard of Frobozz (Moby games)
    http://www.mobygames.com/game/dos/zork-ii-the-wizard-of-frobozz
  42. Zork II (Wikipedia)
    http://en.wikipedia.org/wiki/Zork_II
  43. Zork II: The Wizard of Frobozz
    http://www.csd.uwo.ca/Info­com/zork2.html
  44. Zork III: The Dungeon Master (Moby games)
    http://www.mobygames.com/game/zork-iii-the-dungeon-master
  45. Zork III (Wikipedia)
    http://en.wikipedia.org/wiki/Zork_III
  46. SAGA – Scott Adams Grand Adventure
    http://www.msadams.com/index.htm
  47. Player 4 Stage 1: The Productivity Eaters
    http://www.thedoteaters.com/p4_sta­ge1.php
  48. Textovky.cz – Textovkářův ráj
    http://www.textovky.cz/
  49. Scott Adams (game designer, Wikipedia)
    http://en.wikipedia.org/wi­ki/Scott_Adams_(game_desig­ner)
  50. Interview with Scott Adams (Adventure Classic Gaming)
    http://www.adventureclassic­gaming.com/index.php/site/in­terviews/129/
  51. Scott Adams game interpreter
    http://www.ifarchive.org/indexes/if-archiveXscott-adamsXinterpreters.html
  52. Ohlédnutí za herní historií: Textovky
    http://www.slunecnice.cz/ti­py/ohlednuti-za-herni-historii-textovky/
  53. Richard Hewison – Level 9: Past masters of the adventure game
    http://www.sinclairlair.co­.uk/level9.htm
  54. Level 9 Computing
    http://en.wikipedia.org/wiki/Level9
  55. Worm in Paradise – Level 9 (CZ recenze)
    http://sinclairzxspectrum­.cz/software/recenze/worm_in_pa­radise.php
  56. World of Spectrum: Jewels of Darkness
    http://www.worldofspectrum­.org/infoseekid.cgi?id=0011293
  57. World of Spectrum: Hry společnosti Level 9
    http://www.worldofspectrum­.org/infoseekpub.cgi?regex­p=^Level+9+Computing+Ltd$&lo­adpics=1
  58. BASIC Computer Games (published 1978) – Hammurabi
    http://atariarchives.org/ba­sicgames/showpage.php?page=78
  59. Hamurabi – zdrojový kód v BASICu
    http://www.dunnington.u-net.com/public/basicgames/HMRABI
  60. Hamurabi (Wikipedia)
    http://en.wikipedia.org/wiki/Hamurabi
  61. Hammurabi naprogramovaný v JavaScriptu
    http://www.hammurabigame.com/hammurabi-game.php

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.