Hearts of Iron IV - IA & Optimisation

Bonjour ! J’ai terminé pour service sur EUIV pour aller combattre dans les tranchées au côté de l’équipe d’HoI4 durant un mois. Offrant ainsi mon aide pour l’IA et les performances. Je suis ici pour parler de ces deux éléments.
IA

J’ai dévolu la plupart de mon temps dans l’amélioration des ordres des garnisons pour résoudre des situations bancales qui pouvaient arriver. Par exemple, baser deux unités sur Magdeburg au lieu de Berlin, laissant la capitale exposée. Mais je me suis aussi focaliser à rendre les garnisons meilleures quand vous n’avez pas assez de troupes pour couvrir tous les points dans l’ordre nécessaire.

En premier lieu, j’ai implémenté un nouvel outil pour HoI4 pour permettre aux programmeurs de visualiser et d’inspecter ce que l’IA d’unité est en train de faire.


Poids des provinces


Poids des états

Par la suite, il nous fallait nous occuper de la tâche la plus importante : réécrire les ordres des garnisons et comment assigner les unités. Il y a eu pas mal de problèmes que vous avez certainement rencontrés de temps en temps. Des unités qui trainent, priorisent les mauvais états ou provinces, et la liste est longue.

Pour cela, vous avons fait quelque chose de nouveau. Au lieu de se contenter de la vieille logique qui consiste à mettre en place des règles sur où les unités doivent aller. J’ai utilisé quelque chose que je déteste : les mathématiques. La grande différence est que chaque état va calculer à quel point il sera « pénible » d’y enlever une unité. Ce qui signifie que chaque état passera par cette étape : ils essaieront de trouver la solution la moins pénible pour réaliser un ordre de garnison et trouveront finalement une sorte d’équilibre.

Cela nous a donné un moyen plus facile pour contrôler où les unités doivent se mettre en garnison et où elles doivent se baser correspondra mieux au poids que vous pouvez voir avec les images ci-dessus.

Une chose que nous avons prévu depuis longtemps et que nous avons enfin pu réaliser est de permettre un moyen plus facile pour contrôler comment l’IA joue. Nous utilisons un système que nous appelons : « Plans stratégiques de l’IA » à cet effet. Ce système indique avant tout à l’IA d’agir d’une certaine manière quand elle en vient aux focus nationaux et des priorités basées sur les conditions de script. Pour le dire en français, je laisse la parole à @Bratyn pour qu’il puisse vous citer quelques exemples :

Pour certaines situations où le nouveau système de « plans stratégiques » a été utile est pour s’assurer que le comportement de l’IA soit « compatible » avec une Allemagne anhistorique. Un grand nombre des comportements IA pour les puissances majeures européennes sont basées sur la supposition que l’Allemagne reste fasciste et sème la pagaille en Europe. Faisant que l’IA de l’Italie voit l’Allemagne comme un allié et que l’IA de la France aille toujours avec le Royaume Uni (si le mode historique est activé), ou soit si imprévisible que cela devienne problématique de prévoir toute scénario d’histoire alternative.
Avec les « plans stratégiques », nous avons fait en sorte que les nations IA agissent en partie plus en accord avec les changements géopolitique globaux, permettant d’assurer en partie que le joueur ait toujours une partie qui présente toujours un défi. En suivant la voie d’une Allemagne démocratique, pour que votre seul ennemi (l’Union soviétique) soit en guerre contre vous et les Alliés ne sera pas une partie vraiment passionnante et enrichissante. A la place, un nouveau « plan stratégique » se chargera pour la France dès que l’Allemagne complétera le focus « Opposition à Hitler ». Cela laissera en suspend leur choix sur la direction politique à prendre, le temps que la France ait plus d’information sur le joueur allemand. Créant un « circuit d’attente ».
  • Si l’Allemagne décide de faire renaitre le Kaiserreich et choisi le « Focus sur le vrai ennemi », la France se sort de ce « circuit d’attente » et suivra la Grande-Bretagne, formant une force de contre-réaction à la montée colonialiste de l’Allemagne. A vrai dire, dans ce genre de partie, il n’y a pas grand-chose qui changera avec l’Allemagne autre qu’elle sera non-alignée au lieu d’être fasciste. La guerre suivra le même chemin et s’intensifiera (bien que n’appartenant pas à la même chronologie) avec une guerre avec les Alliées, et une autre avec l’Union soviétique.
  • Si l’Allemagne choisi de faire renaitre le Kaiserreich et choisi « Expatrier les communistes », ces communistes iront en France, donnant un esprit national tendant vers les communistes. France se sort de ce « circuit d’attente » et deviendra communiste, s’alliant avec l’URSS. Ces deux puissances feront face à une nouvelle alliance anglo-germanique.
  • Si l’Allemagne choisi la voie démocratique, la France se sort de ce « circuit d’attente » et choisira de revoir le traité de Versailles. La décision que la France par la suite est du ressort de l’IA, laissant une part d’imprévisibilité. La France pourrait devenir communiste puis lancer sa propre faction, ou bien rejoindre l’Union soviétique, créant une guerre sur deux fronts si l’Allemagne décide d’attaquer l’URSS. Sinon, la France pourrait devenir fasciste. Ils prendront ensuite le focus « Courtiser l’Italie », créant une nouvelle faction fasciste semi-puissante dans le sud-ouest de l’Europe. Un plan stratégique similaire pour l’Italie (et une application littérale des valeurs de l’IA stratégique…) permettront que l’alliance soit stable. Un nouveau focus pour la France « Démanteler les démocraties » est disponible si l’Allemagne est devenue une démocratie, et l’IA aura plus de chance de prendre si l’Allemagne est déjà en guerre contre l’URSS. Cela rend la jouabilité plus dynamique et permet d’assurer à l’Allemagne aura suffisamment d’ennemis à combattre même elle a choisi de prendre la voie démocratique.
Nous avons aussi utilisé l’IA des plans stratégiques pour apprendre à l’IA chinoise comment gérer la mécanique de l’inflation et faire en sorte que le parti communiste chinois maintienne la paix en Chine quand ils tentent de suivre la voie pacifique en prenant contrôle de la Chine via la lutte politique. En somme toute, pour moi et @Archangel85 cela a été (et continuera à l’être) un outil indispensable pour s’assurer de la vraisemblance et plus important, de l’amusement durant les parties pour chaque voie anhistorique que l’on peut prendre. Nous espérons continuer à construire à partir de cette base et rendre les nations « plus intelligentes » quand elles doivent gérer des situations anhistoriques, ou encore des situations inhabituelles qui peuvent subvenir dans la géopolitique globale durant le déroulement d’une partie.

Pour vous modders, je suis sûr que vous allez beaucoup apprécier cette fonctionnalité, et nous vous laissons voir un exemple ci-dessous de comment ce système fonctionne (le commun des mortels ignorant tout des superpouvoirs du modding peuvent ignorer ceux-ci avec sérénité ).


Exemples
Spoiler:








PERFORMANCE

Les performances de fin de partie ont toujours été une épine dans le pied pour chacun de nos jeux. Pour le patch « Cornflakes », nous avons relevés nos manches et avons mis les mains dans le cambouis (NdT : le code, quoi) pour les améliorer autant que nous le pouvions.

A cet effet, pour mesurer les performances et voir à quel moment les choses se passent mal. Cela nous permet de mettre le doigt sur ce qui cause ces ralentissements. J’ai écris un petit script permettant ce super graphique pour nous aider.



Nous avons usé plein de petites combines pour améliorer les performances. En microgérant, l’IA passe moins de temps à chercher un chemin. Le jeu équilibrera automatiquement le temps de chargement entre les core selon combien de temps la mise à jour prend pour un pays. Le système de fronts a été rationalisé pour qu’il ne monopolise pas les performances.

Et nous avons fait un travail assez satisfaisant. Voici le résultat de cette semaine pour notre dur labeur :



Entre trouver des nouveaux moyens pour améliorer l’efficacité et l’utilisation des cœurs d’un microprocesseur, permettant une amélioration générale de la fin de jeu. Nous n’en restons pas là pour autant, il y a tellement à faire pour faire que la fin de jeu offre une expérience bien plus agréable !

Nous conclurons ce carnet de développement avec un rappel pour vous : Restez à l’écoute pour le premier jour du live Three Day War ce soir à 20 heure, jusqu’à 22 heure. Puisque la sortie de Waking the Tiger approche, nous avons invité les plus grands streamers pour se battre en multijoueur. Nous permettant par la même occasion de vous montrer l’extension, tout en mettant à l’épreuve notre dernier build.


Quill18, Alex the Rambler, Marbozir, Enter Elysium, Solar Gamer, Spiffing Brit, Drew Durnil, The Prussian Prince, Bratyn, Da9L, Shen Plays et Jay’s Gaming mettront en live leur propre point de vue sur leurs chaînes respectives, et nous aurons un observateur principal pour le live sur la chaîne Twitch de Paradox : https://www.twitch.tv/paradoxinteractive

La semaine prochaine nous vous ferons un grand résumé de toutes les nouvelles fonctionnalités et changements. Nous en profiterons pour vous parler de petits éléments ne pouvant avoir leur propre carnet. A la prochaine !

Vous pouvez discuter de cet article ici

Crédit
Spoiler:
Auteur : Groogy
Traducteur : Limse