World Partition ebnet den Weg für Creators, große und komplexe Inseln zu bauen, und ermöglicht es ihnen, dies zu tun, während sie die Kosten für den Arbeitsspeicher verbessern und eine reibungslose Leistung auf verschiedenen Plattformen gewährleisten.
Zwei wichtige Komponenten, die World Partition verwendet, um dies zu ermöglichen, sind Streaming und HLODs (Hierarchical Level of Detail).
Streamen
World Partition verwendet Streaming, um Gitterzellen um einen Spieler oder eine Streaming-Quelle in den und aus dem Speicher zu laden. Dadurch wird die Menge an Daten, die sich deine Maschine merken muss, auf die Zellen reduziert, die einen Spielercharakter umgeben.
Wenn die Insel an ihrer breitesten Achse 1 km überschreitet, wird ein Popup-Fenster angezeigt, in dem du aufgefordert wirst, Streaming zu aktivieren.
Wenn du Streaming aktivieren aktivierst, zählen mit wenigen Ausnahmen nur die Zellen, die die aktuelle Position des Spielers umgeben, für die Aktuelle Speichernutzung.
Klicke auf Fenster > Welteinstellungen, um zu sehen, ob Streaming aktivieren aktiviert ist.
Wenn du das Kontrollkästchen zum ersten Mal aktivierst, musst du deine Auswahl bestätigen.
In deinem Projekt sollte nun Streaming aktiviert sein.
Um das Gitter für deine Insel anzuzeigen, aktiviere Vorschauraster in den Welteinstellungen.
Du kannst die Größe jeder Zelle und den Ladebereich ändern, aber denke daran, dass die Standardeinstellungen für Inseln in der Größe von Fortnite Battle Royale optimiert sind.
Ausführlichere Informationen findest du auf der Seite World Partition in der Dokumentation zu Unreal Engine 5.
HLODs
Hierarchical Level of Detail oder HLOD ist eine optimierte Gruppierung nahe gelegener Actors, wobei die Gruppe zu einem statischen Mesh vereinfacht wird, sobald sie weit genug von der Streaming-Quelle entfernt ist.
HLODs werden aus dem Detaillierungsgrad (LOD) mit der niedrigsten Wiedergabetreue des Assets generiert. Wenn deine benutzerdefinierten Assets keine festgelegten LODs haben, ist das HLOD sehr kostspielig, da es aus Assets mit voller Auflösung generiert wird.
LOD0 ist das Asset mit der höchsten Wiedergabetreue. LOD1 ist ein Mesh mit niedrigerer Wiedergabetreue und wird mit zunehmender LOD-Zahl immer niedriger.
Das Bild auf der linken Seite zeigt die Assets im Detail, und das Bild auf der rechten Seite ist ein HLOD-Asset, das aus dieser Gitterzelle generiert wurde.
Durch das Erstellen von HLODs werden deinem Projekt neue Assets hinzugefügt, was die gesamte Speichernutzung deiner Insel erhöht.
Basierend auf deinen Entscheidungen bezüglich Streaming und HLODs wird die Speichernutzung auf folgende Weise beeinflusst:
Streaming AUS | Assets werden nie aus dem Speicher entladen und HLODs werden nicht verwendet. | Höchste Speicherverwendung |
Streaming EIN und HLODs generiert | Assets werden auch aus der Ferne noch angezeigt, jedoch mit weniger Details, wenn sich die Kamera weiter entfernt. | Moderate Speicherverwendung |
Streaming EIN und HLODs nicht generiert | Assets verschwinden in der Ferne, wenn sich die Kamera weiter entfernt. | Niedrigste Speicherverwendung |
HLODs erstellen
Stelle zum Erstellen von HLODs sicher, dass für dein Projekt Streaming aktiviert ist, navigiere dann in der Symbolleiste zu Erstellen und wähle HLODs erstellen aus.
Abhängig von deiner Maschine und der Komplexität deiner Welt kann das Erstellen von HLODs möglicherweise eine Weile dauern. Die gute Nachricht ist, dass beim erneuten Ausführen dieses Prozesses nur HLODs für Regionen deiner Welt erstellt werden, die sich geändert haben, und daher weniger Zeit in Anspruch nehmen.
Um mehr über die Funktionsweise von HLODs zu erfahren, sieh dir die Seite World Partition – Hierarchischer Detaillierungsgrad in der Dokumentation zu Unreal Engine 5 an.
Ausschließen von Assets von der HLOD-Generierung
Einige Assets erfordern keine HLODs. Hier sind einige Beispiele für Assets, die du ausschließen kannst:
Innenraum-Props und Gebäude-Assets | Für alle Assets, die aus der Ferne nicht sichtbar sind, sollten keine HLODs erforderlich sein. Beispiele hierfür sind Möbel, Innenwände, Innenböden usw. |
Unterirdische Assets | Jeder Teil der Insel, der unterirdisch ist und niemals in Sichtweite eines Spielers sein wird. Beispiele sind Keller, Höhlen, Schützengräben, Bunker usw. |
Kleine Actors | Kleine Actors, die keinen großen Teil des Bildschirms des Spielers einnehmen, sollten keine HLODs benötigen. Beispiele sind Kisten, Pflanzen und Straßenlaternen. |
Große Actors | Große Hintergrund-Actors wie Wolkenkratzer oder Berge benötigen keine HLODs. Wenn du sie von HLODs ausschließt, stelle sicher, dass sie immer geladen bleiben, indem du Ist räumlich geladen im Detail-Panel deaktivierst. |
Wähle ein beliebiges Asset aus, für das keine HLODs erforderlich sind. Deaktiviere im Detail-Panel je nach Asset die Option Actor in HLODs einbeziehen oder Komponente in HLODs einbeziehen.
Eine gute Faustregel für die Entscheidung, ob ein Asset in HLODs aufgenommen werden soll, besteht darin, im Editor herauszuzoomen und dann zu prüfen, ob es sinnvoll ist, unwichtige Assets von der Generierung von HLODs auszuschließen.
Push-Back-Ladebereich
Die Qualität von HLODs ist an ihre erwartete Zeichenentfernung gebunden. Wenn du Streaming verwendest, ist die kürzeste Entfernung, in der deine HLODs gesehen werden, die Ladereichweite, die du für dein Weltpartitionsgitter konfiguriert hast.
Wenn HLODs nur geladen werden, wenn sie auf dem Bildschirm des Spielers bereits klein sind, nehmen sie weniger Speicherplatz in Anspruch.
So änderst du die Ladereichweite:
Wähle den Tab World Partition Einrichtung.
Erweitere Laufzeiteinstellungen und dann Raster.
Ändere den Ladebereich, indem du mit der linken Maustaste klickst und den Zahlenwert nach links oder rechts ziehst, oder indem du einen genauen Wert eingibst.
Verwenden von Ladebereichen für bessere Editorleistung
Wenn du an großen Projekten in UEFN arbeitest, kann es sein, dass du Leistungsprobleme bemerkst, wenn deine Insel eine bestimmte Größe erreicht. Standardmäßig wird deine gesamte Insel in den Speicher geladen. Um die Framerate und die Reaktionsfähigkeit des Viewport zu verbessern, kannst du Regionen laden und entladen, wenn du an verschiedenen Bereichen deiner Insel arbeitest.
Wenn du im UEFN-Editor an einer großen oder dichten Insel arbeitest, kannst du die World Partition-Minikarte verwenden, um Abschnitte der Insel zu laden und zu entladen, was die Ladezeiten drastisch reduziert.
Befolge hierzu die folgenden Schritte:
Stelle sicher, dass Streaming in deinem Level aktiviert ist.
Wähle Bearbeiten in der Menüleiste und dann Editor-Einstellungen....
Gehe zum Abschnitt World Partition und deaktiviere das Häkchen bei „Laden im Editor deaktivieren“.
Lade dein Projekt neu. Diese Funktion funktioniert nicht, wenn das Projekt nicht neu geladen wird!
Klicke im Tab World Partition mit der linken Maustaste und ziehe über den Bereich, den du entladen möchtest.
Klicke mit der rechten Maustaste in die Auswahl und wähle Ausgewählte Regionen entladen.
Klicke und ziehe über den gewünschten Bereich, klicke mit der rechten Maustaste und wähle Bereich aus Auswahl laden, um einen Bereich neu zu laden.
Beachte, dass alle Landschaften und Geräte durch das Be- und Entladen nicht beeinträchtigt werden. Das Gleiche gilt für jedes Asset, bei dem in den Benutzeroptionen die Option „Ist räumlich geladen“ deaktiviert ist.
Datenebenen in UEFN
Datenebenen sind ein System in UEFN, mit dem du deine Actors in separate Ebenen einteilen kannst. Diese Ebenen können geladen und entladen werden, um deine Welt zu organisieren, komplexe Level zu verwalten und einzigartige Gameplay-Erlebnisse zu erstellen. Stell dir ein Spiel mit zufallsgesteuerten Leveln vor. Indem du verschiedene Level-Layouts auf verschiedenen Ebenen einstellst und bei Spielbeginn zufällig auswählst, kannst du Abwechslung und Spannung in dein Spielerlebnis bringen. Du kannst Datenebenen für noch größere Übergänge verwenden, z. B. um eine ganze Ebene von Sommer auf Winter umzustellen oder eine Burg nach einer Schlacht zu zerstören.
Ausführlichere Informationen zum Erstellen und Verwalten von Datenebenen findest du auf der Seite „Datenebenen“ in der Dokumentation zu Unreal Engine.
Manipulieren von Datenebenen mit Cinematic Sequencer
In UEFN kannst du die Filmsequenz verwenden, um Datenebenen zur Laufzeit und als Reaktion auf Events zu laden, zu aktivieren und zu entladen.
Klicke auf dem Tab Sequencer auf die Schaltfläche Track und wähle Datenebene, um eine bestehende Datenebene zu deinem Sequencer-Track hinzuzufügen.
Wenn der Track eingestellt ist, klicke mit der rechten Maustaste auf den Track Datenebene und wähle Abschnitt bearbeiten. Klicke dann auf Element hinzufügen unter dem Tab Datenebenen-Assets und wähle die Datenebene aus, die du mit dem Cinematic-Sequencer verwenden möchtest.
Wenn du mit der rechten Maustaste auf deine Datenebene in der Zeitleiste klickst, kannst du ihre Eigenschaften einsehen. Hier kannst du den gewünschten Zustand wählen, also den Zustand, in dem sich die Ebene befinden soll, wenn die Zeitleiste ausgewertet wird. Außerdem kannst du den Preroll-Zustand ändern. Der Preroll-Zustand ist der Zustand, in dem sich die Ebene befindet, bevor der Track beginnt, und der Postroll-Zustand ist der Zustand, nachdem er endet. Wenn du z. B. eine Datenebene aktivieren möchtest, würdest du den gewünschten Zustand auf Aktiviert und den Preroll-Zustand auf Geladen setzen. Wenn du den Preroll-Status auf Geladen setzt und die Anzahl der Preroll-Frames erhöhst, hat deine Ebene mehr Zeit, um zu laden, bevor sie aktiviert wird, was zu einer besseren Leistung führen kann.
Indem du den Abspielkopf bewegst, kannst du eine Vorschau des Zustands deiner Ebene sehen, wenn die Zeitleiste ausgewertet wird.
Um mehr über die Verwendung des Cinematic-Sequencer-Geräts zu erfahren, siehe dir die Seite „Cinematic-Sequencer-Gerät“ an.
Editor-Minikarte generieren
Ein optionaler Schritt ist die Erstellung einer originalgetreuen Minikarte in deiner Editor-Sitzung. So kannst du schnell die verschiedenen Bereiche des Levels finden, an denen du arbeiten möchtest.
Wähle Erstellen in der Menüleiste und dann World Partition Editor Minikarte erstellen.
Das Dialogfeld Build-Status wird auf deinem Bildschirm angezeigt. Dieser Vorgang kann je nach der Komplexität deiner Insel einige Minuten in Anspruch nehmen.
Deine Minikarte passt jetzt zu deinem Viewport. Die Regionen können nach wie vor auf dieselbe Weise geladen und entladen werden.
Fehlersuche
F: Warum kann ich keine HLODs sehen, nachdem ich sie erstellt habe?
A: HLOD-Actors werden nicht standardmäßig vom Editor geladen. Um sie zu untersuchen, verwende den Outliner, um sie zu suchen und anzuheften.
F: Warum erzeugen Assets HLODs, wenn Actors weit voneinander entfernt sind?
A: Überprüfe, ob Actors unter einem Parent-Actor angehängt/verschachtelt sind. Klicke auf den Actor und wähle Anhängen: keine, um sie zu trennen.
F: Einige meiner wichtigen Assets verschwinden, wenn die Zellen entladen werden.
A: Bei bestimmten UEFN-fähigen Assets ist Actors in HLOD einbeziehen standardmäßig nicht aktiviert. Wenn du Probleme siehst, überprüfe die Eigenschaften des Assets.
F: Warum wird die Streaming-Eingabeaufforderung ausgelöst, wenn meine Insel 1 km nicht überschreitet?
A: Die Streaming-Eingabeaufforderung kann ausgelöst werden, wenn deine Landschaft an ihrer breitesten Achse 1 km überschreitet oder wenn sich ein Actor auf der Ebene mehr als 1 km vom Ursprungspunkt entfernt befindet.
F: Warum wird mein großer Actor aus der Ferne nicht durch HLODs ersetzt?
A: Einer oder viele der Actors in der Hierarchie eines Prefab wurden möglicherweise kopiert und sind so weit entfernt, dass World Partition sie als Meshs betrachtet, die immer geladen werden müssen. Entferne den/die weit entfernten Actor(s) aus der Hierarchie, um dieses Problem zu beheben.