1.1 Inhaltsverzeichnis
xdr5 ist in einer simplen aber ganz eigenen Logig aufgebaut, mit denen komplexe Szenarien produziert werden können. Um schnell und effektiv umfangreiche Handlungen zu erstellen, empfehlen wir sich mit dem grundlegenden Aufbau zu befassen.
Wenn du ein xdr5-System auf einem externen Server mit weiteren Modifikationen innerhalb der Spielumgebung generieren möchtest, kannst du dich auf einen sauber strukturierten und verständlich kommentierten Quelltext freuen.
Das Inhaltsverzeichnis ist in drei Abschnitten unterteilt. Im ersten Abschnitt bekommst du eine Übersicht, im zweiten und dritten Abschnitt bekommst du alle Details zum Backend und der Spielumgebung.
Alle Inhalte sind mit größter Sorgfalt erstellt worden. Hier erfährst du wie du dein eigenes xdr5 Szenario erstellst.
- 1. Einleitung
- 1.1 Inhaltsverzeichnis
- 1.2 Allgemeines
- 1.3 Die Meta
- 1.4 Der Open Source Code
- 1.4.1 Source Code mit xdr5 Quellbezug
- 1.4.2 Source Code ohne xdr5 Quellbezug
- 1.5 Der Datenaufbau
- 1.5.1 Das Dateisystem
- 1.5.2 Konfiguration durch „setup.json“
- 1.5.3 Definition der Items
- 1.6 Das Backend
- 1.7 Die Spielumgebung
- 2. Backend Details
- 2.1 Definitionen
- 2.2 Bearbeiten, speichern, löschen, überschreiben
- 2.3 Erstellen einer Ebene
- 2.3.1 Inhalt der Ebene
- 2.3.2 Verlinkung zu folgenden Ebenen
- 2.4 Verwenden der Syntax
- 2.4.1 Abfragen und Einbinden des Spielernamens
- 2.4.2 Abfragen eines Geheimcodes
- 2.4.3 Einbinden und abfragen eines Items
- 2.4.4 Einbinden einer Audiodatei
- 2.4.5 Einbinden einer externen Wegverlinkung
- 2.5 Verwenden der Suche
- 2.6 Workflow und Übersicht über die Ebenen
- 3. Spielumgebung Details
- 3.1 Definitionen
- 3.1.1 Spielen Chatten Tauschen
- 3.1.1 Inhaltsbereich
- 3.1.2 Verlinkungen
- 3.1.3 Itemliste
- 3.2 Local Storage
- 3.3 Aussehen
- 3.3.1 Hintergrundbilder
- 3.3.2 Items
- 3.4 Spielflow
- 3.1 Definitionen

1.2 Allgemeines
xdr5 bezeichnet diese Plattform auf der durch ein Verwaltungsprogramm Spiele als Webandwendungen entwickelt und gespielt werden können. Dabei ist zu unterscheiden zwischen dem „Backend“ und der „Spielumgebung“.
Es handelt sich um eine Open Source Software, die direkt von xdr5 gehostet werden kann, oder durch einen Download auf dem eigenen Server verwendet wird. Bei externer Nutzung kann in zwei Versionen gewählt werden:
- Freier Quellcode mit Quelleinbindungen zur xdr5-Engine, durch die die Kernoperationen automatische Updates erhalten.
- Freier Quellcode ohne Quelleinbindungen zur xdr5-Engine.
1.3 Die Meta
Das schreiben, erstellen und arbeiten an Ebenen basierten Inhalten, bei dem von jeder Ebene zu drei weiteren Ebenen gelangt werden kann, stellt ein komplexes System dar. Folgst du beispielsweise einem linearen Strang von einer Ebene mit drei Auswahlmöglichkeiten zu einer weiteren Ebene mit wieder drei Auswahlmöglichkeiten usw. landet man bereits nach der fünften Auswahl auf einer Ebene, die neben 364 weiteren Ebenen steht auf denen man hätte landen können.
xdr5 befasst sich mit diesem System und stellt ein Werkzeug bereit um das Arbeiten mit der Meta „handhabbarer“ zu machen.


1.4 Der Open Source Code
Durch den Open Source Status entziehen wir uns insbesondere bei externer Nutzung jeglicher Verantwortung bei möglichen Fehlern im Aufbau und der Funktion des Backends und der Spielumgebung. Alle Inhalte auf xdr5 sowie alle Inhalte die durch das xdr5-System produziert werden sind frei erhältlich. Das weiterverwenden, verändern und anpassen in jeglicher Form ist ausdrücklich erlaubt.
1.4.1 Source Code mit xdr5 Quellbezug
Das komplette xdr5-System mit Backend und Spielumgebung zur freien Benutzung auf einem eigenen Server. Die Kernfunktionen werden mittels einem php-include vom xdr5 -Server bezogen. Dadurch bekommst du trotz externer Nutzung Systemupdates.
1.4.2 Source Code ohne xdr5 Quellbezug
Das komplette xdr5-System mit Backend und Spielumgebung zur freien Benutzung auf einem eigenen Server.
1.5 Der Datenaufbau
Das Spiel wird in „Ebenen“ aufgebaut. Jede Ebene kann verschiedene Inhalte haben. Es ist ein textbasiertes Spiel. Alle Texte werden in XML-Dateien gespeichert. Das ermöglicht einen einfachen Umzug der kompletten Spielumgebung, da keine Verbindung zu Datenbänken gewährleistet werden muss.
Mit dem Backend werden diese XML-Dateien erstellt, organisiert, geändert und gelöscht. Alle Ebenen beziehen sich mit ihrer Ebenen-ID als Dateiname im „Verzeichnis“. Auf dieses Verzeichnis bezieht sich auch die Spielumgebung.

1.5.1 Das Dateisystem
Zum Einsatz kommen PHP, Javascript, jQuery, CSS, HTML, XML, JSON, PNG, JPG, MP3.
Im Hauptverzeichnis liegen die „worx.php“, und die „game.php“. Diese bilden den Kern des xdr5 -Systems.
Die „worx.php“ ist das Backend, die „game.php“ die Spielumgebung. „chat.php“ und „tausch.php“ sind die Spielrelevanten Seiten für den Livechat und die Item-Tauschstation.
Im „verzeichnis“ liegen die durch die „worx.php“ administrierten XML Dateien, die von der „game.php“ ausgelesen werden. Hier sind alle Textinhalte gespeichert. im Verzeichnis „media“ sind alle Medien wie zum Beispiel das Hintergrundbild des Spiels, die Items als Bild, Audiodaten, Dateien für externe Wegführungen, die CSS und der Inhalt des Chats gespeichert.
1.5.2 Konfiguration durch „setup.json“
in der Konfigurationsdatei „setup.json“ kannst du technische und Inhaltliche Einstellungen zu deinem Spiel vornehmen. Ergänze bzw. ändere dazu einfach die angegebenen Felder.
Den Dateinamen solltest du immer entsprechend der Spieldatei benennen. Nach dem Download ist die Datei „game.php“ benannt. Wenn du dein Spiel veröffentlichen solltest, macht es möglicherweise sinn die Datei in „index.php“ umzubenennen. Hier muss das setup.json unmittelbar angepasst werden, da ansonsten die Spielumgebung nicht funktioniert.
Auch die Items werden in der „setup.json“ konfiguriert.
1.5.3 Definition der Items
Items anzulegen, die dann im Spiel hinterlegt, abgefragt, oder getauscht werden können, ist mit der „setup.json“ möglich. Hier trägst du den Name des Items mit dem vorangehenden Artikel als Determinativ „den, die, das“ ein. Zum Beispiel „den Schlüssel“.
In der Ebene mit der entsprechenden Itemabfrage schreibst du nur „Hier ist das Schloss“. Durch die vordefinierte Itembezeichnung wird der Fließtext automatisch ergänzt durch: „Hier ist das Schloss. Du benötigst den Schlüssel„.
In die Itembeschreibung kannst du dir überlegen direkt zu erwähnen wo das Item benötigt wird, oder eine allgemeine Beschreibung einfügen.
im Verzeichnis „media“ hinterlegst du ein Bild mit der Bezeichnung „item_*.png“. Anstelle des * gibst die Nummer (1 -9) des entsprechenden Items ein.

1.6 Das Backend
Mit dem Backend werden alle textlichen Inhalte für das Spiel verwaltet. Genau genommen werden XML-Dateien verwaltet die im „verzeichnis“ liegen. Hier wird der Inhalt der Ebenen eingepflegt. Du kannst in jeder Ebene bis zu drei Verlinkungen zu weiteren Ebenen angeben. Hier werden auch besondere Optionen angegeben, die die Ebene beinhalten soll:
- Namen abfragen
- Namen ausgeben
- Objekte hinterlegen
- Objekte abfragen
- Objekte löschen
- Geheimcodes abfragen
- Audiodaten einbinden
- Externe Wegführungen einbinden
Dazu bekommt man die gewünschte Operation mit kurzen „befehlen“. Die Befehle sind definiert durch eine Syntax. Das klinkt kompliziert, sind aber zum Verständnis eine Hand voll Anweisungen, die auch direkt im Backend nachgelesen werden können.
1.7 Die Spielumgebung
Die Spielumgebung ist in teilresponsiver Ansicht realisiert. Das bedeutet sie kann auf dem Computermonitor genauso gut wie auf mobilen Endgeräten betrachtet und bedient werden, besteht aber aus zwei festen und nicht einer dynamischen Ansicht.
Man „spielt“ die Story mit den vom Autor gegebenen Möglichkeiten, sammelt Gegenstände ein die man an bestimmten Stellen einbringen muss, Gibt gefundene Codeschnipsel ein und wird selbst Teil der Story.
Ich „Chat“ spricht man sich ab wie man weiter kommt und tausch in der „Tauschstation“ Gegenstände ein.

2. Backend Details
Mit Backend ist die mit dem Browser abrufbare Datei „worx.php“ gemeint. Wenn du die Seite aufrufst siehst du das Backend. Im folgenden zeigen wir dir wie das Backend aufgebaut ist und erklären die einzelnen Abschnitte und Funktionen.
2.1 Definitionen

- Fließtext Eingabefeld
- Eingabefeld für die Ebeneninformationen
- Eingabefeld für die Ebenen ID
- Status Information
- Schaltfläche um die Syntax einzublenden
- Eingabefelder für die Verlinkungen zu den weiteren Ebenen
- Suche, bzw. Filterfunktion
- Ebenenbrowser. Alle Inhalte mit der ID als Link um einzelne Inhalte zum bearbeiten aufzurufen
- Eingabefelder für Operationen
- „Zack“- Ausführbutton
2.2 Bearbeiten, speichern, löschen, überschreiben
Um eine Ebene zu erstellen oder zu bearbeiten, klickst du im Ebenenbrowser auf die gewünschte ID – ganz links, oder gibst im Eingabefeld für die Ebenen ID eine neue ID an.
Speichern
Standartmäßig steht die Speicher/Löschen Option immer auf „speichern“. Um eine Ebene zu speichern klickst du auf „Zack„. Wenn sie eine gültige Ebenen-ID sowie einer Ebenen-Information beinhaltet, wird deine Ebene gespeichert und im Ebenenbrowser gelistet. Sie ist dann sofort über die Spielumgebung zu erreichen.

Wenn es die Ebene die du speichern möchtest schon gibt, wird der Speichervorgang mit einem roten Kontrollbutton unterbrochen.

Erst wenn du diesen betätigst, wird die offensichtlich vorhandene Ebene überschrieben. Wenn alles geklappt hat, bekommst du eine positive Satus-Meldung und das Gesamte Eingabeformular ist wieder leer.

Das überschreiben einer Ebene kann nicht rückgängig gemacht werden. Schaue immer nochmal genau nach, wenn der Rote Button erscheint.
Löschen
Um eine Ebene zu löschen, klickst du im Ebenenbrowser auf die gewünschte ID. Wechsel die standartmäßig ausgewählte Funktion „speichern“ zu „löschen“ und klicke auf „Zack“.

Mit der Bestätigung auf den roten Kontrollbutton wird die Ebene gelöscht.

Wenn alles geklappt hat, bekommst du eine positive Satus-Meldung und das Gesamte Eingabeformular ist wieder leer.

Das Backend ist technisch gesehen ein PHP-Formular, dass die gesendeten Daten an sich selbst schickt und bei erhalt im Verzeichnis speichert bzw. löscht. Es können darum nur Inhalte gespeichert oder gelöscht werden die auch im Verzeichnis liegen.
2.3 Erstellen einer Ebene
Wenn du die „game.php“ im Browser öffnest erscheint der Inhalt „Starte das Spiel“, dieser liegt nicht im Verzeichnis, sondern ist in mit in der game.php geschrieben. Mit dem Klick auf „Start“ gelangt man auf deine allererste im Verzeichnis enthaltene Ebene „00“. Diese Ebene ist mit ihrer ID zwingend Notwendig, ansonsten gelangst du automatisch in der Ebene „error“.
Auch die Ebene „error“ ist zwingend Notwendig. Hier landet ein Spieler, wenn er auf eine verlinkte Ebene klickt, die nicht vorhanden ist. Du kannst diese Seite als eine Art 404-Webseite betrachten. Die error-Ebene sollte Wiedereinstiegsmöglichkeiten bieten. Es ist empfehlenswert eine Art „Inhaltsverzeichnis“ in der error-Ebene zu verlinken.
2.3.1 Inhalt der Ebene
In diesem Beispiel siehst du die im Grundsetup schon angelegte Ebene 00, in diese kannst du Inhalt einfügen und sie mit „Zack“ und der Bestätigung zum überschreiben mit dem roten Button abspeichern. Um eine neue Ebene abzuspeichern musst du eine ID vergeben, die noch nicht vorhanden ist.


In unserer „game.php“ können wir sofort das Ergebnis betrachten, die hier übrigens in der mobilen Ansicht zu sehen ist.
2.3.2 Verlinkung zu Ebenen
Um Ebenen zu verlinken, trägst du im Eingabefeld für Verlinkungen die gewünschte ID der Zielebene ein. Dabei beginnst du mit dem „Ziel 3“, falls Ziel 1 und 2 noch leer sind und speicherst die Ebene ab.

Die Verlinkung ist nach dem abspeichern direkt in der Ebene eingebunden. Achte darauf das leere Verlinkungsoptionen „nix“ enthalten, sonst werden leere Schaltflächen angezeigt.

Der Dateibrowser vergleicht kontinuierlich deine angegebenen Verlinkungen mit den im Verzeichnis tatsächlich vorhandenen Ebenen. So wird deine angebende Verlinkung rot hinterlegt, wenn sie als Ebene nicht existiert. Die Auswirkung ist, das der Spieler beim Klick auf diese Option auf der Ebene „error“ landet. Im Prozess der Spielerstellung ist es ganz normal mit roten Markierungen zu Arbeiten, da sie dir nur „den Rand“ deines Szenarios anzeigen.

2.4 Verwenden der Syntax
Die Syntax besteht aus „Kürzeln“, mit denen die Einbindung von Optionen bzw. Operationen möglich sind. Über ein klick auf die Schaltfläche „Syntax“ sieht man alle verwendbaren „Kürzel“. Wo welches Kürzel reingeschrieben werden muss um die gewünschte Option einzubinden, entnimmst du der Tabelle. Die meisten Kürzel kommen in die Eingabefelder für Operationen, dabei steh das linke Feld für Operation-A und das rechte für Operation-B. Pro Operation die durch die Operationseingabefelder realisiert werden, kann nur eine gleichzeitig ausgeführt erden.

2.4.1 Abfragen und einbinden des Spielernamens
Um ein Eingabefeld zur Abfrage des Spielernamens einzubinden, schreibst du „ccc“ in den „Operat A“.

Das Eingabefeld zur Abfrage des Namens erscheint sofort in der Spielumgebung:

Gibt man keinen Namen ein, ist man automatisch ein „unbekanntes Wesen“.
Um den Namen im FLießtext zu verwenden, schreibt du einfach „xxx“:

Der Namen wir auch im Chat und der Tauschstation verwendet, darum ist es sinnvoll diesen möglichst in der Spieleinleitung abzufragen.
2.4.2 Abfragen eines Geheimcodes
Beim Abfragen eines Geheimcodes müssen beide Operationfelder ausgefüllt werden. Dazu kommt in das Operationsfeld A „pwx *“ – anstatt dem * schreiben sie den Geheimcode, und in das Operationsfeld B die ID der Zielebene, wenn das geheime Wort richtig eingegeben wurde. Im folgenden Beispiel landet der Spieler bei der Eingabe „gut“ auf der Ebene „2“.

In der Spielumgebung erscheint direkt ein Eingabefeld. Denke daran im Fließtext zu schreiben um welchen Code es sich bei dieser Abfrage handelt.
2.4.3 Einbinden, abfragen, löschen eines Items
Um ein Item auf einer Ebene zu Hinterlegen, schreibst du in das Operationsfeld A „item_*“, wobei das * für die Zahl 0-9 steht, und in das Opertaionsfeld B „objekt_*“, wobei das Sternchen mit der selben Zahl wie im Operationsfeld A ersetzt werden sollte.

In der Spielumgebung wird mit dieser Abfrage zuerst nachgeschaut ob der Spieler das Item schon „in der Tasche“ hat.
In deiner FLießtextformulierung schreibst du nur das „hier der Platz für den Schlüssel“ ist. Durch die deffinition des Items im Determinativ unter Abschnitt 1.5.3 fällt die Formulierung im Idealfall gleich richtig aus: „… Aber guck mal in deine Tasche, du hast den Schlüssel ja schon eingepackt und dabei.“
Wenn der Spieler das Item noch nicht besitzt, wird ein „Einpacken“-Button eingeblendet.
Um ein Item zu löschen schreibst du „*_del“ in das Operationsfeld A. Somit wird beim betreten der Ebene das Item gelöscht.
2.4.4 Einbinden einer Audiodatei
Durch den HTML 5-Standart ist möglich Audiodateien ein zu binden. Der Player erscheint wie die anderen operationen unter dem Fließtext und sieht je nach Browser entsprechend unterschiedlich aus.

Um eine Audiodatei einzubinden, schreibst du in das Operationsfeld A „audio“ und in das Operationsfeld B den Dateinahme ohne den suffix. Die Datei muss im Format mp3 im verzeichnis „media“ abgelegt werden.

2.4.5 Einbinden einer externen Wegverlinkung
Eine externe Wegverlinkung bedeutet eine Verlinkung von einer Ebene zur nächsten, die von außen beeinflusste werden kann. Dazu wird ein textdokument angelegt, dass die ID der Zielebene enthält. Um eine externe Wegverlinkung einzubinden, schreibst du in das Operationsfeld A „ext_var“ und in das Operationsfeld B den Dateiname ohne den Suffix. Die Datei muss als .txt im Verzeichnis „media“ abgelegt werden und sollte ausschließlich eine ID enthalten, die im Ebenenverzeichnis vorhanden ist. Gelangt man auf eine Ebene mit einer externen Wegverlinkung, erschient ein Ladebalken, der bei 100% Füllstand den Spieler automatisch auf die hinterlegte Ebene führt.

Die „Ladezeit“ zur gleich umleitenden Ebene ist sehr kurz, achte darauf dass nicht viel Text im Fließtextinhalt steht. Ebenen die zu einer „Umleitungsebene“ führen, sollten diese automatische Umleitung ankündigen.
2.5 Verwenden der Suche
Im xdr5 Backend kann nach einzelnen Inhalten aller Ebenen gesucht werden. Genau genommen spricht man hier von einem Filter. Du kannst dein Suchbegriff in das Sucheingabefeld schreiben, das über der Spalte mit dem gesuchten Inhalt steht. Das Eingeben einer Suche in einem der Suchfelder wirkt sich nach dem drücken jedes Buchstabens aus.
Das bedeutet, der Ebenenbrowser „filtert“ den gesamten Verzeichnisinhalt und zeigt nur noch Ebenen an, die das gesuchte Wort enthalten. Um den Filter zu löschen, nimmst du den Text aus dem Suchfeld wieder raus.
2.6 Workflow und Übersicht über die Ebenen
Das xdr5 Backend mit seinem Ebenenverzeichnis funktioniert zwar als praktisches Tool, an erster Stelle deines Spiels steht aber der Inhalt und die Spielführung. Diese machen dein Spiel aus. Die Spielerstellung benötigt sehr viel Konzentration. Jede Ebene sollte sorgfältig behandelt werden. Führe möglichst zu beginn einer Produktion eine logische Ebenen-ID Struktur ein. Wenn dein Spiel inhaltlich Räume enthält, könnten diese einzelne nummern haben. Zum Beispiel hat dann die „Küche“ die ID 1. Und alle anderen Ebenen, die sich innerhalb der Küche befinden tragen ebenfalls die 1 vorne dran, plus eine weitere Nummer. Zum Beispiel der Schrank in der Küche bekommt dann die ID 11 usw.
Das Ebenenverzeichnis im Ebenenbrowser ist Alphabetisch aufsteigend sortiert – ausgehend von den IDs.