Hlavní navigace

Historie vývoje počítačových her (150. část – specializované nástroje a jazyky pro tvorbu textovek)

13. 11. 2014
Doba čtení: 12 minut

Sdílet

Na předchozí část seriálu o historii vývoje počítačových her, v níž jsme si popsali dostupné interpretry textovek (jak moderních textovek, tak i textovek historických) dnes společně navážeme popisem specializovaných nástrojů a programovacích jazyků určených pro tvorbu nových textovek.

Obsah

1. Historie vývoje počítačových her (150. část – specializované nástroje a jazyky pro tvorbu textovek)

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

8. Inform 7

9. Odkazy na Internetu

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 ADRIFTADRIFT 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 TADSInform 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).

CS24_early

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

  1. Cloak of Darkness
    http://www.firthworks.com/ro­ger/cloak/index.html
  2. Adrift
    http://www.adrift.co/
  3. Alan
    http://www.alanif.se/
  4. „Easy“ Interactive Fiction Languages
    http://www.brasslantern.or­g/editorials/easyif.html
  5. Choosing a Text Adventure Language
    http://www.brasslantern.or­g/writers/howto/chooselan­g.html
  6. The words „Hello, Sailor“ linger briefly in the air…
    http://www.firthworks.com/ro­ger/cloak/sailor1.html
  7. ADRIFT
    http://www.firthworks.com/ro­ger/cloak/adrift/index.html
  8. SUDS
    http://www.firthworks.com/ro­ger/cloak/suds/index.html
  9. ALAN
    http://www.firthworks.com/ro­ger/cloak/alan/index.html
  10. Gargoyle – home page
    http://ccxvii.net/gargoyle/
  11. Gargoyle – screenshots
    http://ccxvii.net/gargoyle/scre­enshots.html
  12. garglk (downloads)
    http://code.google.com/p/gar­glk/downloads/list
  13. Glk API Specification
    http://www.eblong.com/zarf/glk/glk-spec-074.html
  14. Text Fiction (for Android)
    http://www.onyxbits.de/textfiction
  15. Frotz – A Portable Z-Machine Interpreter
    http://frotz.sourceforge.net/
  16. Index: if-archive/infocom/interpreters
    http://www.ifarchive.org/indexes/if-archiveXinfocomXinterpreters.html
  17. Z-Machine
    http://inform-fiction.org/zmachine/standards/
  18. The Interactive Fiction Archive
    http://www.ifarchive.org/
  19. Level 9 Games Interpreter
    http://freespace.virgin.net/da­vidk.kinder/level9.html
  20. Magnetic: An interpreter for Magnetic Scrolls adventures
    http://msmemorial.if-legends.org/magnetic.htm
  21. Zork online version
    http://thcnet.net/zork/index.php
  22. (Howto) Play Zork Online For Free
    http://freebies.about.com/od/on­linegames/p/how-to-play-zork.htm
  23. web-adventures.org
    http://www.web-adventures.org/
  24. Adventure games
    http://www.online-games.net/newadventuregames.html
  25. Colossal Cave Adventure Map
    http://www.spitenet.com/cave/
  26. Colossal Cave Adventure
    http://www.rickadams.org/adventure/
  27. Here's where it all began…
    http://www.rickadams.org/ad­venture/a_history.html
  28. David Kinder's guide to Adventure downloads at the Interactive Fiction Archive
    http://www.rickadams.org/ad­venture/e_downloads.html
  29. Everything you ever wanted to know about …the magic word XYZZY
    http://www.rickadams.org/ad­venture/c_xyzzy.html
  30. Colossal Cave Adventure jako Java Applet
    http://www.astrodragon.com/zplet/ad­vent.html
  31. Colossal Cave Adventure
    http://en.wikipedia.org/wi­ki/Colossal_Cave_Adventure
  32. iPod Adventure Game
    http://hamimiami.com/ipod/ad­venture/index.html
  33. Ohlédnutí za herní historií: Textovky
    http://www.slunecnice.cz/ti­py/ohlednuti-za-herni-historii-textovky/
  34. ASCII-GAMES – Play and Review
    http://ascii-games.org/
  35. Tribute to text-mode games
    http://www.textmodegames.com/
  36. Text-based game (Wikipedia)
    http://en.wikipedia.org/wiki/Text-based_game
  37. Adventure International
    http://en.wikipedia.org/wi­ki/Adventure_International
  38. Stránky o firmě Infocom a jejích hrách
    http://www.csd.uwo.ca/Infocom/
  39. atari.fandal.cz
    http://atari.fandal.cz/games.php
  40. Zork I: The Great Underground Empire (Moby games)
    http://www.mobygames.com/game/dos/zork-the-great-underground-empire/reviews/reviewerId,4465/
  41. Zork I (Wikipedia)
    http://en.wikipedia.org/wiki/Zork_I
  42. Zork I Walkthrough
    http://www.gamefaqs.com/pc/564446-zork-i/faqs
  43. Zork I: The Great Underground Empire
    http://www.csd.uwo.ca/Info­com/zork1.html
  44. Zork II: The Wizard of Frobozz (Moby games)
    http://www.mobygames.com/game/dos/zork-ii-the-wizard-of-frobozz
  45. Zork II (Wikipedia)
    http://en.wikipedia.org/wiki/Zork_II
  46. Zork II: The Wizard of Frobozz
    http://www.csd.uwo.ca/Info­com/zork2.html
  47. Zork III: The Dungeon Master (Moby games)
    http://www.mobygames.com/game/zork-iii-the-dungeon-master
  48. Zork III (Wikipedia)
    http://en.wikipedia.org/wiki/Zork_III
  49. SAGA – Scott Adams Grand Adventure
    http://www.msadams.com/index.htm
  50. Scott Adams (game designer, Wikipedia)
    http://en.wikipedia.org/wi­ki/Scott_Adams_(game_desig­ner)
  51. Interview with Scott Adams (Adventure Classic Gaming)
    http://www.adventureclassic­gaming.com/index.php/site/in­terviews/129/
  52. Scott Adams game interpreter
    http://www.ifarchive.org/indexes/if-archiveXscott-adamsXinterpreters.html

Byl pro vás článek přínosný?

Autor článku

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