Spiel-Texturen haben spezielle Anforderungen, damit sie im Spiel ordnungsgemäß gerendert werden. Beim Erstellen von Texturen in Unreal Editor für Fortnite (UEFN) mit importierten Bildern musst du sicherstellen, dass die Quellbilddatei eine Zweierpotenz für Höhe und Breite verwendet. Das erhöht die Kompatibilität und Stabilität deiner Insel auf allen Plattformen.
Komprimierte Dateiformate für GPUs (Graphics Processing Units) müssen auf allen Konsolen, Computern und Mobilgeräten Texturen mit einer Zweierpotenz nutzen. Texturen, die nicht der Zweierpotenz-Regel entsprechen, werden bei Lower-End-Plattformen instabil und können zu Spielabstürzen führen. Die Zweierpotenz wird auch beim Textur-Streaming genutzt, um die Texturauflösung auf Plattformen mit weniger Speicher zu reduzieren.
Das Textur-Streaming hilft bei folgenden Punkten:
-
Änderung der Auflösung einer Textur
-
Bestimmung, wie schnell ein Spiel geladen wird
-
Steigerung der visuellen Qualität des Spiels
-
Einsparung von GPU-Speicher
Was ist die Zweierpotenz
Computer und Konsolen verwalten und verarbeiten Daten in eingeschränkten Gruppen und nicht alle gleichzeitig. Dies ist ein ähnliches Prinzip wie beim Rendering von Hintergründen mit der World Partition.
Wenn die Datengruppen die Zweierpotenz-Regel befolgen, etablieren die Datengruppen einen Satz hartcodierter, physischer Beschränkungen für Medien. Wenn diese Einschränkungen nicht befolgt werden, verschwendet die Spiel-Engine wertevolle Ressourcen bei dem Versuch, die Assets ordnungsgemäß zu rendern.
Die Zweierpotenz ist eine Methode, um Spieldaten zu optimieren und Bilder zu rendern, um effizient ein visuelles Erlebnis darzustellen.
Beispiel für zulässige Bildgrößen sind: 256x256, 512x512 oder 1024x2048. Texturen, die nicht die Zweierpotenz verwenden, werden nicht optimiert und führen sowohl zu einer Instabilität als auch zu einer schlechten Performance der Insel.
Zweierpotenz-Texturen ermöglichen UEFN die Nutzung von drei Schlüsselfunktionen:
-
Texturkomprimierung: Reduziert die Speichergröße bei minimalen visuellen Kosten um das ungefähr Achtfache
-
Mipmapping: Die automatische Generierung von Varianten mit geringerer Auflösung
-
Textur-Streaming: Zeigt eine Variante mit niedrigerer Auflösung an, bevor Daten mit einer höheren Auflösung im Speicher gestreamt werden können
In Kombination ermöglichen diese Funktionen, dass sogar ein High-End-Asset mit 4K-Texturen auf jeder Plattform gerendert werden kann. Das liegt daran, dass die Texturen dann hochwertige Varianten mit einer reduzierten Auflösung haben.
Zum Beispiel wären für eine Textur mit 4000x4000 und ohne Alpha-Ebene 64 Megabyte Speicher erforderlich. Diese müsste auf einmal geladen werden und würde mit 4000x4000 angezeigt, auch wenn sie auf einer kleinen Reklametafel, die sich weit entfernt vom Spieler befindet, [Aliasing] (unreal-editor-for-fortnite-glossary#aliasing) erzeugt. Texturgrößen, die zu groß sind, können bei Geräten, die nicht über genug Speicher verfügen, zu Abstürzen führen.
Im Gegensatz dazu verbraucht die 4096x4096-Version einer Textur, welche die Standardkomprimierung verwendet, nur 8 Megabyte, die progressiv gestreamt werden und auf die Entfernung weniger Aliasing produzieren. Texturgrößen, die zu groß sind, erhöhen auch die Paketgröße, führen aber nicht dazu, dass das Gameplay abstürzt.
Anforderungen zu Größenänderung einer Textur für UEFN
Um sicherzustellen, dass alle Inseln auf allen Zielplattformen gut funktionieren, stellt UEFN bestimmte Anforderungen an Textur-Assets.
Wenn dein Projekt Texturelemente enthält, die diese Anforderungen nicht erfüllen, schlägt die Validierung dieser Texturen fehl und du kannst dein Projekt nicht hochladen.
-
Wenn deine Textur der UI-Texturgruppe zugewiesen ist, müssen ihre Abmessungen kleiner als die maximale Größe von 2048x2048 sein. Die Abmessungen der Textur müssen jedoch keine Zweierpotenzen sein. (UI-Texturen werden normalerweise nicht gestreamt, sodass sie immer so scharf wie möglich erscheinen.)
-
Wenn deine Textur nicht der UI-Texturgruppe zugewiesen ist, müssen ihre Abmessungen kleiner als die maximale Größe von 4096x4096 sein. Wenn sie außerdem mehr Pixel enthält als der Mindestschwellenwert (1024 x 1024 oder 1048576), muss sie streambar sein. Das bedeutet Folgendes:
-
Jede ihrer Dimensionen muss eine Zweierpotenz sein (zum Beispiel 256 x 256, 512 x 512, 1024 x 1024 usw.).
Das Bild muss nicht quadratisch sein, solang jede Dimension eine Zweierpotenz ist. z. B. 256 x 512, 512 x 1024, 256 x 1024 usw.
-
-
Die Eigenschaft Nie streamen muss deaktiviert werden.
-
Das muss so eingestellt sein, dass Mipmaps generiert werden.
-
Die gesamten Speicherkosten aller Nicht-Streaming-Texturen in deinem Projekt müssen unter einem voreingestellten Maximalbudget liegen. Die Speicherkosten für dein Projekt werden ermittelt, indem die Speicherkosten aller Texturen addiert werden, deren Eigenschaft „Nie streamen“ aktiviert ist. Dazu gehören:
-
Alle Texturen, deren Abmessungen keine Zweierpotenzen sind (und die nicht mit der Eigenschaft „Auffüllen und Größenänderung“ auf Zweierpotenzen aufgefüllt oder gestreckt wurden). Für diese Texturen ist die Eigenschaft „Nie streamen“ immer automatisch aktiviert.
-
Alle andere Texturen mit der Eigenschaft „Nie Stream“ wurden manuell aktiviert.
-
Jede Textur verfügt über eine Texturgruppeneinstellung, die ihre erwartete Verwendung angibt. Du kannst diese Gruppe und die anderen oben genannten Textureigenschaften festlegen, indem du im Inhaltsbrowser auf das Textur-Asset doppelklickst, um den Textur-Editor zu öffnen.
Skalieren von Texturen
In UEFN können alte, importierte Texturen, die ungleichmäßige Abmessungen oder eine aufgeblähte Größe verwenden, gemäß der Zweierpotenz skaliert werden. Suche und korrigiere sich verschlechternde Texturen anhand der folgenden Schritte:
-
Öffne die Inhalts-Schublade oder den Inhaltsbrowser und stelle sicher, dass der Stamminhaltsordner deines Projekts ausgewählt ist, der sich unter FortniteGame auf der linken Seite der Dateibaum-Ansicht befindet.
-
Suche unter Alle den Ordner mit der Bezeichnung DeinProjektname Inhalt.
-
Gib in der Suchleiste oben in der Inhalts-Schublade
NeverStream==true&&TextureGroup!=UI
ein. Damit wird eine Abfrage ausgeführt, um alle betroffenen Assets zu identifizieren.
Alle Assets, die in dieser gefilterten Ansicht angezeigt werden, sind betroffen. Auch wenn ein wenig Zeit erforderlich ist, das zu korrigieren, verbessert es die Leistung deines Levels.
Es gibt zwei Methoden, um betroffene Texturen zu aktualisieren, die sich nicht in der UI-Gruppe befinden.
Option A verwendet die UEFN-Massenbearbeitung-Fähigkeiten, um Texturen zu gruppieren und in einem Schritt zu bearbeiten. Das ist die schnellste Methode, um deine Texturen automatisch zu korrigieren, indem sie auf das richtige Seitenverhältnis aufgefüllt werden. Dieses Auffüllen kann aber zu einer unnötigen Speicherverwendung führen.
Option B erfordert etwas mehr Zeit, nutzt das Speicherbudget aber optimal, wenn du mehrere betroffene Texturen auflösen musst. Mit dieser Option kannst du Texturen bearbeiten und erneut hochladen, um unnötiges Auffüllen zu vermeiden.
Option A
-
Klicke im Inhaltsbrowser auf das Hamburger-Menü neben der Suchleiste und wähle Texturen aus. Alle Texturen werden im Inhaltsbrowser isoliert.
-
Klicke auf das Einstellungen-Symbol und aktiviere Spalten. Alle Texturen werden jetzt in Spalten im Inhaltsbrowser aufgeführt.
-
Durchsuche die Spalte Abmessungen nach Assets, die keine Zweierpotenz-Größen verwenden.
-
Wähle alle Texturen aus, die nicht der Zweierpotenzregel entsprechen.
-
Klicke mit der rechten Maustaste in den Inhaltsbrowser und wähle Asset-Aktionen > Auswahl in Eigenschaftsmatrix bearbeiten. Damit wird das Tool zur Massenbearbeitung geöffnet, in dem alle ausgewählten Texturen auf dem Tab „Komponenten-Editor“ aufgegliedert sind.
-
Wähle alle Texturdateinamen im Stamm-Abschnitt aus.
Klicke auf das Bild, um es zu vergrößern.
-
Öffne die Textur-Option auf dem Tab Angeheftete Spalten.
-
Wähle im Dropdown-Menü Zweierpotenz-Modus die Option Auf Zweierpotenz auffüllen aus. Unten im Editor-Fenster wird ein Fortschrittsbalken angezeigt.
Die Texturen wurden alle in die Zweierpotenz konvertiert und funktionieren jetzt auf allen Plattformen.
Option B
-
Doppelklicke auf die Textur, um den Textur-Editor zu öffnen.
-
Gib in der Suchleiste oben im Detail-Panel den Namen deiner Quelldatei ein. Das Ergebnis zeigt den Dateipfad auf deinem Computer, der als Originalquelldatei der Textur verwendet wird.
Klicke auf das Bild, um es zu vergrößern.
-
Ändere die Größe der Textur mit einem Bildeditor wie GIMP oder Paint.NET 5 auf die nächste Zweierpotenz. Du kannst sogar Paint verwenden, wenn die Textur keine Alpha-Ebene benötigt.
-
Zu den Zweierpotenz-Größen gehören 256, 512, 1024 usw.
-
Zum Beispiel sollte eine Textur mit 500x500 die Größe 512x512 haben und eine Textur mit 600x256 die Größe 512x256.
-
Änderungen im Seitenverhältnis sollten keine nachteiligen Effekte auf deine Insel haben.
-
-
Klicke mit der rechten Maustaste die Textur im Inhaltsbrowser und wähle die Option Reimportieren aus.
Wenn die Original-Texturdatei in deinen Dateien fehlt:
-
Klicke mit der rechten Maustaste die Textur im Inhaltsbrowser und wähle Asset-Aktionen > Exportieren, um eine neue Kopie zu erstellen.
-
Ändere die Größe der Textur auf die nächste Zweierpotenz-Größe. Klicke dann mit der rechten Maustaste im Inhaltsbrowser auf die Textur und wähle die Option Mit neuer Datei reimportieren aus. Doppelklicke auf die Textur, um den Textur-Editor zu öffnen, wenn die Datei importiert wurde.
-
Gib in der Detail-Suchleiste Never Stream ein und setze die Option dann auf False. Wenn sie nicht auf False gesetzt werden kann, musst du sicherstellen, dass die Spezifikation Importiert oben anzeigt, dass dein Bild eine Zweierpotenz-Größe hat.
-
Such im Details-Panel nach der Option Mip-Generierungseinstellungen. Wähle dann im Dropdown-Menü die Option Aus Texturgruppe.
-
Such im Details-Panel nach der Option Komprimierungseinstellungen und wähle dann im Dropdown-Menü die Option Standard (DXT1/5) aus.
Prüfe, sobald du diese Schritte abgeschlossen hat, ob du die eingeschränkte Textur erfolgreich entfernt hast, indem du in der Suchleiste des Inhaltsbrowsers erneut nach NeverStream==true&&TextureGroup!=UI
suchst. Die von dir aktualisierten Assets sollten hier jetzt nicht mehr aufgeführt sein.
Ändern einer Einzeltextur
Befolgen die folgenden Schritte, wenn du nur eine Textur hast, die nicht der Zweierpotenz-Regel folgt.
-
Doppelklicke auf die Textur, um den Textur-Editor zu öffnen.
Klicke auf das Bild, um es zu vergrößern.
-
Gib in der Details-Suchleiste Zweierpotenz-Modus ein. Wähle dann im Dropdown-Menü Auffüllen und Größenänderung die Option Auf Quadrat auffüllen aus.
-
Suche nach der Option Never Stream und setze sie auf False.
-
Such nach der Option Mip-Generierungseinstellungen. Wähle dann im Dropdown-Menü die Option Aus Texturgruppe.
-
Such nach der Option Komprimierungseinstellungen und wähle dann im Dropdown-Menü die Option Standard (DXT1/5) aus.
Prüfe, sobald du diese Schritte abgeschlossen hat, ob du die eingeschränkte Textur erfolgreich entfernt hast, indem du in der Suchleiste des Inhaltsbrowsers nach NeverStream==true&&TextureGroup!=UI
suchst. Die von dir aktualisierten Assets sollten nicht mehr in der Liste aufgeführt sein.
Ungültige Texturen finden
Textur-Assets, die den oben genannten Anforderungen nicht entsprechen, werden im Inhaltsbrowser durch ein Fehlersymbol gekennzeichnet. Wenn du mit der Maus über das Asset fährst, werden oben im Tooltip weitere Details zum spezifischen Problem angezeigt:
Klicke auf das Bild, um es zu vergrößern.
Ungültige Texturen anpassen
Die beste Möglichkeit, ungültige Texturen zu beheben, die du aus externen Dateien importiert hast, besteht darin, sie in der Originalanwendung zu bearbeiten, mit der du sie erstellt hast, und das Asset dann erneut zu importieren. Dazu kannst auch eine andere spezielle Bildbearbeitungsanwendung verwenden, um die Texturen zu bearbeiten, bevor du sie in UEFN importierst.
Stelle sicher, dass die Abmessungen jedes Bildes kleiner sind als die oben angegebenen Maximalabmessungen. Wenn du das Bild nicht für die Benutzeroberfläche verwendest, lege sowohl für die Höhe als auch für die Breite des Bildes Zweierpotenzen fest. Das Bild muss nicht quadratisch sein, solang jede Dimension eine Zweierpotenz ist.
Alternativ bietet UEFN eine integrierte Möglichkeit, deine Texturgrößen automatisch den UEFN-Anforderungen anzupassen. Um dies zu tun:
-
Wählt im Inhaltsbrowser eine oder mehrere ungültige Texturen aus.
-
Macht einen Rechtsklick auf die Miniaturansicht einer Textur und wählt Textur angleichen im kontextbezogenen Menü aus.
Der Editor versucht, die Eigenschaften der ausgewählten Texturen anzupassen, um Validierungsprobleme zu vermeiden, und schreibt seine Ergebnisse in das Output-Log.
Die Operation hat die folgenden Effekte:
-
Wenn sich die Textur in der UI-Texturgruppe befindet und ihre Abmessungen größer als das zulässige Maximum sind, wird die Einstellung Komprimierung > Erweitert > Maximale Texturgröße der Textur angepasst, um die maximale Auflösung der Textur zu begrenzen, die zur Laufzeit geladen werden kann.
-
Wenn sich die Textur nicht in der UI-Texturgruppe befindet und ihre Abmessungen größer als das zulässige Maximum sind, wird die LOD-Ausrichtung-Einstellung der Textur wird so angepasst, dass die größten Mipmaps der Textur verworfen werden. Dies begrenzt wirksam die maximale Auflösung der Textur, die zur Laufzeit geladen werden kann.
-
Wenn sich die Textur nicht in der UI-Texturgruppe befindet und ihre Abmessungen keine Zweierpotenzen sind, wird die Einstellung Auffüllen und Größenänderung der Textur auf Dehnen auf Zweierpotenz gesetzt.
-
Wenn sich die Textur nicht in der UI-Texturgruppe befindet, ist ihre Einstellung Nie streamen deaktiviert.