Les spritesheets en valent-ils la peine? Le zip est-il une bonne alternative?
Je me demandais si les spritesheets en valaient la peine. Je crée un jeu avec pixi.js et je pensais à l'optimisation, en commençant par le chargement des ressources. J'ai actuellement un tableau de tous les fichiers et j'utilise PIXI.loader, mais je sais que ce n'est pas bon car cela fera une demande Web pour tous les fichiers, ce qui prend du temps, donc je devrais trouver un moyen de les charger dans une seule demande Web. La première chose à laquelle j'ai pensé était une feuille de sprites, mais ensuite j'ai pensé "et si je compressais tout et le chargeait avec quelque chose comme JSZip?" Je savais que c'était déjà possible (à partir de ce projet qui charge des textures pixi à partir d'un zip) et j'ai énuméré ce que je pense être des bonnes et des mauvaises choses potentielles:
Zip les bons points:
- Compression signifiant un chargement plus rapide des actifs
- Compression signifiant une taille de construction plus petite lors de la fabrication d'une construction avec des électrons
Zip les mauvais points:
- Nécessite le chargement d'une bibliothèque séparée, ce qui augmente le temps de chargement et utilise plus de RAM
- Nécessite une décompression en mémoire, ce qui augmente le temps de chargement
Les bons points de la feuille de calcul:
- N'a pas les en-têtes de tous les fichiers image individuels
- Est très utilisé donc c'est une technique éprouvée
Mauvais points de la feuille de calcul:
- Pas de compression (ou du moins pas comparable à la fermeture éclair)
- Plus d'un appel réseau en raison des limitations du téléphone empêchant parfois les fichiers de plus de 2024x2024px, ce qui rend nécessaire la division des feuilles de sprites
- Des trous vides car toutes les images ne sont pas de la même taille et il reste presque toujours un peu d'espace dans la feuille de sprites, ce qui signifie des pixels inutiles qui sont toujours transférés sur le réseau
Je ne suis pas un développeur très expérimenté, j'ai donc quelques questions:
- Ai-je manqué un point ci-dessus?
- Les spritesheets en valent-ils généralement la peine?
- Quelle technique des deux vaut le plus? Je pourrais faire les deux mais je veux me concentrer sur l'un d'abord et laisser l'autre dans une belle liste.
Réponses
Tout d'abord, il existe déjà des formats d'image avec compression. En particulier, le format PNG prend en charge la compression sans perte. De plus, s'il est vrai que prendre un tas de PNG et les compresser peut être un gain de taille, créer un atlas de texture (feuille de sprites ou similaire) réduira également la taille de la même manière, en particulier si vous augmentez le niveau de compression PNG. lors de l'exportation de l'image.
Ainsi, un atlas de textures correctement exporté vous donnera les avantages que vous indiquez sur la compression.
Cela signifie-t-il que vous devez tout transformer en une seule feuille de sprites? Non. Vous devriez rassembler les choses qui devraient être chargées ensemble.
Il peut également être intéressant de noter que les spritesheets fonctionnent mieux lorsque vos images sont petites et de taille normale. Il se peut que vous travailliez dans un scénario pour lequel les spritesheets ne sont pas bien adaptés.
Est-ce le cas? Je ne sais pas. Faites des expériences. Si vous n'êtes pas prêt à essayer les deux techniques pour décider, l'approche d'ingénierie suggère d'aller avec la méthode éprouvée, et ce serait un atlas de texture.
Vous pourriez également être intéressé par des algorithmes de compression qui peuvent minimiser les trous dans l'atlas de textures.