Quel est l'état de l'art en matière d'expédition de graphiques de jeu tels que de nombreux petits fichiers BMP? [fermé]

9

Nous avons beaucoup de petits fichiers BMP qui, je pense, seraient plus faciles à copier si nous les avions combinés dans un grand TAR / ZIP / peu importe.

Quel est l'état de l'art en matière d'expédition de graphiques de jeu?

Nous utilisons C # et connaissons zlib. Réfléchissez simplement pour voir s'il existe d'autres solutions meilleures que zlib.

foobar
la source

Réponses:

7

Vous pouvez également consulter SharpZipLib ou DotNetZip - DotNetZip vous donne accès à un fichier Streamdirectement, ce qui est utile car la plupart des bibliothèques C # peuvent être chargées à partir de flux (par opposition aux fichiers). De plus, DotNetZip utilise le Ms-PL (BSD-Like), au lieu de la GPL avec une exception juridiquement discutable.

Une autre option consiste à utiliser des atlas de texture - au lieu d'avoir de nombreuses petites images, il y en a quelques grandes. Ceux-ci se chargent en fait légèrement plus rapidement et sont légèrement plus rapides à l'exécution si vous êtes intelligent avec la façon dont vous les dessinez.

Enfin, vous pouvez exécuter chaque type d'actif via le compresseur sans perte correspondant (PNG, FLAC, etc.) et les stocker dans un fichier plat (essentiellement un fichier zip avec compression désactivée). N'oubliez pas d'éviter de compresser les données compressées, car cela augmentera la taille dans la plupart des cas.

Quelques antériorités:

  • MPQ : Probablement aussi bonnes que possible pour les ressources du jeu, les recherches sont conçues pour être rapides (table de hachage sur disque, etc.). Chaque type de fichier (pris en charge) possède un compresseur unique.
  • Quake PAK : Il s'agit essentiellement d'une structure de fichier plate.
  • Doom WAD : un peu spécifique à Doom, mais mérite d'être étudié.
Jonathan Dickinson
la source
1

Une option consiste à stocker des images dans le même format de compression que vous utilisez pour créer des textures compressées. Cela a l'avantage que vous n'allez pas convertir un format avec perte en un autre, mais vous stockez les données dans un format avec perte. Selon les textures, il peut encore y avoir quelque chose à gagner en stockant ces fichiers dans une archive compressée.

Voir cette réponse pour un peu plus d'informations sur les textures compressées: https://gamedev.stackexchange.com/a/5177/3505

aaaaaaaaaaaa
la source
0

ZLIB pourrait être une bonne réponse, mais si vous êtes au courant de l'ouverture de vos actifs par des personnes, vous pouvez également créer votre propre format de fichier pour stocker vos actifs, ce n'est pas si difficile que cela.

Voici comment vous pouvez le faire.

Il est en C, mais ne devrait pas être difficile à apprendre, car C # est un peu comme C et C ++.

Bien sûr, les personnes qui ont encore des connaissances supérieures peuvent capter vos ressources, vous pouvez ajouter peu de cryptage si vous le souhaitez, pas trop dur.

Cela peut être très utile, mais il ne fera que joindre vos fichiers. Pour la compression aussi, vous avez deux choix.

  1. Créez votre fichier de ressources complet, compressez-le et expédiez.
    Cette méthode est facile, mais pas très bonne, vous devez tout décompresser si vous voulez utiliser une seule ressource.

  2. Compressez chaque ressource et ajoutez-la compressée au fichier de ressources.
    C'est assez bien aussi, vous aurez une légère augmentation de la taille à côté de la méthode 1, car chaque fichier est compressé séparément, mais c'est mieux si vous voulez de la flexibilité.

Chaque méthode a ses propres inconvénients, vous devez choisir judicieusement. Généralement, si votre jeu a un nombre de ressources assez faible, la méthode 1 devrait être meilleure.Si vous avez beaucoup, la méthode 2 devrait vous convenir, car la taille de toutes les ressources ensemble dépassera le supplément que vous gagnez.

Pour les bibliothèques de compression, vous avez:

  • Le médium le plus célèbre, Zlib
  • Celui avec la décompression la plus rapide, LZO
  • Le grand taux de compression, 7-Zip

J'irais avec LZO si je veux un accès rapide au jeu, vous n'avez donc pas à craindre de décompresser en temps réel, 7-Zip si je veux que les fichiers soient rétrécis BEAUCOUP ou Zlib lui-même si je veux un rapport et une taille de décompression équilibrés.
Le choix vous appartient: D

Ah, bien sûr, il existe d'autres algorithmes pour compresser les données, et vous pouvez les trouver sur Google .

Gustavo Maciel
la source