Next: ,,...und setzte den Menschen
Up: Schritt für Schritt ins
Previous: Schritt für Schritt ins
Subsections
(siehe 1.3.2). Der Titel (und der Untertitel) werden jeweils
als Textkonstante definiert:
-
- Constant Story "Eden";
Constant Headline "^ein interaktiver Anfang ((c) frob 2002)^";
Statt des Startraums beginnen wir mit etwas Ansprechenderem:
-
- Object Mitte "Inmitten des Gartens"
with description
"Eine Lichtung inmitten eines großen Gartens.
Ringsum sind Beete, Obstbäume, Gebüsch;
alles ist gepflegt und feierlich. Aus einer Quelle sprudelt
frisches Wasser und fließt in vier verschiedene Richtungen
ab. Neben der Quelle steht ein einzelner, majestätischer
Baum - der Baum der Erkenntnis.",
has light;
Das ist die Minimalausstattung eines Raums - ein Name, eine Beschreibung
und Licht, damit man die Beschreibung auch sieht.
Wie alles, mit dem der Spieler in Berührung kommt, ist auch der Raum,
in dem er sich bewegt, ein Objekt, deklariert mit dem Schlüsselwort
Object, gefolgt von einem Bezeichner (dem
Namen des Objekts, den das Programm verwendet, hier Mitte)
und einem String (einer Zeichenkette), in dem der Name des Objekts
steht, wie ihn der Spieler zu sehen bekommt. Nach diesem ,,Kopf''
kommt der ,,Körper'' des Objekts; er besteht aus properties
(Eigenschaften) nach dem Schlüsselwort with
und attributes (Attributen) nach dem Schlüsselwort has.
- Attribute
- sind nichts anderes als boolesche (logische) Werte. Sie
bezeichnen Eigenschaften, die das Objekt entweder hat oder nicht hat: light
zeigt an, dass das Objekt beleuchtet ist (bei einem Raum; bei einem
anderen Gegenstand zeigt es an, dass dieser Licht abgibt).
- Properties
- sind zur Aufnahme größerer Datenmengen bestimmt, sie
enthalten meist einen (auszugebenden) String oder eine Routine (ein
Unterprogramm). description enthält die
Beschreibung eines Objekts (bei Räumen angezeigt nach ,,sieh dich
um'', bei anderen Objekten angezeigt auf den Befehl ,,Untersuche
den Gegenstand'').
Die einzelnen properties und die Liste der Attribute werden
voneinander durch Kommata getrennt; ein Semikolon schließt die Definition
eines Objektes ab. Wie im nächsten Beispiel zu sehen ist, steht zwischen
mehreren Attributen kein Komma, nur Leerraum.. Auch das einleitende
Schlüsselwort jeder property und ihr Inhalt sind nur durch
Leerraum getrennt.
-
- Object -> Apfelbaum
with name 'Baum' 'Erkenntnis' 'Apfelbaum' 'majestaetisch',
short_name "Baum",
post "der Erkenntnis",
dekl 1,
description "Es ist eine Art Apfelbaum, aber kein
normaler Apfelbaum. Er steht in Blüte und trägt
zugleich Frucht. Du weißt, dass es der
~Baum der Erkenntnis~ ist - aber du weißt nicht,
was dieser Name bedeuten soll.",
has scenery male;
Mit dem Pfeil -> wird angezeigt, dass der
Apfelbaum nicht selbständig in der Welt steht, sondern zum vorher
definierten Objekt (Mitte) gehört, d.h.
in diesem Raum zu finden ist. Auf diese Art und Weise werden Objekte
anderen Objekten zugeordnet, d.h. ihr ,,Ort'' in der Welt des Spiels
festgelegt. Um dies schneller beschreiben zu können, werden Begriffe
aus dem Wortfeld des Stammbaums verwendet: Apfelbaum
ist ein child (Kind) von Mitte,
Mitte ist ein parent
(Elternteil) von Apfelbaum. Ein Objekt
ohne parent ist entweder ein Raum oder
gerade nicht im Spiel.
Die Zuordnungen beweglicher Objekte (und der Spielfigur) können im
Lauf des Spiels wechseln. Die Spielfigur und andere Objekte bewegen
sich durch die Spielwelt. Funktionen wie child(Objekt)
und parent(Objekt) stehen der Autorin zur
Verfügung, um den aktuellen Stand ermitteln zu können (mehr darüber
unten in 3.1.2).
Im Unterschied zum Raum ist der Baum für den Spieler ein körperlicher
Gegenstand: Er kann ihn z.B. anfassen, beriechen, versuchen auf ihn
zu klettern oder ihn auszureißen. Dazu muss er ihn benennen können,
d.h. einen Namen für ihn haben, den das Spiel versteht. Dazu ist die
property name da: in ihr stehen
- in Hochkommata eingeschlossen - die Namen, mit denen der Spieler
das Objekt bezeichnen kann. Dazu zählen auch Adjektive (der Spieler
kann sie verwenden, der Parser beachtet den Unterschied zwischen Adjektiv
und Substantiv nicht, was regelmäßig nicht stört). Nur die ersten
9 Zeichen eines Namens sind signifikant, dabei zählen Umlaute und
ß als zwei Zeichen, denn sie müssen an dieser Stelle ausgeschrieben
werden13. Statt 'majestaetisch' hätte also 'majestaet'
genügt.
Der Spieler weiß, dass es ,,der Baum, des Baums'' etc. heißt, das
Programm weiß es nicht. Es braucht daher Regeln, mit denen es den
Namen des Objekts grammatisch richtig ausgeben kann. Es muss wissen,
welche Teile des Namens es deklinieren muss (,,Baum'') und welche
nicht (,,der Erkenntnis''). Es muss das Deklinationsschema für ,,Baum''
und das grammatische Geschlecht kennen. Das ist alles in der Objektdefinition
enthalten:
- short_name
- ist der ,,eigentliche''
Name des Objekts. Er wird dekliniert.
- dekl
- gibt das zu verwendende
Deklinationsschema an (es gibt 9 davon, siehe 3.2.7).
- post
- sind nachgestellte Namensbestandteile,
die nicht dekliniert werden.
- male, female oder neuter
- sind
Attribute, die das grammatische Geschlecht festlegen.
Außerdem gibt es noch
- adj (property)
- Eine Liste von
Adjektiven, die dem short_name vorangestellt
und dekliniert werden ( z.B. "einzeln"
"majestätisch")
- pluralname (Attribut)
- Das Objekt
ist mehrere Gegenstände (steht also im Plural), z.B. ,,zwei Abflussrohre''.
Betritt der Spieler einen Raum oder sieht er sich dort um, erhält
er nicht nur eine Raumbeschreibung, sondern auch eine Auflistung,
welche Objekte sich dort befinden. Das ist nicht immer erwünscht;
z.B. ist der Apfelbaum ja schon in der Raumbeschreibung erwähnt. Das
Attribut scenery bewirkt, dass der Apfelbaum
als Kulisse behandelt und nicht gesondert erwähnt wird. Außerdem bewirkt
es, dass der Apfelbaum an dieser Stelle ,,fest'' eingebaut wird;
der Spieler kann ihn nicht an sich nehmen oder wegschieben. Letzteres
allein kann auch mit dem Attribut static
erzielt werden.
Footnotes
- ...
werden13
- Es handelt sich bei diesen Namen nicht um simple Zeichenketten (in
doppelten Anführungszeichen), sondern um einen besonderen Datentyp:
Wörterbucheinträge (in Hochkommata). Sie werden in einer besonderen
Tabelle abgelegt, um das Vergleichen zu beschleunigen. Wir brauchen
sie hauptsächlich in name und später beim
Definieren neuer Verben (siehe 2.13).
Das Ausschreiben der Umlaute und des ß ist nur in solchen Wörterbucheinträgen
erforderlich.
Next: ,,...und setzte den Menschen
Up: Schritt für Schritt ins
Previous: Schritt für Schritt ins
Frank Borger
2003-05-02