¿Cómo hacen un seguimiento de los NPC en Left 4 Dead?

11

¿Cómo hacen un seguimiento de los zombis NPC en Left 4 Dead?

Estoy hablando de los NPC que simplemente caminan hacia las paredes o deambulan sin rumbo fijo. Aunque los jugadores no pueden verlos, están allí (por ejemplo, dentro de las habitaciones o detrás de las puertas). Digamos que hay alrededor de 10 zombis en un pasillo y dentro de las habitaciones. ¿El juego mantiene a todos esos zombis en una lista e itera dándoles comandos? ¿Se generan simplemente cuando el usuario está dentro de un cierto radio o llega a una ubicación especial?

Digamos que colocaste las 4 unidades (controladas por jugadores) en lugares completamente diferentes en todo el mapa. Supongamos que no estás siendo enjambrado y luego no has matado a ninguno de estos NPC sin objetivo. ¿Sería el juego un seguimiento de 10 x 4 = 40 zombies en total?

¿O mi comprensión está completamente fuera de lugar?

La razón por la que pregunto es si tuviera que implementar algo similar en un dispositivo móvil, hacer un seguimiento de 40 o más NPC podría no ser una gran idea.

f20k
fuente
1
He visto una presentación hecha por Valve que explica todo sobre los zombies en L4D. Aunque no puedo encontrarlo.
El pato comunista
2
@ El pato comunista: eso sería muy útil. Por favor publique si alguna vez lo encuentra. Lo único que puedo encontrar en línea son las preguntas frecuentes sobre juegos.
f20k

Respuestas:

24

Te interesa el artículo que se encuentra aquí:

Sistemas de IA de Left 4 Dead

ChrisE
fuente
Sí, esto es exactamente lo que estoy buscando, ¡gracias!
f20k
1
No hay problema. Por suerte para nosotros, los desarrolladores tienen la amabilidad de publicar sus publicaciones.
ChrisE
4

No he leído el documento al que ChrisE escribió un enlace, pero ya sea por una conversación que tuve con un empleado de Valve o en algún lugar de su Wiki de Desarrollo (no recuerdo cuál) recuerdo haber sido informado de que esencialmente solo tienen un par de entidades reales (el director de IA); los avatares que ves retratando los NPC infectados son solo "títeres de dedo" para esas entidades. Hicieron esto para mantener el número de entradas de edicto (diccionario de entidades) al mínimo ya que obviamente hay un montón de NPC infectados para realizar un seguimiento.

El diccionario de entidades del motor tiene un tamaño fijo y no puede crecer. Esto significa que cualquier juego construido en este motor que requiera una gran cantidad de NPC, o cualquier otra entidad, debe hacer uso de dicho sistema para que el motor funcione correctamente y no se ahogue (y finalmente se bloquee) porque El recuento de entidades es demasiado alto.

Cale
fuente
¿Sabes qué otro tipo de entidades hay? ¿Las personas infectadas especiales serían entidades? Tengo problemas para entender "entidad" frente a "títere de dedo" cuando puedo interactuar con el NPC infectado.
f20k
1
Los especiales son entidades. La forma más fácil de determinar qué es real y qué es falso es mirar la consola. Puedes recibir daño de otros jugadores, de especiales por nombre, pero cuando recibes daño de los comunes, la consola muestra que recibes daño del "mundo" (iirc).
Rob N
Sí, entiendo tu punto. Simplemente se agolpan a mi alrededor y hacen una animación de arañazos. Eso es muy interesante, gracias.
f20k
Probablemente la mejor manera de explicar cómo funciona el concepto de 'títere de dedo' es comparándolo con un perro pastor. Hay un 'controlador' (por ejemplo: el perro) y un rebaño (u horda en este caso) de 'títeres' (por ejemplo: la oveja). Los 'títeres' no pueden pensar por sí mismos, solo hacen lo que el controlador les indica que hagan. Los títeres son básicamente una extensión de la entidad controladora, pero en lugar de usar un solo elemento visual, como el caso de infectados especiales, usan múltiples elementos visuales que se controlan de forma independiente.
Cale
1

No puedo hablar sobre cómo funciona la implementación Left 4 Dead, pero puedo decir cómo probablemente lo haría.

Iría por algo como su segunda opción, rastrearía a cada jugador y solo cargaría PNJ cuando los jugadores pasen los puntos de activación. La clave en un sistema como este es hacer que los puntos de activación estén lo suficientemente lejos del jugador como para que no puedan asociar esos walking past this fence postfactoresthat car to blow up, and shoot a zombie at them.

Probablemente tendría una colección de NPC activa, que los puntos de activación agregan o eliminan NPC de la colección. Esto le permite gastar recursos de CPU / GPU en NPC con los que los jugadores realmente están interactuando, pero le brinda la flexibilidad de cargar NPC en cualquier momento.

Piensa en un jefe que puede escuchar sonidos, tal vez el jefe esté cargado al comienzo del mapa y si el jugador que pasa por el mapa hace mucho ruido (granadas, bombas de tubo, etc.), el jefe buscará al jugador y atacará. de la nada, en lugar de esperar hasta que el jugador llegue a la arena del jefe.

Nate
fuente