Před pár lety jsem si splnil dětský sen – naprogramoval jsem textovou adventuru. Základna na asteroidu vznikla jako soutěžní hra pro dětskou šifrovací hru Technoplaneta a dohrálo ji přes padesát pětičlenných týmů dětí ve věku převážně druhého stupně základních škol. Za těch několik let jsem načerpal něco zkušeností, o které bych se rád podělil v krátké sérii článků. Pojďte se podívat, jak se programují moderní textové hry v TADS 3, jednom ze dvou celosvětově nejpropracovanějších systémů pro tvorbu interaktivní fikce ovládané klasicky příkazovým řádkem.

Takže co nás čeká? V dnešním dílu seriálu si řekneme něco o tom, proč vůbec textové hry vytvářet v systému TADS 3 a rozběháme si malou ukázku zdrojového kódu. Ve druhém dílu se zaměříme na vytváření lokací (místností) ve hře a jejich propojení v mapě. Ukážeme si, jak spojit místnosti přímo a jak mezi ně dát dveře či jiné konektory. Třetí díl bude ve znamení tvorby předmětů. Povíme si o třídě Thing a jejích mnoha potomcích a naučíme se vytvářet nejrůznější druhy přenosných předmětů i pevných dekorací. Naučíme se také definovat slovník parseru. Čtvrtý díl bude vyhrazen velké skupině předmětů, které fungují jako kontejnery, do nichž lze vkládat jiné objekty. Zjistíme, že to je princip s mnohem větším uplatněním, než jen pro tvorbu truhly. V pátém dílu si povíme o zpracování akcí a jak do nich zasáhnout. Konečně budeme tvořit logiku hry. V šestém dílu vtrhnou na scénu NPC postavy, které budou jako živé. Dozvíte se o možnostech konverzačního systému a uvidíte, že TADS má nejpropracovanější systém ze všech. V sedmém dílu naše povídání zakončíme, a to doslova – naučíme se udělat konec hry, odměnit hráče body a pomoci mu nápovědou. Nakonec si jako bonus povíme něco o designu textových her a jejich příběhu.

Proč programovat textovou hru v TADS?

Nebo možná – proč programovat textovou hru v existujícím systému, když si mohu vytvořit svůj vlastní? Vždyť vymyslet engine pro textovku zas není žádná věda!

Ano, i s takovým názorem jsem se už setkal. V našich luzích a hájích se představa o textových hrách formovala ve zlatém období textovek na osmibitových počítačích, kdy se hry programovaly vesměs v BASICu, a proto bylo potřeba mnoha zjednodušení. Vžil se model ovládání, který je prakticky společný pro hry ovládané pomocí menu i jednoduchým parserem, že hra kromě popisu lokace rovnou vypíše i seznam předmětů, a hráč je může přenášet a používat.

Právě univerzální příkaz >použij je odpovědný za nejvíce zjednodušení a zároveň za nejvíce škody. Jádro logiky takové hry je velice jednoduché, je to vlastně stavový automat, který v cyklu reaguje na dvojici příkaz + předmět a má naprogramována pravidla, v jakých situacích (kombinace umístění hráče, předmětů atd.), jak reagovat a posouvat stav hry. Ale řešení takové hry se někdy podobá spíše řešení Rubikovy kostky. Hráč dopředu vlastně neví, co se stane, když určitý předmět použije, a tak zkouší různě kombinovat. Někdy je kombinace logická, jindy moc ne. Náročnost hry plyne právě z uhodnutí složitých kombinací a z nalíčených pastí.

Na anglicky hovořící scéně šly textovky jinou cestou. Jejich rozmach byl akcelerován krátkým, ale velmi aktivním obdobím komerčního úspěchu, kdy se firmy předbíhaly v literární i technické kvalitě svých her. Už Zork v roce 1980 uměl reagovat na složitější příkazy jako >put the lamp and sword in the case, >look under the rug či >drop all except lantern. Jistě, stále to byly složité hlavolamy, jejichž vyřešení dalo spoustu přemýšlení a zkoušení, ale postupně, a zvláště později v rukou nadšenců amatérů, se více a více přesouvala pozornost k příběhu. Ten v moderně pojaté textové hře hraje hlavní roli, a dokonce existují hry, které jsou úplně bez logických hlavolamů, soustředí se jen na vyprávění, na objevování scenérie a komunikaci s postavami. A když už hlavolamy ve hře jsou, měly by být férové. Určitě není fér, když hra zabije hráče bez varování nebo když se důležitou informaci hráč dozví jedině tak, že umře.

Textové hry ovládané příkazovou řádkou mají velké kouzlo v tom, že navozují dojem svobody – že hráč může zadat jakýkoliv příkaz ho napadne, a hra splní jeho přání. To je něco, co jiné hry v takové míře nemají. Většina her je omezená na nějaké vyčíslené ovládání, jako výběr v menu či pohyb joystickem. Samozřejmě je to jenom kouzlo, příkazová řádka je ve skutečnosti omezená stejně, jako jakékoliv jiné ovládání, ale tyhle své limity dobře maskuje, takže nutí hráče uvažovat trochu jiným způsobem, než kdyby jen dedukoval z nabízených možností.

A to je podle mě důvod, proč se u těch větších systémů dává přednost spíše konkrétním slovesům, než univerzálnímu příkazu použij, protože podporuje ten pocit neomezenosti a přirozenější komunikaci s hrou, více možností, co s jedním předmětem udělat. I v některých českých hrách se používají další příkazy, jako otevři/zavři, oblékni apod., ale u TADSu je v základní výbavě něco kolem 150 akcí.

U takových her odpadá možnost, že by hráč ze zoufalství zkoušel použít každý předmět na všechno, dokud řešení nenajde. Musí se spolehnout na autora hry, že hlavolamy vymyslel férově. A autor má zase více možností, takže nemusí vymýšlet složité kombinace předmětů, jejichž význam použití dojde hráči až zpětně, ani nemusí zvyšovat obtížnost uměle líčením zbytečných pastí. Moderní hry jsou daleko detailnější a k hráči přívětivější. Scenérie bývá zaplněna množstvím objektů, které lze prozkoumat, samostatně lze prozkoumat i části složitějších objektů a mnoho informací se může hráč dozvědět i od postav ve hře. Autor tak může hráče lépe vést a jemněji mu napovídat. Při řešení každého hlavolamu by ve hře mělo být něco, co hráče přivede na správnou myšlenku.

Rozšiřte si svoje obzory a zahrajte si některé ze špičkových anglicky psaných textovek, které posbíraly ceny na soutěžích. Posunou vaše uvažování o textových hrách mnohem dál a zjistíte, že udělat pořádnou textovou adventuru dá opravdu hodně práce. Co vám tedy TADS nabízí?

  • TADS vás především postaví na mnohem vyšší startovní metu. Do vínku dostanete knihovnu implementující model světa se spoustou připravených tříd na realizaci všeho možného. Chcete mít ve hře židli, na které se dá sedět? Funkční svítilnu? Tajné dveře? Žádný problém, vše je už připraveno. Dostanete doslova náskok sto tisíc programových řádků kódu, které za vás už někdo napsal.
  • TADS má velice kvalitní parser příkazů. Odhlédněme na chvíli od schopnosti rozumět příkazu >dej všechny bonbóny kromě zelených do misky, vem ji, a pak jdi na jih, ta není zase tak moc důležitá. Pro hráče je mnohem důležitější, že se parser chová inteligentně. Rozumí mnoha synonymům, takže hráč nemusí tolik přemýšlet, jaký příkaz použít a jak přesně ho formulovat. Když mu hráč řekne něco, co není jednoznačné, umí se s tím vyrovnat. Buď vytuší z okolností, co má hráč na mysli, nebo se ho umí zeptat. Je-li potřeba provést nějakou triviální akci, jako třeba otevřít dveře, než jimi hráč projde, parser to udělá za hráče automaticky.
  • TADS má připraveny vynikající prostředky pro tvorbu realistických NPC postav. Poměrně snadno zvládnete vytvořit postavy, které se pohybují, provádějí různé věci a reagují na odkrývající se příběh, místo aby po celou hru jen stály na jednom místě a čekaly na hráče, až se jich na něco zeptá. Navíc způsob jejich programování je navržen tak, aby se zachovala přehlednost zdrojového kódu i u velmi komplikovaných postav.
  • TADS má oproti univerzálním jazykům v sobě spoustou a spoustou vylepšení, která jej činí ideální volbou pro programování textové hry. Jeho prototypová povaha umožňuje, aby se data objektů a kód akcí prolínali mezi sebou. Už žádné pole všech popisů předmětů na jednom konci zdrojáku (či dokonce v externím souboru) a zpracování všech akcí na konci druhém. V TADSu budete mít všechno o objektu přehledně na jednom místě. Také se nespletete v číselném indexu, protože místnosti ani předměty se nečíslují. Navíc má TADS spoustu maker, která značně zkracují zápis.
  • Všechno, co ovlivňuje vaší hru, je naprogramováno v TADSu samotném, dokonce i parser. Když budete chtít, můžete vše prozkoumat a změnit každý detail. Nemusíte se bát, že by vás systém časem limitoval, ve skutečnosti tím limitem budete spíše vy sami a vaše ambice.
  • Můžete si vybrat, zda svou hru vydáte jako soubor hratelný v klasickém interpretru, který ke své hře přibalíte (resp. si ho hráči stáhnou a nainstalují na svůj počítač), nebo budete hru šířit online, a hráči ji budou hrát ve webovém prohlížeči. Pokud nepoužijete nic speciálního, je to jen otázka rekompilace zdrojového kódu pro jedno či druhé prostředí. Ale chcete-li hráče překvapit nějakou specialitkou, architektura webového hraní je plně otevřená a dovolí vám využít všechny nejnovější technologie, co internetové prohlížeče umí (nebo teprve budou umět).
  • I kdybyste chtěli vytvořit textovou hru jen abyste si procvičili programování, zvažte, zda se více nenaučíte studiem a použitím špičkového systému, který navrhli zkušení autoři, než snahou o své vlastní jednoduché řešení, které možná ani nedokončíte, a pokud ano, nepřekročí stín osmibitů. TADS je moderní programovací jazyk, vše je otevřené a příkladně okomentované. Zkušenosti s programováním, které získáte, můžete uplatnit i v obecných programovacích jazycích.

Začínáme

Ke tvorbě textových her v systému TADS 3 můžete použít Linux, MacOS i Windows, liší se však nabídka nástrojů. Pro Windows existuje celé integrované vývojové prostředí Workbench vč. debuggeru, které je součástí instalačního balíčku pro autory. Na Linuxu a MacOS jsou k dispozici pouze nástroje pracující v příkazové řádce z balíku FrobTADS.

Ať už nainstalujete jedno nebo druhé, budete si muset stáhnout balíček s českou lokalizací ze stránek http://tads.cz/ a rozbalit ho. Obsahem je sada pěti souborů, které je potřeba nakopírovat do adresáře cs_cz, který vytvoříte po boku už existujícího adresáře en_us s ekvivalentními soubory. Na Linuxu to zpravidla bývá v adresáři /usr/share/games/frobtads/tads3/lib/adv3 nebo /usr/local/share/frobtads/tads3/lib/adv3 podle toho, zda jste instalovali balíček nebo kompilovali FrobTADS ze zdrojových kódů. Na Windows mám TADS nainstalovaný standardně v C:\Program Files (x86)\TADS 3, tam vyhledejte podadresář lib a v něm adv3.

Založení projektu ve Workbenchi je celkem snadné, po spuštění se objeví průvodce, kde vyberete „Create a new project from scratch“. V průvodci vyplníte název projektu a založíte adresář a v následujícím výběru „Project type“ vyberete „Adv3 – Introductory“. Potom ještě napíšete pár informací o své hře a dokončíte založení projektu tlačítkem „Create“. Takto ovšem vznikne projekt v angličtině, proto budete muset ještě v menu „Build“ vybrat „Settings…“ a zde v sekci „Compiler“ – „Defines“ změnit v okénku „Symbols to #define“ první řádek, aby v něm místo en_us bylo cs_cz. Workbench založí anglický ukázkový kód, který můžete smazat a v další kapitole si ukážeme, jak začít s minimální hrou.

Pod Linuxem či MacOS je potřeba založit adresář na projekt a do něj umístit zdrojový kód (např. do souboru hra.t), viz další kapitola a soubor Makefile.t3m (pozor, dodržte velká a malá písmenka) s následujícím obsahem:

-DLANGUAGE=cs_cz
-DMESSAGESTYLE=neu
-DINSTRUCTIONS_MENU
-FC -Fy obj -Fo obj
-o hra.t3
-lib system
-lib adv3/adv3
-source hra.t

Kostra zdrojového kódu

Zdrojový kód nejjednodušší funkční hry by mohl vypadat následovně. Budete-li programovat pod Linuxem či MacOS, nejvhodnější kódování češtiny je UTF-8. Workbench pod Windows bohužel neumí multi-byte kódování, takže v něm je potřeba na první řádce upravit kódování na windows-1250.

#charset "utf-8"

#include <adv3.h>
#include <cs_cz.h>

versionInfo: GameID
    name = 'Moje první hra'
    byLine = 'od Slovutného Autora'
    version = '1'
;

gameMain: GameMainDef
    initialPlayerChar = me
;

me: Actor
    location = startRoom
;

startRoom: Room
    roomName = 'První místnost'
    desc = "Nacházíš se v počáteční místnosti své hry. "
;

TADS 3 je objektově orientovaný programovací jazyk, a tak většina práce spočívá ve vytváření objektů. Objekt je jednoduše řečeno balíček souvisejících dat v paměti počítače. Těm proměnným, které balíček tvoří, se říká vlastnosti objektu, a kromě nich jsou k objektu ještě připojeny funkce, které s daty pracují, a těm se říká metody objektu. Vzorem či návodem pro vytvoření objektu, který říká, z jakých vlastností a metod se skládá, je třída objektu.

V příkladu výše vytváříme několik objektů. Prvním objektem nazvaným versionInfo je objekt odvozený ze třídy GameID. Pro přehlednost se názvy tříd vždy píší s velkým počátečním písmenem (v ukázkách zvýrazněné azurovým písmem) a názvy objektů (přesněji názvy proměnných obsahující referenci na objekt) malým. Objekt zdědil všechny vlastnosti a metody třídy GameID. Budeme-li chtít znát, co všechno je v objektu obsažené, podíváme se do TADS 3 Library Reference Manual, kde v levém sloupci ve spodní části je seznam všech knihovních tříd. My ve zdrojovém kódu uvedeme ty vlastnosti či metody, které chceme oproti knihovně změnit či přidat.

GameID slouží k vytvoření bloku základních informací o hře, jako kdo je autorem a jak se hra jmenuje. TADS očekává, že tyto informace přiřadíme do vlastností pojmenovaných name a byLine. Možná jste si všimli, že když přiřazujeme hodnoty do vlastností objektu, nepíšeme na konci řádky středník, jak bývá obvyklé v tradičních programovacích jazycích. V TADSu se středníky píší ve funkcích a metodách za každým příkazem, ale přiřazení hodnoty do vlastnosti objektu je pouhá deklarace, takže tady ne. Středník musí být až na konci celého objektu.

Objekt gameMain třídy GameMainDef je další povinný objekt, který musíme i v minimální hře vytvořit. Prozatím v něm nastavíme jen jedinou vlastnost, která říká, jaký objekt v této hře bude postava hráče. Bude to objekt zpravidla nazývaný krátce me, který vytváříme hned pod tím.

Postavy ve hře jsou třídy Actor (nebo Person). Postava hráče opět deklaruje jen jedinou vlastnost, a to location informující o místnosti, ve které se nachází hráč na počátku hry.

A nakonec vytvoříme jedinou místnost ve hře. Ta deklaruje dvě vlastnosti, první je titulek místnosti nazvaný roomName a druhá je popis místnosti používaný při vstupu do místnosti a při rozhlédnutí. Tato vlastnost se jmenuje desc, a její hodnotou je, na rozdíl od předchozí vlastnosti, text uzavřený do dvojitých uvozovek, to je důležité.

Překlad a spuštění

Pod Linuxem zkompilujeme příkazem t3make -d, a vznikne nám herní binárka hra.t3. Přepínač -d kompiluje ladicí verzi binárky. Finální hru k distribuci sestavíme bez tohoto přepínače. Ve Workbenchi pod Windows je tlačítko na spuštění.

Jakmile máme zkompilovanou binárku, můžeme si ji zahrát v některém interpretru. Autorský balíček pro Windows už obsahuje oficiální interpret a k dispozici je také QTADS, který je multiplatformní. Samotný FrobTADS se ke hraní českých her moc nehodí, na příkazové řádce si neporadí s Unicode. Ale má jiné důležité použití, umí pracovat jako server, a spouštět hry určené pro hraní ve webovém prohlížeči.

Programovací jazyk

TADS 3 se v mnoha ohledech podobá univerzálním programovacím jazykům, jako je C++ nebo JavaScript. Protože vznikl pro potřeby tvorby textových her, má několik zajímavých vlastností, které ho odlišují. Nejde jen o to, že opakem true je nil a že se všechno indexuje od jedničky místo od nuly. Pojďme se podívat na pár rysů, které by vás mohly překvapit.

Textové řetězce

Ve většině příkladů budete potkávat řetězce ohraničené dvojitými a jednoduchými uvozovkami. Na ně si musíte dát pozor, protože nejsou zaměnitelné, každý znamená něco jiného. Zatímco řetězec v jednoduchých uvozovkách je běžnou řetězcovou konstantou, jak jsme zvyklí z jiných jazyků, dvojité uvozovky představují příkaz k vytištění. Napíšete-li příkaz "Ahoj. "; rovnou dojde vytištění textu na obrazovku. Dvojité uvozovky jsou ekvivalentem příkazu say('Ahoj. '); Také si všimněte, že na konci textu před uvozovkou necháváme mezeru. TADS často k různým textům přidává další automaticky generované hlášky, takže je potřeba si tento zvyk osvojit.

V řetězcích můžete použít některé HTML značky, ale TADS zdaleka neumí vše, co moderní internetový prohlížeč. Pro začátek můžete použít <b>, <i>, <u> a např. <font color="red">. Chcete-li udělat klikatelný odkaz s příkazem, použijete <<aHref('příkaz', 'text odkazu', 'vysvětlení ve status baru')>>. Značek je mnohem více vč. obrázků, podpora vychází z HTML 3.2 s některými odlišnostmi, ale to už nechme na samostudium.

Často budete psát přímou řeč, uzavírejte ji do tagů <q>…</q>, zkonvertují se na správné české uvozovky, a můžete je i zanořit do sebe. Budete-li chtít zahájit nový odstavec textu, nepoužívejte běžnou párovou HTML značku <p>…</p>, ale speciální variantu <.p>, která se nijak neukončuje. Nový odstavec můžete naopak potlačit uvedením značky <.p0>. Také je dobré vědět, že dvě běžné klávesnicové pomlčky napsané za sebou se převedou na typografickou n-pomlčku.

V řetězcích můžete také používat výrazy uzavřené do zdvojených špičatých závorek, které pomohou s variabilitou či větvením textu. Např. v popisu hodinek jsme vložili aktuální čas, který se měnil:

"Prastaré digitální hodinky z doby, kdy displeje bývaly
    monochromatické a zobrazovaly pouze čísla. Momentálně
    ukazují <<clockManager.checkTimeFmt('24h.mm')>>. "

Můžete použít jakýkoliv výraz, tedy jakoukoliv proměnnou, příkaz či volání, vrácený text bude dosazen a vytisknut spolu s řetězcem. Kromě toho můžete použít konstrukce ifelseend pro rozvětvení textu podle situace:

'<.p><q>Už je ten šutrák vidět?</q> <<if me.isIn(cockpit)>>naklonil
    ses zvědavě k průzoru<<else>>zeptal ses z povzdálí<<end>>,
    <q>ty lidi obdivuju -- je jich pět a půl tak daleko od Země jen
    kvůli tomu, že je tam zajímavá koncentrace surovin. A jediné
    zpestření je náš přílet. By mě zajímalo, co by dělali, kdybychom
    nedorazili.</q>

    <.p><q>Zas tak daleko to není,</q> zamručel od řízení kapitán a ani
    se po tobě neohlédl, <q>u armády jsme lítali mnohem dál než do
    asteroidového pásu mezi Marsem a Jupiterem.</q>'

Blok else samozřejmě není povinný a nepovinné je i ukončení end, pak větvení sahá až do konce řetězce. Někdy se také hodí variovat text pomocí one of, když se ve hře často a opakovaně tiskne, jako v následujícím příkladu s robotem:

"Robot se otočil doleva, takže <<one of>>teď směřuje<<or>>aktuálně je
    orientovaný<<or>>míří<<or>>směřuje<<shuffled>> na <<smer>>. ";

Do řetězce se vytiskne jedna z mnoha variant oddělených značkou or, a jakým způsobem se varianta vybere, je určeno koncovou značkou. Kromě shuffled můžete použít cycling, stopping a mnoho dalších. Co přesně tato slova znamenají se dozvíte v následujícím článku, kde budeme mluvit o EventListech. Příjemnou možností je také uzavřít část textu mezi značky <<first time>> a <<only>>, čímž označíme část textu, která se už při druhém výpisu stejného řetězce nemá znovu objevit.

Objekty a třídy

Většina práce při programování v TADSu představuje vytváření objektů. Většinou vytváříme rovnou hotové objekty, jen málo kdy třídy. Na rozdíl od C++ je zde mnohem menší rozdíl mezi třídou a objektem, třída je jen speciálně označený objekt, který slouží jako vzor pro kopírování.

Podobně je i mnohem menší rozdíl mezi vlastností a metodou. Tam, kde je očekávána nějaká vlastnost s hodnotou, můžete klidně dát metodu, která hodnotu vrátí. TADS je velice dynamický jazyk.

Knihovna implementující model světa hodně využívá vícenásobnou dědičnost, tj. potomkové často dědí z více než jednoho předka. To může někdy vést ke komplikovaným situacím, pro orientaci je dobré si zapamatovat, že třída uvedená v seznamu předků dříve (vlevo) má přednost před třídou uvedenou později (vpravo). Proto se nejčastěji jako první uvádějí nejvíce specifické třídy, a pak až obecnější.

Při přetěžování knihovních metod bychom nikdy neměli zapomínat na zavolání předka klíčovým slovem inherited(); Knihovna totiž často provádí různé operace, a pokud je nechceme úmyslně potlačit, neměli bychom na jejich zavolání zapomenout, jinak se hra nebude chovat správně.

V objektově orientovaných jazycích je běžné, že si můžete jakoukoliv třídu upravit tak, že si podědíte potomka, kde upravíte či přidáte nějaké vlastnosti či metody. Vznikne tak nová třída s novým názvem a upraveným chováním. TADS má navíc možnost změnit třídu, aniž by se musel vytvořit potomek s novým názvem. Klíčovým slovem modify vytvoříme novou třídu se stejným názvem, takže existující kód nemusíme přepisovat. Ale je potřeba si uvědomit, že záleží na pořadí kompilace souborů se zdrojovým kódem. Všechny modifikace knihovních tříd musíme zařadit před kód je využívající.

Průvodce dokumentací

K TADSu existuje velké množství velmi kvalitní dokumentace. I když se budu snažit v této sérii článků ukázat široké spektrum problematiky a ilustrovat ji na konkrétních příkladech ze Základny na asteroidu, pamatujte, že pár článků nikdy nenahradí přečtení několika knih, a ty zase nenahradí trpělivé získání praktických zkušeností.

Na úplný začátek se hodí prolistovat TADS 3 Quick Start Guide, která pomůže s instalací a rozběháním vývojového prostředí krok po kroku.

Výuku TADS 3 pokrývají dvě knihy, každá s trochu jiným úhlem pohledu. Zatím co starší Getting Started in TADS 3 je tutoriálem provázejícím autora naprogramováním malé, ale kompletní hry Further Adventures of Heidi (k dispozici i v českém překladu), Learning TADS 3 se věnuje výuce problematiky mnohem systematičtěji od základu. Tutoriál je výborný, pokud si chcete rychle vyzkoušet celou šíři problematiky, nahlédnout i složitější problémy, a nevadí vám trocha experimentování a nižší hloubka záběru knihy. Vyhovovat bude především lidem, kteří mají hlubší znalosti programování a syntaxi pochytí z příkladů. Pro začátečníky, kteří mají jen málo zkušeností s programováním, je určitě vhodnější začít druhou knihou, která vysvětluje vše mnohem podrobněji, postupuje od jednoduchého ke středně složitému a je proložena i vysvětlením běžných programátorských postupů a znalostí.

TADS 3 Tour Guide je sbírka ukázek použití různých tříd z knihovny. Obvykle ukazuje typické použití a upozorňuje na různé záludnosti. Budete ji potřebovat až při řešení nějakého konkrétního problému, kdy se budete chtít podívat, jak se určitá třída používá.

TADS 3 System Manual jde do hloubky o samotném programovacím jazyku a zabudovaných funkcích systému. Většina začátečníků by neměla tuto příručku zatím potřebovat, určená je spíše pokročilým uživatelům.

TADS 3 Technical Manual je kolekce článků na různá specifická témata do hloubky. Určitě doporučuji se namátkou začíst nebo si alespoň prolistovat obsah a k článkům se vrátit později, jakmile budete o nějaké probírané věci přemýšlet.

O podporovaných HTML značkách si můžete přečíst více informací v Introduction to HTML TADS, ovšem je třeba si uvědomit, že ne všechny interpretry HTML značky podporují. Třeba Gargoyle funguje jen v plaintextovém režimu, takže HTML používejte jen na vylepšení hry, ale zachovejte hratelnost i v prostém textu.

Nakonec asi jedna z vůbec nejčastěji používaných příruček je TADS 3 Library Reference Manual. V ní budete pravidelně listovat v seznamu tříd a prohlížet si jejich definice. Příručka je vygenerovaná z komentářů ve zdrojovém kódu a kolikrát je velice užitečné si přečíst nejen popis nějaké třídy či metody, ale rovnou se prokliknout až do bohatě komentovaného zdrojového kódu knihovny.

Další díly seriálu

Příchozí vyhledávací fráze