Dans les vieux jours du jeu, je suis sûr que de simples déclarations switch / case (dans un sens) auraient très bien fonctionné pour la plupart du jeu “AI”. Cependant, à mesure que les jeux sont devenus de plus en plus complexes, en particulier au 3e bond, des algorithmes plus complexes sont nécessaires. Ma question est la suivante: les algorithmes réels d’apprentissage de la machine (comme l’apprentissage par renforcement) sont-ils utilisés dans l’IA du jeu à ce stade? Ou est-ce encore la plupart du temps seulement dans les projets de recherche dans les universités (auxquels j’ai été exposé)?
Si ce ne sont pas les algorithmes réels d’apprentissage automatique, alors qu’est-ce qui conduit à une IA commerciale à la pointe de la technologie? Est-ce simplement des algorithmes hautement complexes mais statiques (non-ML) capables de couvrir la plupart des possibilités? Et si oui, quels types d’algorithmes sont utilisés?
J’ai toujours été curieux à ce sujet, merci!
Edit: Après avoir réfléchi un peu plus, je peux clarifier un peu plus. Comment les agents du jeu prennent-ils des décisions? S’ils n’utilisent pas d’algorithmes d’apprentissage réels en temps réel, un algorithme d’apprentissage a-t-il été utilisé dans les étapes de développement pour produire un modèle (algorithme statique), et ce modèle est ensuite utilisé pour prendre des décisions? Ou un algorithme statique pour la prise de décision a-t-il été codé à la main dans un sens?
EDIT : Notez que cette réponse remonte à plus de cinq ans – l’apprentissage automatique a beaucoup progressé à cette époque et il est probable que ce qui a été utilisé dans les jeux a également changé. La réponse originale suit.
Je pense que vous surestimez les capacités de la plupart des jeux IA modernes; ce qui est génial, car c’est exactement ce que les développeurs de jeux modernes espèrent. Ils investissent du temps pour rendre le système plus intelligent qu’il ne l’est par exemple en demandant aux personnages de l’IA de parler de ce qu’ils vont faire ou en suivant occasionnellement des scripts prédéfinis qui effectuent une série de tâches complexes.
Si ce ne sont pas des algorithmes réels d’apprentissage de la machine, alors qu’est-ce qui conduit à une IA commerciale à la pointe de la technologie? Est-ce simplement des algorithmes hautement complexes mais statiques (non-ML) capables de couvrir la plupart des possibilités?
Il y a en fait très peu de possibilités en général. Comme mentionné dans une autre réponse, il existe généralement une machine à états finis au travail. par exemple. Un ennemi typique dans un jeu de tir peut être l’un des états suivants: inactif, alerte (ils savent qu’il ya des problèmes), chasser (ils cherchent un ennemi), attaquer (ils peuvent voir l’ennemi et l’engager), et fuyant (ils tentent de s’échapper d’un ennemi). Les transitions entre les états peuvent être des événements simples tels qu’un bruit entendu, un adversaire vu, une valeur de santé inférieure à un certain seuil, etc. Très sortingvial, vraiment.
La mise en œuvre de chaque état peut généralement être décomposée en un petit nombre d’actions simples, par exemple. déplacer vers la position, regarder dans la direction, tirer sur la cible, etc. Ces activités de bas niveau sont bien documentées et largement utilisées. (par exemple, une recherche * de recherche de trajectoire, de mathématiques vectorielles pour le pilotage et l’orientation). La plupart du temps, ces éléments de base fonctionnent aussi bien en 3D qu’en 2D.
De plus, l’IA plus complexe est souvent scriptée, ce qui signifie que le comportement est préprogrammé dans un langage de programmation simple pour fonctionner dans une situation de jeu très spécifique. Les scripts pour des situations spécifiques peuvent faire des hypothèses sur l’environnement (par exemple, l’emplacement de la couverture à cacher, la proximité des alliés et des ennemis, etc.) et peuvent fournir des objectives très spécifiques en conséquence. Des scripts plus généraux peuvent être déclenchés par un ensemble de types d’événement prédéterminés (ex: ennemi vu, ally killed, bruit non identifié) et des réponses très simples écrites dans chaque cas (par exemple, IF self.health> 75% ALORS attackNearestEnemy ELSE fleeToSafety).
… est-ce qu’un algorithme d’apprentissage a peut-être été utilisé dans les étapes de développement pour produire un modèle (algorithme statique), et ce modèle est ensuite utilisé pour prendre des décisions dans le jeu?
Ceci est assez courant dans les situations de modélisation de véhicules, tels que les jeux de course. Vous pouvez alimenter un algorithme de piste en une série de points et d’entrées basés sur ces points et obtenir un algorithme d’apprentissage pour développer une stratégie complète. le meilleur temps. Finalement, vous pouvez expédier cela avec le jeu. Mais c’est une simple cartographie à partir d’un petit nombre d’entrées (angle de route, proximité des obstacles, vitesse actuelle) à un petit nombre de sorties (vitesse souhaitée, direction souhaitée), ce qui se prête bien à l’apprentissage automatique. Les jeux qui simulent le comportement humain peuvent rarement se rabattre sur ces approximations fonctionnelles simples. Nous avons donc tendance à nous fier à la simulation manuelle d’états comportementaux distincts.
Parfois, il pourrait y avoir une approche hybride, où les transitions de machine à états finis pourraient être entraînées pour être plus optimales, mais cela ne figurera probablement pas dans de nombreux jeux dans la pratique, car les transitions réalistes sont généralement insignifiantes pour un concepteur.
Un grand nombre de jeux utilisent des machines à états finis
Il y a de très bonnes ressources sur le net à ce sujet:
Il ne sert à rien d’avoir du ML dans les jeux, du moins la plupart des jeux grand public, car l’IA deviendrait très difficile à battre et donc pas agréable pour le joueur. Une grande partie de l’effort dans l’IA de jeu se divise en trois parties: la première est de permettre à l’ordinateur de sortingcher. c’est-à-dire que l’IA sait généralement où se trouve le joueur et connaît à l’avance les meilleurs itinéraires dans l’environnement. Cela est nécessaire sinon l’IA serait en train de tâtonner des impasses tout le temps, ce qui n’est pas génial. L’autre effort principal dans le travail de l’IA consiste à rendre les PNJ suffisamment stupides pour que le joueur puisse les battre. Il est assez facile pour l’IA d’être écrit pour toujours battre le joueur (pensez à Half Life où vous rencontrez une équipe de marines), le plus difficile est d’équilibrer l’apparence de l’IA avec la jouabilité. La dernière partie est de s’assurer que l’IA ne consum qu’une quantité limitée de ressources, à la fois en termes de temps processeur et d’utilisation de la mémoire.
Un autre point négatif à utiliser ML est que l’état de l’IA doit être stocké entre les sessions, sinon l’IA devra recommencer à zéro à chaque fois. Sur un PC, cela ne pose pas de problème, mais les consoles avaient un stockage à long terme très limité, ce qui excluait la sauvegarde des informations d’état.
Un exemple de «tromperie» d’IA: dans Transport Tycoon, les sociétés d’IA n’ont jamais été accusées d’avoir modifié la hauteur du terrain. Je le sais parce que je l’ai porté sur le Mac il y a plusieurs années.
Le premier FPS que j’ai fait, l’IA se dirigeait toujours vers le joueur, mais la direction serait pondérée en utilisant un échantillon aléatoire d’une dissortingbution normale, donc la plupart du temps, la direction était vers le joueur, mais parfois la direction était loin. aidé l’IA à sortir des impasses. C’était dans les jours avant qu’il y ait assez de grognement de processeur pour faire une recherche A *.
Une recherche et des liens de parenté tels que HPA * sont probablement le concept d’IA le mieux compris dans l’indussortinge du jeu vidéo. Ils sont généralement considérés et considérés comme des algorithmes de détermination de la trajectoire du terrain, mais de temps en temps quelqu’un se rend compte qu’ils peuvent être utilisés pour «trouver un chemin» dans des espaces tels que les arbres de décision.
Je ne pense pas que l’apprentissage automatique soit très répandu dans les jeux commerciaux, mais Black & White en était un exemple. Il s’agissait de former un animal de compagnie et de faire croire aux habitants du jeu.
Si vous souhaitez en savoir plus sur les différentes IA, je me suis amusé avec Xpilot-AI . Le bot “star” construit par les personnes qui exécutaient le projet était un contrôleur basé sur des règles fixes, qui était à son tour le produit d’un algorithme génétique. Voici comment ça s’est passé:
Ainsi, même si l’apprentissage actif peut s’avérer coûteux en milieu de jeu, il est toujours utile d’utiliser des algorithmes d’apprentissage pour créer votre IA, si vous ne pensez pas pouvoir le rendre suffisamment intelligent.
Un autre avantage des algorithmes génétiques est que vous pouvez définir le résultat “correct” en tant que bot qui gagnera 15% du temps pour former un robot en mode facile.
Je voudrais faire valoir que ML peut être utilisé dans les jeux vidéo. Ce qui suit montre des recherches très avant-gardistes sur la combinaison de réseaux neuronaux et d’approches évolutives pour créer une toute nouvelle classe d’expérience de jeu. J’ai eu le grand plaisir de suivre les cours de l’inventeur de cet algorithme: NEAT . Ce n’est pas une solution parfaite, mais elle montre un grand potentiel.
Je pense que plusieurs jeux utilisent des réseaux de neurones (plus ou moins complexes).
Alpha-Beta Pruning pilote les jeux de société, y compris les jeux d’échecs et les jeux plus simples. C’est un moyen d’élaguer un espace d’état pour permettre une recherche efficace. Les variantes de la recherche A * permettent l’exploration d’un tableau dans les simulations de robot, etc. Les deux sont des algorithmes “classiques” et non pas des algorithmes d’apprentissage en soi. Les joueurs de Samuel’s Checkers et TD-Gammon sont des exemples d’utilisation de l’ apprentissage par renforcement pour jouer aux dames et au backgammon, respectivement.
En plus de ma réponse ci-dessus, il y a un article à ce sujet:
Apprentissage automatique dans les jeux numériques: une enquête
Notez que la plupart (mais pas tous) des jeux listés sont des exercices purement académiques, comme prévu.
Souvent, il n’est pas nécessaire d’avoir un réel apprentissage dans le moteur de l’IA (voir la réponse de Kylotan).
Cependant, un algorithme d’apprentissage de l’IA peut être relativement facile à concevoir pour une tâche très spécifique et simple. Mon idée était de donner à l’ordinateur une direction sur la tâche, mais aussi de coder dans la reconnaissance des formes pour qu’il puisse apprendre de ses erreurs. En divisant l’IA en ces composants, il devient quelque chose que mon faible esprit peut comprendre.
Vous pouvez prendre Tic Tac Toe comme un exemple simple. Il y a quelques mois, j’ai écrit un jeu Tic Tac Toe avec AI . J’ai simplement donné à l’ordinateur la connaissance des règles et comment bloquer un coup gagnant – c’est tout. Vous pouvez ensuite le configurer pour jouer lui-même et dans les coulisses, tout en conservant une liste des mouvements passés et en reconnaissant les schémas au fur et à mesure, devenant “plus intelligents” au fur et à mesure de son expérience.
Après environ 10.000 jeux, si vous jouez vous-même, il peut être difficile à battre. L’IA dans ce jeu pourrait être optimisé pour apprendre beaucoup plus rapidement si je prenais en compte les reflections et les rotations du tableau. Mais c’était encore un exemple de travail amusant d’un moteur d’apprentissage de l’IA.
D’un sharepoint vue pratique, cependant, un algorithme d’apprentissage peut ne pas valoir la puissance de traitement dans un jeu. Après tout, l’ordinateur doit conserver une liste ou une sorte de structure pour stocker ses informations acquises. Et cela signifie une plus grande utilisation de la RAM, et potentiellement des recherches coûteuses. Et avec un jeu avec beaucoup de pièces en mouvement, cela peut s’append.
Le jeu Spore utilise des algorithmes génétiques avancés pour simuler les formes de vie du jeu.
Les agents ne sont pas formés aux modèles d’apprentissage automatique en jeu. Ce serait en fait plus coûteux au stade de la production et serait inutile.