Textadventure-System TxA

Das Textadventure-System TxA von Viktor Krammer soll das Schreiben von Textadventures vereinfachen und gerade für Einsteiger leicht zu lernen sein. Es ist für MS-DOS und Linux erhältlich.

Das System besteht aus zwei Teilen, einem Compiler und einem Interpreter. Ein kleines Demo-Adventure liegt bei. Die Sprache ist nach Angaben des Autors an Systemsprachen wie Batch- oder Shell-Skripte angelehnt, mutet jedoch auf den ersten Blick eher wie Basic an.

Der Quelltext ist in Blöcke unterteilt: [INIT] beinhaltet allgemeine Angaben zum Spiel und globale Texte, [ROOM] gibt Besonderheiten zu jedem Raum im Spiel an, und [INVENTORY] berücksichtigt alles, was tragbare Gegenstände angeht, die unabhängig vom Raum angesprochen werden können. Es kann mehrere [ROOM]-Blöcke geben.

Objekte werden im Spiel nicht wie in den meisten Systemen durch eine spezielle Datenstruktur beschrieben, sondern nur durch eine Variable, die ganzzahlige Werte oder die beiden Werte TRUE und FALSE annehmen kann. So befinden sich zum Beispiel tragbare Gegenstände, denen mit ITEM eine Variable zugewiesen wird, im Inventar des Spielers, wenn diese Variable TRUE ist. Zusätzlich können auch Variablen, die zu keinem Objekt gehören, definiert werden.

Das Vokabular für Befehle und für Gegenstände wird in den Blöcken [ROOM] und [INVENTAR] als Textmuster angegeben. Das erste Wort, das Verb, steht in runden Klammern. Es folgen Anweisungen für beliebige Textmuster, das erste, »leere« Textmuster ist das Verb alleine, ohne zusätzliche Angaben. Die Textmuster erlauben die Angabe von optionalen oder alternativen Wörtern, so dass Artikel im richtigen Fall eingegeben werden können, falsche Artikel in der Eingabe des Spielers aber nicht verstanden werden.

Die Satzmuster werden für den momentanen Aufenthaltsraum und für das Inventar überprüft. Das scheint eine logische Vorgehensweise zu sein, hat aber einge Tücken. Da Befehle meist zu Räumen gehören, kann es sein, dass ein Befehl nur in einer bestimmten Situation verstanden wird. Außerdem gibt es keine Platzhalter für Objekte, die allgemein gültige Definitionen für Befehle erlauben würden. So taucht jeder Satz, der von TxA verstanden wird, wörtlich im Quelltext auf. Im kurzen Demospiel findet sich deshalb unter [INVENTORY] auch die Passage:

    (nimm)
      nl
      printdnl gtext3
      {das}seil:
        nl
        if seil=true then
          printdnl gtext4
          resume
        end if
        printdnl gtext1
        ...
      otherwise:
        nl
        printdnl gtext1

Zu jedem der vier beweglichen Gegenstände existiert ein Block, der bis auf den Variablennamen genauso aufgebaut ist wie der Block {das}seil:. (gtext4 ist der Text »Du hast diesen Gegenstand bereits«, gtext1 sagt, dass dieser Gegenstand nicht bekannt ist.) Das eigentliche Aufheben des Objekts muss zusätzlich im Raum, in dem es sich befindet, definiert werden. Die Regeln der Spielwelt werden also nicht durch einen globalen Algorithmus, sondern durch individuelle, fast identische Codefragmente ausgedrückt.

Dies ist ein großer Nachteil des Textadventure-Systems TxA, denn bereits ein Spiel mittlerer Größe hat zwanzig bewegliche Objekte oder mehr. Der Quelltext der kurzen Demo, die aus fünf Räumen und drei leichten Rätseln besteht, ist 550 Zeilen lang. Dasselbe Spiel (mit besseren Parserantworten) wäre in Inform oder T.A.G. vielleicht ein viertel so lang und damit übersichtlicher gewesen.

Auch ist es - ähnlich wie bei Jürgen Poppes System - mit der befehlsabhängigen Texterkennung möglich, dass einige Objekte nur im Zusammenhang mit bestimmten Verben verstanden werden und dass dasselbe Objekt bei verschiedenen Verben unterschiedliches Vokabular hat.

Der Einleitungstext ist als eigener Raum definiert, in dem man sich nicht aufhalten kann. Obwohl TxA Umlaute versteht, werden sie von keinem der TxA-Spiele benutzt. Sowohl bei der Textein- und -ausgabe wird auf die 7-Bit-Entsprechungen ae, oe, ue und ss zurückgegriffen. »Höhle« und »Hoehle« sind für TxA verschiedene Wörter. Das wirkt etwas unbeholfen und erinnert an die C64-Ära.

Die Entwicklung von TxA begann 1995, und so ist es nicht verwunderlich, dass der Parser eine ähnliche Technik wie etwa bei GAGS oder PAW benutzt. Dem heutigen Stand entspricht TxA nicht. Durch das Abfangen jedes wörtlichen Befehls anstelle eines allgemeinen Satzschemas wird der Quelltext sehr lang und unübersichtlich und das sehr einfache Modell der Spielwelt lässt das Beschreiben komplexer Sachverhalte nicht zu. Mehr als kleine Demo-Spiele lassen sich mit TxA nicht schreiben.

Mancher Einsteiger mag sich durch die Einfachheit der Demo beeindrucken lassen, aber er ist sicher besser beraten, ein moderneres System mit einem ausgereiften Objekt-Konzept zu benutzen.

[Der TxA mit Demospiel sowie ein weiteres, ebenfalls recht kurzes Spiel, The Blue Stone, können von Viktor Krammers Homepage heruntergeladen werden.]