Zum Hauptinhalt springen

Durchläufe und Weltisolation

Ein Durchlauf (Run) ist ein Spieldurchgang eines Dungeons durch eine Gruppe. Diese Seite erklärt, was ein Durchlauf besitzt, wie seine Welt entsteht und welchen Isolationsmodus du wählen solltest.

Was ein Durchlauf besitzt​

Jeder Durchlauf hat seine eigenen:

  • Mitglieder: die Spieler der Gruppe. Ein Spieler ist jeweils in einem Durchlauf.
  • Welt oder Slot: der Ort, an dem der Dungeon nur für diesen Durchlauf existiert.
  • Zeitlimit: das Feld cooldownSeconds des Dungeons (eine maximale Dauer; leer oder 0 bedeutet kein Limit).
  • Zustand: der Raum, in dem sich jedes Mitglied befindet, die bereits verbrauchten once-Räume, die Truhen, die bereits gespawnten Mobs.
  • Audience: Die NPCs und Truhen eines Durchlaufs werden nur seinen Mitgliedern angezeigt.

Mehrere Durchläufe desselben Dungeons können gleichzeitig existieren, bis zu maxSimultaneousInstances. Diese Zahl ist auch die Anzahl der Lobbys des Dungeons. Sind alle belegt, wird der nächsten Gruppe „All the runs of this dungeon are taken.“ gemeldet.

Gruppen​

Eine Gruppe ist, wer gemeinsam eine Lobby betritt, oder der einzelne Spieler einer Dungeon Enter-Action. Hat der Spieler eine Party in MMOCore, Parties oder der Typewriter-Party-Erweiterung, betritt diese gesamte Party die Lobby gemeinsam, wenn Platz für alle ist. Dungeon liest diese Parties nur: Es erstellt oder ändert nie eine.

Die Gruppengröße muss zwischen minPartySize und maxPartySize liegen, und jedes Mitglied muss den criteria des Dungeons entsprechen. Ein Admin, der /typewriter dungeon force-start verwendet, überspringt die Mindestgröße und die Criteria.

Einen Isolationsmodus wählen​

Setze das Feld isolation der Dungeon Instance.

ModusIsoliertKostenBenötigt
SLIME_CLONEJaNiedrig: ein Klon im SpeicherAdvanced Slime Paper und eine Vorlage, die eine geladene Slime-Welt ist.
WORLD_PER_RUNJaHoch: kopiert den Vorlagenordner und löscht die Kopie dannEin Vorlagenwelt-Ordner im Stammverzeichnis des Servers.
SHARED_WORLD_SLOTSNeinAm niedrigsten: nichts wird kopiertEine Welt, die in jedem Slot identisch gebaut ist.
AUTO (Standard)SLIME_CLONE, wenn Advanced Slime Paper installiert ist, sonst WORLD_PER_RUN.

Ein Modus, der auf dem Server nicht laufen kann, lehnt den Durchlauf ab; er fällt nie auf einen anderen Modus zurück. Der Spieler liest „The dungeon cannot be started on this server.“, und das Serverlog nennt den Grund.

SLIME_CLONE​

Jeder Durchlauf bekommt einen Klon einer Slime-Welt im Speicher. Das ist der günstigste Modus, der vollständig isoliert ist. Er braucht Advanced Slime Paper, und templateWorld muss eine geladene Slime-Welt nennen.

WORLD_PER_RUN​

Jeder Durchlauf bekommt eine Kopie des Vorlagenwelt-Ordners, also eine echte neue Welt. Die Kopie wird abseits der Server-Threads erstellt, die neue Welt wird von der Erweiterung benannt und mit einer Markierungsdatei versehen, sodass nur Welten, die sie erstellt hat, je gelöscht werden können. Am Ende des Durchlaufs wird die Welt ohne Speichern entladen und ihr Ordner gelöscht.

  • Die Vorlage wird von der Erweiterung nie geladen, beschrieben oder gelöscht.
  • Ein Link (symbolischer Link, Junction) irgendwo im Vorlagenordner lässt die Kopie scheitern.
  • Der Vorlagenname darf nur Buchstaben, Ziffern, _ und - verwenden (bis zu 64 Zeichen). Die Hauptwelt des Servers und Namen, die wie Durchlauf-Welten aussehen, werden abgelehnt.
  • Kann eine Welt nicht entladen werden, weil ein Spieler darin bleibt, bleibt sie geladen und wird beim nächsten Start gelöscht.

Dies ist auch der einzige Modus, der einen generierten Dungeon aufnimmt: Die Erweiterung erstellt für den Durchlauf eine leere Welt und fügt die Räume dort ein. Mit einem Generator funktionieren AUTO und WORLD_PER_RUN, während SLIME_CLONE und SHARED_WORLD_SLOTS abgelehnt werden.

SHARED_WORLD_SLOTS​

Alle Durchläufe des Dungeons finden in der Vorlagenwelt selbst statt, jeder in seinem eigenen Slot eines Rasters. Die Erweiterung verschiebt jede von dir festgelegte Position (Spawn, Räume, Truhen, NPCs, Mob-Positionen) um den Versatz des Slots des Durchlaufs, sodass du den Dungeon einmal im Ursprungs-Slot baust und ihn dann in jedem anderen Slot identisch baust (zum Beispiel durch Einfügen).

Das Feld sharedSlots legt das Raster fest:

FeldBedeutungStandard
spacingX, spacingZBlöcke zwischen zwei Slots. Mindestens der Platzbedarf.512
columnsSlots pro Reihe. 0 = alle Slots in einer Reihe entlang X.0
footprintX, footprintZGröße der Vorlage in Blöcken.256
Dieser Modus ist nicht isoliert

Mobs, fallen gelassene Items und Blöcke werden von allen Slots der Welt geteilt. Wenn ein Durchlauf endet, werden seine Mobs, Truhen und NPCs entfernt, die Welt selbst wird aber nicht repariert: Auf dem Boden liegende Items und von Spielern oder Mobs zerstörte Blöcke bleiben. Spieler anderer Slots werden voreinander versteckt, und die Truhen, NPCs und Mobs eines Durchlaufs werden auf seine Mitglieder gefiltert, aber ein Dungeon mit zerstörerischen Mobs oder Weltänderungen hinterlässt Spuren. Lass in einer geteilten Welt blockDamage und dropVanillaLoot bei Dungeon Mob Spawn-Entries ausgeschaltet.

Zwei Dungeons, die auf derselben geteilten Welt gebaut sind, teilen sich deren Slots. Verwende für beide dasselbe maxSimultaneousInstances.

Einen Durchlauf starten​

Der Start ist alles oder nichts:

  1. Criteria und Gruppengröße werden geprüft, und der Isolationsmodus wird aufgelöst.
  2. Ein Platz wird reserviert, sodass ein Doppelklick einen Durchlauf ergibt, nicht zwei.
  3. Bei einem generierten Dungeon wird das Layout erstellt und dann einige Räume pro Tick in die neue Welt eingefügt.
  4. Die Welt wird vorbereitet (Klon, Kopie oder Slot).
  5. Die Eintrittskosten werden eingezogen, ganz oder gar nicht.
  6. Der Ursprung jedes Mitglieds wird aufgezeichnet, und alle werden teleportiert.
  7. Der Durchlauf wird aktiv, dann laufen Truhen, onStart, Modifier (und die Affixe eines generierten Dungeons) für jedes Mitglied.

Schlägt ein Schritt fehl, bleiben die Spieler, wo sie waren, die Kosten werden erstattet, die Welt wird freigegeben und der Platz zurückgegeben.

Einen Durchlauf beenden​

Das Erste davon gewinnt, und nur ein Ende läuft, auch wenn mehrere zusammen eintreten:

  • Dungeon Complete (der Dungeon wurde abgeschlossen).
  • Das Zeitlimit (cooldownSeconds) ist abgelaufen.
  • Dungeon Close oder /typewriter dungeon close <instance>.
  • Jedes Mitglied hat den Durchlauf verlassen, die Welt gewechselt oder die Verbindung getrennt.

Das Ende führt onEnd für jedes Online-Mitglied aus, räumt die Truhen, NPCs und Mobs des Durchlaufs auf, schickt die Mitglieder zurück (zum exitPoint von Complete und Close, wenn gesetzt, sonst dorthin, woher jedes kam) und gibt dann die Welt frei. Ein Spieler, der in einem Durchlauf die Verbindung trennt, wird bei seinem nächsten Beitritt dorthin zurückgebracht, woher er kam. Kommt er innerhalb der Wiederverbindungsfrist (reconnectGrace, standardmäßig 2 Minuten) zurück, behält er stattdessen seinen Platz: siehe Verbindungsabbrüche.

Reload und Neustart​

EreignisWas mit den Durchläufen passiert
typewriter reload, PublishDie Durchläufe werden wieder übernommen: Mitglieder, Welt, Deadline, Raumzustand, geöffnete Truhen und gespawnte Mobs kommen zurück. onStart und Modifier laufen nicht erneut.
ServerneustartDie Durchläufe enden: Ihre Welten sind weg. Spieler werden bei ihrem nächsten Beitritt nach Hause geschickt, und verwaiste Weltordner werden gelöscht.

Damit die Übernahme funktioniert, verknüpfe ein Active Dungeon Instance Artifact im Feld runtimeArtifact. Ohne es werden die Durchläufe in eine Datei runs.json der Erweiterung geschrieben, und das Serverlog warnt dich beim Laden. Mehrere Dungeons können sich ein Artifact teilen.

Ein Durchlauf, der nicht übernommen werden kann (sein Dungeon wurde gelöscht, seine Welt ist nicht geladen, sein generiertes Layout kann nicht neu aufgebaut werden), wird beim Start geschlossen, und seine Spieler werden nach Hause geschickt. Das Log nennt den Grund.

Lobbys werden von einem Reload oder einem Neustart nicht wiederhergestellt: Sie kommen leer zurück, abgesehen von den Lobbys der übernommenen Durchläufe.