Inform und T.A.G.

Neulinge, die ein eigenes Textadventure schreiben wollen, stellen sich oft die Frage nach der richtigen Programmiersprache. Im zweiten Teil der Serie werden die beiden bislang meistverwendeten Systeme vorgestellt.

Im ersten Teil dieser Serie waren wir zu dem Schluss gekommen, dass der direkteste Weg zu potenziell niveauvoller deutschsprachiger IF derzeit vermutlich über die auch auf den JADE-Seiten vorgestellten Autorensysteme Inform oder T.A.G. führt.


Inform

Wer kein Microsoft-OS benutzen oder emulieren kann oder will oder unbedingt formatierten Text, Grafik, Sound oder Windowing integrieren möchte, wird vermutlich zu Inform greifen müssen und ist damit in bester Gesellschaft: Inform hat, gefolgt von TADS 2, die Mehrzahl der IF-Competition-Gewinner hervorgebracht. Dass Inform flexibler und mächtiger ist als T.A.G. und die meisten anderen Autorensysteme, ist unbestritten. Die Inform-Sprache implementiert ein typisches IF-Objektmodell mit Vererbung, Member-Variablen, -Methoden und binären -Attributen und einer »Eltern/Kind«-Objektverschachtelungslogik und ähnelt ansonsten C und verwandten Allzwecksprachen - wenn auch nicht ohne syntaktische Abkürzungen und Eigenarten, unter anderem bei den Operatoren und der Deklaration von Funktionen (hier Routinen genannt).

Auch die über Jahre gewachsene Inform-Standard-Library kann verwirren: So macht sie wenig Gebrauch von Informs Objektorientiertheit, tut standardmäßig erst mal so, als stünde man sogar auf freiem Feld in einem ummauerten (wenngleich immateriellen) Oktagon (man gebe einmal »look northwest« ein), Wechsel von der zweiten zur ersten oder dritten Person oder das Herumkommandieren von NPCs scheinen umständlicher als nötig, und auch der Umgang mit Strings gestaltet sich weitaus komplizierter, als man es bei einer IF-Sprache erwarten würde.

Doch davon sollte man sich nicht abhalten lassen - gegen jedes Problem scheint es die eine oder andere Library-Erweiterung zu geben, Tutorien und Code-Beispiele finden sich zuhauf, das liebevoll geschriebene Inform Designer's Manual (DM4) und ein fast schon kindgerechter Inform Beginner's Guide sind sogar in gedruckter Form erhältlich, und bei Problemen helfen die Newsgroup rec.arts.int-fiction oder das if-de-Forum - was nicht heißen soll, dass man sich nicht vorher selber ein wenig Mühe gegeben haben sollte.

Inform-Quelltexte lassen sich entweder für Infocoms Z-Machine oder Andrew Plotkins Glulx-VM kompilieren. Ein so genannter Biplatform-Compiler handhabt beides. Z-Code-Interpreter gibt es für nahezu alles, was in einem Atemzug bis sechzehn zählen kann - neben Windows, Mac und Unix(-Clones) werden auch Palm, PocketPC, EPOC, Amiga, Atari, BeOS und viele andere Plattformen bedient (sogar der Gameboy). Die Glulx-VM ist noch nicht so verbreitet, aber deutlich leistungsfähiger: Der Umgang mit Multimedia-Elementen ist einfacher und flexibler als bei der antiken Z-Machine, und ohne deren Speichergrenzen sind auch übergroße Spiele möglich. Als Debugger steht neben einigen Debug-Verben die Infix-Library zur Verfügung, die in ein Spiel hineinkompiliert werden kann und einige Kommandos zur In-Situ-Analyse und -Modifikation bereitstellt.

Weiterführende Links:
Eher noch als die Inform-Homepage bieten die Seiten von Roger Firth mit diversen FAQs und massenweise Referenzmaterial einen guten Ausgangspunkt. Die deutsche Inform-Library liegt im Texfire-Archiv, als Einstiegshilfe bietet sich die deutsche Übersetzung des Beginner's-Guide-Spiels Wilhelm Tell an. Die Source-Codes einiger komplexerer Spiele finden sich im games/source/inform/ -Verzeichnis des IF-Archivs.

Als Demos:
Metamorphoses, Varicella, My Angel und viele andere. Auf deutsch: Starrider.


T.A.G.

Der »Text-Adventure-Generator« T.A.G. ist deutlich simpler, Einsteigern gegenüber aber auch freundlicher als Inform. Ähnlich wie ALAN sich am Englischen orientiert, orientiert sich T.A.G. stilistisch am Deutschen:

     wenn (bed1) und (bed2) dann
         text 'Beide Bedingungen sind wahr.'
     sonst
         text 'Mindestens eine Bedingung ist unwahr.'
     ende

Logisches Denken wird also nach wie vor vorausgesetzt, Programmiererfahrung eher nicht. Unter Umständen kann diese sogar hinderlich sein - etwa, wenn man sich darauf verlässt, Funktionen mit Parametern und Rückgabewerten schreiben oder Objekte nach Belieben mit Methoden ergänzen zu können (bei T.A.G. wird zwangsläufig viel mit globalen Variablen gearbeitet, und nur bestimmte Objekteigenschaften können statt eines fixen Wertes auch »Ausführungsblöcke« enthalten).

Die leichte Erlernbarkeit erkauft man sich also mit einer gewissen Starre. Und anders als bei Inform, TADS 3 oder Hugo sind hier auch der Parser und andere Bestandteile des Grundgerüsts nicht Teil der Library, sondern fest mit dem Interpreter verdrahtet. Große, komplexe oder ungewöhnliche Spiele wie zum Beispiel Savoir-Faire oder der »Dungeon-Manager« Lock & Key dürften in T.A.G. nur mit Abstrichen und auf verschlungensten Pfaden zu realisieren sein.

Das heißt natürlich nicht, daß man bei T.A.G. keine neuen Verben hinzufügen kann, keinen Einfluss auf die Verarbeitung eingegebener Kommandos hat, oder an ein paar öde Standard-Objekttypen gebunden ist - man muss halt Umwege in Kauf nehmen. Dafür ist T.A.G.s deutscher Parser auch ohne clevere Hacks schon angenehm verständig und bisweilen »sauberer« als die deutsche Inform-Library. Objekte grammatisch korrekt zu implementieren ist in der Regel ein Kinderspiel, und die meisten der üblichen Features wie »undo« (»zurück«) und »alles ausser«-Konstruktionen sind auch dabei.

Möglichkeiten, das Layout oder auch nur die Schriftart zu beeinflussen, gibt es bei T.A.G. allerdings keine. Was die T.A.M. produziert, entspricht fast vollkommen dem klassischen Infocom-Modell: ein einzeiliger Status-Balken, darunter schlichtester Text, als Gimmick die bekannten Zitatboxen. Aber mehr ist für traditionelle IF ja auch nicht unbedingt erforderlich (zumal auch nicht jeder Autor gleichzeitig Grafiker/Musiker ist).

T.A.G. gibt es bisher nur für DOS/die Windows-Konsole bzw. Emulatoren dieser, ich hoffe aber, dass im Laufe der Zeit zumindest eine Linux-Portierung auftauchen wird. Ein Linux-nativer Interpreter ist bereits erhältlich. Auf der T.A.G.-Homepage gibt es neben einer Handvoll Tipps und Tricks auch einige kleinere Erweiterungen sowie ein Debugging-Hilfsmodul, mit dem ein Spiel zur Laufzeit untersucht werden kann. Da diese selbst in T.A.G. geschrieben wurden und nicht sonderlich lang sind, lohnt es sich auch, sie eingehend zu studieren - nicht alle neueren Features wurden schon in das Manual aufgenommen.

Als Demos:
Der Angstbaum, Hortulus, Im Bannkreis.

Wer es sich zutraut, einen bestehenden Parser an die deutsche Sprache anzupassen, hat ungleich mehr Autorensysteme zur Auswahl, allen voran TADS - doch dazu mehr im nächsten Teil dieser Artikelserie.