Stellaris, carnet des développeurs n°239 : L'IA version 3.3.

Bonjour à tous ici Offe. Cette semaine nous parlerons une nouvelle fois d’IA.

Le système d’attribution des activités :

Je commencerai par les modifications qui affectent aussi les joueurs et pas seulement les IAs.

Comment cela fonctionnait-il avant :
À chaque événement important arrivant sur une planète comme l’apparition d’une population ou l’ouverture de nouvelles activités grâce à un bâtiment, chaque population devait se mettre à jour pour savoir où allait-elle travailler. Ainsi toutes les populations étaient desassignées de leurs activités puis étaient réassignées suivant les priorités calculées à ce moment.
Il y a des avantages et inconvénients à cette approche. Ainsi il n’y a pas de calculs à réaliser lorsqu'il n’y a pas d’événement déclencheur puisque les conditions ne changent pas. Cependant si vous aviez des conditions scriptées pour certaines activités par exemple “à partir d’un certain montant de services sur la planète”, le système réalise des migrations massives de populations entre les activités car le système bouge toutes les populations en même temps.
Dans la version 3.2, ce problème est visible lorsque vous jouez des ruches et les populations bougent toutes en même temps vers les services quand ces derniers sont bas, pour ensuite toutes retourner à leur activités le mois suivant car les services sont alors trop hauts, et ainsi de suite.
En dehors des ruches et plutôt pour les empires joués par l’IA, cette dernière allait affecter toutes ses populations sur une ressource en particulier en raison d’une pénurie sur une ressource mais ce faisant, elle crée alors une pénurie sur une autre ressource et de nouveau on retrouve ce phénomène de ping pong. Autre soucis pour l’IA c’est qu’avec ce phénomène de pénurie, elle va aussi lancer des constructions qui ne lui sont pas utiles.

L’attribution des populations dans la version 3.3 :
Tout part de deux règles :
- À chaque passage de mois, recalculer le poids des activités sur toutes les planètes;
- Lorsque nécessaire, n’ajouter ou ne retirer qu’une seule population par activités.

Vous devez être nombreux à sourciller en pensant à votre processeur qui fond devant la quantité de calculs nécessaires tous les mois. Mais nous avons de très bonnes nouvelles pour vous. Tout d’abord de nombreux calculs étaient redondants et ainsi nous avons pu réduire de 75% les calculs. De plus, nous regroupons maintenant les populations qui ont les mêmes caractéristiques. Ce qui veut dire que si vous avez 40 populations qui travaillent en temps que mineurs sur une même planète et avec les mêmes traits d’espèces, alors le calcul ne s’effectura qu’une seule fois et non pas 40. Il y a bien sûr des limites puisqu’il ne suffit plus de ne prendre en compte que les populations par strate ou sur des données individuelles comme leur faction qui est déterminant dans leur bonheur. Finalement, la plupart des calculs ont tout de même été éliminés malgré le fait que l’attribution des activités se refasse tous les mois.

Le nouveau système permet aussi d’écrire des scripts afin d’éviter l’effet ping pong d’une population pour certaines activités de support comme les services ou la police. Ainsi il sera possible de fixer une limite vers laquelle l’IA tendra.
Vous ne devriez pas voir beaucoup d’effet en dehors des activités notés précédemment mais la gestion de ces dernières ainsi que le nombre de calculs ont grandement été optimisés.


Des occupations pour vos populations :

Du côté de l’IA, dans la 3.2, cette dernière regardait combien de populations étaient libres avant de décider la construction d’un nouveau bâtiment. Ainsi si 3 emplacements d’activité était libre, l’IA passait à autre chose même dans le cas ou une partie de la population planétaire manifestait dans les rues (NdT : en raison des droits des populations par exemple).
Dans la 3.3, plutôt que d’identifier les activités libres de population, l’IA se concentrera sur les populations sans activité. Ceci résout nombres de problèmes en particulier avec des populations en esclavages ou robotiques. Nous continuerons à l’avenir d’améliorer ce système mais nous avons fait un grand pas dans la bonne direction.

L'expansion des plans économique pour l’IA :

L’amélioration des plans économiques pour l’IA est un travail dont nous avons déjà parlé précédemment et le futur c’est maintenant.
Avec la 3.2, nous nous sommes affranchis des anciens plans pour l’IA qui étaient prédéfinis et coincés aux dates spécifiques de “début-milieu-fin” de jeu. À la place un nouveau système a été mis en place, système qui se concentre autour de l’état de l’empire et non plus sur la date de la partie.
Lorsque j’ai vu le travail de Guido (NdT : à l’origine des plans économiques), je me suis immédiatement dit que c’était pas mal mais qu’on pouvait mieux faire. Ainsi j’ai démarré le travail sur des variantes de plans afin d’augmenter les seuils limites (comme un objectif de +500 d’alliage net par mois dans la 3.2) et pour permettre à l’IA de répondre plus dynamiquement à l’état de son économie.
Dorénavant, les fondations du plans sont succinctes et visent un minimum de ressources afin de faire tourner l’empire (un genre de +20 de revenus net en énergie, minerais et nourriture). Une fois ces requis atteint, un revenu de base pour les biens de consommations, la recherche et l’alliage est fixé. Puis l’IA est autorisée à se concentrer ailleurs via la plan. La nouveauté est qu’une fois que les objectifs d’un plan sont atteints, alors le même plan se déclenche et s’empile sur le précédent et ainsi de suite. Ce plan empilé contient une légère production en minerais et énergie mais est surtout tourné vers la science et l’alliage. Ainsi à mesure que l’économie de l’IA croît, elle se tournera de plus en plus vers ces ressources.
En parallèle nous avons créé trois variantes de plans pour les matérialistes, les militaristes (et empire avec le CB de guerre totale) et les spiritualistes qui leur ajoutent des objectifs supplémentaires dans respectivement la science, les alliages et l’unité afin de rendre ces empires plus distinct les uns des autres.

Spécialisation et IA :

L’un des grands avantages du joueur sur l’IA est qu’il peut facilement penser des stratégies à long terme à partir d’hypothèses et d’objectifs. Ainsi nous pouvons prévoir que notre dernière colonie en date se transformera en usine planétaire. L’Ia est cependant en difficulté pour faire de tels mouvements car elle ne peut pas étudier le passé et penser le futur. Elle ne peut que regarder ce qu’elle a maintenant et ce qu’elle peut faire pour satisfaire les objectifs du plan. Cela la rend très bonne pour s’adapter à de nombreuses situations comme des déficits ou des pénuries à court terme mais ne lui permet pas de planifier dans la durée.
Ainsi, comment faire pour rendre l’IA plus capable dans la spécialisation? La première chose serait d’échanger des quartiers planétaires. Ainsi si 2 planètes ont 5 quartiers de mine et 5 quartiers d’énergie chacun, il est possible d’échanger les uns avec les autres pour se retrouver avec une planète avec 10 quartiers de mine et l’autre avec les 10 quartiers d’énergie.
Cette approche fonctionne très bien en pratique car elle permet à l’IA de construire ce dont elle a besoin en début de partie puis de rationaliser sa production plus tard (NdT : les joueurs font souvent de même).


Ainsi avec la 3.3, nous avons réalisé un script où l’IA choisira manuellement une désignation planétaire sur l’une de ses planètes. Pour ce faire, elle calculera la productivité maximale de chaque ressource selon la désignation afin de déterminer leur score par rapport aux objectifs économiques du plan. Dans la plupart des cas, choisir une désignation sera très facile (un monde minier si il n’y a que des quartiers miniers). Cependant pour d’autres options comme le monde forge ou usine, il faut aussi prendre en compte les impacts sur le reste de l’économie. Pour les empires non ruches, cet équilibre entre biens de consommations et alliage est l’un des challenges les plus importants que nous ayons rencontré car il faut produire ces 2 ressources en même temps alors qu’il y a 3 options différentes via la désignation (forge, usine, pas de désignation). Encore une fois un grand pas en avant a été fait à ce propos mais il nous faut encore travailler dessus.

Dépenser l’alliage :​

Après l’équilibrage de l’alliage et des biens de consommations, il était temps de se pencher sur la façon dont l’IA dépense son alliage.
L’IA adorait les plateformes de défenses et les gardait à jour à tout moment. Ce n’était pas seulement un gouffre économique pour son alliage mais aussi une occupation constante des chaînes d’assemblage. Ainsi elle n’était même plus capable dans certains cas de construire des vaisseaux. De plus, il existait un bug où l’IA se bloquait la possibilité de construire des modules ou d’améliorer ses stations stellaires dans le cas où la configuration de la station n’était plus en lien avec les standards. Par exemple, si l’IA cherchait à construire un chantier d’assemblage de titan sur sa station (conformément à un plan déterminé) mais qu’elle n’avait pas la technologie pour le faire, alors elle ne construisait plus de stations stellaires.

Dans la mise à jour 3.3, les dépenses en alliage se font dans cet ordre de priorité :
- Construire des vaisseaux jusqu’à atteindre la capacité navale;
- Construire des modules pour stations;
- Construire de nouvelles stations;
- Améliorer les stations existantes;
- Améliorer les vaisseaux et plateformes de défense si et seulement si la flotte a un gain de +30% de puissance et que cette dernière n’est pas loin;
- Construire des plateformes de défense.

Les choix technologiques :

Les choix technologiques de l’IA découlent d’une valeur scriptée pour chaque technologie​ qui dépend à la fois de sa puissance et de la personnalité de l’IA (un empire militariste prendra plus souvent les technologies d’armement). Chaque technologie a donc un ensemble de modificateur qui détermine sa priorité, mais lorsque vous mettez la priorité partout, c’est pareil que de ne pas en mettre du tout. Dans la 3.3, nous avons fait une passe de modification sur toutes les technologies du jeu pour remettre en avant les technologies qui aideront l’IA à avoir une économie forte (bonus de production de ressources, croissance des populations, etc).
En outre, l’IA regardera plus favorablement les technologies plus rapides à faire afin de faire tourner plus souvent les propositions et ainsi trouver les technologies les plus utiles.

Le remaniement des bâtiments :

L’IA est maintenant capable de supprimer les bâtiments et quartiers qui ne lui servent plus pour faire de la place et réinvestir dans ce dont elle a besoin. En conséquence, elle ne paiera plus des coûts d'entretien inutiles. Ce scénario arrive assez souvent lorsque des planètes changent de mains et qu’une partie de la population disparaît où ne peut plus travailler dans toutes les activités possibles.

Les serviteurs fanatiques et les bio-trophés :

Nous avons beaucoup parlé des solutions pour qu’une IA puisse s’en sortir face au joueur économiquement dans ce carnet. Mais l’un de nos objectifs est aussi d’améliorer l’immersion des joueurs via les actions de l’IA. Ainsi nous avons ajouté des scripts pour les serviteurs fanatiques. Elle sera capable de construire des sanctuaires organiques sur toutes les planètes où elle possède un centre administratif afin d’y envoyer ses populations organiques. Sur les planètes avec de nombreux drones complexes, elle pourra même en construire plus d’un.
En outre, nous avons résolu quelques bugs dans le jeu à propos de bâtiments spécifiques comme les chambres d’élévations, les enscemenseurs Gaïa et les bassins de croissances.

La comparaison avant-après :

Pour conclure, je voulais vous montrer un comparatif des performances de l’IA avant et après les changements vu précédemment. Noter que ce que vous allez découvrir est basé sur une partie test en difficulté enseigne et une autre en difficulté grand amiral. La comparaison n’a pas pour rôle d’être une démonstration formelle mais plutôt comme une indication du changement. En effet il y a toujours d’importantes variations d’une partie à l’autre en fonction des événements, de l’ordre des technologies, des traditions et des ascensions choisies. Ces options sont aussi choisies lors de la réalisation de nos tests internes et ne sont pas représentatives d’une partie “standard”.

Les options :
- Galaxie à 200 étoiles;
- 1 empire (toujours le même : Les nations unies de la Terre);
- Date de milieu de jeu 2575, fin de jeu 2600 pour ne pas déclencher les évenements associés (Khan, Crises, etc).
- La carte est restée identique entre les deux versions mais pas entre les deux difficultés.

Commençons par le comparatifs en difficulté enseigne :


- Jusqu’à une centaine d'années de jeu, la puissance militaire reste équivalente mais ensuite, l’IA arrive à empiler plus de force que précédemment. Ceci permettra à l’IA de mieux réagir et de façon plus intéressante au cours de la partie.
- Après 150 ans, l’IA nouvelle version a construit 32 stations stellaires sur une réserve de 32, servant entre autres à augmenter la capacité navale et donc sa puissance militaire. À l’inverse, l’ancienne IA est coincée dans un cercle vicieux économique mortel. Elle parvient éventuellement à s’en sortir pour ensuite profiter d’une croissance économique forte et atteindre sa capacité en station stellaire de 32 grâce en grande partie à son stock accumulé pendant environ 30 ans.
- Après 200 ans de jeu, aucune des IAs n’a vraiment augmenté sa force militaire car elles sont déjà aux maximum de leur capacité navale et même bien au-dessus. La différence est principalement due à la technologie supérieure de la nouvelle IA.


Les résultats sont bien différents en difficulté Grand Amiral. Ceci est dû au bonus de commerce qui ne s’appliquait pas en version 3.2 mais que l’on a corrigé en version 3.3.
Au global le comportement de l’IA est similaire pendant les 100 premières années de jeu. Ensuite la nouvelle IA profite très clairement des changements malgré un ralentissement certains après 150 à 200 ans de jeu lorsque le maximum de stations stellaires est atteint.

Je souhaite pour finir remercier tous les joueurs ayant participé à la bêta et qui nous ont fourni de précieuses informations. Si jamais vous trouvez de nouvelles situations où l’IA réagit mal, n’oubliez pas que vous pouvez toujours nous envoyer vos rapports de bugs avec les sauvegardes en pièce jointe. Ces derniers nous aident énormément. Merci.


La 3.3 étant déjà sortie depuis un certain temps, qu'avez vous pensé de cette nouvelle IA? Pour tout le reste je vous invite à consulter le forum.