Obsah
2. Výběr specializovaného nástroje či programovacího jazyka?
3. SUDS – Single User Dungeon System
4. ADRIFT – Adventure Development & Runner – Interactive Fiction Toolkit
5. Alan Interactive Fiction Language
6. Hugo Interactive Fiction Development System
7. TADS – Text Adventure Development System
1. Historie vývoje počítačových her (150. část – specializované nástroje a jazyky pro tvorbu textovek)
V předchozí části seriálu o historii vývoje počítačových her jsme se věnovali interpretrům, které se v současnosti používají jak pro „přehrávání“ klasických textovek pocházejících ze zlatého období vývoje tohoto typu her, tak i textovek moderních. Ovšem samotná existence interpretru (někteří autoři dávají namísto označení interpret přednost slovu player) nestačí pro vytvoření nové textovky.
Obrázek 1: Známá textovka The Guild of Thieves pocházející ze zlatého období vývoje tohoto typu her – přebal.
Z tohoto důvodu si v navazujících kapitolách alespoň ve stručnosti popíšeme některé existující nástroje a taktéž specializované programovací jazyky určené pro tvorbu textovek. Některé z těchto nástrojů mají dnes již pouze historickou hodnotu, ovšem další nástroje se stále aktivně používají pro vytváření nových her, protože komunita autorů a hráčů textovek (dnes nazývaných spíše interactive fiction a ne text game či text adventure) je stále aktivní, dokonce by se dalo říci, že tomuto odvětví prospěl fakt, že se již v naprosté většině případů nejedná o komerčně prodávané hry, takže se autoři mohou soustředit na samotný příběh a ne na to, jaké grafické triky by zvýšily prodejnost :-)
Obrázek 2: Textovka The Guild of Thieves spuštěná v emulátoru Gargoyle popsaném minule.
2. Výběr specializovaného nástroje či programovacího jazyka?
Výběr vhodného nástroje pro tvorbu textovek byl především v minulosti poměrně komplikovaný, protože se – kromě problémů s licencemi, na něž je nutné stále myslet – musel zvolit správný poměr mezi flexibilitou daného nástroje či programovacího jazyka a jeho složitostí. Podobně jako při obecném programování totiž neplatí, že nejflexibilnější nástroj/programovací jazyk je skutečně nejvhodnějším prostředkem pro určitý typ řešeného problému: někdy bývá přesný opak pravdou. Dobrým příkladem mohou být například skriptovací jazyky ve hrách či všechny DSL (domain-specific languages doménově specifické jazyky). Ostatně právě specializované jazyky určené pro tvorbu textovek lze považovat za velmi dobrý příklad DSL.
Obrázek 3: Textovka The Guild of Thieves spuštěná v emulátoru Gargoyle.
Taktéž se liší stáří specifikací jednotlivých specializovaných jazyků pro tvorbu textovek. Obecně platí, že starší jazyky a jejich bajtkódy jsou většinou značně stabilní (mnohdy i několik desetiletí) a taktéž se většinu chyb již podařilo zdárně opravit a především otestovat mnohdy na desítkách různých typů počítačových platforem. Pokud bylo v některém z těchto jazyků vytvořeno již větší množství her, lze předpokládat, že tento jazyk a jeho virtuální stroj bude podporován i v moderním interpretru typu Gargoyle, o němž jsme se zmínili minule. Asi nejlepším příkladem jsou jazyky překládané do bajtkódu Z-machine, pro niž existuje jak několik (desítek) interpretrů, tak i překladačů.
Obrázek 4: Textovka The Guild of Thieves spuštěná v emulátoru Gargoyle.
3. SUDS – Single User Dungeon System
Aplikace SUDS, neboli celým názvem Single User Dungeon System, je nástrojem pro tvorbu textovek určeným pro platformu Microsoft Windows (jak řady 9× i řady NT), a právě z tohoto důvodu se mu zde budeme věnovat pouze minimálně. Navíc již tento program není aktivně vyvíjen ani podporován, což je ostatně problém provázející i další podobné aplikace s uzavřeným zdrojovým kódem (problém nastane při pokusu o portaci na novější verze Windows). Tvorba textovek v systému SUDS je založena na použití interaktivního grafického uživatelského rozhraní, čímž se způsob tvorby nových her odlišuje od některých dalších systémů popsaných v navazujících kapitolách, které jsou mnohdy založeny na specializovaném programovacím jazyku. V systému SUDS se hry tvoří (jak již víme – interaktivně) s využitím několika typů formulářů, které se postupně vyplňují. Taktéž textové hry, které s využitím tohoto systému vznikají, se ovládají poněkud jiným způsobem než klasické textovky: namísto zapisování příkazů je využito relativně jednoduše pojaté GUI, které lze ovládat jak klávesnicí, tak i pomocí myši.
Obrázek 5: Další známá textovka Jinxter – přebal.
4. ADRIFT – Adventure Development & Runner – Interactive Fiction Toolkit
Projekt ADRIFT, neboli celým jménem Adventure Development & Runner – Interactive Fiction Toolkit, jehož autorem je Campbell Wild, se v mnoha ohledech podobá výše zmíněnému vývojovému systému SUDS. Taktéž se totiž jedná o aplikaci určenou pro tvorbu textovek s využitím interaktivního grafického uživatelského rozhraní. I další vlastnost je oběma nástrojům společná – i ADRIFT je aplikace určená pro operační systém Microsoft Windows, ovšem pro již vytvořené textové hry existuje takzvaný ADRIFT Runner umožňující spuštění těchto textovek jak na systému Microsoft Windows, tak i na Linuxu, Macintoshích a dokonce i ve webových prohlížečích (systém je dostupný zadarmo, i když bez zdrojových kódů). Instalační balíčky celého vývojového systému ADRIFT i ADRIFT Runneru jsou dostupné na stránce http://www.adrift.co/download. Zajímavé jsou i screenshoty systému ADRIFT, které lze najít na stránce http://www.adrift.co/screen.
Obrázek 6: Textovka Jinxter spuštěná v emulátoru Gargoyle.
Obrázek 7: Textovka Jinxter spuštěná v emulátoru Gargoyle.
5. Alan Interactive Fiction Language
Dalším nástrojem určeným pro tvorbu textovek je Alan, resp. Alan Interactive Fiction Language, jehož autorem je Thomas Nilsson. Jak již název tohoto nástroje naznačuje, jedná se o specializovaný programovací jazyk doplněný o sadu utilit, především o překladač, interpret, generátor map a zejména pak o ucelené integrované vývojové prostředí, z něhož se jednotlivé utility mohou spouštět. I přesto, že je Alan založen na použití programovacího jazyka, je tvorba textovek v něm poměrně jednoduchá a rychlá, protože mnoho operací lze provést jednoduše, z grafického uživatelského rozhraní bez nutnosti psát programový kód.
Obrázek 8: Třetí známá textovka The Pawn – přebal.
V současnosti je vyvíjena třetí verze nástroje Alan, ovšem stále je k dispozici i starší stabilní (a částečně nekompatibilní) verze 2.8. Nejnovější beta verzi 3.0beta3, která vyšla před necelým rokem, si podrobněji popíšeme v navazující části tohoto seriálu.
Obrázek 9: Textovka The Pawn spuštěná v emulátoru Gargoyle.
Pro zajímavost se podívejme na syntaxi jazyka Alan, která je, jak je z výpisu patrné, založena na psané angličtině:
Add To Every object Verb examine Check object Is examinable Else "There is nothing special about the $o." End Verb. Verb read Check object Is readable Else "There is nothing written on the $o." End Verb. Verb lock, unlock Check object Is openable Else "There is no way to $v the $1." Does "You have to use something to $v the $o with." End Verb. Verb unlock_with When o Check o Is openable Else "There is no way to $v the $1." End Verb unlock_with. Verb open, close Check object Is openable Else "There is no way to $v the $1." End Verb. Verb insert Check "I don't understand what you want to insert the $o into." End Verb insert. End Add.
Obrázek 10: Textovka The Pawn spuštěná v emulátoru Gargoyle.
6. Hugo Interactive Fiction Development System
Čtvrtým nástrojem určeným pro tvorbu textovek, o němž se dnes zmíníme, je Hugo Interactive Fiction Development System. Tento nástroj již patří do „silné trojky“ společně s níže zmíněnými systémy TADS a Inform 7. Hugo je multiplatformní aplikací, protože existuje pro velké množství moderních i dnes již postarších systémů: Linux, Windows. MacOS, Acorn / RISC OS, Amiga, BeOS, DOS, OS/2, Palm, Windows Mobile, EPOC atd. Ústřední součástí Huga je doménově specifický programovací jazyk umožňující definovat objekty, atributy objektů, vytvářet strom objektů (podobně jako ve slavné Z-machine) a samozřejmě zapisovat pravidla, kterými se celá hra řídí. Kromě vlastního textového rozhraní umožňuje Hugo využívat i různé multimediální formáty: Amiga MODuly, S3M (další forma hudebních modulů), MP3, MIDI atd., dokonce podporuje i video (MPEG). Pravděpodobně nejznámější hrou vytvořenou v Hugu je Cryptozookeeper, o níž se zmíníme později.
Obrázek 11: Textovka The Pawn spuštěná v emulátoru Gargoyle.
Syntaxe programovacího jazyka Hugo je odvozena od céčka. Zajímavé je, že funkce init je spuštěna na začátku celé aplikace, zatímco funkce main při každém příkazu zadaném uživatelem:
Obrázek 12: Textovka The Pawn spuštěná v emulátoru Gargoyle.
routine init { counter = -1 STATUSTYPE = 1 ! score/turns TEXTCOLOR = DEF_FOREGROUND BGCOLOR = DEF_BACKGROUND SL_TEXTCOLOR = DEF_SL_FOREGROUND SL_BGCOLOR = DEF_SL_BACKGROUND prompt = ">" color TEXTCOLOR, BGCOLOR cls Font(BOLD_ON | DEFAULT_FONT) "SHELL" Font(BOLD_OFF) "An Interactive Starting Point\n" print BANNER player = you ! player initialization location = emptyroom old_location = location move player to location FindLight(location) DescribePlace(location) location is visited CalculateHolding(player) #ifset USE_PLURAL_OBJECTS InitPluralObjects #endif } #ifset PRECOMPILED_LIBRARY replace main { #else routine main { #endif counter = counter + 1 PrintStatusLine run location.each_turn runevents RunScripts if parent(speaking)~=location speaking = 0 }
Obrázek 13: Ukázka moderní textovky – Room 206 (úvodní obrázek).
7. TADS – Text Adventure Development System
Druhým systémem patřícím do „silné trojky“ nástrojů určených pro tvorbu textovek je TADS neboli Text Adventure Development System. Autorem tohoto mezi textovkáři populárního nástroje je Michael J. Roberts. V současnosti je využívána jak verze TADS 2, která již není dále vyvíjena, tak i modernější verze TADS 3. Podobně jako je tomu u Huga, i TADS je založen na programovacím jazyku kombinovaném s integrovaným vývojovým prostředím (IDE), jehož možnosti (resp. přesněji řečeno možnosti podpůrných knihoven) však umožňují i tvorbu velmi složitých her, které například mohou komunikovat po síti. Jak se na nástroj určený pro tvorbu textovek a vytvořený textovkářem sluší a patří, je k dispozici i rozsáhlá dokumentace k TADSu, kterou lze získat na adrese http://tads.org/t3doc/doc/index.htm.
Obrázek 14: Moderní textovka Room 206 spuštěná v emulátoru Gargoyle.
Opět se podívejme na příklad části zdrojového kódu demonstrační hry, z něhož je patrná inspirace syntaxí céčka či na céčku založených programovacích jazyků:
versionInfo: GameID name = 'TADS 3 Elevator and Stairs Example' byline = 'by David Turpin' htmlByline = 'by <a href="mailto:dturpin@mainstreettech.com"> David Turpin</a>' version = '1.0' authorEmail = 'David Turpin <dturpin@mainstreettech.com>' desc = 'This is the TADS3 version of the Elevator and Stairs example from the IFWiki.' htmlDesc = 'This is the TADS3 version of the Elevator and Stairs example from the <a href="http://www.ifwiki.org">IFWiki</a>.' showCredit() { "Elevator and Stairs example from the <a href='http://www.ifwiki.org'>IFWiki</a>. <.p>TADS3 version by David Turpin. "; "\b"; } showAbout() { "This is the TADS3 version of the Elevator and Stairs example on the IFWiki. It is a three story building with a set of stairs and an elevator."; } ; me: Actor location = startRoom ; gameMain: GameMainDef initialPlayerChar = me showIntro() { "An example of Stairs and Elevators\n Version 1.0\n by David Turpin\b"; } showGoodbye() { "<.p>Thanks for playing!\b"; } ;
Obrázek 15: Moderní textovka Room 206 spuštěná v emulátoru Gargoyle.
8. Inform 7
Ve článku o vývojových nástrojích a programovacích jazycích určených pro tvorbu textovek se nelze nezmínit o systému Inform 7, jehož autorem je Graham Nelson. V současnosti se jedná o pravděpodobně nejpopulárnější nástroj, který se dnes používá pro tvorbu moderních textovek. Programovacímu jazyku Inform 7 se budeme podrobněji věnovat příště, ovšem již dnes se musíme zmínit o jedné zajímavosti – Inform 7 dokáže generovat (překládat) textovky do formátu/bajtkódu kompatibilního se slavnou Z-machine, což mj. znamená, že hry vytvořené v Informu lze „přehrát“ v prakticky jakémkoli interpretru Z-machine, samozřejmě včetně Gargoyle. Díky této vlastnosti se i nové textovky stávají platformově zcela nezávislými hrami, protože interpretry Z-machine existují jak pro prakticky všechny počítačové platformy, tak i pro většinu operačních systémů pro mobily (jak nových, tak i těch starších).
Obrázek 16: Moderní textovka Room 206 spuštěná v emulátoru Gargoyle.
Obrázek 17: Moderní textovka Room 206 spuštěná v emulátoru Gargoyle.
9. Odkazy na Internetu
- Cloak of Darkness
http://www.firthworks.com/roger/cloak/index.html - Adrift
http://www.adrift.co/ - Alan
http://www.alanif.se/ - „Easy“ Interactive Fiction Languages
http://www.brasslantern.org/editorials/easyif.html - Choosing a Text Adventure Language
http://www.brasslantern.org/writers/howto/chooselang.html - The words „Hello, Sailor“ linger briefly in the air…
http://www.firthworks.com/roger/cloak/sailor1.html - ADRIFT
http://www.firthworks.com/roger/cloak/adrift/index.html - SUDS
http://www.firthworks.com/roger/cloak/suds/index.html - ALAN
http://www.firthworks.com/roger/cloak/alan/index.html - Gargoyle – home page
http://ccxvii.net/gargoyle/ - Gargoyle – screenshots
http://ccxvii.net/gargoyle/screenshots.html - garglk (downloads)
http://code.google.com/p/garglk/downloads/list - Glk API Specification
http://www.eblong.com/zarf/glk/glk-spec-074.html - Text Fiction (for Android)
http://www.onyxbits.de/textfiction - Frotz – A Portable Z-Machine Interpreter
http://frotz.sourceforge.net/ - Index: if-archive/infocom/interpreters
http://www.ifarchive.org/indexes/if-archiveXinfocomXinterpreters.html - Z-Machine
http://inform-fiction.org/zmachine/standards/ - The Interactive Fiction Archive
http://www.ifarchive.org/ - Level 9 Games Interpreter
http://freespace.virgin.net/davidk.kinder/level9.html - Magnetic: An interpreter for Magnetic Scrolls adventures
http://msmemorial.if-legends.org/magnetic.htm - Zork online version
http://thcnet.net/zork/index.php - (Howto) Play Zork Online For Free
http://freebies.about.com/od/onlinegames/p/how-to-play-zork.htm - web-adventures.org
http://www.web-adventures.org/ - Adventure games
http://www.online-games.net/newadventuregames.html - Colossal Cave Adventure Map
http://www.spitenet.com/cave/ - Colossal Cave Adventure
http://www.rickadams.org/adventure/ - Here's where it all began…
http://www.rickadams.org/adventure/a_history.html - David Kinder's guide to Adventure downloads at the Interactive Fiction Archive
http://www.rickadams.org/adventure/e_downloads.html - Everything you ever wanted to know about …the magic word XYZZY
http://www.rickadams.org/adventure/c_xyzzy.html - Colossal Cave Adventure jako Java Applet
http://www.astrodragon.com/zplet/advent.html - Colossal Cave Adventure
http://en.wikipedia.org/wiki/Colossal_Cave_Adventure - iPod Adventure Game
http://hamimiami.com/ipod/adventure/index.html - Ohlédnutí za herní historií: Textovky
http://www.slunecnice.cz/tipy/ohlednuti-za-herni-historii-textovky/ - ASCII-GAMES – Play and Review
http://ascii-games.org/ - Tribute to text-mode games
http://www.textmodegames.com/ - Text-based game (Wikipedia)
http://en.wikipedia.org/wiki/Text-based_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/ - atari.fandal.cz
http://atari.fandal.cz/games.php - 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 - 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