Sí. A * sigue siendo el camino a seguir en casi todos los casos. Es su cálculo de costo de nodo el que se vuelve dinámico y, por lo tanto, más complejo de calcular y rastrear.
Si ya sabe dónde estarán los obstáculos en movimiento en el futuro, su A * puede tener en cuenta la temporalidad de los obstáculos en la función de costo.
Por ejemplo: este nodo se alcanzará en 4 tics, ocupado desde el tick # 3 hasta el tick # 6, por lo que el costo de viaje en este nodo es 6 - 4 = +2 ticks. Ese todavía puede ser el mejor camino.
La dirección de desplazamiento del obstáculo también debe tenerse en cuenta.
Si no lo sabe de antemano, entonces puede asumir que no hay obstáculos y volver a calcular el camino cuando se alcanzan los obstáculos, pero tendrá que hacer algo con respecto a los puntos muertos y los bloqueos en vivo. (Lo mismo se aplica si puede predecir dónde estarán los obstáculos, pero eso en sí mismo es un tipo de evitación de punto muerto / bloqueo en vivo y eso puede ser lo suficientemente bueno para su propósito).
Un punto muerto es cuando ambos esperan que el otro se mueva y ninguno se mueve.
Un livelock es cuando ambos ( o más <- esto es importante tener en cuenta) se mueven para evitar al otro en la misma dirección y terminan yendo y viniendo sin progreso.
Resolver bloqueos en vivo puede volverse muy complejo y eso depende completamente de las reglas y la mecánica de colisión de su juego (por ejemplo: ¿deberían luchar y destruir el obstáculo?).
A menudo se trata de que sus objetos en movimiento programen reservas de nodo / ruta (no olvide las cancelaciones cuando cambian de ruta o mueren) para que otros objetos en movimiento puedan planificar con anticipación.
Una vez que tenga esta información, también puede planificar intercepciones.