World-System¶
Das Weltsystem trennt Inhalte sauber nach Welten. Eine Welt ist dabei nicht nur ein Levelpaket, sondern ein eigener Namespace für:
- Level
- Quests
- Journaleinträge
- Templates, Treasures und weltbezogene Erfolge
- Weltmetadaten wie Titel, Hidden-Flag oder Passwortschutz
Die praktische Bearbeitung dieser Bereiche erfolgt vor allem über das Level Editor Handbuch, das Quest Editor Handbuch, das Journal Editor Handbuch und die World- und Global-Settings.
Aktuelle Ordnerstruktur¶
Die Laufzeitdaten liegen unter public/data/worlds/.
public/
data/
worlds/
default/
config.json
levels/
quests/
journal/
world-content.json
einstieg/
beispiele/
high/
manifest.json
Wichtige Dateien:
config.json: Weltkonfigurationlevels/*.json: Leveldatenquests/**/*.json: Questdateien, rekursiv organisiertjournal/**/*.json: Journaleinträge, rekursiv organisiertworld-content.json: generierte Inhaltsliste der Weltmanifest.json: generierte Übersicht über alle Welten
Was zu einer Welt gehört¶
Weltlokale Inhalte¶
Innerhalb einer Welt liegen:
- eigene Level
- eigene Quests
- eigene Journaleinträge
- eigene Templates und Treasures
- weltbezogene Erfolge
- Startlevel und Weltmusik
Globale Inhalte¶
Zusätzlich gibt es globale Konfigurationen, die nicht an eine einzelne Welt gebunden sind, etwa:
- globale Erfolge
- globale Audio-Defaults
- globale Interaktionstrigger
- Startbildschirm-Hintergrund
- Cloud-Server-URL
Diese werden über die Settings verwaltet, sind aber konzeptionell kein Bestandteil einzelner Welten.
Laden und Weltwechsel¶
Zur Laufzeit startet das Spiel standardmäßig in der Standardwelt. Weltwechsel passieren über Spielinteraktionen, insbesondere switch_world.
Beim Wechsel werden:
- die Zielwelt in der Registry initialisiert
- world-spezifische Inhalte geladen
- Level und Spawn bestimmt
- globale Inhalte weiterhin beibehalten, soweit sie global definiert sind
Ein Sonderfall sind Journaleinträge mit keepGlobal: Sie bleiben nach dem Freischalten auch in anderen Welten sichtbar.
Editor-Integration¶
Im Editor gibt es oben links einen Weltwähler. Darüber kann man:
- zwischen vorhandenen Welten wechseln
- neue Welten anlegen
- Metadaten wie Titel, Hidden-Flag oder Passwortschutz pflegen
- Assets aus anderen Welten importieren
Die Editoren für Level, Quests und Journal arbeiten immer auf der gerade aktiven Welt.
Für die tägliche Arbeit ist deshalb wichtig: Ein Weltwechsel im Editor verändert immer den Bearbeitungskontext für Level, Quests, Journale und die meisten world-spezifischen Definitionen.
Dateipfade und Kategorien¶
Quests¶
Quests werden rekursiv in Ordnern gespeichert:
Die Ordnerstruktur wird zugleich als logische Gruppierung im Editor und im Spiel benutzt.
Journaleinträge¶
Journale funktionieren analog:
Isolationsregeln¶
Welten sind standardmäßig voneinander getrennt. Das ist gewollt, damit mehrere Kampagnen oder Unterrichtsmodule parallel im selben Projekt gepflegt werden können.
Die wichtigsten Regeln:
- eine Quest gehört genau zu einer Welt
- Journal und Level werden pro Welt geladen
- Templates und Treasures sind pro Welt definiert
- globale Daten müssen bewusst global angelegt werden
Wer weltübergreifende Inhalte bewusst nutzen will, findet die entsprechenden Schalter und Definitionen in den World- und Global-Settings.
Technischer Hinweis¶
Für die Codebasis gilt:
- Runtime-Assets liegen in
public/data/worlds/... - Editor-APIs lesen und schreiben genau dort
manifest.jsonundworld-content.jsonwerden generiert und sollten nicht manuell gepflegt werden