2010-08-20 5 views
2

J'ai un cours dans mon semestre en cours dans lequel je suis tenu de faire un projet sur l'application de l'IA. J'ai décidé de le faire sur le jeu AI. J'ai 2 idées de base: implémenter un (des) robot (s) FPS ou implémenter un IA de football. Je suis tranquille à l'IA en ce moment, j'ai implémenté des algos de pathfinding de base (A *, etc), et j'ai étudié les machines à états finis, la logique du premier ordre, le réseau neuronal de base (Backpropagation ALgo) , et je suis en train de faire un cours sur les algorithmes génétiques.Besoin de suggestions pour un projet IA appliqué

Notre objectif principal est le bot en ce moment. Nos plans comprennent:

  • Chaque « bot » serait mis en œuvre au moyen d'un machine à états finis (FSM), qui contiendrait les états possibles du bot pourrait avoir; & les règles pour les changements d'action/état qui vont avoir lieu quand il reçoit une entrée. Dans le mouvement de groupe de bot, chaque bot déciderait de frapper, de frapper; basé sur la gamme, le nombre de bots, les combats existants en utilisant des réseaux neuronaux. En utilisant des algorithmes génétiques, le mouvement suivant de l'adversaire pourrait être anticipé en fonction de mouvements répétitifs.

Bien que je l'ai programmé quelques jeux 2d jusqu'à présent dans mon temps libre (comme pacman, tetris, etc), je ne l'ai jamais vraiment entré dans la zone 3d. Nous allons très probablement utiliser un moteur 3D.

Nous voulons concentrer la majeure partie de notre énergie sur la partie IA. Par exemple, si nous pouvions trouver un framework avec des fonctions comme Moveright() qui déplace juste le bot vers la droite, ce serait vraiment génial.

Ma question fondamentale est la suivante: est-ce trop ambitieux de s'y prendre de la façon dont nous l'avons prévu, étant donné que la durée du projet est d'environ 3 mois? Devrions-nous aller 3d et utiliser un moteur de jeu 3d? Est-il facile d'utiliser de tels moteurs, si vous n'avez aucune expérience avec eux auparavant? Si oui, quel type de moteur conviendrait à notre projet?

Je suis tombé sur une autre idée, donnée dans le livre AI Jeu programmant par exemple, où le joueur aurait une vue de haut en bas des robots. Serait-ce plus approprié?

Merci .. désolé pour la longueur de la question .. c'est juste que mon problème est un peu trop spécifique.

Répondre

2

Ma question fondamentale est: est-il trop ambitieux d'aller à ce sujet dans la façon dont nous avons prévu, compte tenu de la durée du projet est ravail 3 mois?

Oui - mais ce n'est pas nécessairement une mauvaise chose :)

Faut-il aller 3d et utiliser un jeu 3d moteur?

No.Principalement parce que vous avez dit:

Nous voulons concentrer la plus grande partie de notre énergie sur la partie AI.

Voici ce que je ferais, d'après mon expérience (et sachant que, en tant qu'étudiant, je souvent ai arraché beaucoup plus que je ne pouvais mâcher, aussi):

Faites votre fonction de simulation quelle que soit un composant graphique. Avoir publier "mises à jour" à une autre couche, qui se composent de vecteurs de joueur et de balle. En faisant cela, vous garderez vos tâches d'IA séparées de tout le reste, ce qui signifie que vous aurez moins de bogues à vous inquiéter, et vous pourrez également tester votre simulation sous-jacente beaucoup plus facilement. Prenez ces «mises à jour» et créez votre première couche de «visualisation» - faites-en la représentation 2D la plus simple possible. Il pourrait s'agir d'un flux de lignes de texte: "Le joueur 1 a la balle/le joueur 1 a lancé la balle à (30,40) avec une vitesse de 20km/h". Ce sera déjà assez difficile pour votre premier passage, car vous comprendrez comment prendre les données publiées par la simulation et faire quelque chose avec. Votre prochaine visualisation pourrait ajouter une grille 2D de graphismes ANSI (comme un voyou) pour montrer réellement les joueurs et la balle en mouvement. Votre prochain après cela pourrait être des sprites. Etc. Notez comment vous augmentez progressivement la complexité de votre visualisation ... ne faites pas votre premier pas vers l'utilisation d'une technologie (moteur graphique 3D) que vous n'avez jamais utilisée auparavant. (Vous ne finirez jamais votre projet dans ce cas.)

En ce qui concerne vos questions sur la route à suivre - FSM, NN, GA, conception descendante - vous devriez les classer de la plupart à moins (avec le reste de votre groupe) et ensuite les attaquer, dans cet ordre. Vous pourriez envisager de faire un style pour une équipe et un design différent pour l'autre équipe. Vous voudrez peut-être que votre équipe de FSM joue contre une équipe de FSM qui a fait un réglage supplémentaire, afin de comparer et contraster si vous pensez que vos changements sont réellement bénéfiques (vous pourriez être surpris et découvrir qu'ils rendent l'équipe pire). En fait, c'est là que les tests unitaires et la séparation de la simulation de la visualisation sont très, très pratiques - vous devriez être capable de simuler autant de jeux que nécessaire pour obtenir des résultats expérimentaux sans vous soucier des graphiques. Vous pourriez même le faire par lots du jour au lendemain avec des scripts. En général, mon conseil pour vous est le suivant: divisez votre projet en un minimum de pièces et affrontez-les un à la fois, peu importe où vous en êtes lorsque le temps sera écoulé. quelque chose d'intéressant à montrer.

+0

Ok, donc suppose que je devrais aller avec l'approche de haut en bas? c'est-à-dire que le joueur regarde tout depuis une vue de dessus? Je ne veux pas vraiment aller avec l'approche du texte ... – Karan

+0

L '"approche du texte" n'est que la première étape de ce qui est un chemin infini de la complexité de la visualisation. Au lieu de sauter directement dans les graphiques, vous pouvez déterminer toutes les dépendances entre la «couche de simulation» et la «couche de visualisation» en faisant d'abord une «approche texte» ... cela sera assez difficile pour vous, faites-moi confiance. –

1

Vous pouvez jeter un oeil à guntactyx, c'est ce que j'ai dû utiliser quand j'ai fait mon unité AI à uni.

Il s'occupe de tout l'affichage, la physique, le son etc ... pour vous, tout ce que vous avez à faire est de programmer votre équipe de bots. L'API inclut des fonctions pour faire bouger le bot vers la gauche ou la droite, tirer, entendre des sons (comme des coups de feu) etc ... et il est livré avec quelques exemples de robots pour que vous ne partiez pas de zéro.

En outre, il est assez amusant de regarder vos robots battre je vos bots d'amis :)

Questions connexes