________________________________________________________________________
| |||||||||||||||||||||||||||
2. Grundkonzept eines Adventures | |||||||||||||||||||||||||||
2.1. Wie ist ein Adventure aufgebaut?Ein klassisches Text-Adventure besteht aus einer Anzahl von Räumen, die miteinander verbunden sind, aus einigen Objekten, die in diesen Räumen herumliegen, aus Personen, die dort umherwandern und natürlich aus verschiedenen Möglichkeiten, die Objekte und Personen zu manipulieren. Dies sind die sog. Rätsel, von denen man eine ganze Menge lösen muß, um an sein Ziel zu gelangen. Das Ziel kann dabei alles Mögliche sein. Eine Schatzsuche in unwirtlichen Gegenden oder eine rechtzeitige Flucht vor einer Supernova. Je nachdem, was zu tun ist und wo das Adventure spielt, werden dann auch die Objekte und Personen aussehen. Wenn Ihr eine Idee habt, worum es in Eurem Adventure gehen soll, werden langsam immer mehr Sachen in Eurem Kopf zusammengetragen. Ein Blatt Papier oder zwei sind dabei sehr hilfreich. Diese Aufzeichnungen sind hinterher ziemlich wichtig, um den Überblick zu behalten, und ich rate Euch, sie in einer Mappe zu sammeln oder sie zumindest zusammenzuheften. Das erste, was bei einem Adventure festgelegt werden muß, sind die Handlung, die Räume, die Objekte und die Rätsel, die gelöst werden müssen. Schnappt Euch also ein Blatt Papier und beginnt, eine Karte zu malen von der Gegend, in der Euer Adventure spielen soll. Am besten ist eine herkömmliche Karte, in der die Orte mit Kästchen dargestellt werden. Diese Karte wird wahrscheinlich nach und nach erweitert oder verändert werden, wenn Euch noch etwas einfällt oder wenn Ihr auf etwas verzichten wollt. Dann müssen die Objekte auf die Räume verteilt werden. Objekte sind Gegenstände, die aufgehoben werden können, feste Objekte, wie etwa Möbelstücke, Türen oder Bäume, aber auch Personen sind Objekte im Sinne von TAG. Um die Rätsel lösen zu können, ist es wahrscheinlich erforderlich, daß Ihr neben den Befehlen, die TAG schon mitbringt (z.B. gehen, nehmen, weglegen, untersuchen usw.), Eure eigenen Befehle einführt. Dabei sind Eurer Phantasie keine Grenzen gesetzt, und Ihr könnt verschiedene Synonyme verwenden. | |||||||||||||||||||||||||||
2.2. Der Text-Adventure-Generator TAGTAG ist ein 'Generator' für Text-Adventures. Er liest einen vom Benutzer erstellten Datensatz, die Quelldatei, und analysiert sie. Wenn keine Fehler gefunden wurden, wird die Datei erstellt. Diese Datei besteht aus drei großen Blöcken. Diese Blöcke sind:
Eine weitere Datei, das Logbuch, enthält Informationen zum Generationsvorgang und kann, wenn gewünscht, herausgeschrieben werden. Die Quelldatei wird in einem beliebigen ASCII-Editor erstellt. Der Standard-Name einer solchen Datei ist job.adv. Anschließend werden die Spieldateien generiert:
>tag
Dabei ist Um das so generierte Adventure spielen zu können, benötigt man den Interpreter für Text-Adventures TAM (Text-Adventure-Maschine):
>tam
Mit diesem Programm wird dann der Adventure-Datensatz interpretiert und die vom Adventure-Autor gewünschten Handlungen auf den Bildschirm gebracht. | |||||||||||||||||||||||||||
2.3. Aufbau der Quelldatei für TAGAlle Daten, die der Generator zum Erstellen der Spieldatei und damit zum Ausführen des Adventures benötigt, müssen in der Quelldatei job.adv ein- gegeben werden. Der Aufbau ist so simpel wie möglich gehalten. Die Eingabedatei ist in verschiedene Blöcke unterteilt, die in beliebiger Reihenfolge angegeben werden können. Es gibt verschiedene Arten von Blöcken:
Die Befehle in den jeweiligen Blöcken sind ebenfalls so einfach wie möglich. Die Befehle müssen zeilenweise eingegeben werden, eine Zeile für jede Anweisung. TAG unterteilt alle Zeilen in Worte, die mit Leerzeichen und Kommas voneinender getrennt sind. Dabei gibt es verschiedene Arten von 'Wörtern':
Alle Zeichen, die in einer Zeile hinter einem Ausrufezeichen oder einem senkrechten Strich (Pipe) stehen, werden als Kommentar betrachtet und vom Programm ignoriert. Dies gilt natürlich nicht für '!' und '|', die sich innerhalb eines Strings befinden. Kommentarblöcke von mehreren Zeilen können zwischen den Begrenzern /* und */ angegeben werden. Kommentare können also wie folgt aussehen:
/* Dies ist ein Kommentarblock,
der über mehrere Zeilen geht,
in diesem Fall über drei. */
/* Ein Einzeiler. */
! Auch ein Einzeiler
Blockkommentare können nicht innerhalb eines Befehls stehen. Man kann verschiedene Befehlzeilen auf eine Zeile schreiben, indem man die Befehle mit Semikola voneinander trennt. So sind z.B.
Text 'Hallo, Welt!'
Absatz
und
Text 'Hallo, Welt!'; Absatz
gleichwertig. Ob am Ende einer Zeile ein Semikolon steht oder nicht, ist egal. Diese Zeilentrennung funktioniert natürlich nicht innerhalb eines Strings oder eines Klammerausdrucks. Es gibt noch einige sogenannte Systembefehle, die aus einem Lattenzaun und drei Großbuchstaben bestehen. Dies sind:
Diese Direktiven können auch als Optionen in der Befehlszeile angegeben werden. Die komplette Syntax für das Aufrufen des Generators ist:
tag {-Optionen} Quelldatei{.adv} {Spieldatei{.tag}}
Mögliche Optionen sind:
Die Definition der Optionen mit #XXX überschreibt natürlich die Optionen, die beim Aufrufen gesetzt wurden. Jenachdem, ob man Optionen immer wirksam haben oder nur gelegentlich von ihnen Gebrauch machen möchte, sollte man sie in der Quelldatei oder auf der Kommandozeile angeben. Die Option -i ignoriert nur die Direktiven, die auch auf der Kommandozeile angegeben werden können. #DAT und #STD funktionieren weiterhin. TAG besitzt ein Fehlersystem mit drei Stufen:
Alle Meldungen erscheinen auf dem Bildschirm mit Angabe der Zeile im Quellcode und ggf. mit dem Namen der eingefügten Datei. Dieselben Meldungen erscheinen auch in der log-Datei, und zwar am Anfang, in der Rubrik 'Logbuch'. | |||||||||||||||||||||||||||
2.4. Der ParserDer Parser ist der Teil des Programms, der die Befehle aufteilt und untersucht. Zunächst wird der Befehl in einzelne Worte aufgeteilt. Diese Worte werden dann vom Programm untersucht. Der Befehl wird in folgende Elemente aufgeteilt:
Diese Werte sind das Ergebnis der Analyse des vom Spieler eingegebenen Satzes. Außerdem ermittelt der Parser noch folgende Informationen (die zur Bestimmung des angesprochenen Befehls dienen, aber eventuell von Nutzen sein können):
Die Objekte im Satz können durch eine Kette von Eigenschafts- und Hauptworten angegeben werden. Eine solche Kette hat folgendes Aussehen: {Art} {1. Adj./Adverb} {2. Adj.} Substantiv {weitere Substantive} Die Angaben in Klammern sind dabei optional. Der Parser versteht also die folgenden Wortketten als Objekte:
DAS BOOT
KÜHLES GLAS BIER
DER FRISCH GEBACKENE LAIB BROT
DER KLEINE SILBERNE HAUSTÜRSCHLÜSSEL
Die Bedeutung der oben genannten Elemente wird am deutlichsten mit ein paar Satzbeispielen. Die Zeile in Großbuchstaben nach dem Prompt (>) ist die Eingabe des Spielers, die nachfolgenden Zeilen sind das Analyseergebnis des Parsers. Werte, die nicht angegeben werden, sind Null bzw. leer.
> GEHE NACH NORDEN
aBef = gehen, aRitg = N (= Norden)
aVerb = 'gehe'
> NIMM DIE MÜNZE
aBef = nehmen, aObj = Münze
aVerb = 'nimm'
> NIMM DIE MÜNZE AUS DER TRUHE
aBef = herausnehmen, aObj = Münze, aObj2 = Truhe
aVerb = 'nimm', aPräp = 'aus'
> LEGE MÜNZE HIN
aBef = hinlegen, aObj = Münze
aVerb = 'lege', aKlammer = 'hin'
> LEGE MÜNZE AUF DEN TISCH
aBef = darauflegen, aObj = Münze, aObj2 = Tisch
aVerb = 'lege', aPräp = 'auf'
> ÖFFNE KLEINES SCHLOSS MIT HAARNADEL
aBef = öffnen_mit, aObj = Truhe, aObj2 = Haarnadel
aVerb = 'öffne'
> MACHE TRUHE MIT BRECHEISEN AUF
aBef = öffnen_mit, aObj = Truhe, aObj2 = Brecheisen
aVerb = 'mache', aKlammer = 'auf'
> GIB DEM AFFEN DEN ZUCKER
aBef = geben, aObj = Zucker, aObj2 = Affe
aVerb = 'gib'
Bei den Beispielen gibt es einige Dinge, die auffallen:
Wird ein Befehl an jemand anderen gerichtet, so wird das angesprochene Objekt in der Variable Akteur gespeichert. Dies ist in Sätzen wie
> SAGE DEM JUNGEN "FOLGE MIR"
> PRINZESSIN, "KÜSS DEN FROSCH"
> COMPUTER, KURS AUF GANYMED
der Fall. Meistens ist Akteur jedoch Null, d.h. der Spieler soll die Anweisung ausführen. Dieses Kapitel ist nur ein Überblick über die Aufgabe des Parsers. Detailliertere Angaben befinden sich in den Kapiteln über die Befehls- und Objektdefinitionen sowie im Kapitel 15. Anmerkung: Die eingegebene Anweisung wird vom Programm als Kleinbuchstaben behandelt. Dabei werden automatisch 'ß' in 'ss' und 'ae', 'oe' und 'ue' in die entsprechenden Umlaute umgewandelt. Die Worte, die ins Lexikon von TAG geschrieben werden sollen, werden auch erst in diese Form gebracht. | |||||||||||||||||||||||||||
|