Oui. A * est toujours le chemin à parcourir dans presque tous les cas. C'est votre calcul de coût de nœud qui devient dynamique et donc plus complexe à calculer et à suivre.
Si vous savez déjà où seront les obstacles mobiles à l'avenir, votre A * peut prendre en compte la temporalité des obstacles dans la fonction de coût.
Par exemple: Ce nœud sera atteint en 4 ticks, occupé du tick # 3 au tick # 6, donc le coût du voyage sur ce nœud est de 6 - 4 = +2 ticks. C'est peut-être toujours le meilleur chemin.
Le sens de déplacement de l'obstacle doit également être pris en compte.
Si vous ne le savez pas à l'avance, vous ne pouvez assumer aucun obstacle et recalculer le chemin lorsque les obstacles sont atteints, mais vous devrez faire quelque chose pour les blocages et les verrous de sécurité. (Il en va de même si vous pouvez prédire où se trouveront les obstacles, mais qu'il s'agit en soi d'un type d'évitement d'impasse / de blocage et qui peut être assez bon pour votre objectif.)
Un blocage se produit lorsque les deux attendent que l'autre bouge et qu'aucun ne bouge.
Un livelock est lorsque les deux ( ou plus <- c'est important à considérer) se déplacent pour éviter l'autre dans la même direction et finissent par aller et venir sans progrès.
La résolution des livelocks peut devenir très complexe et cela dépend entièrement des règles de collision et de la mécanique de votre jeu (par exemple: doivent-ils combattre et détruire l'obstacle?).
Il revient souvent à vos objets en mouvement de planifier des réservations de nœuds / chemins (n'oubliez pas les annulations lorsqu'ils changent de chemin ou meurent) afin que d'autres objets en mouvement puissent planifier à l'avance.
Une fois que vous avez ces informations, vous pouvez également planifier des interceptions.