Celestial Empire - Carnet de Développement N°9

Chère communauté !
L'un de nos principaux objectifs lors de la création du jeu est de permettre aux joueurs de créer des villes complexes qui s'étendent sur de vastes zones. Nous voulons que leurs établissements aient l'air animés et pleins de vie, avec une multitude de bâtiments différents et de PNJ qui courent partout. Cela peut s'avérer difficile lorsque notre base de joueurs dispose d'une grande variété d'ordinateurs différents, certains meilleurs, d'autres moins. Nous devons nous assurer qu'ils seront tous en mesure de jouer au jeu sans problème majeur et avec un taux de rafraîchissement au moins satisfaisant. Pour y parvenir, nous avons décidé d'utiliser un mélange de techniques.


Chaque bâtiment que les joueurs peuvent placer sur la carte est divisé en un maillage principal et des accessoires plus petits, qui sont cachés lorsque la caméra s'éloigne. Le maillage principal comporte plusieurs LOD, qui réduisent le nombre de triangles sur la scène en simplifiant la forme du bâtiment. Certains d'entre eux sont générés par le moteur, tandis que d'autres sont créés à la main pour s'assurer qu'ils ont toujours une quantité satisfaisante de détails. De plus, lorsque les objets sont placés sur la scène, ils sont capturés par un système spécial qui regroupe les maillages identiques afin de minimiser les appels de dessin. Cela libère les ressources du CPU, qui sont ensuite utilisées pour calculer, entre autres, l'économie.


Nous utilisons une solution similaire lorsqu'il s'agit de PNJ affectés à des bâtiments. Lorsque la caméra s'éloigne, les personnages cessent de bouger, puis disparaissent lentement une fois que la distance entre eux et la caméra est suffisamment grande.

Le dessin des routes s'est également avéré être un défi d'optimisation. Pour obtenir un bon effet visuel, chaque tuile de la route doit être différente de celles qui se trouvent à côté, ce qui nous a obligés à utiliser des décalques. A eux seuls, ils ne sont pas viables sur les grandes cartes. Nous avons résolu ce problème en utilisant la technologie Runtime Virtual Texture. Grâce à elle, nous sommes en mesure de concevoir une feuille sur laquelle nous avons placé chaque texture de terrain. Ensuite, lorsque les routes sont placées, une seule source doit être active, même s'il y a une distinction visuelle entre les tuiles.

Les citoyens de la ville se sont avérés être un défi également. Pour pouvoir créer des rues bondées, nous avons dû utiliser une IA basée sur HISM (Hierarchical Instanced Static Mesh). Cela nous permet de connecter plusieurs maillages statiques en un seul, qui est ensuite dessiné à de nombreux endroits différents. Cela réduit le nombre de Draw Calls, car les informations sur la texture ne doivent être envoyées qu'une seule fois. Nous utilisons la méthode d'animation des vertex pour déplacer nos citoyens, donc au lieu de déplacer leurs os, nous utilisons les informations codées dans les textures pour déplacer les triangles sur les maillages statiques. Tous les PNJ ont une IA commune, qui choisit les points de départ et d'arrivée de leur voyage et les envoie ensuite sur leur chemin.


Ce ne sont là que quelques techniques que nous utilisons pour optimiser le jeu et le faire tourner sur le plus grand nombre possible d'ordinateurs différents. Ces aspects techniques du processus n'ont souvent pas l'air spectaculaires, mais sans eux, le jeu ne fonctionnerait jamais, même sur les ordinateurs les plus performants. Nos programmeurs consacrent d'innombrables heures à ces tâches et ils méritent d'être sous les feux de la rampe. Si vous avez des questions, n'ayez pas peur de les poser, nous essaierons d'y répondre.

À la prochaine fois.

Vous pouvez discuter de cet article sur le forum en cliquant ici.

Auteur : Celestial Empire team
Traducteur : Ancient Egypt Fan