Esta es una pregunta bastante interesante, y voy a tratar de contribuir con lo que pueda.
Primero, creo que tienes que definir claramente los límites para el juego que estás tratando de crear y definir esas preguntas (algunas ya pueden haber sido respondidas).
- ¿Qué tan lejos está el monstruo aggro?
- ¿Cuántos monstruos al mismo tiempo es tu objetivo?
- ¿Cómo está organizado tu terreno? ¿Está alicatado?
- ¿Cuánta evitación de colisiones quieres?
Para citar una respuesta de aquí sobre cómo se realiza la búsqueda de rutas en Starcraft 2:
Starcraft II utiliza una triangulación de Delaunay restringida del terreno y edificios del mapa para producir una malla de navegación; Se utiliza un * con un filtro de embudo para recorrer esta malla, teniendo en cuenta los radios de la unidad; luego se agregan capas de dirección local y de prevención de colisiones además de eso, incluida una característica cooperativa de "empujar las unidades inactivas fuera del camino" donde es posible desplazar una unidad en lugar de recorrerla en ciertos casos. Además, las unidades que se mueven en paralelo se ignoran para evitar colisiones, ya que se puede garantizar que no se afectan entre sí; [...] SC2 utiliza seis fuerzas de dirección: seguimiento, agrupación, agrupación, separación, evasión y llegada.
Volviendo a sus 3 proposiciones:
- NavMesh + RVO -> Si hay problemas de licencia, entonces no es una opción. Sin embargo, podría ser la implementación más fácil.
- Flow Fields + Physics Engine -> Depende honestamente, pero parece realmente intensivo en cómputo en un entorno semi dinámico como lo que quieres
- Comportamientos de dirección + Motor de física -> El comportamiento de dirección me parece el camino a seguir. De esa forma, puedes definir algunos comportamientos de bandada bastante agradables para tu juego, dependiendo, por ejemplo, del tipo de monstruo. Y se adapta bien al número de la mafia. Sin embargo, me mantendría alejado de la física para la detección de colisiones. Un comportamiento de evitación simple es suficiente, reduciendo la velocidad o aumentando, girando, etc.
En algunas notas sobre los comportamientos de dirección, puede definir tantas fuerzas de dirección como necesite, con las áreas que desee. Necesita al menos 3, para el congregación / atracción / repulsión, pero probablemente haya más interesantes.
Luego, trate de encontrar una biblioteca que controle los comportamientos para ver si se ajusta a sus necesidades ( ¿de esta manera ? Realmente no conozco ninguna, pero existe).
Si la biblioteca no se ajusta a tus necesidades, ¡estás listo para divertirte! Pero hay suficientes recursos y algoritmos para implementar comportamientos de congregación usted mismo. Ejemplo 1 Ejemplo 2
Si elige implementarse usted mismo, sepa que hay una buena optimización por hacer, ya que el alcance de su agente se reduce, por ejemplo, por su ubicación en el lote. De todos modos, debe incluirse en algunos de los algoritmos.
Bueno, eso es lo mejor de mi conocimiento, de todos modos no estoy seguro