Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeutet Redux im Spiel?

Was bedeutet Redux im Spiel?

(*-*)浩
(*-*)浩Original
2019-05-14 14:32:4410139Durchsuche

Die Spiel-Middleware, auf die ich gestoßen bin --- Redux, über Redux:

Empfohlene Kurse: C#-Tutorial.

Was bedeutet Redux im Spiel?

Substance Redux ist eine Texturverarbeitungssoftware plus Middleware, die speziell für die Texturgenerierung und -komprimierung verwendet wird. Laut Benutzerhandbuch kann es Textursätze optimieren und die Leistung bestehender Komprimierungsalgorithmen um 50 % oder mehr verbessern. Die Komprimierungsmethode kann verlustfreie Komprimierung oder verlustfreie Komprimierung sein. Das Komprimierungsverhältnis und die Bildqualität können vom Benutzer während der Komprimierung angepasst werden.

Redux kann Batch-Texturdateien komprimieren und verpacken. Der Vorgang besteht darin, ein neues Projektprojekt zu erstellen, mehrere Texturdateien für das Projekt zu importieren und die Komprimierungsparameter für jede Textur festzulegen. Exportieren Sie abschließend die komprimierte Datei. Redux kann Bilddateien in verschiedenen Formaten komprimieren. Wenn die Länge und Breite des Eingabebilds nicht 2 hoch N betragen, streckt Redux es automatisch auf 2 hoch N. Die von ReduxSDK bereitgestellte Demo hat die Funktion, komprimierte Dateien in das DDS-Format zu dekomprimieren.

Das größte Verkaufsargument von Redux ist seine Bildgenerierungsfunktion. Es kann mehrere einfache Grafikelemente verwenden, um komplexe Bilder durch Algorithmen zu generieren. Die Grafikelemente müssen nur wenig Speicherplatz beanspruchen und die Generierungsmethode Laut offizieller Aussage ist der größte Teil des Spiels, der Speicherplatz beansprucht, die Textur, die den von der Textur belegten Speicherplatz auf ein Minimum reduzieren kann Das Release-Paket des Spiels auf höchstens die Hälfte reduzieren.

2. Redux-Komprimierungsmethode

Redux bietet drei Texturkomprimierungsmethoden:

Redux-Modus 1 (Redux-Modus 1) ist in den meisten Fällen ein verlustfreier Komprimierungsalgorithmus mit dem kleinsten Komprimierungsverhältnis. Normalerweise wird es jedoch am schnellsten gerendert.

Redux-Modus 2 ist ein schneller Komprimierungsalgorithmus, der qualitativ hochwertige Bilder liefert, jedoch mit einer Größenreduzierung von etwa 40 %.

Redux-Modus 3 erreicht eine grobe Balance zwischen Bildqualität und Größenreduzierung. Die Bildqualität ist geringer als bei Modus 2, allerdings werden mit diesem Modus höhere Komprimierungsraten erreicht. Die Größenreduzierungsrate beträgt etwa 60 %.

Im tatsächlichen Betrieb habe ich 300 DDS-Dateien komprimiert und festgestellt, dass die von Redux-Modus 2 und Redux-Modus 3 generierten Dateigrößen gleich waren. Das spezifische Komprimierungsformat dieser DDS-Dateien war mir damals egal, ich schätze, die meisten davon waren DXT5. Redux-komprimierte Dateien

Redux komprimiert hauptsächlich Batch-Texturdateien. Die komprimierten Dateien sind in zwei Kategorien unterteilt. Eine „Header“-Datei, die das Verzeichnis der Hauptdatendateien enthält und dem Dekomprimierungscode den Speicherort jeder Textur bereitstellt. Diese Datei hat die Erweiterung .RDXH und speichert Details zu jeder Textur, wie z. B. Texturname, Ordner und Pfad. Eine oder mehrere „Daten“-Dateien, die die eigentlichen komprimierten Texturen enthalten und die Erweiterung .RDXC haben. Der zweite Dateityp wird in „Blöcken“ vorliegen. Es ist möglich, alle Texturen in einer großen Datei zu speichern, sodass nur ein „Datenblock“ verarbeitet werden muss. Für exportierte komprimierte „Chunk“-Dateien gibt es drei Einstellungen:

1. Keine Chunks – eine große Datendatei, die jede einzelne Textur im Projekt enthält.

2 Größenbeschränkung – zum Beispiel wird alle 4 MB Daten ein neuer Block erstellt.

3. Blöcke nach Inhalt aufteilen – d. h. für jede Textur einen neuen Block erstellen. Zu diesem Zeitpunkt werden eine Header-Datei und mehrere Chunk-Dateien generiert.

Wenn nach dem Generieren der komprimierten Datei Änderungen an der ursprünglichen Texturdatei vorgenommen werden, muss die komprimierte Datei neu generiert werden. Diese Art der Komprimierung passt nicht ganz zu meiner Vorstellung. Ich möchte eine komprimierte Datei anhand eines Texturnamens finden, die Datei laden, sie dekomprimieren und die Textur generieren. Wenn Sie Redux verwenden, muss die Engine zunächst eine .RDXH-Header-Datei laden und ein von Redux definiertes ReduxHandle-Objekt generieren. Suchen Sie dann den Texturindex anhand des Texturnamens und verwenden Sie dann die von Redux bereitgestellte Schnittstelle, um die Texturdaten über den Indexwert abzurufen. Erstellen Sie ein Redux-Projekt, das nur eine Texturdatei enthält, sodass die generierte komprimierte Datei eine Textur enthält. Dies ist sehr mühsam und erfordert viel Arbeit.

4. Redux-Dekomprimierung

Die von ReduxSDK bereitgestellte Demo dekomprimiert die komprimierte Datei in Daten, die dem DDS-Format entsprechen. Ich habe ihre Leistung getestet: Verwenden Sie zunächst 300 DDS-Dateien zum Testen. Die ursprüngliche Dateigröße beträgt 59,6 MB und bei Komprimierung mit RAR beträgt die Größe 25,9 MB. Das Komprimierungsformat von DDS wurde zu diesem Zeitpunkt nicht aufgezeichnet. Es wird geschätzt, dass es sich bei den meisten um DXT5 handelt Texturerstellungszeit synchronisieren 2

Keine Komprimierung Redux-Modus1

59,6M

2355ms

6172 ms

6133 ms


Verlustfreie Komprimierung
19,5M
743ms
25016 ms
24985 ms

Redux Mode2

40 % Reduzierung

17,3 Mio.
702 ms
25862 ms
25860 ms

Redux Mode3

50 % Reduzierung

17,3 Mio.
674ms
25878 ms
25911ms

Redux-Modus1

Verlustfreie Komprimierung

Textur pro Block

20,6M

813ms

(Dies ist der Zeitpunkt, zu dem ReduxHandle erstellt wird)

29027 ms
29089 ms

Lokal laden Mit der Engine dauert das Erstellen dieser 300 Texturen aus der Datei etwa 8 Sekunden. Das Erstellen von 300 Texturen durch Dekomprimieren der Redux-Datei dauert mehr als 30 Sekunden, was viermal länger ist als das lokale Laden.

Für Dateien unterschiedlicher Größe wird die zum Erstellen von Texturen benötigte Zeit in der folgenden Tabelle angezeigt:

Texturgröße
纹理大小
文件大小
引擎加载创建时间
Redux Mode1创建时间
Redux Mode2创建时间
Redux Mode3创建时间
128*128
11K
1ms
105 ms
31 ms
30 ms
256*256
65K
11 ms
228 ms
82 ms
82 ms
512*512
257K
49 ms
206 ms
140 ms
137 ms
1024*1024
1025K
176 ms
297 ms
418 ms
415 ms
2048*2048
5462K
242 ms
2263 ms
2265 ms
2294 ms
Dateigröße Erstellung beim Laden der Engine Zeit Redux-Modus1-Erstellungszeit Redux-Modus2-Erstellungszeit Redux Mode3-Erstellungszeit 128*128 11K 1ms 105 ms 31 ms 30 ms 256*256 65K 11 ms 228 ms 82 ms 82 ms 512*512 257K 49 ms 206 ms 140 ms 137 ms 1024*10241025K 176 ms 297 ms 418 ms 415 ms 2048*2048 5462K 242 ms 2263 ms 2265 ms 2294 ms

5. Die Bildgenerierungsfunktion

verwendet mehrere einfache Grafikelemente, um mithilfe von Algorithmen komplexe Bilder zu generieren. Das größte Problem besteht darin, dass sich Kunst nicht an diese Art des Zeichnens anpassen kann. Unter normalen Umständen werden Kunstzeichnungstabletten in PS verwendet Für Bilder erfordert Redux, dass Künstler zunächst eine analytische Methode anwenden, um sich vorzustellen, aus wie vielen grafischen Elementen ein Bild besteht, und dann die Kombination grafischer Elemente zu entwerfen, die für normale Menschen zu subversiv ist Nutzen Sie die bereitgestellte Software effizient zum Zeichnen von Bildern. Aus diesem Grund wurde diese Middleware letztendlich nicht verwendet

6. Softwareprobleme

(1) Stellen Sie beim Festlegen der Projekteigenschaften die von Mode2 und Mode3 generierten komprimierten Dateien so ein, dass sie gleich sind.

(2) Der Redux-Modus3 in der Komprimierungseinstellung für eine einzelne Textur unterscheidet sich vom Modus3 in den Projekteigenschaften.

Es gibt keinen Unterschied zwischen der Einstellung von Redux Mode2 und Redux Mode3

(3) Bei einigen Texturdateien ist die komprimierte Datengröße größer als die unverarbeitete Datengröße.

Die ursprüngliche DDS-Dateigröße beträgt 6,475 KB und die komprimierte Größe beträgt 6,682 KB

Die ursprüngliche DDS-Dateigröße beträgt 57,6 KB und die komprimierte Größe beträgt 140,9 KB

(4) Die Verwendung einer verlustbehafteten Komprimierung führt bei einigen Texturen zu deutlich fleckigen Texturen

(5) Die Version, die ich damals verwendete, führte zum Absturz der Software, wenn die Anzahl der Texturen zu groß war.

(6) Redux-Thread ist nicht sicher, daher können nicht mehrere Texturen gleichzeitig dekomprimiert werden.

7. Redux Postscript

Mein persönlicher Eindruck von Redux ist: Bei der aktuellen Entwicklung ist weder die Festplattengröße noch der Speicherverbrauch ein Problem Wir verwenden oft einige Algorithmen, die das Gegenteil tun, nämlich Zeit gegen Raum zu tauschen. Die oben genannten Materialien wurden von mir nur als Referenz zusammengestellt Ich weiß nicht, wie sich Redux derzeit entwickelt, und ich weiß nicht, wie viele Spiele auf dem Markt es verwenden, und es gibt nicht viele Webseiten darüber. Vielleicht wird sich Redux in mobilen Spielen entwickeln Immerhin sind mobile Spiele jetzt verfügbar. Der Speicherplatz der PC-Version ist viel kleiner als der der PC-Version.

Das obige ist der detaillierte Inhalt vonWas bedeutet Redux im Spiel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet Standard in C#Nächster Artikel:Was bedeutet Standard in C#