Maison  >  Article  >  développement back-end  >  Que signifie redux dans le jeu ?

Que signifie redux dans le jeu ?

(*-*)浩
(*-*)浩original
2019-05-14 14:32:4410113parcourir

Le middleware de jeu que j'ai rencontré --- Redux, à propos de Redux :

Cours recommandés : Tutoriel C#.

Que signifie redux dans le jeu ?

Substance Redux est un logiciel de traitement de texture ainsi qu'un middleware spécifiquement utilisé pour la génération et la compression de textures. Selon son guide d'utilisation, il peut optimiser les ensembles de textures et améliorer les performances des algorithmes de compression existants de 50 % ou plus. La méthode de compression peut être une compression sans perte ou une compression sans perte. Le taux de compression et la qualité de l'image peuvent être personnalisés par l'utilisateur pendant la compression.

Redux peut compresser et empaqueter des fichiers de texture par lots. Le processus opérationnel consiste à créer un nouveau projet de projet, à importer plusieurs fichiers de texture pour le projet et à définir les paramètres de compression de chaque texture. Exportez enfin le fichier compressé. Redux peut compresser des fichiers image dans une variété de formats. Si la longueur et la largeur de l'image d'entrée ne sont pas de 2 à la puissance N, Redux l'étirera automatiquement à 2 à la puissance N. La démo fournie par ReduxSDK a pour fonction de décompresser les fichiers compressés au format DDS.

Le principal argument de vente de Redux est sa fonction de génération d'images. Il peut utiliser plusieurs éléments graphiques simples pour générer des images complexes via des algorithmes. Les éléments graphiques ne doivent occuper qu'une petite quantité d'espace disque et la méthode de génération. est également économisé. Pas beaucoup d'espace disque. Selon leur déclaration officielle, la plus grande partie du jeu qui occupe de l'espace disque est la texture. L'utilisation de Redux peut réduire au minimum l'espace disque occupé par la texture, réduisant ainsi la taille de. le package de sortie du jeu à la moitié au maximum 1.

2. Méthode de compression Redux

Redux propose 3 méthodes de compression de texture :

Redux Mode 1 (Redux Mode 1) est un algorithme de compression sans perte avec le plus petit taux de compression dans la plupart des cas. Cependant, c'est généralement le rendu le plus rapide.

Le mode Redux 2 est un algorithme de compression rapide qui fournit des images de haute qualité, mais avec une réduction de taille d'environ 40 %.

Le mode Redux 3 atteint un équilibre approximatif entre la qualité de l'image et la réduction de la taille. La qualité de l'image est inférieure à celle du mode 2, mais des taux de compression plus élevés sont obtenus avec ce mode. Le taux de réduction de taille est d'environ 60 %.

En fonctionnement réel, j'ai compressé 300 fichiers DDS et j'ai constaté que les tailles de fichiers générées par le mode Redux 2 et le mode Redux 3 étaient les mêmes. Je ne me souciais pas du format de compression spécifique de ces fichiers DDS à l'époque, je suppose que la plupart d'entre eux étaient du DXT5

3. Fichiers compressés Redux

Redux compresse principalement les fichiers de texture par lots. Les fichiers compressés sont divisés en deux catégories. Un fichier « header » qui contient le répertoire des principaux fichiers de données et fournit l'emplacement de chaque texture au code de décompression. Ce fichier porte une extension .RDXH et stocke des détails sur chaque texture, tels que le nom de la texture, le dossier et le chemin. Un ou plusieurs fichiers de « données » contenant les textures compressées réelles et portant l'extension .RDXC. Le deuxième type de fichiers sera en « blocs ». Il est possible de stocker toutes les textures dans un seul gros fichier afin qu'un seul « morceau » de données doive être traité. Pour les fichiers "chunk" compressés exportés, il existe trois paramètres :

1. No Chunks - un gros fichier de données qui contient chaque texture individuelle du projet

2. limite de taille - par exemple, un nouveau morceau est créé tous les 4 Mo de données ;

3. Morceaux divisés en fonction du contenu (diviser les blocs) - c'est-à-dire créer un nouveau bloc pour chaque texture. À ce stade, un fichier d’en-tête et plusieurs fichiers chunk seront générés.

Après avoir généré le fichier compressé, s'il y a des modifications dans le fichier de texture d'origine, le fichier compressé doit être régénéré. Ce type de compression ne correspond pas tout à fait à mon idée. Ce que je veux, c'est trouver un fichier compressé par un nom de texture, charger le fichier, le décompresser et générer la texture. Si vous utilisez Redux, le moteur doit d'abord charger un fichier d'en-tête .RDXH et générer un objet ReduxHandle défini par Redux. Recherchez ensuite l'indice d'indice de texture en fonction du nom de la texture, puis utilisez l'interface fournie par Redux pour obtenir les données de texture via la valeur d'index. Créez un projet Redux qui contient un seul fichier de texture, afin que le fichier compressé généré contienne une seule texture. C'est très gênant et nécessite beaucoup de travail.

4. Décompression Redux

La démo fournie par ReduxSDK décompresse le fichier compressé en données conformes au format DDS. J'ai testé ses performances : utilisez d'abord 300 fichiers DDS pour les tests. La taille du fichier d'origine est de 59,6 Mo et, s'il est compressé à l'aide de RAR, la taille est de 25,9 Mo. Le format de compression du DDS n'a pas été enregistré à l'époque. On estime que la plupart d'entre eux sont des DXT5 🎜>Temps de chargement du fichier

Synchroniser le temps de création de texture 16172 ms

. Synchroniser le temps de création de texture 2

Aucune compression
59,6M
2355ms

6133 ms


Mode Redux1
Compression sans perte
19,5M
743ms
25016 ms
24985 ms

Mode Redux2

40% de réduction

17,3M
702ms
25862 ms
25860 ms

Redux Mode3

50% de réduction

17,3M
674ms
25878 ms
25911ms

Mode Redux1

Compression sans perte

Texture par morceau

20,6 M

813 ms

(C'est le moment où ReduxHandle est créé)

29027ms
29089ms

Charger local avec le moteur Il faut environ 8 secondes pour créer ces 300 textures à partir du fichier. Il faut plus de 30 secondes pour créer 300 textures en décompressant le fichier Redux, ce qui est 4 fois plus long qu'un chargement local.

Pour les fichiers de différentes tailles, le temps utilisé pour créer les textures est indiqué dans le tableau suivant :

Taille de la texture
纹理大小
文件大小
引擎加载创建时间
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
Taille du fichier Création du chargement du moteur heure Heure de création Redux Mode1 Heure de création Redux Mode2 Heure de création du 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*10241025K 176 ms 297 ms 418 ms 415 ms 2048*2048 5462K 242 ms 2263 ms 2265 ms 2294 ms

5. La fonction de génération d'images

utilise plusieurs éléments graphiques simples pour générer des images complexes via des algorithmes. Le plus gros problème ici est que l'art ne peut pas s'adapter à cette façon de dessiner. Dans des circonstances normales, des tablettes de dessin artistique sont utilisées dans PS. images, Redux oblige les artistes à utiliser une méthode analytique pour imaginer d'abord le nombre d'éléments graphiques constitués d'une image, puis concevoir la combinaison d'éléments graphiques. Comment faire en sorte que les éléments graphiques génèrent des images est trop subversif pour les gens ordinaires. utiliser efficacement le logiciel qu'il fournit pour dessiner des images Pour cette raison, ce middleware n'a finalement pas été utilisé

6. Problèmes logiciels

(1) Lors de la définition des propriétés du projet, les fichiers compressés générés en définissant Mode2 et Mode3 sont les mêmes.

(2) Le Redux Mode3 dans le paramètre de compression pour une seule texture est différent du Mode3 dans les propriétés du projet.

Il n'y a aucune différence entre le réglage du Mode Redux2 et du Mode Redux3

(3) Pour certains fichiers de texture, la taille des données compressées est supérieure à la taille des données non traitées.

La taille du fichier DDS d'origine est de 6,475 Ko et celle compressée de 6,682 Ko

La taille du fichier DDS d'origine est de 57,6 Ko et celle compressée de 140,9 Ko

(4) Utiliser la compression avec perte produira des textures marbrées évidentes pour certaines textures

(5) La version que j'utilisais à l'époque provoquait le crash du logiciel si le nombre de textures était trop grand.

(6) Le thread Redux n'est pas sûr, donc plusieurs textures ne peuvent pas être décompressées en même temps.

7. Redux Postscript

Mon sentiment personnel à propos de Redux est le suivant : avec le développement actuel, la taille du disque dur n'est pas un problème, et le plus gros problème n'est pas non plus d'améliorer l'efficacité. Nous utilisons souvent des algorithmes qui échangent de l'espace contre du temps. Redux fait le contraire. Tout ce qu'il fait, c'est échanger du temps contre de l'espace. Les documents ci-dessus ont été compilés par moi il y a deux ou trois ans. Les données de test de performance dans l'article sont uniquement à titre de référence. , je ne sais pas comment Redux se développe actuellement, et je ne sais pas combien de jeux sur le marché l'utilisent. J'ai recherché sur Google, et il n'y a pas beaucoup de pages Web à ce sujet. Peut-être que Redux se développera dans les jeux mobiles. , après tout, les jeux mobiles sont désormais L'espace disque de la version PC est beaucoup plus petit que celui de la version PC.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie par défaut en C#Article suivant:Que signifie par défaut en C#