====== InStoDE - Dokumentation ====== https://www.wyae.de/software/instode/ 2021 Volker Tanger volker.tanger@wyae.de InStoDE ist ein einfaches Tool zur Erstellung von interaktiven Stories - wie man sie vielleicht in analog aus den klassischen Soloabenteuer-Büchern ("Lone Wolf") kennt. Jetzt aber zum Klicken. Die Idee ist an sich nicht neu - da gibt es schon länger entsprechende Tools aus der Frühzeit der Computerei - Inform, TADS, Hugo, Twine sind Namen die dann fallen (https://www.wikihow.com/Make-a-Text-Based-Game ). Dort werden Abenteuer dann über Dort muss man dann entsprechende Kommandos eingeben, um sich beispielsweise von einem Raum zum nächsten zu bewegen, um Dinge aufzuheben, zu untersuchen oder zu nutzen. Der Haken dabei: man findet ggfs. das passende Vokabular nicht - und man braucht einen speziellen Client um das Adventure zu spielen. InStoDE erzeugt eine HTML-Datei, die schon das gesamte Abenteuer enthält. Kein extra Client, keine besondere Umgebung notwendig. Zum Erzeugen bzw. Entwickeln reicht ein einfacher Text-Editor, mit dem man eine Quelldatei editiert. Besonders praktisch ist es das ZIM-Wiki zu benutzen, da dort Überschriften gleich als Nodes/Szenen übersichtlich dargestellt werden und man sich im Seiten-Inhaltsverzeichnis schnell orientieren kann. ====== Erstellung von Dokumenten ====== Es sind zwei Beispiel-Dokumente beige ===== Nodes (= Szene, Event) ===== Das Abenteuer besteht nur aus Nodes. Kein Inventar, keine Charakter-Eigenschaften, kein Vokabular, keine Punkte oder Zähler. Jeder Node ist eine Überschrift, im Textdokument markiert durch gleich viele aber mindestens zwei Gleichheitszeichen zu Beginn und Ende der Zeile. Eine Überschrift mussein einziges Wort sein, das aus Groß- und Kleinbuchstaben (ohne Akzente), Zahlen, sowie Unterstrich _ und Bindestrich - bestehen kann. EINZIGE Ausnahme ist die allererste Überschrift (im ZIM-Wiki: der Seitentitel) - diese ist der Titel des Abenteuers, der Text darunter der "Vorspann" (das Titelblatt sozusagen) Die zweite Überschrift muss "0_START" lauten. Die letzte Überschrift der Datei muss "FIN" lauten. Danach stehender Text wird ignoriert. Node-Name werden beim Compilen durch Int-Zahlen ersetzt - um nicht zu viel zu verraten. ===== Lauftext ===== Lauftext wird angezeigt und geeignet am Fenster-Rand umgebrochen. HTML wird ungefiltert durchgereicht - also bitte entsprechend aufpassen! E-Mails und Web-URLs werden automatisch anklickbar gemacht (was bei hingeschriebenem HTML-Code Probleme bereiten kann - daher bitte nur sehr sparsam einsetzen). Eine Leerzeile erzeigt einen Absatz. ===== Kommentare ===== sind nur für den Entwickler gedacht. Sie sind gekennzeichnet durch wahlweise: * # am Anfang der Zeile - wird beim Compilierenin ignoriert oder * ~~Kommentar nur für den Entwickler - Durchgestrichen in ZIM, also eingeschlossen in Doppeltilden~~ ===== Ende ===== __FIN__ in einzelner (letzter) Zeile zeigt an, dass der Ablauf hier endet. Also FIN eingeschlossen in Doppel-Unterstriche - wird in ZIM als gelb hervorgehoben dargestellt (schaltbar über "Unterschrift"). ===== Sprünge & Verzweigungen ===== Statt aufwändiger Mechaniken : das Spiel merkt sich, welche Nodes man schon besucht hat. Und statt einem Inventory, das "Schwert aufheben" oder "Schwert verlieren" regelt, gibt es einfach entsprechende Nodes, die angesprungen werden - und z.B. bei Auswahl von "kämpfen" wird dann anhand der Historie geprüft, ob beispielsweise der Noide "Schwert aufheben" besucht wurde, oder nicht. >>Zielnode Anzeigetext, beliebig lang, aber nur dieselbe eine Zeile springt zum entsprechenden Marker wenn geklickt <>Zielnode Anzeigetext klickbarer Sprung - wird aber nur angezeigt wenn xx schon besucht wurden !zz >>sprungtitel Anzeigetext klickbarer Sprung - wird aber nur angezeigt wenn zz NICHT besucht wurde ====== Compiler ====== Der Compiler "''instode_parser.py''" benötigt Python, genauer Python3. Aktuell besteht er auf dem Dateinamen "''adv.txt''" und erzeugt entsprechende "adv.*" Ausgabedateien. Benötigt wird neben "adv.txt" die HTML-Datei "''instode_vorlage.html''", die das benötigte JavaScript und Styles enthält (anpassbar). Erzeugt werden: * ''adv.dot'' - Graph-Definition des Abenteuers * ''adv.png'' * ''adv.svg'' * adv_anon.dot - Graph-Definition des Abenteuers, aber nur Nummern, keine Titel * ''adv_anon.png'' * ''adv_anon.svg'' * adv.html - das klickbare Abenteuer === Linux-Skript === Unter Unix/Linux kann man folgendes Skript verwenden, um alles zu erzeigen (braucht die "''graphviz"'' Tools zum Erzeugen der Grafiken) #!/bin/sh ./instode_parser.py if [ $? -eq 0 ]; then echo "erzeuge Grafiken..." dot FILENAME.dot -Tsvg -q2 -o FILENAME.svg dot FILENAME.dot -Tpng -q2 -o FILENAME.png dot FILENAME_anon.dot -Tpng -q2 -o FILENAME_anon.png dot FILENAME_anon.dot -Tsvg -q2 -o FILENAME_anon.svg echo "Done." fi == Lizenz == This is free software - see attached file LICENSE_EUPL-1.2_EN.txt and available in other languages under https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 Copyright (C) 2021- Volker Tanger volker.tanger@wyae.de