PROJECT ZOMBOID INTRODUCIRÁ NPC'S CON UN SISTEMA DE HISTORIAS DINÁMICASPara mi es algo pionero, es algo que deberían de tener juegos como los de rockstar y muchos otros de mundo abierto donde los NPC's secundarios no tienen profundidad narrativa, simplemente rutinas y algunas frases sueltas, sería un salto en inmersión.
![Imagen](https://projectzomboid.com/blog/content/uploads/2022/01/defend.jpg)
Pensamos que una buena manera de darles a las personas algo realmente sabroso en lo que hincar el diente, independientemente de la falta de videos o fotos elegantes, sería mostrar los resultados de texto de nuestro sistema Narrative NPC que discutimos hace unas semanas planeado para la compilación 43 .
Como detallamos en nuestra primera explicación del 'meta' sistema NPC, tenemos un poderoso sistema de eventos narrativos que se puede usar para agregar 'historias' impulsadas por el contexto en una narrativa un tanto convincente para los NPC cuando están lejos del mundo transmitido. Estos definirían los objetivos de los NPC, así como también evolucionarían su situación para que cuando el jugador se encuentre con ellos tengan una historia de fondo convincente, o los eventos pueden ocurrir para afectar a esos grupos cuando no están presentes para que el jugador los presencie. También impulsarán eventos con npcs mientras el jugador ESTÁ presente, lo que generará interesantes eventos de historia para que el jugador interactúe.
Estos eventos colocan banderas en los personajes, mueven su presencia virtual a lo largo de las redes de carreteras y entre casas en las que se puede acceder a todas las habitaciones en todo el mapa, incluso cuando los mosaicos no se han transmitido. Podemos agregar datos adicionales y etiquetas que cambian los NPC. estados y permitirles experimentar eventos narrativos simplificados que se bifurcarán y desencadenarán aleatoriamente, y cada uno de estos eventos puede tener numerosos resultados de los cuales podemos adjuntar una línea de diálogo que cuente el evento más adelante, para que los personajes puedan sentarse alrededor de una fogata y deja que el resto conozca su historia, o los miembros del grupo pueden contar los eventos de un viaje lleno de acontecimientos del que el jugador no formó parte, o lo que ocurrió en la casa de seguridad mientras el jugador estaba fuera.
Se utilizan secuencias de comandos de texto sensible al contexto para modificar estas líneas de diálogo para que se ajusten a la situación. Por ejemplo, una etiqueta para el nombre de un personaje en el diálogo se puede sustituir por 'mi suegra, X' o 'mi sobrino, Y' rastreando la relación entre los dos personajes, o incluso entre el personaje del que se habla y un tercer carácter ('hermano de X, Y'). Otras cosas, como la ubicación de una ciudad, se pueden sustituir cuando sea necesario, y puede haber líneas variantes que se elijan en función de los personajes, sus banderas u otras condiciones ambientales. O simplemente RNG sin procesar, para mezclar un poco las cosas.
Pat_Bren ha estado ocupado creando una tonelada métrica de eventos variados y mininarrativas, y Lemmy los ha estado integrando en el sistema de eventos. Todavía hay mucho más por agregar, pero está comenzando a producir algunos resultados interesantes.
Aquí hay algunos resultados narrativos. Divulgación completa: aquí se ha realizado un poco de masaje de los resultados, está algo curado ya que el sistema aún es capaz de obtener algunos resultados muy extraños y el grupo aún no es lo suficientemente grande como para evitar situaciones de 'flecha en la rodilla', si simplemente agregamos los primeros 10 resultados probablemente no sean tan impresionantes en esta etapa, por lo que elegimos los que tienen la menor superposición, aunque probablemente notará algunas declaraciones repetidas (en la mayoría de los casos, esto también demuestra las variantes o caminos alternativos que buscamos). tener allí para mezclarlo): nuestro objetivo es, en última instancia, con construcciones progresivas, ampliar la biblioteca de eventos narrativos y líneas hasta el punto en que cada historia se sienta completamente única (más fácil de hacer sin diálogo expresado, pero nos disculpamos profusamente con nuestro traductores).
Tenga en cuenta que aún se está trabajando en ellos y todavía tenemos que trabajar un poco para que fluyan con la mayor naturalidad posible, como si se contaran más tarde a otro personaje, en lugar de como un registro directo de eventos que pueden parecer un poco concisos y poco naturales. , por lo que nada del texto es remotamente definitivo y todavía tenemos que encontrar un buen equilibrio de información que se sienta natural para compartir con un tercero potencialmente semanas después...
(Es muy importante tener en cuenta que, en la actualidad, estas narrativas se limitan principalmente al metajuego, y aunque hablamos sobre cómo afectarán a los personajes que presencia el jugador, todavía queda mucho trabajo por hacer en ese departamento. Esto es todo muy súper trabajo en progreso, y aunque se ha realizado una tonelada métrica de trabajo en la base de código NPC, todavía es un gran trabajo unirlo todo para que funcione como uno solo).
Sabía que se cortaría la electricidad.
Primero nos abastecíamos y comíamos alimentos frescos, luego vivíamos de latas.
Ya teníamos un generador y lo usamos un tiempo, hasta que se incendió…
Las llamas se extendieron rápidamente.
Juan consiguió el extintor, pero no fue suficiente.
El humo afectó a Keith, pero pudimos sacarlo de allí.
Toda la casa estaba en llamas y lo perdimos todo.
Pensé que los Murphy podrían ayudarnos, pero no nos dejaron entrar, dijeron que era demasiado peligroso...
Estábamos tan desesperados que nos mudamos a una casa cercana.
Empujamos una librería frente a la puerta trasera.
Rompimos una mesa y usamos las piezas para asegurar las ventanas...
Luego aguantamos allí todo el tiempo que pudimos...
Éramos cuatro. Estábamos esperando en West Point. ¡Fue loco!
Mi cuñado, Jason, simplemente nos abandonó, nos dejó solos. Nunca más lo volvimos a ver.
Intentamos encontrar una tienda que fuera segura. Tuvimos que salir y buscar cualquier cosa que pudiéramos tener en nuestras manos…
Pero esas cosas estaban en todas partes. No pudimos conseguir nada... ¡Había demasiadas de esas cosas!
No teníamos nada, la comida se había acabado.
Luego, un par de días después, alguien comenzó a golpear una de las ventanas. ¡No sabíamos quién era!
Era Jim, un vecino nuestro, que quería entrar.
Pero, ¿y si estaba enfermo? No podíamos arriesgarnos.
Espero que lo haya logrado...
Esas cosas rompieron las barricadas y entraron.
Hice lo mejor que pude, ¡pero eran demasiados!
Entramos en pánico y corrimos... perdimos a Lang y Dillon, no sé si escaparon, o...
creo que escaparon. Tienen que tener, ¿verdad?
Justo antes de que la mierda se descontrolara, mi hermana Annie se enfermó.
Tratamos de llevarla al hospital… pero la carretera estaba bloqueada por el tráfico.
En ese momento nos dimos cuenta de que era demasiado tarde, el coche estaba bloqueado, no había salida.
Tuvimos que abandonar el coche y emprender el camino a pie.
Annie estaba muy mal, su fiebre estaba empeorando. Bryan, su esposo, tuvo que cargarla.
No había nada que pudiera hacer por ella... Hice lo que pude, pero no fue suficiente.
no sabíamos ¡No teníamos idea de lo que sucedería!
Cuando se volvió, mordió a Bryan en la nuca.
Los dejamos a los dos por ahí, Dios nos ayude. ¡Los dejamos a los dos dando vueltas por ahí!
Traté de llegar a casa con mi familia. Cuando llegué a casa ya se habían ido, dejaron una nota diciendo que habían ido a Riverside a mis suegros.
¿Por qué no esperaron?
Sé que tengo que llegar allí, antes de...
Poco podía hacer por él... Hice lo mejor que pude, pero no teníamos suficientes suministros.
Sabía lo que iba a pasar.
Me pidió pastillas y se encerró en el baño
. Lo enterramos en la parte de atrás... es decir, después de que...
Justo antes de que la mierda se descontrolara, Joe se enfermó.
Intentamos llevarlo al hospital, pero las calles estaban atascadas de tráfico, así que volvimos.
Joe dijo que no quería volverse como esas cosas...
Me pidió una cuerda y se atrincheró, pero aun así volvió...
Las barricadas no eran lo suficientemente fuertes.
Escapó y mordió a Sergei.
Tuve que dejarlo también.
Nunca seré capaz de perdonarme a mí mismo.
Es como una pesadilla...
Alanna, mi esposa, tenía fiebre esa mañana, pero no había sido mordida.
En menos de una hora siguió empeorando hasta que se volvió y trató de morderme.
Tuve que... oh Dios... Su cuerpo todavía está allí...
Intenté llegar a la casa de mi hermano Jack.
Esas cosas comenzaron a perseguirme, pero robé un auto y escapé…
Tuve que mantenerme en movimiento para alejarme de los infectados.
Entonces golpeé a alguien con mi coche. No hubo tiempo de frenar...
El hombre no estaba gravemente herido, gracias a Dios.
Se presentó como Kevin Jones, un plomero de Rosewood.
Estaba solo, creo que había perdido a alguien.
Cuando finalmente llegamos a la casa de Jack, él y su esposa Carol estaban bien, gracias a Dios.
No podían creer que no estuviéramos infectados.
Ese fue el peor día de mi vida. Al menos, hasta entonces…
Desglose de una narración
Elijamos uno de ellos y analicemos cómo funciona:
Justo antes de que la mierda se descontrolara, mi hermana Annie se enfermó.
Tratamos de llevarla al hospital… pero la carretera estaba bloqueada por el tráfico.
En ese momento nos dimos cuenta de que era demasiado tarde, el coche estaba bloqueado, no había salida. Tuvimos que abandonar el coche y emprender el camino a pie.
Annie estaba muy mal, su fiebre estaba empeorando. Bryan, su esposo, tuvo que cargarla.
No había nada que pudiera hacer por ella... Hice lo que pude, pero no fue suficiente.
no sabíamos ¡No teníamos idea de lo que sucedería!
Cuando se volvió, mordió a Bryan en la nuca.
Los dejamos a los dos por ahí, Dios nos ayude. ¡Los dejamos a los dos dando vueltas por ahí!
Como probablemente quede claro, todo esto es demasiado autoconsistente para ser completamente aleatorio. Esto no es solo un montón de eventos desconectados al azar que se desencadenan uno tras otro, sino más bien una mini-narrativa que se compone de varios eventos relacionados, cada uno de los cuales tiene varias formas en que pueden funcionar y también condiciones que pueden conducir a que se disparen en en primer lugar, lo que lleva a una gran cantidad de otros resultados que afectarán al grupo de diferentes maneras.
Para mostrar esto, verá otra versión bifurcada de esta misma narrativa en la lista de resultados anterior, que comienza con "Justo antes de que la mierda golpee al ventilador, Joe se enfermó". Aunque compartir el texto de la frase específica "mierda golpeó al fanático" fue una coincidencia, igualmente podría haber comenzado con "Justo antes de que las cosas se pusieran realmente mal" o "Antes de todo esto".
Las narrativas tienen puntos finales naturales que pueden poner fin a esa narrativa o, en su lugar, conducen potencialmente de forma natural a otra si es relevante. En otros casos, pueden establecer banderas en personajes o grupos que conducirán a otros eventos, o incluso a otras narrativas, con la posibilidad de activarlos en el futuro. Esta es la forma en que las narraciones pueden servir en última instancia como bloques de construcción más grandes para hacer historias de personajes más largas que fluyan entre sí de manera convincente.
Así que volvamos a esta narrativa de demostración anterior:
“Justo antes de que la mierda se descontrolara, mi hermana Annie se enfermó”.
Como se detalló antes, generamos los grupos de NPC iniciales de varias familias, con algunos otros elementos para mezclar las cosas. En el primer evento de esta narración, elegimos a un miembro apropiado de la casa para 'enfermarse'. Esto establecerá la primera constante dentro de esta narrativa a la que se hará referencia y se utilizará en todo momento.
Entonces el segundo evento en la narración es así...
“Tratamos de llevarla al hospital… pero la carretera estaba bloqueada por el tráfico”.
Este evento activará a los personajes del grupo (como sea que se haya generado), incluida la desafortunada Annie, para establecer la meta de viajar al hospital de Louisville. Dondequiera que estén en el mundo, se generará un camino a lo largo de las carreteras hasta ese lugar. A pesar de que los personajes, ni un vehículo, se transmiten al mundo, y existen virtualmente en el 'meta', podemos asignarles aleatoriamente un automóvil apropiado y hacer que se muevan aproximadamente a la velocidad del automóvil a lo largo de las carreteras en ruta a Louisville.
Si el jugador se cruzara con este 'señal de radar' virtual de estos personajes, se generaría en el automóvil con ellos adentro, moviéndose en la dirección correcta a la velocidad apropiada, y la IA que controla el vehículo más directo tomaría el control con el el mismo destino en mente.
Este evento puede desarrollarse de varias maneras, golpeando el bloqueo militar, chocando el auto, quedando atrapado entre un grupo de zombis.
Quedarse atascado en el tráfico tiene varios resultados, que incluyen, por ejemplo, un intento de robo de automóvil o que la persona que está siendo transportada dé vuelta en el automóvil. Algunos de estos pueden conducir a eventos o narraciones más genéricas, o pueden continuar con la mini-narrativa principal hasta una conclusión más amplia.
Suponiendo que todo esto continúe dentro del metamundo virtual, se abrirán camino hasta que lleguen a una de las zonas de atascos de tráfico en la carretera, lo que en este caso hace que desencadene el próximo evento en la narrativa.
“En ese momento nos dimos cuenta de que era demasiado tarde, el auto estaba bloqueado, no había salida. Tuvimos que abandonar el coche y emprender el camino a pie”.
Alternativamente, podría ser que lograron conducir de regreso a casa, o superar el atasco y pasar al siguiente problema. Pero, en este caso, la narración se bifurca hacia este resultado. Señalamos que han perdido su automóvil y ahora están a pie.
Establecimos su objetivo de seguir dirigiéndose hacia el hospital de Louisville, sin embargo, ahora están marcados como a pie y el 'señal de radar' del grupo se mueve a un ritmo mucho más lento a lo largo de la carretera. Si un jugador se cruzara con su viaje, generaríamos todos los personajes a pie, y la IA tomaría el control desde allí con el mismo objetivo de ruta.
Ahora que van a pie, esto abre la puerta a que se disparen otros eventos vinculados a esta narrativa que no serían posibles dentro de un vehículo. Uno de esos eventos que puede desencadenar aleatoriamente es un empeoramiento de la condición de salud de quien haya sido elegido para ser el enfermo, que es lo que sucede a continuación.
“Annie estaba muy mal, su fiebre estaba empeorando. Bryan, su esposo, tuvo que cargarla”.
Cierto, en este momento no tenemos ninguna forma de 'hacer que esto sea real' si el jugador se encuentra con este grupo, ya que no tenemos soporte para personajes que lleven a otros en este momento. Esperamos agregar esto, y si lo hiciéramos, cuando generamos los personajes en persona, los configuraríamos según corresponda para el evento, pero independientemente, en este momento, estas narraciones en particular tienen lugar demasiado temprano para que los jugadores en realidad se cruzan con, por lo que podemos tomarnos algunas libertades en estas narrativas particulares de todos modos.
Observe que se hace referencia a Bryan como 'su esposo', lo que se genera automáticamente utilizando a Annie como el carácter de contexto y el código que examina la relación más cercana entre estos dos personajes. En su lugar, podríamos tener una línea de diálogo alternativa usando el personaje que habla (el hermano de Annie) como contexto y en su lugar diría 'mi cuñado, Bryan', encontrando que el vínculo más corto entre el personaje que habla y Bryan fue a través de Annie. Planeamos que esto se amplíe en el futuro para que se modifique automáticamente en función de todo tipo de cosas, como la opinión del personaje y/o los rasgos del personaje (mi cuñado idiota, Bryan, por ejemplo), aunque esto puede no estar presente en las primeras iteraciones del sistema.
Así que ahora, hemos señalado que la 'persona enferma' está siendo transportada y que Bryan la está transportando. Esto abre la posibilidad de que se desencadenen nuevos eventos y, de hecho, eso es lo que sucede. Pobre Bryan.
El evento de "empeoramiento de la salud" se desencadena nuevamente, lo que lleva a un resultado de muerte, con un texto de sabor que puede variar de un caso a otro.
Entonces Bryan, que todavía carga su cuerpo, recibe una desagradable sorpresa. pobre bryan🙁
Una vez más, algunas opciones, lo que hacen con los zombis Annie y Bryan, podría haber una tercera víctima al intentar acabar con ellos. Estas ramas son relativamente sencillas de escribir y se pueden expandir en el futuro. Significa que podemos tener muchos hilos narrativos pequeños, que duran días o meses, que se entrelazan en eventos apropiados para dirigir la historia en direcciones creíbles, con resultados escritos o diseñados que tienen sentido y se sienten como una historia real, en una forma manejable y ampliable.
Las 'búsquedas' que tenemos con nuestra generación de historias probablemente encajarán en línea con este sistema narrativo anterior. ¿Un personaje se separa de sus seres queridos y se dirige a otra ciudad para encontrarlos? ¿Quizás puedas ayudar? Esperamos una estructura más orgánica de interacción y transacción con los PNJ que surja de este sistema narrativo y conduzca a que se cuenten algunas historias realmente geniales y creíbles con nuestros PNJ.
https://projectzomboid.com/blog/news/20 ... -survivor/