Bien que je sois d'accord avec le premier paragraphe de DampeS8N (c'est-à-dire que l'IA de jeu doit seulement être suffisamment intelligente pour que le joueur pense qu'elle est intelligente), je pense que cette question nécessite un peu plus de détails. Les structures de données utilisées pourraient être des FSM à tous les niveaux, mais cela ne répond pas vraiment à la question de savoir comment les systèmes individuels fonctionnent.
Avertissement: j'ai à peine joué aux jeux Civilization, ma compréhension du gameplay est donc limitée. S'il y a des erreurs évidentes, je m'excuse. Veuillez me corriger et je me ferai un plaisir de le modifier.
Je vais prendre des citations de l' article original de l' IGN .
1. IA tactique
Au niveau le plus bas, l'IA tactique utilise les forces disponibles pour gagner une bataille à l'échelle locale.
Il s'agit probablement de la partie la plus standard du sous-système. Il existe des moyens illimités de réaliser cela en utilisant des FSM, des arbres de comportement (ou même en effectuant des actions aléatoires, selon la difficulté de l'IA).
Cependant, comme il s'agit d'un jeu au tour par tour, similaire à Risk, je pense que ce qui se produit le plus probablement, c'est que chaque unité se voit attribuer un score. Il y a ensuite des multiplicateurs attachés à ce score en fonction de différentes variables (allégeances, bonus de terrain, etc.).
Le résultat est ensuite calculé par quelque chose comme ceci:
If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit
Il est logique que l'IA essaie de maximiser ce score au combat.
Ajoutez une valeur epsilon (par exemple, une petite chance aléatoire d'échec / succès) et vous avez une IA assez décente (personne ne veut un adversaire parfait, ce n'est tout simplement pas amusant!).
2. IA opérationnelle
Un pas de plus, l'IA opérationnelle choisit les batailles à mener et s'assure que les forces nécessaires sont disponibles.
Je pense qu'il y a quelques points à cela:
- Évaluation de la force actuelle
- Renforcement des unités
- Évaluer quels combats choisir / éviter
Évaluation de la force actuelle - Cela me crie simplement la carte d'influence . Il peut être facilement représenté sur une grille hexagonale. Comme ce sous-système est axé sur le combat, les valeurs d'influence peuvent être représentatives des valeurs de force de chaque unité à proximité. Si vous avez une armée massive concentrée dans une petite zone d'hexagones, la valeur d'influence sera énorme et l'IA opérationnelle en tiendra compte lors de l'évaluation des combats à choisir. N'oubliez pas, les valeurs d'influence des armées adverses seront également calculées. Cela permet à l'IA opérationnelle de prédire les menaces potentielles entrantes.
Renforts d'unités - En recevant des informations sur les factions opposées de la carte d'influence, l'IA peut déterminer quelles unités sont les plus menacées. L'IA peut alors donner un ordre aux unités proches pour aller renforcer les parties menacées.
Évaluer quels combats choisir / éviter - Quelques situations peuvent se produire ici. Si l'IA détecte qu'une unité est menacée ET qu'il n'y a aucune unité à proximité pour l'aider, elle pourrait a) décider de sacrifier l'unité (si ce n'est qu'une infanterie modeste, au lieu d'un général irremplaçable, par exemple) ou b) Commander l'unité se retirer. Inversement, si l'IA détecte une unité ennemie faible près d'une armée, elle pourrait ordonner aux unités de retirer cet ennemi.
Voici un papier décent qui utilise des cartes d'influence dans les jeux de stratégie en temps réel.
3. IA stratégique
Se déplaçant encore plus haut, l'IA stratégique gère l'empire dans son ensemble, en se concentrant sur où construire des villes et quoi en faire.
"Où dois-je construire une ville?" sonne comme une évaluation de position. Les programmes d'échecs et autres jeux l'utilisent pour déterminer l'opportunité d'une position donnée. Par exemple:
Hex A: près des ressources, sur un terrain élevé, près des alliés, près de l'ennemi Hex B: loin des ressources, sur un terrain de niveau moyen, à distance moyenne des alliés, loin de l'ennemi
La fonction d'évaluation de position pourrait prendre ces trois facteurs comme suit:
Score = Proximity to resources (closer yields a higher score) +
terrain elevation (higher yields higher score) +
proximity to allies (closer is better) +
proximity to enemies (farther is better)
Et quel que soit l'hexagone ayant le score le plus élevé, c'est là que la ville sera construite. Vous trouverez plus d'informations sur les fonctions d'évaluation ici .
Je pense que l'IA stratégique a également un tas de stratégies pseudo précuites dans le jeu en fonction du type de victoire que l'IA vise.
4. Grand AI stratégique
Au sommet de l'échelle se trouve la grande IA stratégique, qui décide comment gagner le match.
Je pense que c'est probablement le plus simple du groupe, et cela donne l'impression qu'il est plus impressionnant qu'il ne l'est vraiment. Dans un jeu comme celui-ci, il n'y aura qu'un nombre fini de types de victoires. L'article mentionne une victoire de conquête, en supposant qu'il existe également des victoires de l'Alliance, etc., cela pourrait être aussi simple que de choisir au hasard l'un des types et de le transmettre aux autres systèmes.
EDIT: Bien sûr, comme l'a souligné DampeS8N, le type de carte pourrait dicter la meilleure condition de victoire à atteindre, auquel cas elle pourrait être codée en dur par les concepteurs ou une sorte de fonction d'évaluation prenant en compte différentes variables.
Résumé
Je pense que ce qui est vraiment important à noter à propos de ce type de système, c'est que la façon dont les sous-systèmes sont en couches, ils n'ont pas vraiment besoin de communiquer beaucoup entre eux. Cela semble être une architecture descendante avec les composants faiblement couplés. Du point de vue de la conception technique, il est propre et flexible et s'inspire probablement du comportement émergent et / ou de l' architecture de subsomption .
Je m'excuse vraiment pour la longueur de ce post, il est devenu un peu bête :(
De toute façon, j'espère que ça aide!