Inform bezeichnet sowohl eine Programmiersprache als auch den dazugehörigen Übersetzer. Verwendungszweck ist das Schreiben von Interactive-Fiction und Textadventures. Die Stand 2015 aktuelle Sprach-/Compiler-Version ist Inform 7. Dieser Artikel bezieht sich auf Inform 6. Zwischen beiden Versionen besteht ein großer Unterschied in der Form des Quellcodes.

Umfang des Artikels ist die Installation einer Entwicklungsumgebung unter Ubuntu 15.10 und das Einbinden einer Bibliothek zum Schreiben deutschsprachiger Interactive-Fiction. Der Artikel dient nicht als Tutorial zum Erlernen der Sprache Inform oder wie man Interactive-Fiction und Textadventures schreibt.

Inform-Compiler

Der Compiler zum Übersetzen von Inform-Quellcode nach Z-Code wird unter Ubuntu 15.10 mit folgendem Befehl installiert:

sudo apt-get install inform

Dies installiert den Compiler in der Version 6.31. Außerdem wird bereits der Interpreter XZip zum Ausführen von Z-Code über das Paket xzip mitinstalliert.

Möglicherweise erhält man beim Ausführen von XZip folgende Fehlermeldung:

xzip: fatal error: unable to load font <-adobe-times-medium-r-normal--14-*-*-*-*-*-iso8859-1>

Der Fehler lässt sich durch das nachinstallieren des fehlenden Fonts beheben:

sudo apt-get install gsfonts-x11

Dokumentation

Der Leitfaden für Einsteiger “The Inform Beginner’s Guide” und das Entwicklerhandbuch “The Inform Designer’s Manual” können über Ubuntu installiert werden:

sudo apt-get install inform-docs

Die Dokumentation befindet sich hiernach unter /usr/share/doc/inform-docs.

Major-Mode für Emacs

Für Emacs gibt es einen Major-Mode zum Schreiben von Inform-Code. Dieser trägt den sprechenden Namen inform-mode und kann auch als Ubuntu-Paket installiert werden:

sudo apt-get install inform-mode

Die Dokumentation enthält Angaben zur Benutzung und Konfiguration des Major-Modes. Der inform-mode wird standardmäßig zusammen mit dem Minor-Mode auto-fill gestartet. Dadurch werden beim Schreiben automatisch Zeilenumbrüche eingefügt. Wen das stört, der kann die folgende Zeile in die Datei ~/.emacs aufnehmen, um den Minor-Mode zu deaktivieren:

(add-hook 'inform-mode-hook 'turn-off-auto-fill)

Interpreter

Es gibt verschiedene Interpreter, die sich allesamt über Ubuntu installieren lassen: XZip, fizmo, Jzip, Gargoyle, Frotz. Persönlich bevorzuge ich fizmo, da dieser textbasiert ist und eine gute Unterstützung von Umlauten bietet.

Die auf ncurses basierende Fassung von fizmo lässt sich wie folgt installieren:

sudo apt-get install fizmo-ncursesw

Für den Aufruf in der Konsole bietet sich ein Alias in der ~/.bashrc an:

alias fizmo=fizmo-ncursesw

Mit inform-mode kann man einen Interpreter aus Emacs heraus über die Tastenkombination C-c C-c starten. Standardmäßig ruft inform-mode hierzu Frotz auf. Um stattdessen fizmo zu verwenden, erweitert man die Datei ~/.emacs Datei:

(set-variable 'inform-interpreter-command "fizmo-ncursesw")

Achtung: Hierbei ist darauf zu achten, den tatsächlichen Programmnamen und keinen Alias anzugeben.

Hello World

Um zu verifizieren, dass Inform inklusive Interpreter und Emacs-Major-Mode bis zu diesem Punkt richtig eingerichtet ist, legt man – vorzugsweise mit Emacs – eine Datei namens Hello.inf an mit folgendem Inhalt:

[ Main;
    print "Hello World!^";
];

Danach führt man den Inform-Compiler aus und startet den Z-Code-Interpreter fizmo:

inform Hello.inf
fizmo Hello.z5

Ausgabe:

Hello World!
[Press any key to quit.]

Ein komplexeres Hello-World-Programm, dass die Form eines Textadventures hat befindet sich hier.

Und nun auf Deutsch

Persönlich nutze ich die inoffizielle deutsche Inform-Bibliothek deform von Martin Oehm und habe damit gute Erfahrungen gemacht.

Die Installation ist recht einfach: Man lädt sich das ZIP-Archiv von der deform-Website herunter und entpackt es in ein Verzeichnis der eigenen Wahl. Ich habe es nach ~/lib/deform entpackt.

Das Verzeichnis mit den entpackten Dateien muss zur Nutzung dem Übersetzer mitgeteilt werden. Dies kann beim Aufruf des Compilers über die Kommandozeile erfolgen:

inform +include_path=/home/username/lib/deform HalloWelt.inf

Wem das zu lang ist, kann sich hierfür in der Datei ~/.bashrc einen Alias definieren:

alias deform="inform +include_path=/home/username/lib/deform"

Alternativ fügt man zu Beginn der zu übersetzenden Inform-Datei folgende Zeile hinzu:

!% +include_path=/home/username/lib/deform

Achtung: Der Inform-Compiler hat Schwierigkeiten damit, das Kürzel für das eigene Benutzerverzeichnis ~ richtig aufzulösen. Der Pfad ist daher absolut über /home/username anzugeben. Wobei username durch den eigenen Benutzernamen zu ersetzen ist.

Wenn mehrere Benutzer an einer Quellcode-Datei arbeiten und die Bibliothek in der Infrom-Datei selbst eingebunden wird, kann es sinnvoll sein, deform zentral abzulegen, z. B. unter /usr/local/lib:

sudo mkdir -p /usr/local/lib/inform/deform
sudo unzip deform.zip -d /usr/local/lib/inform/deform
sudo chmod o-w /usr/local/lib/inform/deform/*

Das Pendant auf deutsch zu HelloWorld befindet sich hier.

Probleme mit Umlauten

Beim Schreiben eines deutschsprachigen Textadventures, kann es wegen der Umlaute leicht zu Compile-Abbrüchen kommen. Eine entsprechende Fehlermeldung könnte dann besipielsweise so aussehen:

Inform 6.31 for Linux (10th Feb 2006)
line 6: Error:  Character can only be used if declared in advance as part of 'Zcharacter table': (ISO Latin1) $a4, i.e., '�'
>     ^von Hennes Märtins.^";
Compiled with 1 error (no output)

Diese Meldung deutet darauf hin, dass die Quelldatei nicht mit dem richtigen Encoding gespeichert wurde. Inform geht im Standardfall von ISO 8859-1 (Latin-1) aus. UTF-8 ist daher zum Schreiben von Inform-Code ungeeignet. Wenn man mit Emacs arbeitet, kann man das Encoding leicht durch die Eingabe von C-x RET f latin-1 ändern.