Le middleware de jeu que j'ai rencontré --- Redux, à propos de Redux :
Cours recommandés : Tutoriel C#.
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 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
|
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!