Il y a un article très intéressant sur la question sur Gamasutra: Erreurs intelligentes: Comment intégrer la stupidité dans votre code AI , par Mick West.
Cet article parle d'une IA de jeu de billard. Lors de la mise en œuvre d'une telle IA, il est assez facile de lui donner une balle à chaque tir. Une manière simpliste de rendre l'IA moins "intelligente" consiste, comme suggéré dans d'autres réponses, à ajouter un facteur aléatoire au calcul, ce qui rend l'IA plus manquante.
Mais il y a deux défauts majeurs avec une telle approche. Tout d'abord, c'est imprévisible. Pour un joueur jouant en mode "Facile", il est inacceptable que l'IA soit "chanceuse". Que se passe-t-il si votre facteur aléatoire fait que l'IA réussit encore mieux, frappe une balle plus précieuse ou fait un combo? Vous ne savez pas ce qui va se passer, et avoir de la chance ne devrait pas être une option pour l'IA en mode facile.
L'autre défaut est que le joueur tentera d'identifier un schéma dans les comportements de l'IA. Et avec un simple facteur aléatoire, il n'y a pas de schéma. Mais cela ne signifie pas que le joueur ne verra aucun motif, bien au contraire, en fait. Dès que l'IA a de la chance, le joueur verra une stratégie dans son comportement. Dans l'article, les joueurs se plaignent du fait que l'IA joue une stratégie de position. Lorsqu'il n'y a qu'un facteur aléatoire dans la précision angulaire .
De mon point de vue, après avoir lu cet article révélateur, une IA non parfaite ne devrait jamais utiliser la randomisation comme facteur de simplification. C'est tout le contraire. Une IA plus simple devrait être plus intelligente, mais essayer d'aider le joueur.
Dans l'exemple de jeu Pool, la meilleure option pour implémenter une IA en "mode facile" était en fait de supprimer tous les facteurs aléatoires et d'ajouter une stratégie de positionnement. L'IA essaierait de frapper des balles afin de préparer un tir facile et impressionnant pour le joueur .
De cette façon, le joueur pensera qu'il a eu de la chance. Et c'est ce que vous attendez d'un jeu lorsque vous jouez facilement.
Le concept clé est d'éviter de donner au PNJ une "connaissance parfaite".
Je suis sûr qu'il y a une tonne d'autres exemples qui seront donnés, peut-être pourriez-vous nous parler de votre jeu et nous pouvons être plus précis :-)
la source
Un moyen rapide de rendre une IA parfaite combattable est de lui faire prendre des décisions imparfaites en ajoutant du `` bruit '' à ses entrées ou à ses sorties. Par bruit, j'entends certains facteurs aléatoires.
Voici un petit exemple de sortie:
Voici quelques idées de contribution:
Une chose évidente à prendre en considération est la vitesse de l'IA. Dans la plupart des jeux, les IA peuvent réagir BEAUCOUP plus rapidement que les humains (en particulier dans les combats) et effectuer un multitâche apparent (très visible dans les jeux RTS). Vous devez donc agir en conséquence, en gardant l'IA un peu lente (peut-être de manière adaptative), et en limitant la quantité de choses qu'elle peut faire dans un laps de temps déterminé (c'est-à-dire une action chaque demi-seconde).
J'espère que ça t'aide et bonne chance!
la source
Il est difficile de donner une réponse directement utile sans savoir exactement ce que vous essayez de faire.
J'ai deux choses à dire sur le sujet qui pourraient vous aider.
Première chose (et c'est de loin la plus importante), si vous essayez de rendre l'ennemi plus intéressant et plus humain, alors vos tactiques de combat ne sont pas pertinentes. L'astuce pour faire "croire" à un ennemi vivant est d'utiliser des animations, des sons et de petits détails pour impliquer un comportement humain. L'IA parfaite peut marcher dans un coin, voir un joueur et tirer. Une IA humaine pourrait se promener dans un coin, voir un joueur, avoir un regard surpris sur son visage et crier alarmée, et tirer. Le premier semble robotique. Le second semble humain. Les deux utilisent une IA identique dans tous les sens, à l'exception de l'insertion de l'animation juste avant le tournage (ou, pour garder le même comportement tactique, pendant le tournage).
Deuxièmement, évitez de randomiser. Les joueurs ne l'apprécient pas autant que les concepteurs veulent le penser. Les joueurs ne voient pas "l'ordinateur a généré un 1 sur 100, suivi d'un 5, 3 et 4, donc les facteurs d'erreur pour les quatre derniers tirs n'étaient que de 1%, 5%, 3% et 4%, et c'est pourquoi vous êtes mort en une demi-seconde ce tour. " Les joueurs ne voient que des ennemis qui parfois manquent sauvagement et d'autres fois les clouent à plusieurs reprises sans raison perceptible, ce qui est incroyablement frustrant. Une bonne conception de jeu consiste en grande partie à construire des modèles que les joueurs humains peuventobserver, apprendre et battre, et réussir le joueur sur la base de son propre jugement, de ses compétences et de son intuition plutôt que de déterminer si le joueur a eu de la chance. L'envie de randomiser vient de l'expérience avec les jeux de table et les jeux de hasard, qui sont tous deux des supports incroyablement différents des jeux vidéo (et ce qui fonctionne souvent sur un support n'a pas de sens dans un autre).
la source
Je me souviens que lors de notre cours d'IA au collège, il y avait un sujet sur la façon de rendre l'IA plus "humaine" et moins parfaite. C'était il y a de nombreuses années, donc je me souviens juste de quelques puces du haut de mon esprit.
Bien sûr, ce ne sont que des conseils généraux qui doivent être étudiés et testés pour chaque cas, et peuvent en effet rendre votre IA encore plus artificielle que prévu. Cependant, je pense qu'ils sont un bon point de départ.
la source
Je viens de voir ce pop up et je voulais partager une idée que j'ai utilisée dans le passé.
Disons que le personnage a trois coups et que chacun est marqué, un score plus élevé est un meilleur coup. (D'autres réponses parlent d'ajouter du bruit pour créer ce score.)
Résumez le total des points (100)
Retirez la statistique d'intelligence du personnage de la valeur maximale possible pour cette statistique (disons 60 sur 100).
Générez un nombre aléatoire entre 0 (ou un autre étage) et le rapport d'intelligence (0,6), multiplié par le total des points (100). Dans notre exemple, disons que le résultat est 45.
Maintenant, vous commencez à soustraire les mauvais mouvements de cette valeur jusqu'à ce que vous atteigniez zéro. (Soustrayez dans l'ordre.)
Tout d'abord, nous considérons le sort de glace, qui a marqué un 20. 45 - 20 = 25. Il est supérieur à zéro, nous jetons donc le sort de glace.
Deuxièmement, regardez l'attaque avec une épée, qui vaut 30 points. 25 - 30 = -5. Nous atteignons notre seuil, nous choisissons donc l'attaque avec une action d'épée.
Dans ce système, un personnage avec une faible intelligence ne choisira pas le meilleur coup. Et un personnage doté d'une grande intelligence choisira souvent le meilleur coup. (Dans cet exemple, un personnage doté d'une intelligence parfaite choisit le meilleur coup 50% du temps.)
L'ajout d'un mécanisme de plancher au nombre aléatoire augmentera les chances que de meilleurs mouvements soient sélectionnés.
la source