Skip to content

Level-Design Konzepte

Diese Seite beschreibt die Konzepte hinter den Leveln und ihren interaktiven Objekten.

Grundidee

Ein Level besteht aus:

  • Tile-Layern
  • interaktiven Entities
  • Level-Triggern
  • optionalen visuellen Effekten

Die Bearbeitung erfolgt über den Level Editor.

Tile-Layer

Ein Level nutzt mehrere Layer, die in einer festen Reihenfolge gerendert werden. Typisch sind:

  • Ground
  • Walls
  • Walkable / Furniture
  • Decoration

Die genaue Anzahl ist offen; entscheidend ist, wie der jeweilige Layer konfiguriert ist und ob Tiles blockieren.

Rendermodi für Tile-Layer

Neben Sichtbarkeit und Blockierung besitzt ein Tile- oder Animated-Layer jetzt einen eigenen Rendermodus. Dadurch kann man gezielt steuern, ob ein Layer streng statisch bleibt oder sich zusammen mit Entities in die Tiefensortierung einfügt.

Es gibt drei Modi:

  • Statisch: klassische Layerdarstellung ohne dynamische Tiefensortierung
  • Dynamisch gruppiert: zusammenhängende belegte Tile-Bereiche werden als ein gemeinsames Vordergrundobjekt behandelt
  • Dynamisch pro Kachel: jede belegte Kachel wird einzeln nach ihrer Unterkante sortiert

Die dynamischen Modi werden gemeinsam mit Spieler, NPCs, Begleitern und anderen Entities sortiert. Statische Layer bleiben davon getrennt und behalten ihre feste Position vor oder hinter diesem gemeinsamen Tiefenpass.

Bedingungen pro Layer

Layer können zusätzlich eine eigene Bedingung tragen. Dadurch lässt sich ihre Sichtbarkeit zur Laufzeit an Switches und Variablen koppeln.

Typische Einsatzfälle:

  • Tag- und Nachtversionen desselben Raums
  • sichtbar werdende Geheimgänge
  • alternative Dekoration nach Questfortschritt
  • Vordergrundteile, die erst später eingeblendet werden

Wichtig dabei:

  • ist die Bedingung nicht erfüllt, wird der Layer nicht gerendert
  • blockierende Layer ohne erfüllte Bedingung blockieren ebenfalls nicht
  • im Editor bleibt der Layer trotzdem bearbeitbar

Gruppiert bedeutet nicht „ganze Layerfläche“

Beim gruppierten Modus wird nicht die komplette rechteckige Ausdehnung des Layers betrachtet, sondern nur die tatsächlichen belegten Bereiche.

Das bedeutet:

  • leere Tiles haben keine Z-Wirkung
  • zwei weit auseinanderliegende Baumkronen auf derselben Ebene bleiben zwei getrennte Gruppen
  • ein Layer kann also gezielt nur die relevanten Vordergrund-Tiles enthalten, ohne dass der leere Raum dazwischen als unsichtbarer Block behandelt wird

Gerade für Bäume, Schränke, Torbögen oder Dachkanten ist das wichtig, weil so die Tiefensortierung sauber bleibt, obwohl das Motiv auf einem gemeinsamen Layer liegt.

Entities

Entities sind NPCs, Objekte, Trigger, Teleporter, Template-Instanzen oder Schatzobjekte.

Wichtige Felder:

  • id
  • type
  • x, y
  • states
  • optional templateId
  • indicatorAlignment, indicatorOffset

States und Priorität

Entities besitzen eine geordnete Liste von States. Der erste State, dessen Bedingung zutrifft, wird aktiv.

Typische State-Unterschiede:

  • Sprite
  • Kollision
  • Interaktionen
  • Animationen
  • Displaygröße
  • Pfad
  • drawOnTop

drawOnTop

Mit drawOnTop kann ein State über allen Weltlayern und auch vor dem Spieler gerendert werden. Das ist besonders nützlich für:

  • fliegende Vögel
  • obere Überflüge
  • dekorative Wesen oberhalb des Spielfelds

Wichtig: drawOnTop ist pro State, nicht global pro Entity. Dadurch kann ein NPC nur in bestimmten Zuständen über allen Layern liegen.

Displaygröße und logische Fläche

Anzeige und logische Präsenz einer Entity sind nicht identisch. Größere oder kleinere Sprites arbeiten über:

  • displayWidth
  • displayHeight

Die Runtime leitet daraus passende logische Hitboxen und Interaktionsbereiche ab.

Indicators

Interaktionsindikatoren (E, !) können pro Entity angepasst werden:

  • Ausrichtung über indicatorAlignment
  • Feinkorrektur über indicatorOffset

Das ist vor allem für große oder asymmetrische Sprites wichtig.

Templates

Templates machen Entity-Design wiederverwendbar. Eine Template-Instanz kann:

  • zentrale States aus dem Template übernehmen
  • Instanzwerte für this.-Variablen und -Switches setzen
  • State-Eigenschaften überschreiben
  • eigene Pfade pro State definieren

Die zugehörige Verwaltungsseite liegt in den World- und Global-Settings, während die eigentliche Platzierung im Level Editor erfolgt.

Zusammenspiel von Layern, Entities und Templates

Die eigentliche Qualität eines Levels entsteht selten durch nur einen dieser Bereiche, sondern durch ihr Zusammenspiel:

  • Layer regeln Raum, Tiefe, Sichtbarkeit und statische Kollision.
  • Tile-Rendermodi regeln zusätzlich, ob Vordergrund-Tiles starr bleiben oder sich mit Entities in die Tiefensortierung mischen.
  • Entities erzeugen Reaktion, Fortschritt, Dialog und Dynamik.
  • Templates sorgen dafür, dass wiederkehrende Figuren und Objekte konsistent bleiben.

Ein gutes Leveldesign nutzt deshalb klare Rollen:

  • Boden, Wände und Vordergrund gehören in Tile-Layer
  • klassische Untergründe gehören meist in statische Layer
  • große Vordergrundteile können sinnvoll in dynamisch gruppierte Layer ausgelagert werden
  • stark verstreute Vordergrunddetails können bei Bedarf pro Kachel dynamisch sortiert werden
  • lebendige oder interaktive Elemente gehören in Entities
  • häufig wiederkehrende Typen gehören in Templates

Das verhindert, dass Logik im Tile-Bild verschwindet oder dass dieselbe NPC-Definition zehnmal kopiert wird.

Besonders wichtig ist das bei großen Unterrichtswelten:

  • dieselbe Fackel, Wache oder Maschine kann über Templates zentral gepflegt werden
  • pro Raum werden nur Instanzwerte, Positionen und Pfade geändert
  • drawOnTop kann in einzelnen States für Spezialfälle wie fliegende Entities genutzt werden, ohne die Grundlogik der Entity umzubauen
  • zusammenhängende Baumkronen oder Möbeloberteile können in dynamisch gruppierten Layern sauber vor oder hinter Entities einsortiert werden
  • einzelne Überhang-Tiles können notfalls pro Kachel dynamisch sortiert werden, ohne dass der ganze Layer als ein Block gilt

Bewegungsmuster

States können zyklische Pfade enthalten. Ein Pfadpunkt enthält:

  • x
  • y
  • optional wait
  • optional direction

Das ist das Standardwerkzeug für Patrouillen, Wanderbewegungen oder einfache Ambient-NPCs.

Trigger

Trigger können auf mehreren Ebenen auftreten:

  • onInteract
  • onTouch
  • onEnter
  • onFirstLoad

Alle Trigger nutzen denselben Interaktionsbaukasten.

Effekte und Audio

Ein Level kann feste oder temporäre Effekte haben:

  • Lichtmodi
  • Wetter
  • Atmosphären
  • Musik

Dadurch wird Leveldesign nicht nur räumlich, sondern auch atmosphärisch gesteuert.

Beispiel für ein Entity-State

{
  "id": "bird_idle",
  "condition": "",
  "sprite": "sprites/bird_blue.png",
  "collision": false,
  "displayWidth": 64,
  "displayHeight": 48,
  "drawOnTop": true,
  "path": [
    { "x": 12, "y": 8, "wait": 0.2 },
    { "x": 18, "y": 7, "wait": 0.2 }
  ],
  "onInteract": [
    { "type": "text", "text": "Zwitscher." }
  ]
}