Inform 7: Quelltext

So sieht der Quelltext des kleinen Jade-Adventures in Inform aus. Wenn man mit der Maus über die rot markierten Details fährt, oder sich mit der Tabulatortaste durch den Quelltext bewegt, werden nährere Informationen angezeigt.

Alles, was zwischen eckigen Klammern steht, ist Kommentar und wird von Inform 7 ignoriert. Kommentare können über mehrere Zeilen gehen. Innerhalb von Anführungszeichen funktioniert dies jedoch nicht.

[Die Inform−7-Version des Jadestatuen-Beispiels.]

Texte stehen zwischen Anführungszeichen. Die Syntax von I7 behandelt Ein- und Ausgabetexte gleich.

Das Spiel wird im ersten Absatz durch seinen Titel und den Namen des Autors gekennzeichnet.

"Die Jadestatue" by Martin Oehm

Die Headline ist ein Zusatz zum Titel, der im Spiel angezeigt wird und auch Teil der Babel-Metadaten ist.

Zusätzlich zu Titel und Autor können weitere Angaben, wie hier die Beschreibung, gemacht werden. Diese Meta-Angaben werden im Babel-Format in der Blorb-Datei abgelegt. (Außerdem macht die Beschreibung den Kommentar in der ersten Zeile ziemlich überflüssig.)

The story headline id »Ein interaktives Exempel«.
The story description is "Das Jade-Beispiel für Inform 7".

Zusätzliche Module, die so genannten Extensions werden mit der Direktive Include eingebunden. Wie das Spiel selbst werden sie durch Titel und Autor identifiziert. Die Extensions werden in der Benutzeroberfläche verwaltet.

Include German by Banbury & Christian Bluemke.

Mit diesem Satz wird ein neuer Raum definiert, der sowohl im Spiel als auch im Quelltext "Lichtung im Dschungel" heißt.

Ein allein stehender Text nach der Definition des Raumes ist die Raumbeschreibung.

Der Quelltext ist in Absätze, die durch eine Leerzeile voneinander getrennt sind, und Sätze gegliedert. Sätze enden mit einem Punkt. Nach Texten, die mit einem Punkt aufhören, endet der Satz ebenfalls. Damit sieht die I7-Syntax so aus wie geschriebener Text und man spart sich hässliche Kombinationen wie "Prima.".

Lichtung im Dschungel is a room. "Du stehst auf einer Lichtung im dichten Dschungel. Im Norden steht ein alter, von Ranken überzogener Schrein. Im Süden führt ein schmaler Pfad zurück in die Zivilisation."

Mit Instead werden Abweichungen vom üblichen Verhalten definiert.

Mit when können Regeln durch Bedingungen eingeschränkt werden. Die hier angegebene Regel wird zum Beispiel nur ausgeführt, wenn der Spiele nach Süden geht und die Statue trägt. Spezielle, d.h. eingeschränkte Regeln haben Vorrang vor allgemeinen Regeln.

Der Nebensatz, der die Regel beschreibt, endet nicht mit einem Komma, sondern mit einem Doppelpunkt, um I7 das Leben etwas leichter zu machen.

Wenn mehere Sätze zu einem zusammengefasst werden, muss man diese Teilsätze nicht mit einem Punkt, sondern mit einem Strichpunkt voneinander trennen. Die Instead-Regel hier bezieht sich auf den nächsten satz. Dieser Satz umfasst aber zwei Dinge: Ein Text wird ausgegeben und das Spiel endet. Daher müssen die zwei Sätze zu einem I/-Satz verkettet werden.

Mit say gibt man einen Text aus.

Mit dieser Anweisung wird das Spiel beendet. Das Spiel endet mit dem Sieg, dem Tod oder einem frei wählbaren Ausgang, der als Text angegeben wird.

Instead of going south in the Dschungel when the player has the Jadestatue: say "Du schaffst es, mit der Statue wieder zurück in die Zivilisation zu gelangen."; end the game in victory.

Diese Regel ist allgemeiner als die im vorherigen Absatz und wird ausgeführt, wenn der Spieler die Jadestatue nicht bei sich hat. Wo diese Regel steht, ist jedoch egal: Der Vorrang wird durch die Genauigkeit der Regel bestimmt.

Obwohl der raum Lichtung im Dschungel heißt, reicht es, im Quelltext Dschungel zu sagen, da der Raum damit eindeutig identifiziert ist.

Instead of going south in the Dschungel, say "Nicht ohne die Statue!".

Going nowhere bezeichnet in I7 nicht, dass man nirgandwo hingeht, also etwa wartet, sondern dass man in eine Richtung geht, in der es keinen Ausgang gibt. Vorsicht: Hier muss es from, nicht in the Dschungel heißen!

Instead of going nowhere from the Dschungel, say "Dort ist der Dschungel zu dicht, es gibt keinen Pfad in diese Richtung."

Dieser Satz definiert ein Objekt und erschlägt direkt drei Fliegen mit einer Klappe: Es definiert den Bezeichner des Objekts im Quelltext, es definiert den Namen, der zur Ausgabe im Spiel verwendet wird und es definiert die Vokabeln 'faustgross' und 'stein'. Das funktioniert sehr gut auif Englisch, im Deutschen gibt es hier einige Einschränkungen.

Der Satz definiert nicht nur die Namen des Steins, sondern auch seinen anfänglichen Ort.

Um Tipparbeit zu sparen kann man Fürwörter verwenden.

Da I7 für englische Spiele konzipiert wurde, versteht es bei der Definition keine Gerera. Man muss diese explizit mit male, female oder neuter angeben.

Ein allein stehender Text nach der Definition eines Objekts ist die Beschreibung, die nach der Raumbeschreibung auftaucht, wenn das Objekt noch nicht bewegt worden ist. Die Objektbeschreibung, die man mit "untersuche Stein" erhält, muss gesondert angegeben werden.

Gegenstände, die der Spieler aufheben kann, werden mit portable gekennzeichnet, im Gegensatz zu Inform~6, bei dem man unbewegliche Dinge eigens kennzeichnen musste.

Mit understand gibt man zusätzliches Vokabular an. Das Vokabular darf keine Umlaute, Eszetts und Leerzeichen enthaltenm, man kann also leider nicht sagen understand "groß glatt rund" as Strein.

Da man auf Deutsch in der Regel Ein- und Ausgabenamen nicht in einem Zug definieren kann, muss der Name, der zur Ausgabe des Objekts im Spiel verwendet wird, explizit mit printed name angegeben werden.

Adjektive müssen im printed name mit [^] gekennzeichnet werden, das dann im Spiel durch die passende Endung ersetzt wird.

A faustgross Stein is in the Dschungel. It is male. "In der Nähe des Schreins liegt ein glatter, runder Stein im Gras." Instead of examining the Stein, say "Der Stein ist so groß wie eine Faust und außergewöhnlich glatt und rund." Understand "gross", "glatt" and "rund" as Stein. The printed name of the Stein is "faustgroß[^] Stein". The Stein is portable.

Mit try kann man eine Aktion in eine andere umlenken. Try deshalb, weil man ja nicht weiß, ob die neue Aktion, die versucht wird, Erfolg haben wird.

Ein Objekt, das als scenery gekennzeichnet ist, ist Kulisse. Es wird nicht eigens nach der Raumbeschreibung erwähnt. Da es aber im Text der raumbeschreibung auftaucht, ist es sinnvoll, eine mögliche Interaktion des Spielers mit deisem Objekt abzufangen.

The alt Schrein is scenery in the Dschungel. It is male. Instead of examining the Schrein, say "Der alte Toltekenschrein ist fast komplett mit Efeu überwuchert." Instead of entering the Schrein, try going north. Understand "toltekisch", "Efeu" and "Ranken" as Schrein.

Eckige Klammern in Texten sind Textbefehle und keine Kommentare. Mit diesen Textbefehlen können zum Beispiel Objektnamen dynamisch ausgegeben werden.

Mit dem Textbefehl [paragraph break] erzwingt man einen Umbruch.

Indem man den Schrein als im Norden der Lichtung liegend definiert, wird eine symmetrische Verbindung zwischen den beiden Räumen hergestellt. Symmetrisch heißt hier, man geht von der Lichtung nach Norden in den Schrein und von dort aus nach Süden wieder zurück auf die Lichtung.

Im Schrein is a room. It is north of the Dschungel. "In dem kleinen Schrein ist es dunkel, nur wenig Licht fällt durch das halb verfallene Dach. Ein großer Lichtstrahl fällt auf eine Steinsäule in der Mitte des Schreins.[paragraph break]Die Lichtung liegt im Süden." Outside from Im Schrein is the Dschungel.

Hier muss der komplette Name, "Im Schrein" angegeben werden, da "schrein" allene wegen des scenery-Objekts "alter Schrein" nicht eindeutig ist.

Ein suppoerter ist ein Objekt, auf dem man andere ablegen kann.

The Steinsäule is a supporter in Im Schrein. It is female. Instead of examining the Steinsäule, say "Die Säule ist aus glattem Stein gehauen, etwas mehr als einen Meter hoch und oben flach, wie ein Podest." Understand "Steinsaeule", "Saeule", "Podest" and "Steinpodest" as Steinsäule.

The Jadestatue is on the Steinsäule. It is female and portable. Instead of examining the Jadestatue, say "Es ist die Statue einer toltekischen Gottheit, komplett aus grüner Jade geschnitzt. Sie glänzt und sieht sehr wertvoll aus." Understand "grün", "klein", "Statue", "Figur", "Jadestatue" and "Jadefigur" as Jadestatue.

Instead of taking the Jadestatue when the Jadestatue is on the Steinsäule and when the Stein is not on the Steinsäule: say "Als du das Gewicht der Statue von der Säule nimmst, hörst Du ein klickendes Geräusch. Kurz darauf wirst du von Giftpfeilen durchbohrt."; end the game in death.

Hier kann definiert werden, was zu Beginn des Spiels, bevor der Spieler den ersten Zug macht, passiert.

When play begins: say "Endlich! Nach tagelangem Suchen im Dschungel stößt du auf eine Lichtung. Und auf etwas mehr. Vielleicht ist dies der Ort, an dem sich die Jadestatue befindet?[paragraph break]".

Mit test können Eingabesequenzen angegeben werden, die dann im Debug-Modus abgespielt werden können, in diesem Fall mit test me. Dies ist eine sehr praktische Neuerung, die einem die Fehlersuche erleichtert.

Test me with "s / u mich / i / nimm den Stein / untersuche ihn / i / n / lege Stein auf Saeule / untersuche die Statue / nimm sie / i / s / s".