Comment créer une IA raisonnable?


11

Je crée un jeu de logique basé sur le jeu Fox and Hounds. Le joueur joue le renard et l'IA joue les chiens. (autant que je puisse voir), j'ai réussi à rendre l'IA parfaite, donc elle ne perd jamais. Le laisser tel quel ne serait pas très amusant pour les joueurs humains.

Maintenant, je dois réduire l'IA pour que l'homme puisse gagner, mais je ne sais pas comment. La logique actuelle de l'IA est basée sur la correspondance des motifs - si j'introduis des mouvements aléatoires qui font que le tableau sort de l'espace des motifs, l'IA jouerait très probablement stupide jusqu'à la fin de la partie.

Des idées sur la façon d'abaisser l'IA d'une manière qui ne passe pas du "génie" à "complètement stupide" en un seul mouvement?


Vous avez donc trouvé et mis en œuvre la stratégie optimale, toujours gagnante. Pourquoi ne pas passer à des jeux légèrement plus compliqués maintenant? Ou, qu'en est-il d'un défi: implémentez une stratégie qui perd toujours , quoi que fasse l'autre joueur. Voir aussi: Losing Chess / Antichess
Martin Sojka

Peut-être que vous aimeriez jeter un coup d'œil à ma réponse sur cette autre question: gamedev.stackexchange.com/questions/12858/…
Tyn

Fox and hounds n'est pas aussi complexe que les échecs. Un mauvais mouvement et l'IA perd à coup sûr. Il est très facile de rendre l'IA stupide. Le fait que je l'ai résolu en utilisant du papier et du stylo et des heures de réflexion stratégique ne signifie pas que mes joueurs feront de même.
Milan Babuškov

Réponses:


7

De nombreuses implémentations peuvent entraîner une chance pondérée aléatoire pour les mouvements - disons, une chance de faire un mouvement optimal et une chance de faire un mouvement sous-optimal. Déterminer à quel point un mouvement n'est pas optimal peut être un problème très délicat, mais conduira également votre IA à prendre des décisions beaucoup plus intelligentes.

Remarque importante: peu importe le niveau de difficulté, ce serait probablement une mauvaise idée de laisser passer l'IA pour gagner immédiatement la partie. S'il y a une possibilité de faire un mouvement qui terminerait le jeu ce tour-ci, il devrait toujours être pris. Sinon, cela détruira absolument l'impression du joueur sur la façon dont l'IA agit.


Merci. J'ai décidé de le laisser jouer intelligemment pour tous les motifs simples. Il y a deux modèles complexes où le chemin du joueur vers la liberté n'est pas facilement visible, j'ai donc créé des modèles supplémentaires qui font perdre l'IA en jouant des mouvements qui ressembleraient à un joueur humain novice dans une telle position. Au début de la partie, je change aléatoirement le motif gagnant en en perdant un pour ces positions.
Milan Babuškov

10

Comme cela semble être un jeu «résolu», la seule réponse est que l'ordinateur doit effectuer des mouvements intentionnellement mauvais.

Une solution rapide peut être de calculer le meilleur coup, puis de calculer également un autre coup légal qui peut ne pas être aussi bon. Le niveau de difficulté de l'IA serait mesuré par le pourcentage de chances qu'il choisisse l'autre pas un bon coup, par rapport au coup parfait.

  • Difficile - 90% de bons coups
  • Difficile - 70% de bons coups
  • Normal - 50% de bons coups
  • Simple - 20% de bons coups
  • A été abandonné enfant - <5% de bons coups
  • Hotdog - Tout aléatoire

10
C'est probablement une bonne idée, mais vous vous retrouveriez avec une IA retardée si elle prend intentionnellement de mauvais mouvements. Du haut de ma tête, je ferais d'abord une passe pour les mouvements "légaux", puis appliquerais des poids à chaque mouvement et les classerais par poids, le poids le plus élevé étant le meilleur mouvement. Vous pouvez ensuite faire converger un RNG vers de meilleurs mouvements en fonction de la difficulté.
Jonathan Connell

4
Je suis d'accord avec @Jonathan Connell. Considérez: se cacher derrière des caisses vs se cacher derrière des barils explosifs vs se cacher parmi des caisses et une grenade active. L'IA devrait évaluer la gravité du mouvement, une meilleure IA effectuant plus souvent de meilleurs mouvements. Une IA ne sera pas géniale ou difficile si 70% du temps elle vous tire dessus et 30% du temps elle se fait exploser. Ce sera juste hilarant.
doppelgreener

2
@Adrian Seeley Votre dernier commentaire touche vraiment le plus gros problème; pour moi, un humain jouant contre l'IA trouvera toujours instinctivement un raisonnement derrière ses choix même s'ils sont théoriquement complètement aléatoires. Dans un jeu de société par exemple, cela peut être contré en limitant le nombre d'itérations dans la prévision des mouvements, alors peut-être que cela pourrait être une bonne solution dans un jeu résoluble?
Jonathan Connell

2
Je suis d'accord avec les deux Jonathan, mais je donne cette réponse +1 pour 'Was Dropped as a Child' et 'Hotdog'
thedaian

2
@Jonathan Connell: Vous devez publier votre proposition / solutions comme réponse. Cela mériterait quelques votes positifs.
bummzack
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.