next up previous contents index
Next: 0. PREAMBLE Up: Zusätze Previous: Am Anfang war das

Subsections



Ob ich auch wanderte im finstern Tal: automagische Invisiclues

Invisiclues

sind Hilfestellungen zur Spiellösung (auch Hinweise, Tipps oder neudeutsch ,,Hints'' genannt), die zu einem bestimmten Rätsel des Spiels mehrere Antworten - von ansteigender Deutlichkeit und Ausführlichkeit - vorsehen, die der Spieler nacheinander aufrufen kann. Als Beispiel die Hilfestellung zu einem der ersten Rätsel eines Klassikers51:

Wie komme ich in die Höhle?

Der Eingang ist im Haus.
Falltüren können versteckt liegen.
Schau' unter den Teppich.

Slag und Inform

Es ist möglich, dies mit einer der Bibliotheken menus.h, hints.h, branch.h zu schreiben.52 So richtig automagisch funktioniert es aber erst mit dem Codegenerator slag, einem Perlscript53 von BRIAN 'BEEJ' HALL, in der Release 8 mit Beispieldateien (Lösungen einiger Infocom-Adventures) zu finden bei http://www.piratehaven.org/~beej/slag/oder http://if-archive/solutions/slag. Hier erstellen wir in einem ersten Schritt eine Quelldatei mit den Hints, die wir haben wollen; hier mit einem vorgeschalteten, zwei Ebenen umfassenden Menüsystem:

.MENU Zork I Invisiclues 

.LINK Über der Erde 

.LINK Im Keller 

.LINK Der Irrgarten

.LINK Der Runde Raum 
 

.MENU Über der Erde

.LINK Wo finde ich ein Machete? 

.LINK Wie überquere ich das Gebirge? 

.LINK Wie komme ich in die Höhle? 

.LINK Was ist ein Graus?

 

.HINT Wie komme ich in die Höhle? 

.CLUE Der Eingang ist im Haus. 

.CLUE Falltüren können versteckt liegen. 

.CLUE Schau' unter den Teppich. 
 

.HINT Was ist ein Graus? 

.CLUE Frage ZORK I.

Beachte: Der Text jeder .LINK-Zeile kommt eine Ebene tiefer identisch nochmal vor - als .MENU oder als .HINT. So wird die Menüstruktur aufgebaut.

Anschließend ,,übersetzen'' wir mit dem Perlscript54 slag die Quelldatei in inform-Code:

slag -s QUELLDATEI ZIELDATEI.inf
und binden diese in unser Spiel ein mit der Direktive

Include ">ZIELDATEI";
Jetzt müssen wir dafür sorgen, dass der Spieler die Hints auch aufrufen kann: Wir müssen ihm dazu nur die Funktion SLAG_RunMenus(); zugänglich machen. Der einfachste Weg geht über eine eigene Aktion und neue Verben:

[HintSub;

    SLAG_RunMenus();

];

  
verb meta 'hinweis' 'hilf' 'hint' 
    * -> Hint;

Für eine alternative Art der Einbindung siehe das Heft in ,,Eden''.

Weitere Möglichkeiten

Das slag-Format ist nicht frei; jeder Hinweis muss auf eine Zeile passen. Dafür sind die aus Inform bekannten ^ und ~ - Zeichen einsetzbar.

Wir kennen bis jetzt die slag-Direktiven .MENU, .LINK, .HINT und .CLUE. Statt der abschnittweisen Preisgabe von Information mit .HINT und .CLUE kann auch ein zusammenhängender, über mehrere Zeilen reichender Text gezeigt werden, der zwischen die Direktiven .TEXT und .ENDTEXT zu stellen ist. .TEXT entspricht dabei der Zeile .HINT, d.h. der in dieser Zeile nachfolgende Text muss mit einem .LINK übereinstimmen. Zwischen .TEXT und .ENDTEXT können einzelne Zeilen mit .CENTER zentriert werden und ganze Bereiche können zwischen .FIX und .UNFIX gestellt und so vorformatiert mit fixem Zeichensatz ausgegeben werden.

Ohne den Schalter -s baut slag eine selbständig kompilierbare Inform-Quelldatei, in der dann nur die Hinweismenüs drin sind. Mit den Direktiven .INTRO und .ENDINTRO - die sonst wie .TEXT und .ENDTEXT funktionieren - kann für diesen Zweck ein Vorspann geschrieben werden.

Die Menüzeile ist aber englisch!

Kein Problem. Ein paar kleine Änderungen in slag, dann ist alles deutsch; zu diesem Zweck wird von mir mit der Datei Gslag.patch ein Patch55 bereitgestellt:

patch slag Gslag.patch
slag funktioniert - wegen der grundverschiedenen Bildschirmsteuerung - leider nicht mit Glulx.

Danksagungen

GRAHAM NELSON für Inform, die originale Library und das ,,Inform Designers Manual''.

ROGER FIRTH für seine englische Kurzreferenz (und damit der Idee für dieses Machwerk).

TONI ARNOLD, RALF HERRMANN und MAX KALUS für die deutsche Übersetzung der Library.

FLORIAN EDLBAUER und MARTIN OEHM für Korrekturen.

JESSE BURNEKO für Info.h.

BRIAN 'BEEJ' HALL für slag.

ELLEN SCHRAMM, die alle meine anderen Texte tippt.

Erstellt wurde dieser Text mit dem LATEX-Frontend Lyx und dem KomaSkript-Paket unter GNU/Linux.

GNU Free Documentation License

Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.



Footnotes

... Klassikers51
aus: Infocom, Zork 1
...52
alle zu finden in http://www.ifarchive.org/indexes/if-archiveXinfocomXcompilersXinform6XlibraryXcontributions.html
... Perlscript53
Active Perl für Windows bei http://www.activestate.com/Products/ActivePerl/
... Perlscript54
Dies setzt eine normale Installation von perl unter Unix als /usr/bin/perl voraus. Windows-Benutzer können z.B. die Endung .pl für Perl registrieren, slag in slag.pl umbenennen und auch so aufrufen.
... Patch55
Benötigt wird das Programm patch, für Windows zu finden bei http://www.cygwin.com/packages/patch/

next up previous contents index
Next: 0. PREAMBLE Up: Zusätze Previous: Am Anfang war das
Frank Borger
2003-05-02