AI de jeu complexe pour les jeux de stratégie au tour par tour

26

Je fais des recherches pour un projet de jeu de stratégie au tour par tour et je recherche de bonnes ressources sur ce sujet. Le jeu est un jeu de guerre typique où les pays peuvent se battre, déployer des unités et faire bouger ces unités sur une carte hexagonale, s'attaquer, etc.

Je suis particulièrement intéressé par l'organisation de l'IA de Civilization V! Selon Wikipedia, le jeu utilise quatre systèmes d'IA différents pour différentes couches de l'IA du jeu:

  • l'IA tactique contrôle les unités individuelles
  • l'IA opérationnelle supervise l'ensemble du front de guerre
  • l'IA stratégique gère tout l'empire
  • la grande IA stratégique définit des objectifs à long terme et détermine comment gagner le match

Sur le plan conceptuel, cela semble être très logique de réaliser une IA complexe et cela me rend curieux de savoir comment ces différents systèmes d'IA fonctionnent (et fonctionnent ensemble). L'IA tactique est probablement la plus facile à comprendre car elle gère la prise de décision pour une seule unité (mouvement, attaque, réparation, retraite, etc.) mais je pense que les autres systèmes d'IA sont là où cela devient vraiment intéressant. Par exemple, que fait l'IA opérationnelle et comment fait-elle cela? Je suis sûr que ce sont les secrets les mieux gardés de Firaxis Games, mais ce serait cool de commencer une discussion à ce sujet pour en savoir plus.

De plus, si quelqu'un connaît de bons livres qui traitent l'IA des jeux de stratégie au tour par tour, ce serait bien de le savoir. De toute évidence, c'est un sujet peu épineux sur le Web. J'ai obtenu "Programming Game AI by Example", mais ce livre traite plus de l'IA du comportement d'un seul agent que de l'IA orientée vers les objectifs de haut niveau.

BadmintonCat
la source

Réponses:

19

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!

Ray Dey
la source
2
"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." Je n'en serais pas trop sûr. Il y a une différence entre simplement décider de viser une victoire de conquête et décider sur qui déclarer la guerre, si nous sommes trop étendus et devons poursuivre pour la paix, quelle cible est la plus faible à attaquer, quelles unités nous devons construire, acquérir les bonnes ressources stratégiques pour renforcer notre armée, trouver un moyen d'amener deux ennemis à se battre, etc. Cette phase est beaucoup plus compliquée que vous ne le croyez.
Nicol Bolas
1
Wow, et je pensais que ma réponse devenait un peu longue. LOL. Bon spectacle.
DampeS8N
1
Une chose à noter est que Civ n'a absolument pas de conditions de victoire simples. Il existe de nombreuses façons de gagner. Construire des merveilles, faire avancer la science, la conquête, la diplomatie, etc. Le choix de la destination est souvent très difficile et peut changer en fonction des conditions de la carte. Vous découvrirez peut-être, par exemple, que quelqu'un que vous venez de rencontrer est bien en avance sur vous en science, et vous devrez abandonner cette voie et vous contenter d'une nouvelle. Souvent, le succès se résume à garder vos options ouvertes aussi longtemps que vous le pouvez.
DampeS8N
@NicolBolas, cela peut très bien être plus complexe que cela, mais tous les points que vous avez soulevés semblent être des responsabilités pour les niveaux inférieurs de l'IA. Décider sur qui déclarer la guerre -> Opérationnel. Quelle cible est la plus faible à attaquer -> Opérationnelle / Tactique. Acquérir les bonnes ressources -> Opérationnel / Stratégique. Cela est entièrement deviné, mais il serait logique que les systèmes inférieurs soient responsables des stratégies spécifiques pour assurer le niveau de couplage le plus bas.
Ray Dey
1
@RayDey: Le plus haut niveau d'IA doit être impliqué dans des choses comme l'acquisition de ressources, car il doit décider comment l'obtenir. La diplomatie pourrait l'obtenir. L'expansion à la ressource pourrait l'obtenir. Le niveau opérationnel n'est pas le bon endroit pour décider si l'on doit se battre dessus par rapport à d'autres tactiques. Le couplage est une nécessité pour un jeu comme Civilization; tout affecte tout le reste dans ce jeu. Vous ne pouvez pas avoir une IA efficace qui prend des décisions sans beaucoup de couplage. Bien que cela puisse expliquer pourquoi l'IA de Civ V n'est ... pas particulièrement brillante;)
Nicol Bolas
9

En général, l'IA dans les jeux ne doit pas être considérée comme `` complexe '', il s'agit d'obtenir ce que vous voulez avec le moins d'effort possible. Le nom du jeu est Emergence.

Dans ce cas, votre conceptualisation fondamentale est erronée. Ces 4 systèmes n'ont pas du tout besoin de fonctionner ensemble. Ils ont juste besoin de ressembler à eux. Ils peuvent également être beaucoup plus dépouillés que vous ne le pensez.

Vous avez également inversé l'ordre de difficulté. La composante la plus difficile de Civ AI est l'IA tactique, suivie de près par l'Opérationnelle. La stratégie est probablement très simple et la grande IA est probablement encore plus simple.

La communication entre les composants ressemble plus à un système de grognements et moins à une communication réelle. De haut niveau à bas niveau, cela ressemblerait à ceci:

Grand AI

évaluer l'état de la carte. Compte tenu des connaissances de l'IA (qui pourrait être tout ou seulement ce qu'elle aurait si elle était un joueur), elle décide quel objectif final est le plus rapide à atteindre. Il s'agit probablement d'une machine à états finis qui effectue un certain calcul et choisit un objectif. C'est peut-être quelque chose de plus exotique; un algorithme génétique ou éventuellement un doohickey bayésien . Il émet ensuite un message comme «plus de science».

Strat AI

examine ensuite ce dont il dispose pour travailler avec une grande partie des mêmes informations. Il s'agit d'essayer d'atteindre cet objectif global, mais aussi de s'inquiéter des aspects plus détaillés du jeu. Suis-je en guerre? Dois-je des gens affamés? bientôt. C'est probablement aussi une machine à états finis , peut-être une logique floue (qui n'est en réalité qu'une évolution sur un FSM.) Supposons qu'il s'agit d'un FSM simple. Il posera les questions ci-dessus dans un ordre où, compte tenu de certains critères, il décidera que différentes choses doivent se produire ce tour. Je suis en guerre, alloue des fonds pour la formation des soldats. Mon peuple meurt de faim, construit un grenier ici plutôt que de construire quelque chose de scientifique.

Choisir les unités à construire pourrait faire partie de Strat AI ou Op AI selon la façon dont nous séparons les choses.

Op AI

prendra les unités disponibles et les affectera à différents fronts de guerre. Il décidera de la forme générale du conflit, où les nouvelles unités se dirigeront une fois déployées. C'est probablement aussi un FSM. Il peut remarquer que l'ennemi sur le front A attaque avec des unités faibles contre l'unité B, et y enverra plus d'unités Bs, plutôt que vers l'autre front qui est fort contre l'unité B.Il donnera des ordres généraux aux unités en général. Attaque à volonté. Battre en retraite. Bientôt.

IA tactique

est spécifique à l'unité. Chaque type d'unité réagira différemment à l'ordre général. Une unité destinée au suicide peut ignorer un ordre de retraite. Les unités qui sont des wusses peuvent battre en retraite même quand on leur dit de se battre. Civ est généralement très léger sur ce genre de chose. Généralement, toutes les unités de Civ suivent leurs ordres. Étant donné l'ordre plus important auquel ils sont soumis, ils sont (voir un modèle ici?) Un FSM. Suis-je blessé? Je devrais reculer et guérir. Ai-je un avantage à cet endroit? Attaque. Suis-je trop près pour attaquer? Recule. Et la complexité de ce FSM n'a pas besoin d'être beaucoup plus que ces 3 choses pour être efficace et convaincante comme intelligente.

Cela peut-il être amélioré?

Oui bien sûr. La question est de savoir si les joueurs le remarqueront. Et 99% du temps, ils ne le feront pas.

Maintenant, c'est toute l'IA de prise de décision. Il y a d'autres sous-systèmes d'IA en jeu ici. Il existe A * ou un autre algorithme de recherche de chemin qui permet aux unités de trouver le chemin le plus court vers un emplacement. Il existe des algorithmes pour trouver le meilleur emplacement pour démarrer de nouvelles villes. Bientôt. Ils sont souvent regroupés avec l'IA, et sont souvent vraiment plus complexes que la partie «pensée» de l'IA. En fait, le code pour trouver les réponses aux questions que les FSM doivent se poser est souvent plus complexe que le FSM lui-même. Comment décide-t-on exactement que

DampeS8N
la source
Doohicky basé sur Bayesian - génial
Brian Broom