Kurzfassung: Regeln bei Inform 7 sind so etwas wie Event-Handler. Der Spieler tippt etwas ein, das wird in ein Event umgewandelt (eine gewünschte Aktion), und die Regeln legen in verschiedenen Ebenen fest, wie mit diesem Wunsch umgegangen wird.
Jede Welt hat ihre Naturgesetze, und auch eine Spielwelt hat ihre Regeln.
Was passiert, wenn man einen Apfel, den man in der Hand hält, fallen lässt?
(Antwort: Der liegt danach am Boden. Sonst passiert nichts, insbesondere ist der Apfel also nicht zermatscht oder so etwas. So lebensnah ist unsere Spielwelt erst einmal nicht.)
Was passiert, wenn man einen Apfel, den man auf dem Boden findet, nimmt?
(Antwort: Man hat danach den Apfel in seinem Besitz. Der Apfel ist also insbesondere nicht mehr auf dem Boden.)
Was passiert, wenn man einen Apfel, den man in der Hand hält, isst?
(Antwort: Der Apfel ist danach weg. Sonst passiert nichts, insbesondere hat man jetzt nicht mehr Vitamine oder Energie oder so etwas.)
Dieses Verhalten der Welt wird durch Regeln bestimmt, die rules
. Die wichtigsten Regeln sind die, die die Aktionen der Spielerfigur betreffen. Zwar gibt es auch Regeln, die ohne Zutun des Spielers eine Rolle spielen, aber im Großen und Ganzen ist die Spielwelt eine statische Welt, und Veränderungen in ihr werden vor allem durch Aktionen der Spielerfigur ausgelöst, also mittelbar durch das, was der Spieler in die Eingabezeile eintippt.
Was geschieht, wenn der Spieler etwas eintippt
Stufe 1: Das Ein- und Ausgabefenster (die Kommandozeile)
Jedes Spiel beginnt damit, dass der Spieler erst einmal den ausgegebenen Text in seinem Textfenster liest. Daraufhin gibt er eigenen Text in die Eingabezeile ein. Das kann zum Beispiel “take the apple” oder “put the apple in the box” sein, man kann aber genauso gut “grmblhx nix” schreiben.
Der Parser versucht zu verstehen, was der Spieler gemeint hat. Dazu versucht er als Erstes, ein Verb zu identifzieren: take, drop, eat – Inform kennt etwa 140 verschiedene davon, commands
genannt. Diesen Verben sind Aktionen zugeordnet.
Zum Beispiel beziehen sich “drop the apple in the box” und “put the apple in the box” trotz der verschiedenen Verben die gleiche Aktion: inserting something into something.
Dafür beziehen sich “open the box” und “open the locked door with the key” trotz des gleichen Verbs auf zwei verschiedene Aktionen: opening something
beziehungsweise unlocking something with something
.
Es ist Aufgabe des Parsers herauszufinden, welche Aktion der Spieler meint. Dann versucht er, den eventuell vorhandenen Rest des Textes in ein direktes Objekt und vielleicht noch ein indirektes Objekt zu teilen. Danach schickt er die Aktion samt den eventuellen Objekten an die nächste Stelle zur Weiterverarbeitung.
Stufe 2: Überprüfen der Aktion, ob sie ausgeführt werden kann
Nicht alle Aktionen sollen ausgeführt werden. “Iss die Kiste”, “Nimm den Ozean”, “Zieh die Jacke aus” (beziehungsweise die Aktionen, die dadurch ausgelöst werden) werden möglicherweise nicht ausgeführt. Dafür sorgen sogenannte check rules. Die lauten sinngemäß etwa:
- Man kann nichts essen, was nicht essbar ist.
- Man kann nichts nehmen, was nicht tragbar ist.
- Man kann nichts ausziehen, was man gar nicht anhat.
Von diesen Check-Regeln gibt es sehr viele. Zu jeder Aktion (Inform kennt etwa 80 davon) gehört ein Satz von Check-Regeln, die angeben, unter welchen Bedingungen die Aktion scheitert. Wenn die Aktion scheitert, auch das ist in den Check-Regeln jeweils angegeben, wird Stufe 1 angewiesen, eine entsprechende Nachricht an den Spieler auszugeben. Also etwa: “So etwas kann man nicht essen/tragen” oder “Du kannst nichts ausziehen, was du gar nicht anhast.”
Wenn keine Check-Regel Einspruch erhebt, dann war die Aktion erfolgreich, und jemand anderes kümmert sich darum, was dann passiert.
Stufe 3: Die Spielwelt und ihr Zustand
Die Spielwelt ist voller Objekte, und jedes Objekt hat bestimmte Attribute und Attributwerte. Aktionen des Spielers können (wenn sie ausgeführt werden) den Zustand der Objekte verändern: der gegessene Apfel wird aus dem Spiel genommen, der fallen gelassene Apfel landet auf dem Boden und verlässt den Besitz der Spielfigur.
Zu jeder Aktion gehört ein Satz von carry out rules. Die geben an, was in der Spielwelt geschieht, wenn die Aktion tatsächlich ausgeführt wird.
Die lauten sinngemäß etwa:
- Ein gegessener Gegenstand verschwindet aus der Welt.
- Ein fallen gelassener Gegenstand ist nicht mehr im Besitz der Person, die ihn hat fallen lassen, und befindet sich in dem Raum, in dem sich die Person aufhält.
Carry-out-Regeln können oft kurz sein, da die Frage, ob sie überhaupt angewendet werden können, an die Check-Regeln delegiert wird.
Zurück zu Stufe 1: Das Ein- und Ausgabefenster (die Kommandozeile)
Zu jeder Aktion gehört auch ein Satz von report rules. Die geben an, was nach dem erfolgreichen Ausführen der Aktion an den Spieler als Text ausgegeben wird. Der soll ja auch etwas mitkriegen davon, was sich in der Welt so geändert hat (und was nicht). Und dann geht der ganze Zyklus wieder von vorne los.
Zusammenfassung
Beim Analysieren einer Aktion werden nacheinander ausgeführt/überprüft:
- alle Check-Regeln, die zu der Aktion gehören (und wenn eine davon Einspruch erhebt, wird statt einer Weiterverabeitung sinnvollerweise eine Nachricht an die Textausgabe gesendet);
- alle Carry-out-Regeln, die zu der Aktion gehören, und die Welt entsprechend geändert;
- alle Report-Regeln, die zu der Aktion gehören, und die dem Spieler sinnvollerweise sagen, was geschehen ist.
(alternative Darstellung mit etwas mehr Text)
Damit will ich sagen, dass Inform intern nach Model-View-Controller aufgebaut ist. Es gibt Ausnahmen, also Carry-out-Regeln, die eine Textausgabe an den Spieler schicken, wie bei examining
– ohne Textausgabe könnte man nicht sagen, dass die Aktion tatsächlich ausgeführt worden wäre. Aber es gibt ein klares Modell, eine klare Text-Ein-/-ausgabe Aktionswünsche des Spielers, die von einer Kontrollinstanz überprüft werden. Tatsächlich stehen alle Regeln in Regelbüchern, die der Reihe nach durchgegangen werden.
Check-, Carry-out- und Report-Regeln muss man in der Regel nicht selber schreiben, die bringt Inform gleich mit. Man braucht sie eigentlich nur dann, wenn man Inform eine neue Aktion beibringen möchte, die es noch nicht gibt – sagen wir: tanzen. Dann sollte es Check-, Carry-Out- und Report-Regeln für diese Aktion geben.