Carnet de développement n°38 : De nouveaux arrière-plans

Bonjour tout le monde, et bienvenue pour un nouveau carnet de développement pour Stellaris ! Le carnet de cette semaine était supposé vous en dire plus sur le futur du développement de Stellaris, mais nous avons décidé de le reporter d'une semaine afin que Aerie, notre Directeur artistique, puisse nous parler des ajouts graphiques du patch Asimov.
Ce carnet de développement sera un peu plus technique et détaillé que la plupart de ceux qui ont été publiés pour le moment.

L'un des changements les plus importants que vous remarquerez dans le patch Asimov sont ceux qui concernent les arrière-plans, que nous appelons les "skybox". Le manque de diversité entre l'apparence des différents systèmes était un gros problème à la sortie du jeu. Comme ils avaient tous la même skybox, ils semblaient tous plus ou moins identiques. Les systèmes stellaires ont chacun un certain nombre de planètes, agencées différemment, avec différents propriétaires, etc... mais la skybox occupe 95% des pixels affichés à l'écran dans tous les cas, il s'agit donc d'un facteur visuel très important.

Vous me direz, il suffit d'ajouter plus de skybox ?

Eh bien, le problème avec les skybox, c'est qu'elles utilisent beaucoup de mémoire. Chacune d'entre elles "coûte" environ 12,5 mégabytes de mémoire vidéo. Par comparaison, l'interface du jeu est d'environ 90 MB. Ce coût en mémoire est dû à la taille de la texture : 12280 x 2048 pixels. C'est ce qu'il faut pour remplir un environnement à 360°. Et encore, vous regardez une image qui a été agrandie à 150%. Malgré la taille de ces fichiers, ils sont tout de même très compressés, ce que vous pouviez facilement déduire en voyant les skybox déjà présentes dans le jeu. Et à cause du poids de ces arrière-plans, nous renâclions à en ajouter d'autres.

Ce que nous pouvions faire, par contre, c'était de les recoloriser. Nous pouvions utiliser ce qui s'appelle une Table de Correspondance, qui permet de référencer une texture pour la décliner en plusieurs couleurs. Grâce à cela, nous pouvons faire tous les ajustements que nous désirons avec photoshop, avec la balance des couleurs, la teinte / saturation, les niveaux, les courbes, etc... et obtenir différents effets pour les textures du jeu. Les Tables sont un outil très puissant pour changer l'aspect général du jeu. En contrepartie, elles empirent le problème des artefacts de compression.



Comme je l'ai mentionné plus haut, l'arrière-plan que nous avions n'était pas une très bonne base pour travailler, il avait des qualités esthétiques, mais du point de vue qualitatif, il était défectueux dès le début. Nous l'avions créé en créant un large panorama de 4000x2000 pixels. Cette image a ensuite été appliquée sur une sphère dans maya, et rendue par 6 caméras avec un champ de vision à 90 degrés, afin de capturer l'information nécessaire à la réalisation d'une skybox.




Mais une texture de 4x2k n'est pas suffisante pour une skybox de 12x2k, et nous aurions dû commencer au moins avec une texture de 8x4k.

Le problème était encore plus fondamental que cela. Avant même d'effectuer le rendu, la texture panoramique avait été créée sur photoshop en dessinant et en assemblant des nuages et des nébuleuses grâce à des niveaux et à des masques. En conséquence, il y avait des problèmes de bandes sur la texture, avant même que nous ne l'exportions vers maya, ce que dégradait encore plus la qualité de la texture.

Pendant un moment, nous avons imaginé créer une nouvelle skybox en utilisant la même technique, mais en plus haute résolution, et avec de meilleurs textures de base. Mais travailler avec un format 8x4k est très exigeant pour le hardware, et avec l'ajout des différentes couches d'éléments à afficher, même un bon ordinateur aurait fini par avoir des difficultés. Et pire encore, il n'y avait aucune garantie d'obtenir de meilleurs résultats.

Retour à la case départ. Nous avions besoin de faire quelque chose de complètement différent.

Nous avons choisi de travailler à partir de l'animation d'un fluide, afin de construire un environnement, et ensuite de simplement faire le rendu. Nous n'avions qu'une expérience limitée de la dynamique des fluides, mais il est toujours intéressant de tester de nouvelles solutions. L'utilisation des fluides nous a permis de nous passer entièrement de la première étape, et donc de retirer l'un des facteurs de la dégradation de la texture. Travailler avec des fluides sur maya s'est révélé étonnamment simple, et après quelques apprentissages et quelques tests, nous avions un tableau prêt à l'emploi pour nous fournir à peu près ce que nous désirions.



Avant d'ajouter une nouvelle skybox au jeu à partir de maya, nous sommes passé par photoshop afin d'ajouter quelques détails. Nous avions alors une nouvelle skybox, qui avait une apparence similaire à la précédente, mais d'une bien meilleure qualité, et avec moins d'artefacts de compression.

Pour des questions de colorisation, cette nouvelle skybox n'était cependant pas suffisante. La colorisation créait encore suffisamment d'artefacts pour la rendre inutilisable. Nous avions plus de variations, mais c'était 3 pas en avant, un pas en arrière.



En discutant avec l'équipe qui travaille sur le moteur du jeu, l'un des codeurs nous suggéra d'utiliser la compression YCoCg. Au lieu de sauvegarder les couleurs au format RVB (rouge vert bleu), la compression YCoCg sauvegarde les informations comme la luminosité, la teinte et la saturation, ce que est bien plus adapté aux variations de couleur de notre skybox. Le côté amusant, c'est que la compression YCoCg fonctionne d'une manière assez similaire à la façon dont les yeux humains traitent les couleurs. Bref, en plus d'être un bon moyen pour diminuer la dégradation de l'information, c'était une idée sympathique, et nous devions l'essayer. La mise en place était également plutôt facile, et nous avons obtenu de bons résultats. Ces nouvelles textures étaient deux fois plus grosses, 25mb pour chacune d'entre elles, mais elles occupaient tellement d'espace à l'écran que ça en valait la peine. S'il y a bien une partie du jeu qui mérite plus de ressources graphiques, c'est bien la skybox.

Mais ce n'était toujours pas suffisant. La source qui causait la plupart des artefacts était les importantes variations de teinte, mais nous devions être en mesure de passer d'un arrière-plan bleu-vert à du jaune, de l'orange ou du rouge. Alors, au lieu de procéder à ces changements via une Table de correction des couleurs, nous l'avons ajouté en tant qu'étape supplémentaire de rendu dans le moteur de jeu, avec un peu de correction des couleurs. De cette manière, nous pouvons aussi influer subtilement sur les couleurs des vaisseaux, ce qui les fait s'intégrer à l'arrière-plan de manière bien plus fluide. Tout bien considéré, le résultat était impressionnant.



Au-delà de simples changements de couleurs, nous voulions essayer d'augmenter la variété. Nous avons créé d'autres skybox avec différentes densités stellaires, une skybox dense pour les étoiles proches du coeur de la galaxie, une skybox à mi-distance semblable à celle que nous avions déjà, et une skybox pour la bordure de la galaxie, où les étoiles de l'arrière-plan sont plus rares, et qui est bien plus sombre.

Grâce à ces changements, chaque système sera un peu plus unique, et il sera un peu plus facile de savoir où vous vous trouvez dans la galaxie.
Source

Spoiler:
Crédits
Auteur : Aerie
Traducteur : Spectator_Errans