Avec Conqueror's Blade, nous souhaitons créer un univers dans lequel vous pouvez poursuivre vos rêves de conquêtes et de victoires. Dans ce but, nous avons créé de vastes zones parsemées de villes fortifiées, au sein desquelles font rage des batailles où des milliers de soldats chargent et s'affrontent à coups de flèches ou de tirs d'artillerie.

Les problèmes inhérents aux batailles à grande échelle

Avoir des cartes gigantesques ainsi qu'une multitude de personnages, d'objets et d'effets spéciaux nécessite un système de gestion aux capacités de calcul phénoménales. Plus de trois ans après le lancement du jeu, nous implémentons toujours plus de nouveau contenu, de nouvelles unités, des cartes encore plus grandes, sans compter de nombreuses améliorations graphiques. Tous ces ajustements sont demandeurs aussi bien côté logiciel que sur le plan matériel.

Les interfaces relatives aux unités, aux héros et aux cartes sont toutes reliées au sein de systèmes très complexes. Le fonctionnement simultané de tous ces éléments lors des batailles exerce une pression énorme sur les processeurs. Dans le but d'augmenter le nombre d'images par seconde, nous avons beaucoup œuvré pour pemettre à autant d'algorithmes que possible de tourner en parallèle, tout en tirant le maximum des processeurs multicœurs. Par conséquent, le jeu est très gourmand au niveau de l'unité centrale de calcul et utilise beaucoup de capacités de rendu du processus graphique (GPU). Si on ajoute à cela le volume de textures haute qualité devant être traitées, il reste très peu de mémoire graphique pour la plupart des joueurs. D'un autre côté, au fil des améliorations de l'interface du jeu, des combats et des effets cinématographiques, les GPU sont de plus en plus sollicités. Les jeux utilisant un grand nombre de textures haute qualité sont également plus demandeurs en mémoire vidéo. En raison de tous ces facteurs, les jeux nécessitent de plus en plus de ressources de calcul GPU et de mémoire vidéo pour fonctionner. C'est pourquoi, lors de nos futurs développements, nous prêterons une attention particulière à l'optimisation de l'aspect GPU afin de garantir la fluidité de l'expérience de jeu.

De plus, les dimensions des lieux et le nombre de personnages exercent une pression significative sur l'utilisation de la mémoire. Il arrive parfois que nous devions augmenter notre consommation de mémoire au profit des performances. Mais il faut l'avouer : notre stratégie actuelle de gestion présente des failles au niveau de l'optimisation de l'algorithme, qui est l'une de nos préoccupations principales.

À mesure que nous créons et ajoutons de nouveaux contenus, nous recevons également de plus en plus de retours concernant des problèmes de sauts d'image, de latence et de performances, et nous ne savons que trop à quel point ces dernières sont importantes. Malgré tout, au final, nous devons trouver le juste milieu entre performances et graphismes.

Entrons un peu plus dans le détail de ce que nous avons mis en œuvre pour améliorer les performances, et découvrez nos projets pour l'avenir.

Les nouveautés pour Eternal

Chaque action de chaque unité (déplacement, attaque, utilisation de technique) utilise les ressources du système en fonction de la qualité de ses effets visuels. Lorsque des effets visuels s'affichent, leur impact sur le système dépend du nombre de particules qui les composent. C'est pourquoi le nombre de particules est la manière la plus intuitive de mesurer l'impact des effets spéciaux sur les performances. Nous allons réduire le nombre de particules des effets spéciaux, initialement élevé, à une plage plus raisonnable sans pour autant compromettre l'expérience de jeu globale, ce qui aura pour effet d'améliorer les performances du jeu.

Unités et combat

De nombreux joueurs rapportent des sauts d'image lorsque les miliciens zykaliens lancent leurs grenades explosives, une technique dont les effets spéciaux utilisent trop de particules.

Afin d'améliorer les performances tout en continuant à proposer des effets spéciaux de qualité, nous avons dans la saison Eternal réduit le nombre de particules des effets de plusieurs techniques, dont les explosions. L'effet positif sur les performances s'est tout de suite fait sentir. Voici un petit avant-après du nombre de particules de certaines techniques.

  • Décapitation des silahdars : 410 particules au lieu de 1 200.
  • Coup fatal des silahdars : 890 particules au lieu de 1 120.
  • Dernier rempart des vigiles grisonnants : 420 particules au lieu de 1 120.
  • Lancer de grenades des grenadiers de Shenji : 210 particules au lieu de 580.
  • Miliciens zykaliens : 118 particules au lieu de 310.
  • Canon à mitraille (rare) : 2 700 particules au lieu de 6 400.
  • Frénésie des berserkers : 370 particules au lieu de 1 050.
  • Effet spécial des unités touchées par la technique « Seigneur de guerre » du guandao : 240 particules au lieu de 410.

Météo et objets

Les nombreux objets présents sur chaque carte favorisent l'immersion et influencent les choix stratégiques. Chaque mur, obstacle ou végétal insuffle de la vie à la carte. Naturellement, la multitude d'objets et les grosses concentrations d'unités sont demandeuses, ce qui engendre souvent une faible fréquence d'affichage durant les batailles.

Pour remédier à cela, nous avons amélioré la gestion des performances d'objets dynamiques dans les zones abritant des batailles conséquentes, ce qui a considérablement réduit le délai d'affichage. Le nombre d'images par seconde sera ainsi beaucoup plus stable dans ces circonstances.

Futures optimisations des performances

Nous avons déjà amélioré les performances dans de nombreux aspects du jeu, ce qui a permis une légère augmentation générale du nombre d'images par seconde. Bien sûr, il reste encore quelques zones problématiques, dont beaucoup d'éléments clés, ce qui nuit considérablement à l'expérience de jeu.

Nous menons actuellement des tests à grande échelle afin de procéder à davantage d'optimisations ciblées. Voici notamment ce que nous avons prévu de faire :

  • Optimiser les algorithmes d'interface sous-jacents pour éviter que les plus complexes ne réduisent les performances et détériorent l'utilisation de la mémoire. Zones concernées : minicarte, barres de technique et informations sur les unités.
  • La fidélité du rendu influence la manière dont les éléments sont affichés en jeu, et dans la plupart des cas, il n'est pas nécessaire d'avoir le même niveau de fidélité pour chacune des différentes couches. Par exemple, lorsque vous combattez au niveau du point A des Remparts séculaires, vous n'avez pas besoin d'avoir une vue parfaite sur la base, ce qui diminuerait les performances. Toutefois, la fidélité du rendu actuelle ne s'applique pas à toutes les situations, et nous allons ajouter davantage de couches de rendu en fonction de la distance des objets sur la carte. Par exemple, nous pouvons attribuer une fidélité de 1 aux objets situés à 100 m, de 2 à ceux situés à 50 m, de 3 à ceux situés à 10 m, et de 4 à ceux situés à 5 m, ce qui réduira les calculs de rendu et donc l'utilisation du GPU.
  • Recréer le code des simulations physiques et des tissus pour optimiser les performances de nombreux modules plus petits : cheveux, pampilles, ourlets de robes, capes, etc...
  • Continuer de réduire le nombre de particules des effets spéciaux pour mieux équilibrer les graphismes et les performances.
  • Mieux répartir la qualité des textures pour trouver un équilibre avec les performances et réduire davantage l'utilisation de la mémoire.
  • Améliorer les paramètres graphiques en ajoutant d'autres options de configuration, tout en offrant une meilleure reconnaissance du matériel pour améliorer les paramètres par défaut.

Toutes les améliorations ci-dessus sont complexes et chronophages. Qui dit nouveau contenu dit également nouvelles variables inconnues dans l'équation. Nous sommes néanmoins heureux d'évoquer ces questions et d'en discuter avec vous. Cela fait longtemps que nous rencontrons ces problèmes et que nous recevons vos interrogations, et nous souhaitions y répondre avec des actions et des résultats concrets. Nous savons que résoudre ces problèmes de performances risque de prendre du temps, mais ils seront tous traités, un par un. Ce n'est que le début d'une grande aventure !

Nous aimerions également vous inviter à prendre part à ce processus. Nous envisagons de mettre à l'épreuve les résultats de nos optimisations lors de tests ouverts, alpha et bêta. Nous vous expliquerons leur fonctionnement plus en détail très bientôt ! Nous donnerons également d'autres informations sur l'évolution de nos optimisations des performances dans de futurs articles de blog de développement.