Europa Universalis IV - Carnet de développement du 16 Octobre 2018



Bienvenue à tous dans le carnet de développement d'aujourd'hui. Je m'appelle Michael et cela fait un peu plus d'un an maintenant que je fais partie de l'équipe d'EU IV, en tant que programmeur.

Nombreux sont ceux parmi vous qui ont remarqué que depuis les récentes mises à jour, l'IA ne se comportait pas comme elle le devrait lorsqu'il s'agit de défendre son territoire ou d'assiéger un fort. C'est pourquoi pour la mise à jour Espagne à venir, nous avons pris le temps d'améliorer ces aspects de l'IA militaire. Dans ce carnet j'expliquerai quelques-uns des changements que nous avons effectués. En plus de cette IA améliorée, avec la prochaine mise à jour les modders auront la possibilité d'influencer certaines parties de l'IA au moyen de scripts. Je terminerai ce carnet par un bref tutoriel sur le sujet.

Tout d'abord, voici les changements et les améliorations réalisés jusqu'à présent. Puisque nous sommes encore en train de travailler sur cette mise à jour, tout ceci reste évidemment sujet à modifications.

- La sélection de corps expéditionnaires (outre-mer) prend maintenant en compte les menaces potentielles sur la métropole, et ceux-ci seront plus petits si nécessaire. Il y a toujours la possibilité pour que l'IA lance une invasion totale, si elle estime qu'elle ne peut pas l'emporter dans le cas contraire. Le calcul de la puissance requise a été revu, afin que l'IA détermine mieux le nombre de troupes nécessaires.

- L'affectation par région des armées était normalement faite une fois par an. Il y avait aussi un facteur d'aléatoire, ainsi parfois cela pouvait prendre encore plus de temps. En plus des ré-affectations aléatoires, elle est désormais recalculée dés que la menace pesant sur la métropole change considérablement (par exemple, en cas de siège ou de déplacement massif de troupes ennemies en direction du territoire).

- En cas de menace sur la métropole, ces régions auront une bien plus grande priorité lorsque l'IA décidera des affectations. Même en cas d'absence de menace, elle reste prioritaire, si suffisamment de troupes sont disponibles. Au niveau des provinces, celles proches de la métropole ont maintenant la préférence lorsque l'IA cherche à déterminer lesquelles assiéger, défendre, ou prendre comme objectif de guerre.

- Les armées fuyant une force supérieure essaieront toujours de trouver un lieu sûr. Mais les provinces qui nécessitent d'avoir un accès militaire ou de parcourir de longues distances ont une priorité moindre. Si suffisamment sûre, la métropole est quant à elle prioritaire. Les armées de l'IA sont plus susceptibles de rester sur place, surtout si elles sont clairement en infériorité et qu'il n'y a plus aucune chance de l'emporter. Auparavant le joueur était souvent contraint de les poursuivre jusqu'au bout du monde à cause des accès militaires obtenus trop facilement.

IA militaire scriptable

Le coeur de l'IA militaire consiste à évaluer les provinces, afin de déterminer où et quand déplacer les armées. Il existe déjà de nombreux caractères que vous pouvez changer pour influencer le résultat de cette évaluation ; mais à partir de la mise à jour à venir, vous pourrez également changer ou tout simplement écraser le résultat de cette évaluation en utilisant un déclencheur de votre choix.
Vous trouverez de nouveaux fichiers de script basiques dans le dossier common/ai_army ; mais vous pouvez en ajouter autant que vous le souhaitez.

Voyez cet exemple très simple :

Code:
province = {
    war = {
        active = {
            is_at_war = yes
        }
        eval_multiply = {
            modifier = {
                factor = 0.1
                is_in_capital_area = yes
            }
        }
    }
}
Pour l'instant le champ supérieur est toujours "province". Nous sommes susceptibles d'ajouter plus d'options plus tard. Le deuxième est juste un nom que vous êtes libre de choisir et qui sert à séparer plusieurs modifications que vous souhaitez appliquer. Tout comme pour la probabilité d'apparition des événements, la valeur de départ est de 1. Les champs intéressants sont "active", "eval_multiply" et (non-présents) "eval_add" et "eval_overwrite". Avec ceux-ci vous pouvez contrôler les modifications qui seront appliquées à l'évaluation du score d'une province. Dans le cas présent il s'appliquera sitôt que le pays est en guerre.
Il est important de noter que l'évaluation des provinces se produit très fréquemment pour toutes les armées dans la partie, ainsi le déclencheur "active" ne sera pas contrôlé à chaque fois qu'une province est évaluée (évaluation qui peut se produire plusieurs centaines de fois par jour dans le jeu).
Une évaluation a également lieu quand vous gagnez ou perdez le contrôle d'une province, ainsi qu'au début et à la fin d'une guerre.
Il y a trois façons de modifier le score : vous pouvez le multiplier, y ajouter quelque chose, ou tout simplement l'écraser. Le facteur peut être négatif et inférieur à 1, de cette façon les opérations inverses sont également possibles.
Notez que les armées préfèrent les provinces avec le score le plus faible.

Bien qu'il soit possible de beaucoup influencer les armées avec tout ceci, il demeure des choses programmées en dur qui auront toujours la main. Evidemment les armées obéiront toujours aux lois du jeu (avec les retraites par exemple). Cela reste une option intéressante et j'ai hâte de voir si et comment elle sera utilisée dans les mods. Bien sûr il est aussi possible de casser l'IA, alors soyez prudents, notamment avec le "eval_overwrite".

Pour débugguer vos scripts vous pouvez utiliser le mapmode IA. Dans celui-ci vous pouvez voir le score d'évaluation pour chaque province si vous sélectionnez une armée. Vous pouvez l'activer via cette commande dans la console :

Code:
mapmode aieval


C'est tout pour aujourd'hui ! La semaine prochaine nous nous intéresserons à de nouvelles fonctionnalités à venir dans le prochain pack d'immersion. Pendant ce temps, je garderai un oeil sur ce topic, alors n'hésitez pas à me poser vos questions.

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