Faire une IA de jeu 4X passable


8

Je code un jeu 4X plutôt "simple" (si un jeu 4X peut être simple). Son ampleur est indé, et je me demande s'il est possible de trouver une IA passable sans que je passe des mois à coder dessus.

Le jeu comporte trois grandes parties de prise de décision; dépense de points de production, dépense de points de mouvement et dépense de points technologiques (fondamentalement, il y a 3 «devises» différentes, la monnaie non dépensée à la fin du tour n'est pas enregistrée)

  • Dépenser des points de production
    • Améliorez une planète (augmentez sa technologie et sa production)
    • Construire des navires (3 types)
  • Déplacer des vaisseaux de planètes en planètes (coût des Points de Mouvement)
    • Déplacer pour attaquer
    • Déplacer pour fortifier
  • Tech de recherche (peut rechercher partiellement une technologie, comme dans Master of Orion)

Le plan pour moi en ce moment est une approche par force brute. Il y a fondamentalement 4 grandes options pour le joueur -

  1. Améliorez la ou les planètes à sa production et à sa production technologique

  2. Conquérir autant de planètes que possible

  3. Sécurisez autant de planètes que possible

  4. Accédez à une certaine technologie dès que possible

Pour chaque décision, je vais parcourir les options possibles et arriver à un score; puis l'IA choisira la décision avec le score le plus élevé. Pour l'instant, je n'ai aucune idée de comment «mélanger les décisions». Autrement dit, l'IA souhaite mettre à niveau et conquérir les planètes en même temps. Je suppose que je peux avoir une autre logique qui fait une optimisation en force brute sur une combinaison de ces 4 décisions ....

Du moins, c'est mon plan si je ne vois rien de mieux. Existe-t-il un moyen plus rapide de créer une IA passable? Je n'ai pas besoin d'un très bon, pour rivaliser avec Deep Blue ou autre, juste quelque chose qui a l'illusion de l'intelligence.

C'est la première fois que je fais une IA à cette échelle, donc je n'ose pas essayer quelque chose de trop grand aussi. Jusqu'à présent, j'ai des expériences avec FSM, DFS, BFS et A *


2
La bonne façon d'aborder ce problème est de faire des recherches sur lui-même. Mettez en œuvre ce que vous décrivez et voyez comment cela fonctionne. Améliorez-le ensuite. Une fois que vous pensez avoir un bon algorithme, réimplémentez l'IA pour utiliser la nouvelle structure. Je suggérerais de le construire dans un langage de script comme Lua, pour faciliter la suppression de l'ancien code.
Nicol Bolas

Pour clarifier, je pourrais essayer de mettre en œuvre ce que j'ai en tête. Je me demande simplement s'il existe d'autres façons de créer une IA en plus du min-maxing ou de la méthode traditionnelle `` itérer et calculer le meilleur score ''.
Extrakun

Réponses:


4

On dirait que vous pouvez essayer Minimax pour "mélanger" vos décisions. Il y a eu une conférence lors du Game AI Conf de l'an dernier par les programmeurs de Green Corp, et c'est ce qu'ils ont utilisé pour construire leur IA. Il leur a fallu beaucoup de temps pour bien faire les choses, mais ils ont un résultat décent.


1

S'il est assez bon pour susciter l'intérêt (et vous devrez supposer qu'il le sera, ou vous pouvez le quitter dès maintenant), et qu'il prend en charge le réseautage, la meilleure ligne de conduite pour ce genre de chose est:

  • construit multijoueur sans IA
  • s'assurer que toutes les données envoyées au client peuvent être facilement "comprises" par une IA
  • créer une IA très simple, qui permet soit une sorte de script, soit de nombreuses options de configuration
  • permettre aux joueurs de modifier les scripts de l'IA, de les lier au jeu et de laisser l'IA jouer via le réseautage, comme s'il s'agissait d'un vrai joueur

Ce faisant, la partie difficile sera de permettre à l'IA d'être scriptée et utilisée de cette manière, et vous "externaliserez" simplement l'optimisation de l'IA réelle aux joueurs.

Cela vous donnera non seulement une meilleure intelligence artificielle, mais ajoutera également beaucoup de valeur au jeu lui-même!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.