DayZ: - DEVBLOG - El desafío y la saga del pathfinding de los zombies

Sunete

Este devblog se centrará en describir el progreso con uno de nuestros mayores problemas: el pathfinding de los zombies.

Ritmo y prioridades de desarrollo

Nuestro principal objetivo ha sido establecer la arquitectura, tanto en el juego como en nuestro equipo, para poder ofrecer lo mejor en el futuro. Esto implicaba que aumentásemos drásticamente la cantidad de gente trabajando en el juego. Esto tuvo un impacto a corto plazo en nuestro progreso puesto que nuestro equipo existente tuvo que dedicar tiempo y recursos al entrenamiento y planificación. El nuevo pathfinding de los zombies es un buen ejemplo de los buenos resultados que está teniendo este acercamiento.

Algunos ejemplos de los grandes cambios futuros como resultado de este objetivo:

  • Nuevo sistema de renderizado completamente nuevo (permitiendo mejoras potenciales a DX10 o DX11, así como ports)

  • Multithreading / multicore para los servidores y posiblemente para los clientes.

  • IA para los animales completamente nueva, que simule comportamientos realistas.

  • Sistema de "acciones" recreado, sustituyendo al sistema de uso con la rueda del ratón.

  • Refactorización total del sistema de inventario. Aunque no supone un gran cambio para el usuario, probablemente permita implementar sistemas más avanzados y un mejor rendimiento y menos bugs.

Trasfondo

Los zombies han demostrado ser uno de los componentes más difíciles de desarrollar de todo el juego. Mientras desarrollábamos el juego, nos dimos cuenta de que con el tiempo que teníamos, debíamos trabajar con los parámetros de IA de los que ya disponíamos. En el engine, la IA se calcula en base al factor "por agente", con algo de almacenamiento en caché para cosas como objetivos, etc. En el mod, esto se descartó en favor de calcular la visibilidad y la información del objetivo con un acercamiento "por jugador". Esto significaba que los zombies en el mod eran simples peones activados por los jugadores que se movían por ahí.

Además de los problemas de comportamiento también experimentamos problemas con el pathfinding y la colisión de la IA. Teníamos al engine haciendo cosas para las que nunca se le había diseñado, especialmente en cuanto a los interiores de los edificios. Intentamos una refactorización con estas soluciones para acomodar los cambios pero, como se puede apreciar jugando la build actual, no han alcanzado nuestras expectativas. Al final decidimos que sería más sencillo desarrollar un nuevo acercamiento desde cero.

El Desafío

Hay muchas soluciones muy emocionantes disponibles para el problema del pathfinding, es un dilema bastante común en la industria del videojuego. Nuestro problema no era único, pero nuestra situación era: nuestro mundo es muy grande y requiere de la misma precisión que uno pequeño.

El equipo dedicado a solventar este problema optó por el uso de mallas de navegación. Sin embargo, el problema serio que presentaba, era el cómo generar estas mallas, con cerca de 2 millones de objetos en el mapa hacerlo a mano no era una opción. Así que un método fue ideado por el cual dividir el mundo en cuadrículas, para luego proyectar con intervalos precisos pedazos generados de mallas de navegación. Esto se hace todo durante el proceso de empaquetado y "horneado" después en forma de datos que puedan ser leídos por el servidor y el cliente. Esto usa las maravillosas técnicas open source de proyectos de navmesh de Recast y Detour.

Los Resultados

Hablé con Martin Slavkov, uno de los programadores detrás de esta solución, para que me ayudase a describir el resultado con algunas imágenes.

Generando la malla de navegación (Ver la galería en Imgur sobre la generación)

Un pequeño programa ha sido desarrollado para hacer una lectura del mundo, cargar todos los objetos, y luego abrirse camino a base de billones de líneas para calcular la capacidad de movimiento. Esto funciona no solo para saber dónde puedes y no puedes andar en exteriores, sino también en interiores. Provee de gran precisión a la vez que trabaja con un mundo de tamaño enorme tanto fuera como dentro. Tener una solución unificada para el pathfinding hace que la implementación sea mucho más sencilla.

Uso ingame (Ver la galería en Imgur sobre el navmesh en acción)

Después el motor es capaz de cargar los trozos cuando los necesite. Esto usa algo de memoria (alrededor de 600mb extra, como máximo), pero solo carga los trozos necesarios. Sin embargo, puesto que nos vamos a mover a 64bit por parte del servidor, esto reduce cualquier problema potencial con la memoria.

Las optimizaciones en el rendimiento pueden ser muy significativas. El equipo está trabajando actualmente en la paralelización de las funciones de pathfinding de la IA para que pueda operar en un núcleo separado. Con esta nueva funcionalidad, desarrollamos de un modo que desafortunadamente puede hacer que nos cueste más tiempo de desarrollar a cambio de resultados masivos en el rendimiento.

Anteriormente dos sistemas distintos eran empleados para la navegación de la IA. El sistema de exteriores manejaba la navegación alrededor de objetos estáticos y dinámicos, y un sistema de "caminos" interno se usaba para los interiores de los edificios. Esto hacía que los artistas tuviesen que definir caminos que la IA pudiese seguir. Tuvimos que abandonar este método de interiores a causa de los severos problemas de rendimiento al existir un gran número de agentes.

En la imágen superior, se puede apreciar un camino entre dos puntos rojos. Puesto que este sistema está ahora unificado, esto significa que tenemos soluciones de pathfinding para la IA más eficientes (y más naturales), con solo una fracción de coste de rendimiento que antes.

Reporte del artista principal, Chris Torchia

(Ver galería en Imgur con nuevos añadidos artísticos)

Estoy muy contento con la enorme cantidad de contenido que pronto estará disponible en los servidores experimentales. Recientemente, los estudios de Praga y Bratislava tuvieron su primer encuentro, lo cual me permitió echar un ojo de primera mano al trabajo de los artistas y animadores con los nuevos animales. Tenemos una implementación básica de animales prototipo llevada a cabo por los artistas de Bratislava que tiene una pinta increíble!

Se han creado un cebo improvisado para pescar y una carpa, las cuales podrán ser pescadas en estanques. También hemos creado modelos de filetes que en cierto punto podrán ser cocinados. Esto será literalmente un 'game-changer'. Hablando de animales, también conocimos a Big, la mascota de la oficina de los chicos en Bratislava. Hm, eso me da ideas...

Nuestro artista de personajes está expandiendo todavía más la selección con nuevos chalecos de gran capacidad para acompañar a nuestro uniforme OMON. También hemos empezado el trabajo en los uniformes de EMT, bombero y terminando los uniformes Gorka.

Hogueras, caza y convertirse en un leñador!

Retiramos las hogueras y la caza de la anterior actualización por sus estado en aquel momento, creíamos que más que mejorar el gameplay lo que íbamos a hacer era dañarlo. El tiempo extra se ha empleado en mejorar aspectos del gameplay y en identificar qué podemos hacer para darle mejor soporte.

La build que pondremos en la experimental mostrará la estructura básica de como funcionará. Cortar madera de los árboles ahora da troncos, y tras cierto tiempo, estos serán "gastados" y se caerán. Cortar un árbol se realiza sosteniendo un hacha en tus manos y usando el menú de acción de la rueda del ratón. Esto es un ejemplo perfecto de por qué queremos eliminar este sistema de acción. En vez de hacerlo de esta forma, queremos que al golpear el árbol recibas madera, pero eso es algo para el futuro.

Las hogueras pueden ser mejoradas con piedras, las cuales se recuperan del suelo en zonas rocosas o simplemente golpeado una roca con un pico. Las hogueras pueden ser creadas elaborando un 'kit de hoguera' con objetos como trapos y astillas. Las astillas se consiguen buscando palos por el suelo del bosque. Todos estos aspectos de búsqueda de recursos necesitan refinarse como parte del nuevo sistema de acción, pero son cambios muy emocionantes que allanarán el camino para sistemas más complejos como la horticultura.

Visita al equipo de Bratislava

(Ver la galería de Imgur con imágenes de la visita)

Hemos visitado a nuestro equipo en Bratislava, tienen una TORTUGA!

La siguiente actualización

Nuestros objetivos actuales nos tienen sacando builds estables una vez al mes, una de las inspiraciones principales para ello es Prison Architect, el cual lo hace muy bien. No tenemos plazos fijos para los parches experimentales, estos son lanzados solo para ayudarnos a preparar los lanzamientos en la rama estable.

Por encima de todo, es vital que la gente aprecie una serie de cosas:

  • Diferentes tareas toman diferentes cantidades de tiempo.

  • La prioridad a la hora de realizar una tarea se hace teniendo en cuenta qué es necesario basándose en dependencias, no en qué es necesario para satisfacer el diseño del juego.

  • Las builds programadas son objetivos, no absolutos. Retrasaremos y pospondremos builds si pensamos que no están listas.

  • Los devblogs ya no salen de forma semanal, sino tan pronto como tengamos algo de lo que informar sobre el progreso.

Últimas palabras

Estamos en un punto extremadamente emocionante para todos nosotros ya que salimos de dos meses de agresivo crecimiento. Hemos expandido muchísimo el equipo, asumiendo enormes riesgos con ello. Esos riesgos están empezando a dar sus frutos, y estamos emocionados de ver el enorme impacto que los cambios en el pathfinding y la colisión tendrán sobre la experiencia DayZ.

Fuente

5
kpi666

La cosa pinta muy bien,esperemos que no tarden mucho, porque ahora mismo el juego anda muy escaso en cuanto a actualizaciones IMPORTANTES se refiere.

B

Yo solo espero que al final de realmente la sensación de estar en un mundo asolado por los zombis. Que se muevan bien, que haya sangre y detalles como muertos por las casas y en las carreteras... Cosas de esas que hay en los apocalipsis zombis, ya sabéis.

No hay más que ver a todo el mundo jugando en plan militar para darse cuenta de que DayZ no tiene nada que ver con un apocalipsis zombie... Irónico cuanto menos.

De momento, solo veo metralletas, pistolas, ropas militares y mierdas varias del ArmA. Pero no voy a juzgar nada hasta que digan que oficialmente el juego está en Beta (que prácticamente será como el lanzamiento, poco más variará ya).

Hasta ahora no estoy nada contento con "Day ArmA".

B

Guay.

lol al detalle del cartón en el aire acondicionado, supongo que para que no les de el chorrete de aire frió en la cocorota.

1
Antares09

Horticultura!!

Tengo el nabo en la mano.

1
nerkaid

¿Mejoras en el rendimiento y en el pathfinding de la mano? Póngame dos por favor.

A ver cuando podemos catar estos cambios en la versión dev pública.

1
A

Parece que son buenas noticias para nosotros, los inversores de Dayz. Es un gran paso para los zombies (se le acabo el cheto de atravesar paredes :D ) y un gran paso para el juego.

Thx sunete por estas maravillosas traducciones ya que estuve leyendo el devblog pero no pillaba los matices.

Saiko9

Creo que es el mejor devblog que han hecho desde que llevan con SA. La verdad que me han devuelto algo de fe porque yo creo que este juego nunca será lo que promete porque es imposible con un motor que no esta hecho para ello aunque metan a todo el equipo del ARMA.

1 respuesta
Sunete

#8 Precisamente los cambios que están haciendo son para alejarse poco a poco del motor con el que han empezado.

Es más, toda la lentitud en el desarrollo que puedan tener seguramente se deba siempre a los cambios radicales que están haciendo con el motor constantemente.

1 respuesta
B

hype!!!!

R

#9 hacer el standalone bajo el engine de arma 2 fue un error y lo sabe todo el mundo

1 respuesta
nerkaid

#11 El motor es del Take On Helicopters...

1 respuesta
1 comentario moderado
ultimatec

pinta bien :)

Usuarios habituales

Tags