Modèles de comportement IA de course

9

Disons donc que vous avez une IA de course basée sur les splines. Supposons qu'il puisse déjà gérer les bases du freinage et de la direction sur la piste.

Comment structureriez-vous et mettriez-vous en œuvre l'évitement des collisions, les dépassements, le repêchage, le blocage et d'autres comportements pour que vos voitures restent compétitives mais fassent des courses intéressantes?

Les liens vers les articles / implémentations seraient géniaux.

tenpn
la source
quel type de moteur que vous utilisez,
Harshal Benake

Réponses:

7

Avez-vous vu des comportements de pilotage pour les personnages autonomes ? Je considérerais un algorithme " CrowdPathFollowing" pour rester sur la piste et éviter les collisions. Vous pourriez être en mesure de mélanger dans un comportement de "suivi de champ de flux" pour la rédaction, le passage et le blocage - faire en sorte que le champ de flux suive le chemin passé et projeté du joueur, mais se divise autour de son emplacement actuel.

      /-------------\
 ----<  [playerCar]  >-----
      \-------------/

Cela devrait amener l'IA à suivre directement derrière lui et à se déplacer directement devant pour bloquer, tout en encourageant les passes propres.

AShelly
la source
1
Je connais les boids, mais c'est une bonne référence. J'ai un peu peur de nombreux comportements (rester sur la ligne de course, éviter les voitures, bloquer, projeter, etc.) interagissant de manière trop complexe à régler et se retrouvant avec la collision occasionnelle de cas de bord. C'est bien pour les piétons, mais catastrophique pour les voitures de course qui doivent continuer à bouger.
tenpn
J'ai travaillé avec l'API OpenSteer qui implémente beaucoup de ce genre de choses. Je l'ai trouvé assez facile à régler. Dans votre cas, je ferais le poids "SteerToAvoidCollision" très élevé. Je ne sais pas quels véhicules vous pilotez, mais je pense que si vous vous débrouillez bien dans la grande majorité des cas, le choc ou le coup occasionnel restant en raison d'un cas de bord est probablement assez réaliste ...
AShelly
Était-ce des véhicules de direction ou autre chose? J'ai peur des situations causant des problèmes comme deux véhicules devant vous à gauche et un devant vous à droite. Le vecteur moyen entraînerait un mouvement à droite, même si cela pourrait vous mettre en contact avec le véhicule de droite.
tenpn
Je travaillais principalement avec des piétons, donc je ne peux pas jurer que cela fonctionnera. Une chose à retenir est qu'il ne doit pas nécessairement être un mélange de comportements - il peut s'agir d'une hiérarchie. Vous pouvez donc faire en sorte que l'évitement des collisions soit prioritaire sur tout le reste. Dans le cas où vous décrivez, la voiture n'irait que vers la droite jusqu'à ce que la trajectoire prédite croise la trajectoire de la voiture de droite, moment auquel éviter cette collision devient la force dominante. Vous pouvez également ajouter des conditions spéciales: par exemple, si aucun chemin sûr n'est trouvé dans N trames, ajoutez un freinage dur.
AShelly
2

Il y a eu une session en partie à ce sujet lors de la conférence AI Game Dev de cette année à Paris. Vous pouvez trouver les diapositives et un résumé ici:

http://aigamedev.com/open/coverage/paris10-report/#session9

chaux
la source
1
Le lien vers le ppt est 404.> _ <
tenpn
@tenpn: C'est un pptx: files.aigamedev.com/coverage/GAIC10_PaoloManinetti.pptx
Firas Assaad
ta - son approche est intéressante mais le code avec lequel je travaille actuellement est en fait plus avancé!
tenpn
1

Anti-Pattern: les adversaires adaptent leur vitesse

Malheureusement, je ne peux pas vous donner de modèles, mais je voudrais nommer un modèle anti. N'essayez pas d'adapter la vitesse des pilotes AI à celle du joueur humain. L'idée derrière cela est de créer des conditions de course équitables pour les amateurs comme pour les pros et d'abandonner le besoin de niveaux de difficulté multiples (et leur mise en œuvre).

Cependant, ce qui sonne bien sur le papier s'avère horrible dans la pratique et la série MotoGP a misérablement échoué à mettre en œuvre ce comportement. Cela a fini par les adversaires conduisant à 5mp / h lorsque vous vous êtes arrêté pendant quelques secondes et l'impossibilité de dire si vous vous êtes amélioré dans le jeu (très mauvaise rétroaction)

Dave O.
la source
Merci. Je parle spécifiquement de comportements de course intéressants ici plutôt que d'équilibrer ou de niveaux de difficulté, mais je garderai cela à l'esprit.
tenpn
5
Presque tous les jeux de course incluent une certaine forme d'élastique pour garder le joueur dans l'action, ou garder l'IA proche d'un bon joueur. L'astuce consiste à être subtil avec elle et à savoir quand la désactiver. Une fois que le joueur s'en aperçoit, il se sent trompé.
wkerslake
La situation en MotoGP ressemble à un problème d'aller trop loin, plutôt qu'à un problème d'élastique en général. Il n'est pas déraisonnable pour les conducteurs à l'avant de conduire avec plus de prudence et les voitures à l'arrière pour essayer désespérément de combler l'écart, et je pense qu'il est utile de le modéliser de cette façon et de le présenter de manière transparente au joueur.
Jibb Smart
Ceci est un article intéressant sur le sujet: gamasutra.com/view/feature/3920/… Fondamentalement, ils vous mettent dans 3 groupes de coureurs IA et vous permettent d'avancer de groupe en groupe au cours de la course.
Felsir