Diese Funktion befindet sich im Status Experimentell. Du kannst sie ausprobieren, Feedback geben und sehen, was wir planen. Du kannst derzeit kein Projekt veröffentlichen, das Scene Graph verwendet. Beachte, dass wir für Assets, die während dieser experimentellen Phase erstellt wurden, keine Rückwärtskompatibilität garantieren können, dass die APIs für diese Funktionen Änderungen unterliegen und dass wir uns vorbehalten, ganze experimentelle Funktionen oder bestimmte Funktionalität zu entfernen. Sieh dir die Liste bekannter Probleme an, bevor du mit der Funktion arbeitest.
Scene Graph ist eine vereinheitlichte Struktur, die alle Objekte in der Welt verbindet. Stelle es dir als Werkzeugkasten vor, der alle Werkzeuge enthält, die du für die Gestaltung der Szene, die Gameplay-Systeme, Audio, VFX und vieles mehr benötigst, um Erlebnisse für das Metaverse zu erstellen.
Mit Scene Graph erreichst du mit ein paar einfachen Schritten schnell den Übergang von Grayboxing und der Welt-Erstellung zu einem vollständig spielbaren Level.
Das Erstellen mit Scene Graph bedeutet, dass du Operationen an verwandten Objekten in deinem Projekt ausführen kannst. Du kannst Scene Graph außerdem verwenden, um Strukturen zu duplizieren und zu iterieren, während du sie erstellst. Du kannst die Objekte, die du erstellst, sogar in wiederverwendbare Prefabs verwandeln und sie in verschiedenen Projekten verwenden.
Scene Graph ist ein in Verse natives System, das die Vorteile der Merkmale von Verse nutzt. Das bietet dir eine Möglichkeit, deine Projekte mit interaktiven, speziell erstellten Objekten und Gameplay-Erlebnissen weiter anzupassen.
Scene Graph verbessert die Projektstabilität, da Verse im Hintergrund die schwere Arbeit erledigt und dafür sorgt, dass Entitäten wie gewünscht funktionieren. Verse hat außerdem tiefgreifenden Zugriff auf alle Teile der Szenenentitäten und Komponenten, was bedeutet, dass du Szenen mit mehr Varianz erstellen kannst.
Objekte im Metaverse
Das Metaverse ist ein soziales Online-Entertainment-Erlebnis in Echtzeit, in dem Personen in einer 3D-Welt spielen und sich verbinden können. Epic Games entwickelt das Scene-Graph-System für UEFN, damit du diese Metaverse-Erlebnisse erstellen kannst.
Im Scene-Graph-System kannst du Instanzen von Objekten ohne die Actor-Klassifizierung von Unreal Engine erstellen und sie wiederverwenden. Im Zentrum von Scene Graph steht ein Satz Bausteine, die Daten und Logik nutzen, um dein Spiel zu erstellen, sowie Objekte in jeder beliebigen Spielumgebung darzustellen und zu simulieren.
Actors und Entitäten sind nicht austauschbar, sie sind unterschiedliche Systeme, die in der Szene zusammenarbeiten.
Mit Scene Graph kannst du ein 3D-Echtzeit-Simulationsframework aufbauen, in dem alle Designentscheidungen und Ergebnisse sofort im Viewport sichtbar sind. Diese können im Details-Panel oder dem Prefab-Editor bearbeitet werden.
Du kannst Assets, die du erstellst oder von einem Anbieter wie Fab) erwirbst, importieren und diese mit Scene Graph verwenden, um benutzerdefinierte Objekte und Prefabs zu erstellen.
Alles, was du in Scene Graph erstellst, kann vielfach und mit weniger Speicher wiederverwendet werden. Das Scene-Graph-Erstellungssystem ist so konzipiert, dass es die Weitergabe komplexer Inhalte und freigegebene Simulationen ermöglicht, während gleichzeitig Grenzen zwischen den Inhalten durchgesetzt werden.
Entitäten und Komponenten
Entitäten und Komponenten sind das Rückgrat von Scene Graph. Sie steuern die Definition und das Verhalten der Objekte.
Entitäten sind Container, die für sich keine sichtbare Definition oder Funktion haben. Komponenten liefern Daten und Verhaltensweisen für die Entitäten. Komponenten definieren, was eine Entität in der Szene machen soll.
Komponenten haben bearbeitbare Eigenschaften. Diese können physisch sein, wie ein statisches Mesh oder ein Partikelsystem, oder logisch, wie ein Gameplay-Tag oder benutzerdefinierter Verse-Code, der die Bewegung einer Plattform definiert. Standardmäßig haben alle Entitäten eine Transform Component, um festzulegen, wo die Entität in der Welt existiert.
Das Konstruieren einer Entität mit Verse erstellt nicht automatisch eine Transform Component.
Mit Scene Graph kannst du schnell Setteile und Spielmechaniken zusammenstellen, indem du die physischen Daten von Meshs, Sound-Einsätzen und vielem mehr nutzt.
Eine Entität wird zur physikalischen Darstellung eines statischen Mesh, wenn du der Entität eine Mesh-Komponente hinzufügst und ein Mesh im Mesh-Slot der Komponente auswählst. Das bedeutet, dass du schnell Gebäude oder einzelne Set-Teile modellieren und sie direkt in deiner Szene verwenden kannst.
In dem folgenden Video wird zum Beispiel eine Entität in ein Cluster aus Bambusbäumen verwandelt und eine Sound-Komponente zu der Entität hinzugefügt, indem ein Sound-Einsatz in den Sound-Komponenten-Slot gezogen wird.
Du kannst diesen Bambus-Cluster allein in ein Prefab verwandeln oder ihn mit zusätzlichen Entitäten kombinieren, um ein Wald-Prefab zu erstellen.
Eine Entität (die Simulationsentität) befindet sich im Kern deines Projekts, um die Simulation darzustellen. Die Szene wird erstellt, wenn Entitäten unter der Simulationsentität verschachtelt werden. Durch das Hinzufügen von Entitäten zu der Karte erstellst du automatisch Child-Entitäten der Simulationsentität.
Die oberste Entität des Prefab ist die Kernentität des Prefab mit anderen Prefabs und Entitäten, die darunter verschachtelt sind. Parent-Prefabs enthalten die Darstellung und das Verhalten ihrer Child-Elemente für die Interaktion mit anderen Objekten in der Szene.
Klicke auf das Bild, um es zu vergrößern.
-
Prefab-Kernentität → WoodenHouse_Tiny_Prefab
-
Child-Prefab → WoodenHouse_RoofSmall_Prefab_C_1
-
Child-Entität → Building_WIndowCircle_Bright2
-
Child-Entität → Building_WIndowCircle_Bright4
-
Child-Entität → Building_WIndowCircle_Dark2
-
Child-Entität → Building_WIndowCircle_Dark4
-
Child-Entität → WoodenHouse_Floor
-
Child-Entität → WoodenHouse_RoofCap2
-
Child-Entität → WoodenHouse_RoofCap3
-
Child-Entität → WoodenHouse_RoofWindow2
-
-
Child-Prefab → WoodenHouse_SmallFloor_Prefab_C_1
-
Child-Entität → WoodenHouse_Floor
-
Child-Entität → WoodenHouse_Wall10
-
Child-Entität → WoodenHouse_WallDoor_C4
-
-
Child-Prefab → WoodenHouse_Windows_Prefab_C_3
-
Child-Entität → Building_WindowPlane_Bright3
-
Child-Entität → Building_WindowPlane_Bright4
-
Child-Entität → Building_WindowPlane_Dark3
-
Child-Entität → Building_WindowPlane_Dark4
-
Child-Entität → WoodenHouse_Windoows_10
-
-
Jedes Child-Prefab bietet Komponenten, die bestimmen, wie das Prefab aussieht und wie es sich an andere Prefabs in der Szene anpasst. Du kannst mit Verse spezifische Prefabs und Entitäten auswählen, um das Child-Prefab gegen ein anderes Prefab auszutauschen, oder sogar die Farbe ändern, die für die Entitäten Building_WindowPlane_Bright und Building_WindowPlane_Dark verwendet wird.
Es gibt zahlreiche Komponententypen, die bestimmen, wie ein Teil einer Entität oder eine ganze Entität agiert. Um mehr über die verschiedenen Komponententypen zu erfahren, die in Scene Graph verfügbar sind, kannst du unter Komponenten nachlesen.
Weitere Informationen zur Verwendung von Entitäten und Komponenten findest du unter Arbeiten mit Entitäten und Komponenten.
Prefabs
Scene Graph erstellt Prefabs, indem es Entitäten unter einer Parent-Entität zusammenfasst. Alle ausgewählten Entitäten, Entität-Hierarchien und ihre Komponenten werden sofort zu dem Entitätenbaum im Prefab hinzugefügt. Sobald du über ein Prefab verfügst, kannst du alle Instanzen dieses Prefab im Prefab-Editor anpassen.
Um eine Instanz deines Prefabs zu erstellen, ziehst du das Prefab aus dem Inhaltsbrowser in den Viewport. Du kannst auch Prefabs in der Prefab-Hierarchie verschachteln. Mit der Hierarchie kannst du die Änderungen, die an allen Instanzen und Prefabs in der Hierarchie vorgenommen wurden, übernehmen.
Wenn du das Prefab aktualisierst und verbesserst, sparst du Zeit, da du nicht alle Instanzen des Objekts suchen musst, um sie einzeln zu aktualisieren.
Des Weiteren kannst du zahlreiche ähnlich aussehende Objekte erstellen, indem du Subteile in der Hierarchie auswählst und verschiedene Komponentenwerte außer Kraft setzt. Du kannst auch Objekte drehen und zu verschiedenen Prefab-Instanzen neue Komponentenwert hinzufügen, wenn du sie im Prefab-Editor bearbeitest.
Der Editor kennzeichnet alle Änderungen im Details-Panel mit einem Override-Umschaltsymbol an den einzelnen Komponentenattributen. Er kennzeichnet außerdem verschiedene Komponentensymbole auf der Schaltfläche des Komponentenkarten-Dropdown-Menüs.
Um zum ursprünglichen Prefab-Design zurückzukehren, klickst du auf die einzelnen Override-Umschalter der Komponente. Das Objekt wird automatisch auf den Status des Parent-Prefab zurückgesetzt. Du kannst auch auf die Dropdown-Menü-Schaltfläche der Komponentenkarte klicken und Override löschen auswählen.
Unter Prefabs und Prefab-Instanzen erfährst du mehr über das Ändern von Prefabs.
Im folgenden Video werden mit Scene Graph zwei kleine Haus-Prefabs erstellt.
Das Haus wird dupliziert. Verschiedene Elemente des Hauses werden geändert, indem verschiedene Meshs ausgewählt werden, um Teile des Originals zu ersetzen. So entsteht ein neues Prefab. Du kannst weiter Teile kopieren und ersetzen, um schnell ein kleines Dorf zu modellieren. Das funktioniert sogar mit Komponenten, sodass du zu jedem der Häuser im Dorf verschiedene Verhaltensweisen hinzufügen kannst.
Die Bearbeitung von Prefabs wirkt sich nicht auf die Stabilität und den Speicher der ursprünglichen Objekte oder ihrer Kopien aus. Das bedeutet, dass du dein Level-Layout, abstraktes Design und die künstlerischer Ausarbeitung abschließen kannst, um benutzerdefinierte Objekte für deine Insel zu erstellen. Mit dem Scene-Graph-Erstellungssystem kannst du die Prefabs, die du in verschiedenen Projekten erstellst, wiederverwenden, um dein eigenes Spieluniversum in Fortnite zu erstellen.
Verse in Scene Graph
Verse ist die Programmiersprache, mit der Scene Graph Entitäten spawnt und aus der Welt entfernt sowie benutzerdefinierte Komponenten und Verhaltensweisen erstellt.
Mit Verse kannst du eine schwankende Laterne im Freien für das Haus im vorangegangenen Beispiel erstellen. Verse bietet dir eine Möglichkeit, die Eigenschaften für Schwanken, Drehung und Dauer zu definieren, die bestimmen, wie sich die Laterne bewegt.
Prefabs, die du im Projekt erstellst, werden in der Datei Assets.digest.verse deines Projekts für Verse als Klasse freigegeben. Entitäten und Komponenten, die in deinem Prefab definiert sind, sind in Verse über die Aufrufe GetEntities()
und GetComponents()
an ein Prefab zugänglich.
Sieh dir für die ersten Schritte mit Verse in Scene Graph Erstellen deiner eigenen Komponente in Verse an.
Aktivieren von Scene Graph in deinem Projekt
So verwendest du Scene Graph in deinem Projekt:
-
Wähle in der Werkzeugleiste die Option Projekt > Projekteinstellungen, um das Fenster „Projekteinstellungen“ zu öffnen.
-
Aktiviere im Fenster „Projekteinstellungen“ unter Experimenteller Zugriff die Option Scene-Graph-System.
Klicke auf das Bild, um es zu vergrößern.
- Wähle in der Werkzeugleiste die Option Actors platzieren und beachte den Eintrag Entitäten in der Dropdown-Liste „Actors platzieren“, um zu verifizieren, dass du Scene-Graph-Funktionen anzeigen kannst.

Erste Schritte
Öffne die Prefab-Vorlage, um mehr über Scene Graph zu erfahren. Die Vorlage führt dich in die Grundkonzepte der Arbeit mit Scene-Graph-Funktionen ein und baut auf diesen Grundlagen-Workflows auf, um die Macht der Erstellung deines Projektes mit Prefabs und Verse zu veranschaulichen.
Bekannte Probleme
Im Folgenden sind bekannte Probleme bei der Arbeit mit Scene Graph in deinem Projekt aufgeführt. Wenn du Feedback hast oder Probleme feststellst, die nicht in der folgenden Liste aufgeführt sind, melde sie in den Foren.
-
Bei einer experimentellen Funktion kann es zu unerwarteten Abstürzen und zu Instabilität kommen.
-
Du kannst im Prefab-Editor kein Raster-, Drehungs- oder Skalierungsandocken nutzen.
-
Du kannst im Prefab-Editor keine Mehrfachauswahl nutzen.
-
Du kannst im Prefab-Editor keine Elemente durch kopieren und einfügen oder bei gedrückter Alt-Taste ziehen duplizieren.
-
Du kannst keine Komponenten kopieren und einfügen.
-
Du kannst nicht alle Overrides aus der Prefab-Instanz gleichzeitig aufheben. Das musst du für jeden Override einzeln machen.
-
Entitäten verwenden nicht das Eine-Datei-pro-Actor-System. Vielmehr werden Entitäten im UMAP-Asset gespeichert. Wenn du URC in deinem Projekt verwendest, wirst du durchweg das Haupt-Level sperren und die Möglichkeit zur Zusammenarbeit an deinem Projekt deaktivieren.
-
Es gibt keine Möglichkeit, außer Kraft gesetzte Prefab-Instanzen im Prefab-Asset zu speichern.
-
Doppelte Entitäten werden im Prefab-Editor nicht korrekt benannt.
-
Alle erweitern und Alle zuklappen funktionieren bei Komponenten nicht.
-
Es gibt aktuell keine Möglichkeit, Overrides aus einem Prefab zu entfernen.
-
Ein Rechtsklick auf das Override-Symbol hat den gleichen Effekt wie ein Linksklick.
-
Eine Child-Entität kann nicht abgekoppelt werden, indem sie auf das Parent-Element gezogen wird.
-
Das Spulen der Drehung Statisches-Mesh-Komponente entlang der Y-Achse führt zu einer unerwarteten Bewegung.
-
Bei der Kollision mit Szenendiagramm-Objekten kommt es zu einem unerwarteten Spieler-Verhalten.
-
Wenn eine Entität manuell umbenannt wurde, kann der Entitätname nicht geändert werden.
-
Eine negative Skalierung kann zu ungewöhnlichen Interaktionen bei Child-Entitäten führen, wenn sie gedreht werden.
-
Das Ziehen der Transformieren-Werte im Prefab-Editor ist langsamer und weniger performant als das Ändern der Werte über das Widget.
-
Das Fenster Verse-Komponente erstellen zeigt unter den Editor-Optionen keine Vorlagen an.
-
Entitäten im Prefab-Editor können nicht immer ausgewählt werden.
-
Das Löschen eines Prefab erzeugt in Live-Bearbeitungssitzungen ein „Geist“-Prefab.
-
Prefab-Assets haben keine Miniaturansichten.
-
Die Komponentenlogik läuft im Bearbeitungs- und Spielmodus.
-
Komponenten werden viel früher als Kreativmodus-Geräte initialisiert, was bedeutet, dass das Abrufen eines Kreativmodus-Geräts über
component.OnBeginSimulation
odercomponent.OnSimulate
nicht funktioniert. Als Workaround kannst du eine Schleife mit Schlafpausen durchführen, bis die Komponenten gefunden wurden oder deine Prefabs über den OnBegin-Aufruf eines Kreativmodus-Geräts spawnen. -
Das Aufrufen von
Dispose()
auf einer Entität, die direkt im Level platziert wurde, entfernt keine Dinge wie die sichtbaren Mesh-Effekte und ähnliches aus der Client-Ansicht. Das Aufrufen vonDispose()
auf Entitäten, die über Verse-Code gespawnt werden, funktioniert korrekt. -
Die Fähigkeit, ausgewählte Entitäten im Level-Editor (Tastaturkürzel H) und im Prefab-Editor auszublenden, funktioniert nicht.
-
Im Prefab-Editor vorgenommene Änderungen werden nicht auf platzierte Instanzen des Prefabs propagiert, außer du speicherst deine Änderungen.
-
Das Speichern des Projekts während keine Kompilierung des Verse-Codes durchgeführt wird, kann zu beschädigten Prefab-Daten führen.