Diese Seite ist ein Begleitdokument zur Vorlage Talisman: Umgebung, die die beste Vorgehensweise für die Erstellung einer extrem detaillierten, realistischen Umgebung präsentiert. Die Talisman wird mit einer modularen Konstruktion und bewährten Verfahren für die Optimierung in Unreal Editor für Fortnite (UEFN) erstellt.
Du findest die Vorlage im Abschnitt Funktionsbeispiele des Projektbrowsers.
Du kannst das Talisman-Erlebnis, das bei der 2024 Game Developers Conference präsentiert wurde, spielen, indem du Fortnite öffnest und den Inselcode 7100-3544-3074 eingibst.
Speicherort der Vorlage „Talisman: Umgebung“ im Projektbrowser.
Diese Übersicht führt dich durch die Optimierungsherausforderungen, mit denen das Team bei der Erstellung des Talisman-Projekts konfrontiert wurde, und wie jede der Herausforderungen überwunden wurde:
Da die Vorlage so konzipiert ist, dass sie auf allen verfügbaren Plattformen läuft, müssen die Assets und der Stil der Talisman den UEFN’s memory and project size limit requirements entsprechen. Dadurch ergeben sich verschiedene Herausforderungen für Projekte, die mit einem detaillierteren Kunststil entwickelt wurden:
Projektgröße: Detailreiche Assets in Spielen können groß sein und UEFN hat eine Projektgrößenbeschränkung von 400 MB.
Laufzeit-Speicherbeschränkungen: UEFN hat eine Streaming-Speicherbeschränkung von 100.000 Speichereinheiten, die den Umfang der Assets, benutzerdefinierten Landschaften und Geräte beschränkt, die sich gleichzeitig auf dem Bildschirm befinden können.
Qualität auf allen unterstützten Plattformen: Diese Beschränkungen stellen sicher, dass dein UEFN-Erlebnis für alle Spieler auf allen Plattformen verfügbar ist, die von Fortnite unterstützt werden.
UEFN unterstützt eine Vielzahl von Techniken, um diese Anforderungen zu erfüllen, darunter Levels of Detail(LODs), Hierarchical Levels of Detail (HLODs), World Partition, Level-Instanzierung und Datenebenen.
Anwenden optimaler Vorgehensweisen
Die Vorlage "Talisman: Umgebung" wurde so konzipiert, dass sie eine Vielzahl optimaler Vorgehensweisen und Prozesse präsentiert, um einen hochgradigen Realismus in Unreal Editor für Fortnite zu ermöglichen. Diese Vorlage verwendet die folgenden optimalen Vorgehensweisen, um Projekt- und Streaming-Speicher zu verwalten und die Leistung zu optimieren:
Erstellen benutzerdefinierter Inhalte, die modular und leichtgewichtig sind.
Verbessern der Darstellung der Geometrie harter Oberflächen durch Face Weighted Normals.
Ergänzen von Details bei Meshs mit Mesh-Aufklebern.
Aufbau deines Erlebnisses für die Lowest-End-Zielplattform und Ergänzen von Funktionen auf dieser Basis
Minimieren von Draw-Aufrufen auf Nicht-Nanite-Meshs.
Erstellen benutzerdefinierter Inhalte, die modular und leichtgewichtig sind
Die Talisman-Umgebung wurde mit Kitbashing erstellt, einer modularen Modellierungstechnik, die vorbestehende Meshs einer modularen Umgebung nutzt und diese umfunktioniert, um neue Assets zu erstellen. Durch die Wiederverwendung der Assets konnten die Künstler die Projektgröße reduzieren, indem sie die Anzahl der Meshs mit einer einzelnen Verwendung minimierten.
Dieses Asset besteht aus sechs verschiedenen statischen Meshs.
Traditionell erstellen Künstler diese Art der Umgebung, indem sie ein detailreiches Mesh mit hoher Polygonzahl einem Mesh mit niedriger Polygonzahl zuordnen und dafür einmalig gebakte Normal-Maps nutzen, um die Details zwischen den beiden zu erhalten. Dieses Verfahren erfordert zusätzliche Textur-Maps, welche die Größe deines Projekts erhöhen können, zur Laufzeit teuer sind und sich im Kitbashing-Prozess nicht gut skalieren lassen.
Meshs mit mittlerer Polygonzahl mit Face Weighted Normals wurden verwendet, um Speicher zu sparen. Mesh-Aufkleber wurden verwendet, um kleine Details zu ergänzen.
Weitere Informationen findest du unter Mesh-Design und -Konstruktion.
Erstellen deines eigenen Erlebnisses auf allen Zielplattformen
Fortnite wurde so konzipiert, dass es auf einer Vielzahl von Plattformen läuft. Um sicherzustellen, dass dein Inhalt den Spielern auf jedem dieser Geräte das beste Erlebnis bietet, ist es wichtig, dass du beim Design jede Plattform berücksichtigst und dann während der Entwicklung zusätzliche Funktionen für High-End-Plattformen hinzufügst.
Virtualisierte Nanite-Geometrie hilft Plattformen dabei, hochdetaillierte Meshs zu rendern und die Performance zu verbessern, aber sie ist nur für bestimmte High-End-Geräte verfügbar, wie Computer, die mit DirectX 12 laufen. Daher ist es weiterhin wichtig, deine Inhalte zu optimieren, sodass sie auf allen Plattformen gut laufen.
Die folgenden Bilder zeigen Mesh-LODs in den Einstellungen „Episch“, „Hoch“, „Mittel“ und „Niedrig“.
Weitere Informationen zum Erstellen deiner eigenen benutzerdefinierten Assets für UEFN findest du unter Mesh-Design und -Konstruktion.
Minimieren von Draw-Aufrufen bei der Verwendung von Nicht-Nanite-Meshs
Draw-Aufrufe sind der Prozess, der Grafik-API mitzuteilen, was in jedem Frame gezeichnet werden soll und wie es gezeichnet werden soll. Nanite umgeht die Draw-Standardaufrufe, indem es Geometrie in der Szene nach Bedarf streamt. Bei Nicht-Nanite-Meshs initiiert jedes der folgenden Elemente einen Draw-Aufruf in einer Szene:
Jedes einzelne Mesh.
Jedes Material auf einem Mesh.
Jedes Licht.
Jeder Schattenwurf.
Die Vorlage Talisman: Umgebung verwendet sowohl Nanite- als auch Nicht-Nanite-Meshs. Um die Performance bei der Verwendung von Nicht-Nanite Meshs zu optimieren, wurde die Anzahl von Draw-Aufrufen in der Szene durch folgende Schritte minimiert:
Entfernen unkritischer Meshs.
Entfernen unkritischer Mesh-Aufkleber.
Entfernen von Lichtern mit Schattenwurf und Ergänzen der Lichter mit Lichtfunktionen.
Umgang mit den Projekt- und Laufzeit-Speicherbeschränkungen
Die Laufzeit-Speicherverwaltung und die Verwaltung der Projektgröße sind wichtige Komponenten jedes Projekts, das in UEFN erstellt wird. "Talisman: Umgebung" geht durch folgende Aspekte auf diese Herausforderungen ein:
Reduzierung des Projektumfangs.
Wiederverwendung benutzerdefinierter Assets.
Verwalten des Laufzeitspeichers.
Reduzierter Projektumfang
Um die Projektgrößenbeschränkung von 400 MB einzuhalten, wurde der MetaHuman-Charakter in die Vorlage "Talisman: MetaHuman" verschoben. Du findest diese Vorlage im Abschnitt Funktionsbeispiele des Projektbrowsers. Unter Vorlage Talisman: MetaHuman erfährst du mehr über MetaHumans in UEFN.
Detaillierungsgrade
Jedes Mesh, das für den Talisman-Aufbau verwendet wurde, verwendet drei Detaillierungsgrade (LODs), damit das Projekt die Beschränkung von 100.000 Streaming-Speichereinheiten einhält.
Die Einstellungen für den automatischen LOD befinden sich im Statisches-Mesh-Browser.
Die LOD-Meshs werden mit den UEFN-Werkzeugen für den automatischen LOD automatisch generiert und sind bestimmten Qualitätsstufen zugewiesen. Weitere Informationen zur Verwendung von Detaillierungsgraden in UEFN findest du unter Festlegen des Detaillierungsgrades.
Verwaltung des Laufzeitspeichers
Die Vorlage Talisman: Umgebung verwendet eine benutzerdefinierte Streaming-Lösung mit [Datenebenen und dem Sequencer, damit das Level die Streaming-Begrenzung von 100.000 Speichereinheiten einhält. Die vertikale Größe von Bereichen wie dem Frachtraum und die Länge des Korridors bedeutete, dass das Schiff nicht in das World Partition-Streaming-Raster passte.
Jede Datenebene entspricht einem anderen Raum auf der Talisman.
Um diese Beschränkungen zu eliminieren, wurden Datenebenen mit dem Sequencer kombiniert, um Bereiche des Schiffes basierend auf der Position des Spielers zu laden und zu entladen.
Mutatorzonen lösen Lade-Events in der Levelsequenz aus.
Jeder Raum verfügt über eine eigene entsprechende Datenebene und Mutatorzonen, die über das Schiff verteilt sind und Ereignisse in der Levelsequenz auslösen. Diese Events laden und entladen Abschnitte des Schiffes, wenn sich der Spieler durch das Level bewegt. Die Mutatorzonen sind strategisch im Schiffsbereichen platziert, um dies vor dem Spieler zu verbergen.
Diese Lösung ist nicht mit Mehrspieler-Erlebnissen kompatibel. Die Datenebenen und Levelsequenz wurden eingeschlossen, aber die Mutatorzonen wurden entfernt, damit die Vorlage mehrspielerfähig ist.
Verwenden benutzerdefinierter UI-Elemente
Diese Vorlage nutzt Verse, um ein benutzerdefiniertes Auftragssymbol-Widget anzuzeigen und Audio wiederzugeben, wenn der Spieler mit der Konsole im Startraum interagiert.
Das benutzerdefinierte Auftragsbanner wird durch ein Verse-Skript ausgelöst.
Wenn der Spieler das VO-Schaltflächengerät im Mannschaftsquartier verwendet, führt die Skriptdatei starting_sequence_device.verse folgende Schritte aus:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/Diagnostics }
Das Begrüßungsaudio wird abgebrochen, wenn die Audionachricht noch wiedergegeben wird.
Eine Minikarte des Schiffs wird aktiviert, um die Spieler dabei zu unterstützen, die Talisman zu erkunden.
Zeigt den benutzerdefinierten UI-Widget-Blueprint quest_icon_widget an.
Ein Soundclip wird wiedergegeben.
Ausführliche Informationen zur Verwendung von Verse für die Anpassung deiner UEFN-Projekte findest du im Verse Programming Onboarding Guide.
Beleuchtung großer Bereiche
Die Talisman nutzt die globale Lumen-Beleuchtung, um die Beleuchtung der Umgebung zu unterstützen, wodurch der Spieler im ganzen Schiff Schatten und eine akkurate indirekte Beleuchtung wahrnimmt.
Dieser Korridor zeigt alle hier beschriebenen Techniken.
Lumen bietet Umgebungsverdeckung und globale Beleuchtung für Objekte, die nicht durch eine direkte Beleuchtung beleuchtet werden. Lumen ist zwar ein leistungsstarkes Werkzeug zur Erstellung von Beleuchtungslösungen, es ist aber trotzdem wichtig, deine Umgebung zu optimieren, um die Performance zu maximieren. Lumen wird in der Vorlage Talisman: Umgebung mit verschiedenen Optimierungen genutzt.
Der Schattenwurf ist für alle statischen Meshs deaktiviert, die im Level indirekt beleuchtet werden. Lumen bietet hervorragende Schatten für diese Meshs, sodass das Deaktivieren der Eigenschaften Cast Shadows die Performance erhöht, ohne dafür die visuelle Qualität zu opfern.
Für die meisten Lichter in der Vorlage wurde „Schatten werfen“ deaktiviert.
Der Schattenwurf wird auch durch die Verwendung der Lichtfunktionen und eine gestreifte Textur mit einigen Lichtern über Kopf ergänzt.
Das Rauschen und Flackern der Lichter von Lumen durch emissive Licht-Panels wird dadurch reduziert, dass jedes mit einem Spotlight kombiniert wird, das keine Schatten wirft.
Dieses Spotlight verstärkt das Licht über dieses Licht-Panel
Der emissive Wert für jedes Panel wird reduziert und durch ein Spotlight ergänzt, das keine Schatten wirft. Jedes Spotlight erhält einen kleinen Effektradius und bietet zusätzliches Licht, während es gleichzeitig so wirkt, als ob das Licht noch immer über das Licht-Panel kommt.
Die Umgebungsbeleuchtung wurde weiter optimiert, indem für jedes Licht die kleinstmögliche Abbildungsdistanz gewählt wurde. Diese Einstellung blendet jedes Licht außerhalb der Sicht aus, wenn es nicht gerendert werden muss.
Der Beleuchtungskomplexität-Visualizer wurde zusätzlich für die gesamte Beleuchtung der Talisman genutzt.
Der Beleuchtungskomplexität-Visualizer kann mit Alt+7 umgeschaltet werden
Dieser Viewport-Anzeigemodus zeigt die Anzahl der nicht statischen Lichter, die sich in deinem Level auf die Geometrie auswirken, als Farbschattierung und hilft dir, die Performance-Kosten für die Beleuchtung nachzuverfolgen. Dieser Visualizer hilft dabei, die Überlappung der Lichter in dem Level zu minimieren, um so die Performance-Kosten niedrig zu halten.
Mesh-Design und -Konstruktion
Das detaillierte Innere der Talisman wurde mit Kitbashing und benutzerdefinierten Meshs mit mittlerer Polygonzahl erstellt. Kitbashing ist eine leistungsstarke Technik, die hilft, die Anzahl der Assets zu minimieren, die dein Projekt benötigt, und die gleichzeitig die Möglichkeit gibt, die Meshs wiederzuverwenden und zu kombinieren, um neue Geometrie zu erstellen.
Jedes Mesh im Projekt verwendet eine Vielzahl verschiedener Techniken, um die Darstellung des Assets zu verbessern, ohne weitere Geometrie zu ergänzen.
Face Weighted Normals ist eine Technik, die Scheitelpunktnormalen des Modells an den größeren, flachen Flächen ausrichtet, um die Schattierung ohne Reduzierung der Performance zu verbessern.
Die Scheitelpunktnormalen (grüne Linien) werden an den größeren, flachen Flächen ausgerichtet, um die Schattierung zu verbessern.
Details wie Schrauben, Branding und Schaden wurden mit Mesh-Aufklebern hinzugefügt. Diese Aufkleber verwenden benutzerdefinierte UVs, um komplexe Geometrie auf Oberflächen zu projizieren, und haben die Fähigkeit, sich um Ecken zu wickeln oder entlang von Splines zu dehnen und dabei trotzdem ihr Aussehen beizubehalten.
Konzipieren von Materialien mit Dynamic Material Control
Texturen und Materialien bilden häufig den größten Bestandteil eines UEFN-Projekts. Um die Projektgröße weiter zu reduzieren, verwendet die Vorlage einen dynamischen Ansatz für Texturen und Materialien, bei dem die Verwendung einmaliger Textur-Maps vermieden wird. In diesem Endergebnis wurde ein prozeduraler Workflow genutzt, der Umgebungsverdeckung, Rundung und Maskendaten auf dem Mesh mit Scheitelpunktfarben speichert. Die gespeicherten Daten wurden dann verwendet, um die Materialien anzuwenden und zu überblenden.
Scheitelpunktfarbdaten
Es ist am besten, die Verwendung eindeutiger Textur-Maps für jedes Asset zu vermeiden, indem Umgebungsverdeckung, Rundung und Texturmaskendaten mit Scheitelpunktfarben in jedes Mesh gepackt werden. Die Meshs für die Talisman wurden mit unterstützender Geometrie und Mesh-Dichte (Polygone pro Quadratzoll) konzipiert, um eine saubere Gradation zwischen den Scheitelpunktfarben zu erzielen. Das hilft, saubere Übergänge zwischen den Materialien zu erzeugen.
Die Daten werden mit dem folgenden Verfahren gespeichert:
| Karte | Farbkanal |
|---|---|
Umgebungsverdeckung | Rot |
Curvature | Grün |
Material-ID-Maske | Blau |
Weitere Informationen zur Scheitelpunktfarbgebung findest du unter Scheitelpunktfarbmaterialien.
Dann werden Material-Slots auf jedem Mesh genutzt, um zu definieren, welcher Teil des Mesh ein spezifisches Material erhält. Weitere Informationen zu Material-Slots findest du unter FBX-Material-Pipeline.
Dieser Stuhl verfügt über Material-Slots für Metall und Gummi.
Dynamische Materialsteuerung
Meshs für die Talisman verwenden eine Kombination aus fünf Hauptmaterialarten:
Metal
Gestrichenes Metall
Kunststoffe
Gummi
Textilien
Jedes Material stützt sich auf ein einzelnes Hauptmaterial, das an der Welt ausgerichtete Kachelungstexturen und benutzerdefinierte Parameter verwendet, um das Ergebnis zu generieren. Damit werden die Gesamtspeicherkosten der Materialien niedrig gehalten, indem die Künstler die gleichen Materialien im gesamten Schiff wiederverwenden können.
Ein Teil des Hauptmaterials von Talisman: Umgebung
Staub, Kratzer und andere Abnutzungserscheinungen sind ebenfalls im Hauptmaterial enthalten und werden mit parametergesteuerten Masken auf die Meshs angewendet. Diese Parameter werden mit benutzerdefinierten Grundkörperdatendaten im Mesh gespeichert.
Verwenden des Orbitkamera-Geräts
Das Orbitkamera-Gerät bietet eine Ansicht, die dem Spielercharakter folgt. Der Spieler kann die Kamera dabei jedoch nach Belieben drehen, um sich umzusehen. Die Vorlage verwendet dieses Gerät, um dem Spieler die Fähigkeit zu geben, zwischen der Third-Person-Ansicht und einer simulierten Ichperspektive-Ansicht zu wechseln.
Spieler können mit dem Orbitkamera-Gerät zwischen drei verschiedenen Ansichten wechseln.
Das erfolgt über das Verse-Skript camera_switch_mode_device.
# This file handles swapping between different cameras when an input is pressed.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /UnrealEngine.com/Temporary/Diagnostics }
Der Verse-Code wartet darauf, dass der Spieler die Ziel-Kreativmodus-Input-Aktion auslöst, die standardmäßig der rechten Maustaste oder dem linken Trigger eines Controllers zugeordnet ist. Er führt dann folgende Schritte aus:
Die aktuelle Kamera des Kamerastapels wird entfernt.
Die nächste Kamera im Kamera-Array wird abgerufen.
Die neue Kamera wird dem Agent hinzugefügt.
Bei Bedarf wird der Spieler-Charakter ausgeblendet.
Bei Bedarf wird der Spieler-Charakter wieder eingeblendet.