Utiliser un Atlas de texture pour optimiser votre jeu

Temps. Mois. Peut-être des années. Vous avez passé votre temps (beaucoup de temps) à créer votre jeu. Petit ou grand, peu importe. C'est votre jeu, et maintenant vous voulez le partager avec le monde entier - et peut-être devenir célèbre et riche *. C'est parfait: l'art est bon et vous êtes très fier de votre idée à l'intérieur du jeu. Ton jeu.

Mais il y a un dernier problème que vous doit résoudre avant la sortie. Non, pas un problème simple. Le problème: le taux de trame de votre jeu est faible. Très lent. Et cela ne signifie qu'une chose: vous devez trouver un moyen de le réparer. Vous devez. Et vous ne savez pas comment.

Ne paniquez pas: il existe un truc simple qui peut vous aider. C'est ce qu'on appelle un "Atlas de texture".

* Si vous devenez riche grâce à cet article, souvenez-vous de moi. Merci beaucoup!

Qu'est-ce qu'un atlas de texture??

Si vous abordez le développement d'un jeu vidéo 3D pour la première fois, vous découvrirez que les graphiques 3D sont composés de plusieurs parties: maillages 3D, textures, systèmes de particules et de nombreux autres éléments généralement dessinés à l'écran. 30 fois par seconde (en argot: 30 ips) pendant le processus de rendu, ce qui rend le monde du jeu varié et vivant.

Croyez-le ou non, les premiers jeux vidéo 3D que j'ai vus dans ma vie ne comportaient aucun de ces éléments. Ils étaient composés uniquement de lignes formant des objets ou des éléments dans une structure filaire 3D..

En écrivant cela, je me sens vraiment vieux.

De retour à nous (en fait, à vous) et aux choses importantes, nous parlerons aujourd'hui des textures de l'interface utilisateur (UI ci-après) et, par extension, de toutes les textures du jeu..

Dans un jeu en 3D, l’interface utilisateur est généralement constituée d’éléments 3D (tels que des plans ou des boîtes) avec des textures..

Nous avons mentionné avant le processus de rendu: c'est l'opération par laquelle les éléments en mémoire sont physiquement dessinés à l'écran. C'est l'un des processus les plus complexes et les plus coûteux dans un jeu 3D en temps réel. Ensuite, toute solution visant à réduire le temps nécessaire à ce processus est la bienvenue. moins de temps passé dans la phase de rendu signifie une cadence d'images plus élevée (par exemple, si vous atteignez les 60 ips, vous pouvez restituer l'image deux fois, puis envisager de développer votre jeu également pour la réalité virtuelle), ou davantage animé, plus beau).

L'un des moyens utilisés pour réduire la durée du processus de rendu est un Atlas de textures: ce n'est rien de plus qu'une image contenant de nombreuses textures..

Comment fonctionne un atlas de texture

Remarque: comme indiqué dans le paragraphe précédent, cet article traite de l'Atlas de texture appliqué à l'interface utilisateur. Cependant, bon nombre des concepts expliqués ici peuvent également être appliqués aux modèles 3D et à leurs textures..

Avons-nous dit, un atlas de texture est une collection de textures dans une seule image.

Un atlas est généralement associé à un descripteur de fichier, qui indique au jeu où se trouve une texture (dans certaines coordonnées x et y), afin de la récupérer..

En fonction du système que vous utiliserez pour générer et gérer l'Atlas, vous aurez plus ou moins d'options, telles que la distance entre les images qui le composent (réduction du risque d'artefacts sur les bords de la texture, causés par un chevauchement de deux éléments), ou la possibilité de faire pivoter les éléments pour optimiser l'espace à l'intérieur de l'Atlas (plus d'espace optimisé signifie plus d'images à l'intérieur du même Atlas).

Différentes façons de créer un atlas de texture

Il existe différentes manières de créer un atlas. Un environnement de développement complet permet généralement la gestion interne de l’Atlas; il existe également de nombreux outils externes offrant de nombreuses options supplémentaires.

Le choix du système à utiliser dépend évidemment de vos préférences personnelles. Nous en expliquons ici deux: Sprite Packer, interne à Unity, et TexturePacker (un outil autonome, payant)..

Sprite Packer

Pour ouvrir Sprite Packer, choisissez dans le menu. Fenêtre> Sprite Packer.

La gestion est très simple: le bouton Pack permet de créer un ou plusieurs atlas (cela dépend du nombre d'images et de la dimension de l'atlas que vous souhaitez utiliser)..

Vous pouvez maintenant sélectionner une image pour voir où elle se trouve dans l'Atlas. Si vous ajoutez ou supprimez des images de votre projet, vous devez utiliser le bouton Remballer pour mettre à jour l'Atlas..

Afin de configurer Sprite Packer, vous pouvez choisir dans le menu Édition> Paramètres du projet> Editeur; Ici, vous pouvez désactiver l'Atlas, l'activer uniquement pour le jeu construit ou toujours l'activer..

Pour plus d'informations sur Sprite Packer, vous pouvez consulter le guide officiel.

Texture Packer

Texture Packer est un outil autonome utilisé pour gérer Atlas..

Vous pouvez ajouter un ou plusieurs dossiers de votre projet et Texture Packer créera l’Atlas..

Après cela, vous pouvez choisir le format de données pour l'exportation. Comme vous pouvez le constater, l'option "JSON pour Unity" existe également. Cela signifie que vous pouvez exporter votre Atlas pour votre projet Unity. Mais, pour les utiliser ensemble, vous devez installer une extension d'édition gratuite à partir du magasin de ressources..

Pour plus d'informations sur Texture Packer, vous pouvez consulter le guide officiel.

Pourquoi est-il important d'utiliser un atlas de texture?

Mais pourquoi est-il si important de rassembler plusieurs images en une seule plus grande??

Revenons un instant au processus de rendu: si chaque élément de l'interface utilisateur a une texture distincte, elle est dessinée avec un "appel de dessin" séparé. Cela signifie que si dans notre interface nous avons l'icône des cœurs (représentant l'énergie du joueur) et l'icône des pièces collectées, nous aurons deux appels de tirage..

Chaque appel de tirage prend un certain temps, ce qui allonge le processus de rendu. S'il y a cinq éléments d'interface utilisateur, au lieu de deux comme dans l'exemple ci-dessus, il y a cinq appels de tirage..

Commencez-vous à voir le point?

Appels plus nombreux -> plus de temps pendant la phase de rendu -> moins de fps -> jeu avec une fréquence d'images faible (avec quelques sauts d'image) ou moins d'éléments à l'écran (puis visuellement médiocre).

Gâcher des appels de tirage de cette façon, à moins de raisons particulières, n'a pas vraiment de sens, en particulier pour l'interface utilisateur..

En fait, toutes les textures d'un atlas seront rendues ensemble, en un seul passage.

Conclusion

En conclusion, en particulier si vous développez un jeu sur une plate-forme où les performances sont vraiment importantes (comme une plate-forme mobile):

  • Vous devez faire attention au nombre d'appels dessinés: plus d'appels dessinés signifie un temps de rendu plus long (et un temps de rendu plus élevé, plus vous risquez une faible fréquence de trame)..
  • En règle générale, chaque objet ayant une texture différente peut générer un seul appel de dessin (il s'agit d'une instruction générique: il existe des exceptions, notamment dans le cas d'objets 3D)..
  • Une façon de réduire le nombre d'appels de tirage consiste à utiliser un Atlas de texture..
  • Un atlas de texture est fondamentalement une grande texture avec un groupe de textures différentes.
  • Tous les objets utilisant le même Atlas de textures génèrent un seul appel de tirage..
  • En particulier pour les textures d'interface utilisateur, l'utilisation d'un Atlas de textures est indispensable pour améliorer les performances de votre projet..

Et… que la force soit avec vous. Et votre code. Toujours.