Kreatives Coding in Bonn

Gruppen-Startseite Diskussionen Agenda Dateien Mitglieder Beitreten

Beispiel einer interaktiven Geschichte: Mantel der Finsternis

Um einen Überblick über die fortgeschrittenen Möglichkeiten von Twine zu bekommen, haben wir uns bei Dienstags Coden ein Standardbeispiel der Interactive Fiction angeschaut, die Geschichte "Mantel der Finsternis" (Beschreibung, Eintrag bei ifwiki). Diese kurze Geschichte wurde mit vielen Autorensystemen umgesetzt, eben auch mit Twine.

Hier ist das Gerüst der Geschichte:

  • Das Spiel beginnt im leeren Foyer des Opernhauses. Es gibt Türen nach Süden und Westen und einen verschlossenen Ausgang im Norden.
  • Im Süden des Foyers befindet sich die dunkle Bar. Wenn du dort irgendetwas anderes machst als die Bar wieder nach Norden zu verlassen, bekommst du eine Nachricht zu verstörenden Dingen in der Dunkelheit.
  • An der Wand in der Garderobe im Westen des Foyers befindet sich ein kleiner Messinghaken.
  • Schaust du dir die Sachen an, die du bei dir trägst, so bemerkst du, dass du einen schwarzen Samtmantel trägst, welcher das Licht verschluckt. Du kannst den Mantel in der Garderobe auf den Boden werfen oder, besser, an den Haken hängen.
  • Kehrst du ohne Mantel an die Bar zurück, wird dir mitgeteilt, dass die Bar nun erleuchtet ist. Eine Botschaft ist in den Staub auf dem Boden geschrieben.
  • Die Botschaft sagt entweder "Du hat gewonnen" oder "Du hast verloren", je nachdem, wie sehr sie durch den Spieler gestört wurde, als der Raum dunkel war.
  • Nachdem du die Botschaft gelesen hast, endet das Spiel.

Diese Variante von Mantel der Finsternis ist in einem mehrerer möglicher Storyformate in Twine geschrieben, in ChapBook. ChapBook ist ein recht neues Format für Twine. Es wurde Anfang 2020 von Chris Klimas, dem Erfinder von Twine, entwickelt.

Hier ein kurzer Überblick über ChapBook, zusammengetragen und übersetzt aus dessen Online-Dokumentation:

Links funktionieren wie im Standardformat über doppelte, eckige Klammern und, optional einen unterschiedlichen Linktext (Handbuch):

... bright lights of the [[Opera House->Foyer]]

Zur Textformatierung lassen sich z.B. Teile des Texte zentrieren oder als Überschrift formatieren (Handbuch):

[align center]
# Cloak of Darkness

Auch Bilder lassen sich einbinden, z.B. auch direkt von Unslash (Handbuch):

{embed unsplash image: 'https://unsplash.com/photos/rF1OwUp065Q'}

Um den Zustand der Geschichte abfragen zu können, z.B., ob die Spielerin einen Gegenstand gefunden oder ein Rätsel gelöst hat, lassen sich Variable definieren (Handbuch):

room: ''
hasCloak: true
config.header.center: '{room}'

--

Die Definition erfolgt oberhalb des Szenentextes, getrennt mit zwei Minuszeichen.

Variable lassen sich dann in Bedingungen abfragen, um bestimmte Texte anzuzeigen oder eben nicht (Handbuch):

_previousRoom: room
room: 'Foyer of the Opera House'

--

[if _previousRoom === 'Outside']
Shaking the rain from your [[cloak->Cloak]], you step gratefully inside._previousRoom: room[cont'd]
You are standing in a spacious hall

Hier wird eine Variable _previousRoom dazu genutzt herauszufinden, ob die Spielerin von draussen kommt, um ihr in diesem Fall den Satz mit dem Regen anzuzeigen. Der normale Text folgt hinter [cont'd].

Soll für den "sonst"-Fall ebenfalls ein besonderer Text angezeigt werden, gibt es noch [else]:

It's just a small brass hook, screwed to the wall.
[if hasCloak]

You could [[hang->hang cloak]] your [[cloak->Cloak]] here.[else]
You could [[pick up your cloak and wear it]], if you like, or simply turn back to the [[cloak room->Cloakroom]].

Manchmal soll eine Szene in einer anderen angezeigt werden und z.B. eine Variable gesetzt werden. Das geht über {embed}:

hasCloak: false

--

{embed passage: 'Cloakroom'}

In dieser Szene wird der Inhalt von "Cloakroom" angezeigt, vorher aber noch die Variable hasCloak gesetzt (Handbuch).

Das soll für den Anfang mal reichen. Das Handbuch erklärt alle weiteren Konstruktionen.

Gestartet von Dr. Olav Schettler in Kreatives Coding in Bonn 4. Oktober 2021 15:11