Skip to content

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: Weltkonfiguration
  • levels/*.json: Leveldaten
  • quests/**/*.json: Questdateien, rekursiv organisiert
  • journal/**/*.json: Journaleinträge, rekursiv organisiert
  • world-content.json: generierte Inhaltsliste der Welt
  • manifest.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:

public/data/worlds/default/quests/Beispiele/quest_nsd_akkupruefer.json

Die Ordnerstruktur wird zugleich als logische Gruppierung im Editor und im Spiel benutzt.

Journaleinträge

Journale funktionieren analog:

public/data/worlds/default/journal/Grundlagen/java_output.json

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.json und world-content.json werden generiert und sollten nicht manuell gepflegt werden