Estoy trabajando para tratar de mejorar la búsqueda de caminos para los enemigos de mi juego. En este momento, básicamente se mueven constantemente hacia la posición exacta del jugador calculando el ángulo entre ellos y los jugadores y moviéndose en esa dirección. También tengo un algoritmo de congregación que evita que los enemigos se apilen uno encima del otro, por lo que se formarán en grupos en lugar de cortarse entre sí.
Sin embargo, ahora que he agregado un mapa basado en mosaicos, necesito que los enemigos también puedan sortear obstáculos y muros, por ejemplo. Inicialmente intenté agregar un valor de separación a las baldosas "no transitables" para que el algoritmo de flocado considerara las paredes y los obstáculos como objetos para alejarse. Todavía tengo que determinar si esto es factible o no porque mi prueba inicial mostró que los enemigos golpean un "muro" invisible donde no hay baldosas no transitables, pero por alguna razón, lo golpean y comienzan a salir.
Me preguntaba si sería demasiado pesado el rendimiento para calcular una ruta al jugador usando A * y luego usar el algoritmo de flocado para evitar la aglomeración. Originalmente, mi juego iba a ser un juego de disparos basado en olas, pero en su lugar decidí hacerlo a nivel de la línea de Hotline Miami, por lo que es probable que tenga menos enemigos, con la horda ocasional, y solo haga ellos más fuertes
¿Es esta una solución viable? Estoy usando Java con Slick2D como mi motor de juego. ¿O hay una mejor solución / algoritmo que aborde estos dos problemas?