Acht Wochen Systeme. Jetzt die Welt. Settings-Menüs helfen nicht, wenn deine Map 90 Sekunden lädt und 20 GB RAM frisst — genau da landet jedes Open-World-Anfängerprojekt. Meins eingeschlossen.

Die Ursache ist simpel: standardmäßig lädt Unreal das ganze Level. Jeder Actor, jedes Mesh, jede Referenz. Die Lösung hat drei Namen, und die Foren streiten gern über alle drei. Hier die Kurzfassung.

Die drei Systeme

Level Streaming Volumes — du platzierst eine Box; betritt der Spieler sie, lädt ein Sublevel. Ältester Ansatz, funktioniert weiter, null Code.

Sublevel + Blueprint — du rufst Load Stream Level / Unload Stream Level selbst auf. Volle Kontrolle, volle Verantwortung.

World Partition — nur UE5. Du teilst nichts auf. Die Engine legt automatisch ein Grid über deine Welt und streamt die Zellen um den Spieler.

Dann gibt es noch World Composition, das dir in älteren Tutorials begegnet. Epic betrachtet es als Legacy und empfiehlt World Partition für UE 5.0 und neuer. Wenn ein Tutorial mit World Composition anfängt: zumachen.

Wie du wählst

Abgegrenzte Orte — Hub, Dungeon, Menü-Level? Sublevel. Das sind gedankliche Einheiten. Sie von Hand zu streamen ist ehrlich und lesbar.

Eine durchgehende Landschaft, über die du läufst? World Partition. 200 Streaming-Volumes über eine große Map von Hand zu verwalten ist kein Leveldesign, das ist Buchhaltung.

Was Kleines? Weder noch. Ein 500×500-m-Level zu streamen bringt dir nichts und kostet dich eine Fehlerquelle. Lad es und mach weiter.

Ich baue eine 5×6-km-Welt. Das ist World-Partition-Gebiet, da gab es nie wirklich was zu entscheiden.

Was World Partition dir tatsächlich gibt

Drei Dinge, und sie sind trennbar:

Grid-Streaming. Deine Welt wird in Zellen geschnitten (Standard 12.800 uu / 128 m). Zellen innerhalb der Loading Range um den Spieler werden geladen. Du machst nichts, keine Volumes, kein Code.

One File Per Actor (OFPA). Jeder Actor wird eine eigene Datei auf der Platte statt in der .umap zu liegen. Im Team ist das das Feature — zwei Leute können dieselbe Map bearbeiten ohne Merge-Konflikt. Solo heißt es, dass deine Versionshistorie aus tausenden winzigen Dateien besteht statt aus einer riesigen Binärdatei. Beides ist okay, aber wisse, welchen Tausch du gemacht hast.

Data Layers. Gameplay-getriebenes Streaming über dem Grid. "Dorf vor dem Feuer" und "Dorf nach dem Feuer" als zwei Layer, ein Umschalter. Den Teil entdecken die meisten Anfänger erst nach einem Jahr und wünschen sich dann, sie hätten's früher gewusst.

HLODs sind nicht optional

Der Denkfehler: World Partition löst die Distanz für dich. Tut es nicht. Zellen außerhalb deiner Loading Range sind weg — inklusive dem Berg, den man von hier aus sieht.

HLODs sind die Antwort: zusammengeführte, vereinfachte Stellvertreter für nicht geladene Zellen. Bau sie (Build → Build HLODs) oder dein Horizont ist eine Leere. Die Generierung dauert, und sie sind veraltet bis du neu baust — deshalb sehen so viele World-Partition-Projekte ab 500 Metern aus, als würden sie zerfallen.

Das Persistent Level ist kein Lager

Egal welches System: das Persistent Level hält das Nötigste — ein Level-Blueprint, das Lighting-Setup, vielleicht deinen Player Start. Nicht deinen Content. Jeder Actor, den du im Persistent Level lässt, ist ein Actor, der nie entlädt.

Dieselbe Disziplin gilt für Referenzen. Ein ausgestreamtes Level, dessen Actors noch von etwas im Persistent Level referenziert werden, kann nicht freigegeben werden. Streaming besiegt keine Hard References — es macht sie nur schwerer zu finden. Womit wir wieder bei Soft References wären, und warum das Post Nummer eins war.

Häufige Fehler

  • Annehmen, World Partition sei an. Es ist an beim Open-World-Template. Eine bestehende Map konvertierst du explizit (Tools → Convert Level) — und vorher ein Backup.
  • HLODs weglassen. Alles jenseits der Loading Range verschwindet. Das ist die mit Abstand häufigste "World Partition ist kaputt"-Meldung.
  • Content im Persistent Level. Entlädt nie. Das ist der ganze Sinn des Persistent Levels und das ganze Problem, wenn man es als Abstellkammer nutzt.
  • Eine Hard Reference vom Persistent Level in ein gestreamtes Level. Bleibt im Speicher. Nichts gewonnen.
  • Blueprints, die über Level hinweg greifen. Ein Actor in einem gestreamten Level existiert vielleicht nicht. Interfaces und Dispatcher, kein Get All Actors Of Class plus Cast.
  • World Partition auf einem Dedicated Server. Server-Streaming wird nicht vom Rendering getrieben. Wenn du Multiplayer machst: erst die server-spezifische Doku lesen — die Foren sind voll von Leuten, die das spät gemerkt haben.
  • Streaming nur im Editor testen. PIE-Laden ist kein Packaged-Laden. Profile den Build.

30-Sekunden-Recap

  • Standardverhalten ist: alles laden. Das ist das Problem, das du löst.
  • Abgegrenzte Orte → Sublevel. Durchgehende Landschaft → World Partition. Kleine Map → keins von beiden.
  • World Composition ist Legacy. Tutorials damit ignorieren.
  • World Partition = Grid-Streaming + OFPA + Data Layers. Drei getrennte Gewinne.
  • HLODs bauen oder dein Horizont ist leer.
  • Persistent Level hält Setup, keinen Content.
  • Hard References besiegen Streaming. Jedes Mal.

Nächsten Sonntag: Foliage-Painting — die Einstellungen, die du ändern solltest bevor du den ersten Baum setzt, und die, die kein Tutorial erwähnt.

— Marco