Je suis nouveau dans la programmation de jeux et j'essaye de faire un jeu spatial de base en 2D de haut en bas avec 2 vaisseaux spatiaux qui s'affrontent. Je me débrouille bien avec le vaisseau spatial contrôlé par l'utilisateur, mais je ne sais même pas comment commencer à programmer une IA. Certaines méthodes / modèles conviennent-ils mieux à cette situation? Où pourrais-je même commencer?
58
Réponses:
Le modèle de stratégie est idéal pour déterminer quoi faire, mais pas quand le faire. Vous devrez également utiliser des machines à états finis pour savoir dans quel état se trouve votre IA et quelles décisions appropriées sont disponibles.
Guide pratique pour créer un jeu complet AI: Volume I
la source
Si vous développez l'IA pour la première fois, vous n'avez pas à vous soucier d'éléments tels que le modèle d'état, les mathématiques comportementales ou même obtenir un livre sur le sujet.
Vous pouvez littéralement vous en tirer avec quelque chose comme ceci:
Pour obtenir une bonne intelligence artificielle, le principal aspect consiste à réfléchir aux comportements que vous souhaitez que le personnage adopte et à la manière dont cela peut être réalisé de manière réaliste. Donc, pour un ennemi de base d'un vaisseau spatial, j'imagine que les actions possibles pourraient être les suivantes:
Et quand ces actions pourraient-elles se produire?
Une fois que vous avez fait cela en raison du faible nombre d '"états" dans lesquels votre personnage peut se trouver, vous pouvez utiliser une simple instruction if comme celle ci-dessus. Je vous recommanderais alors d’examiner les comportements de direction car il s’agit de comportements très simples à mettre en œuvre et pouvant donner lieu à de très beaux mouvements.
Plus d'informations peuvent être trouvées ici: http://www.red3d.com/cwr/steer/
Et je recommanderais certainement le livre de Mat Buckland, Programming Game AI par exemple , en particulier lorsque vous débutez.
Lorsque vous êtes vraiment à l'aise avec ceux-ci, je suggérerais d'examiner l'état et les modèles de stratégie.
Le but est de commencer petit et simple. Ne vous inquiétez pas de tous ces termes que tout le monde parle sans cesse des FSM et des modèles de conception, etc. Tout d’abord, concevez et construisez, puis demandez-vous comment l’améliorer en utilisant des méthodes ou des normes existantes.
J'espère que ça t'as aidé!
la source
Vous voudrez peut-être consulter OpenSteer et la documentation relative à Steering Behaviors qui l'accompagne. Le code source n'est pas de niveau débutant, mais les concepts qui le sous-tendent devraient vous donner de bonnes idées.
la source
Vous voudrez peut-être examiner le modèle de conception de la stratégie . Écrivez essentiellement les mêmes stratégies de base sur le comportement des navires:
Ensuite, vous utiliserez la logique (machines à états) pour choisir entre ces stratégies. Par exemple: si les boucliers des navires sont tombés au-dessous de 50%, alors fuyez la cible et avancez vers les bonus / objets de guérison, etc.
la source
Puis-je vous suggérer d'acheter le livre Artificial Intelligence for Games de Ian Millington - c'est excellent! :) http://www.ai4g.com/
Le code source est sous licence Github - MIT.
Bien sûr, si vous n'utilisez pas C / C ++, cela pourrait être moins pertinent.
Mais vraiment une introduction géniale au monde de la stupidité / intelligence artificielle.
Les choses dont vous allez avoir besoin sont le pilotage et les machines d'état. Pour commencer.
la source
Quelques conseils pratiques si vous optez pour des machines d'état: méfiez-vous du mégastat.
Il est tentant de créer un état "Fuite" qui gère la définition d'une position de fuite, une vitesse d'objectif élevée, le nettoyage de toutes les cibles, etc. Il est préférable d'avoir plusieurs machines à états, chacune gérant un ou plusieurs contrôles de navire - par exemple une machine d'état qui gère la sélection d'une position cible, celle qui gère les armes à feu, etc.
Cela peut sembler stupide, car il faudrait ajouter des états de fuite à chaque machine, mais comme vous êtes limité à une ou deux sorties, vos états sont très petits et ne devraient donc pas poser de problème.
De plus, comme chaque contrôle est maintenant sous contrôle individuel, vous pouvez choisir une position de cible de fuite tout en laissant l'état d'attaque contrôler vos armes. Vous pouvez détruire un ennemi tout en conservant la puissance du moteur en raison d'une fuite de liquide de refroidissement. Vous pouvez vous orienter pour éviter une collision tout en maintenant des contre-mesures. Tout cela serait impossible avec une seule machine à états globale.
la source
Mathématiques comportementales pour Game AI
Ajouter ce livre à la liste des points de départ pour l’apprentissage de la programmation de l’IA. En mettant l'accent sur l'observation et la mise en œuvre du comportement plutôt que sur des algorithmes d'application limitée, je pense que cela convient bien à la tâche.
la source
Comment créer une IA est une question délicate, car elle comprend plusieurs parties:
D'autres affiches suggéraient d'excellents livres et j'adore AI4Games, suggéré par jacmoe, même si c'est assez général (comme beaucoup de livres, ce qui est bien entendu compréhensible).
Bien sûr, chaque type de jeu a ses besoins spécifiques, et les jeux d'arcade / tireurs n'ont pas besoin d'architectures complexes pour prendre en charge un gameplay intéressant. De simples bibliothèques de guidage feront le travail en tant que base de ce comportement, puis vous ajouterez des détails pour différents types d’ennemis (certains tirent périodiquement, certains tirent en prédisant le mouvement du joueur, certains se retournent pour faire face à l’ennemi, d’autres peuvent coordonner leurs attaques, etc.).
la source
Pensez à ce que vous faites lorsque vous jouez au jeu. Posez-vous des questions.
Ensuite, je demande à l'IA d'examiner le terrain de jeu et de dresser une liste des actions ou des mouvements possibles que l'IA pourrait effectuer en fonction de ces questions. Je classe et trie ces mouvements avec un "facteur d'intelligence". Ensuite, c’est aussi simple que de choisir et d’exécuter un mouvement / action basé sur une combinaison de hasard et quel que soit le niveau de difficulté choisi par le joueur au début de la partie.
Puis, après 500 millisecondes, je le fais à nouveau.
Il n’a aucune capacité d’apprentissage ou autre chose, mais avec suffisamment d’ajustements, il peut être assez convaincant, ce qui importe vraiment
la source