Je suis un débutant absolu dans le développement de jeux et tout ce que je sais sur l'évitement / résolution des collisions, je l'ai appris sur ou via ce site la semaine dernière ... alors n'hésitez pas à me corriger si ce que je demande ici est basé sur de fausses hypothèses / malentendus. J'ai fait de mon mieux pour être clair, mais cela dit, le sujet est encore nouveau pour moi.
Véhicules
Dans mon jeu, j'ai des véhicules qui se déplacent de manière autonome. Ils sont placés dans un espace 3D et leur mouvement est régi par un certain nombre de variables différentes pour chaque véhicule. Ceux qui nous intéressent ici sont principalement:
- Seulement mouvement vers l' avant .
- Une vitesse qui peut varier entre min et max, mais dont le min n'est pas (même proche de) zéro.
- Un rayon de braquage qui dépend de la vitesse (plus la vitesse est élevée, plus le rayon est grand)
- Deux accélérations maximales (pour diminuer et augmenter la vitesse)
Objectif
Mon objectif est de mettre en œuvre une sorte d'IA qui permettra une évitement de collision 100% précis (c'est-à-dire que je serai sûr que les véhicules n'entreront jamais en collision).
Conception
- Bien que je préfère davantage l'idée d'avoir l'IA "à bord" (c'est-à-dire que chaque véhicule possède sa propre "AI anti-collision", éventuellement en interrogeant et / ou en envoyant des messages à d'autres véhicules), il est également possible pour moi d'implémenter l'IA CA à un niveau central (envoi des commandes aux véhicules).
- Dans la plupart des cas, le véhicule devra simplement s'écarter les uns des autres dans toutes les directions, mais dans certaines circonstances, il devra éviter les collisions et se diriger vers la même cible
Ce que j'ai trouvé jusqu'à présent et où je suis resté coincé
Parmi les nombreux liens que j'ai trouvés dans d'autres questions sur ce site, j'ai trouvé particulièrement utiles ceux-ci:
Bien que ces trois liens "m'ont ouvert les yeux" de bien des manières, il n'est pas immédiatement clair pour moi comment utiliser ces informations dans mon cas. En particulier, l'article # 2 "essaie" de prévenir les collisions (mais les collisions se produisent de temps en temps). Alors que l'article # 3 doit parfois arrêter des véhicules pour éviter les collisions.
Ce que j'ai également remarqué, c'est que les algorithmes d'évitement de collision liés ci-dessus utilisent une "projection instantanée" de la vitesse linéaire pour vérifier si quelque chose se trouve sur le chemin du véhicule. Je me demandais si cela suffisait dans mon cas ou si je devais projeter ma position de manière plus réaliste (par exemple: si je suis à 60 ° dans une direction à 90 ° vers la droite, je devrais calculer ma position pour le reste de la 30 ° de la courbe, puis en supposant un mouvement linéaire).
Enfin, j'ai particulièrement peur des impasses . En d'autres termes: bien que la densité de véhicules dans le monde soit assez faible, je crains qu'étant donné un certain nombre de véhicules convergeant vers le même point, une fois qu'ils se rendront compte qu'ils sont sur une trajectoire de collision, toute manœuvre d'évitement sera impossible car cela amènerait le véhicule sur une trajectoire de collision avec d'autres.
Question
Comment puis-je atteindre mon "objectif"? Une explication approfondie est bien sûr très appréciée, mais les liens vers des ressources externes seraient également d'une grande utilité (je suis sûr que je ne suis pas le premier à résoudre ce problème, mais j'ai probablement utilisé les mauvais mots clés pour rechercher sur le Web? )
Merci d'avance pour votre aide!