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:
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' -- 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 -- |
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.