¿Cuál es la mejor práctica para tener enemigos NPC ocultándose en un juego de FPS?

8

Mi pregunta es sobre la estructura de datos (y la forma lógica de usar esta estructura) detrás de este tipo de comportamiento del enemigo NPC: ¿Cómo calcula el lugar donde puede refugiarse cuando el jugador le está disparando?

Puede estar en un juego de vista similar a FPS o "juego de mesa" ...

Pierre Watelet
fuente

Respuestas:

9

Tienes 3 opciones principales:

Opción n. ° 1: (más robusto, pero más intensivo en CPU)

En tiempo real, calcule las áreas de las esquinas lo suficientemente anchas para que el NPC se oculte y que no estén expuestas al jugador. Elige el más cercano para que el jugador se esconda.

Esto funcionará en cualquier nivel que sea agradable y en niveles con geometría que cambie durante el juego. Pero llevará más tiempo trabajar de manera consistente y utilizará la mayoría de los recursos de CPU durante el juego.

Opción # 2: (Ahorre tiempo de diseñador de nivel, mínimo impacto en tiempo real)

Cree una herramienta fuera de línea que haga la prueba de la esquina y luego coloque nodos en su nivel para todas las áreas de cobertura potenciales. Los LD pueden modificar estos nodos o eliminar los que no son apropiados.

Durante el juego solo encuentra el nodo válido más cercano.

Esto es bueno porque su enrutamiento de búsqueda de esquina no tiene que ser 100% preciso, ya que los LD pueden eliminar algunos nodos defectuosos aquí y allá. Sin embargo, no puede responder a los cambios en la geometría a menos que comience a ser inteligente al adjuntarlos a los objetos o al activarlos o desactivarlos.

Opción # 3: (Fuerza bruta, golpe mínimo en tiempo real)

Haga que los LD coloquen manualmente todos los nodos de cobertura, y luego simplemente elija el nodo válido más cercano durante el juego.

Si tiene muchos niveles o niveles grandes, espere que los LD se quejen.

Wkerslake
fuente
3

Creo que la mejor manera de hacerlo sería configurar manualmente los cuadros en el área (s) en la que desea que los NPC se cubran.

Tenga una variable para "miedo" o alguna otra métrica que desee, cuando se alcanza un umbral, el NPC debe moverse al cuadro más cercano que esté fuera de la línea de visión de los jugadores.

Podrías encontrar una manera dinámica de hacer que los enemigos se cubran detrás de cualquier objeto, pero la mayoría de las veces pueden generar algunas posiciones de cobertura extrañas e ilógicas.

AttackingHobo
fuente
1

Hay una descripción de cómo la IA de killzone buscó en el espacio de posición para obtener una buena posición aquí (PDF). Puede cambiar la función de evaluación para aumentar el valor de una posición de cobertura si la IA es disparada o muy dañada. Por lo tanto, la IA a la que no se dispara tomaría un poco más de riesgo para alcanzar el objetivo.

También puede agregar la solución de AttackingHobbo, aumentando el interés de cobertura según el factor miedo (es decir, 0: soy invencible / 1: me cuido / 5, por favor, deténgalo)

Saludos

PATRY Guillaume
fuente
1

Depende del estilo de juego. Es bastante común dejar que los diseñadores de niveles coloquen objetos de cobertura, que pueden ser un volumen, una forma que representa un objeto de cobertura o un nodo. Esto requiere más mano de obra para los LD, pero brinda mucho más control, lo que generalmente se necesita en un juego estrictamente programado.

Para los juegos de mundo abierto, necesitas un sistema automático de detección de portadas. Utilizamos uno que detectó cobertura en tiempo de ejecución en Battlefield: Bad Company (1 y 2) para poder invalidar y volver a detectar la destrucción del medio ambiente.

rodajas de cal
fuente