Análisis en profundidad de Ghost of Yōtei

0 0
Análisis en profundidad de Ghost of Yōtei

Sucker Punch profundiza en la parte técnica que les ayudó a dar vida al apasionante viaje de Atsu. 

Ghost of Yōtei ha sido una obra de amor por parte de Sucker Punch y estamos contentos de lanzarlo mundialmente para que todos podáis jugarlo. Ahora que los jugadores han tenido una muestra del juego, pensamos que es una buena oportunidad para hablar un poco sobre la tecnología que nos ha ayudado a llegar hasta aquí.

A partir de lo que logramos con Ghost of Tsushima, la visión de proyecto para Ghost of Yōtei tuvo un gran énfasis en la sensación de libertad del jugador en una naturaleza indómita. Esto significó esforzarnos por guiar al jugador de formas menos intrusivas, bellos entornos con líneas de visión más extensas, combates con armas más flexibles, personajes memorables con personalidad y momentos de la historia emocionantes. Intentar hacer todo esto mientras manteníamos una buena velocidad de fotogramas era todo un reto.

Así que profundicemos en unos cuantos aspectos de la tecnología que usamos para crear Ghost of Yōtei.

Vagando por un mundo salvaje

Al hacer prototipos de nuestra visión de una exploración libre, encontramos que la forma más eficaz era dejar que los jugadores otearan a través de un bello escenario y siguieran su curiosidad para descubrir el juego. Desde una perspectiva técnica, alcanzar esa sensación requería líneas de visión más extensas, lo que significaba un mejor renderizado de hierba, terreno y montañas a grandes distancias.

Mejoramos la apariencia de las montañas lejanas al convertir modelos y materiales de terrenos detallados en texturas que pudiéramos mostrar con un mayor detalle. También duplicamos la cantidad de hierba y objetos renderizables que nuestra GPU de renderizado era capaz de producir. En esta toma, las montañas lejanas con cerca de un millón de árboles, rocas y arbustos fueron reducidas a tan solo seiscientos objetos individuales que renderizamos para generar nuestros búferes de geometría para construir la imagen final. 

Usamos técnicas de autorización asistida procedural y nos apoyamos mucho en la GPU de renderizado para procesar todas esas instancias eficientemente sin implicar a la CPU. Esto implica secuencias de computación para realizar reducción de oclusión, asignación de memoria y rellenado de registros de dibujo antes de volver a leer esa información en la CPU para unirla a las listas de comandos finales para el fotograma. Aquí tenéis una animación de una toma similar con toda la geometría dibujada por GPU animada para que tengáis una idea de la escala involucrada. Usamos estas técnicas para datos generados en el momento, así como para nuestros amplios campos de flores e incluso ocasionalmente para cosas como cuerdas y cadenas. 

Para dar a cada área del mundo un toque único, construimos sistemas de interacción que enfatizan sus temáticas. Gran parte del mundo tiene hierba o plantas pequeñas y, además de deformarse con el viento o el movimiento del personaje, hemos añadido un sistema que renderiza los tajos de las armas en un “búfer de corte”. Luego, este búfer se muestrea mediante geometría cortable y se utiliza para generar partículas con la geometría por encima del corte. Esto permite a Atsu cortar la mayoría de la hierba, flores y plantas pequeñas del juego. 

Hokkaido tiene los inviernos más extremos de Japón, así que quisimos representar de forma realista la interacción de los personajes con la nieve profunda. Para ayudar a eso, construimos terrenos con sistemas de teselado que aumentaban tanto la cantidad de detalle que podía ser representado por el terreno como la que podía ser deformada dinámicamente en el momento. Para conseguir eso, las partículas y la geometría son renderizadas en un búfer de desplazamientos cuando el personaje camina, rueda o lucha sobre él. Esto fue tan flexible que lo llevamos más allá para permitir a los personajes sacudir la nieve de árboles y arbustos, generando partículas de nieve en el proceso. Cuando combinamos eso con un nuevo efecto de brillo de la nieve usando ruido estable en el espacio de la pantalla, termina viéndose así.  

Montañas altas como el monte Yōtei a veces están cubiertas por nubes, así que tuvimos que encontrar una forma de renderizar nubes frente a la geometría del mundo, lo que no era posible en el motor de Ghost of Tsushima. También quisimos dar la impresión de un tiempo tormentoso e inestable aumentando la velocidad a la que podían moverse las nubes. Para permitir un movimiento más rápido de las nubes sin artefactos objetables, almacenamos la profundidad visible promedio de cada téxel en el mapa de nubes (medido desde la cámara), lo que nos permite usar técnicas de mapeo de paralaje mientras deslizamos cada fotograma de nubes. (También mezclamos tres fotogramas de nubes en lugar de solo dos, lo que resulta en un movimiento más suave todavía). Al almacenar también la profundidad cuadrada visible promedio en el mapa de nubes, podemos reconstruir una distribución estadística simple de la opacidad de las nubes a lo largo de cada rayo y esto nos permite calcular cuánto deberían oscurecer las nubes la geometría del mundo, como las montañas. 

La niebla y la dispersión atmosférica fueron factores importantes al establecer el estilo artístico de Ghost of Tsushima y para Ghost of Yōtei queríamos construir sobre eso añadiendo soporte para volúmenes locales de niebla. Estos se calculan de forma eficiente usando las instrucciones extendidas de GPU de punto flotante de 16 bits de la PS5. Como efecto secundario de nuestra optimización de nubes, calculamos un mapa de sombras de nubes en el espacio de luz, lo que permite que los rayos crepusculares (“rayos de dios”) sean visibles en nuestra niebla volumétrica, incluso lejos de la cámara. También dejamos a nuestros artistas colocar “objetivos de rayos de dios” en el mundo de forma que fueran iluminados más frecuentemente por agujeros en las nubes. 

Personaje y movimiento

and all of the hanging cloth in settlements. Queríamos que todo en la pantalla se moviese con el viento, incluido todas las ropas que llevase el personaje, las borlas de las armas y toda la tela colgada en los asentamientos Cuando ruedas y luchas por ahí, queríamos que el polvo y las hojas se levantasen, dejándote embarrado y ensangrentado para anclarte de verdad al mundo.

Los complejos atuendos de Atsu solo se podían mover de forma realista gracias al nuevo soporte de capas que añadimos al sistema de cálculo de ropa por GPU de alto rendimiento. Además de añadir soporte para múltiples capas de ropa simulada (ver debajo), también soporta colisiones de ropa y usamos un conjunto de heurísticas ajustadas cuidadosamente para simular grandes cantidades de simulaciones individuales de tela de manera eficiente. Aquí tenéis un ejemplo de Atsu con uno de sus atuendos más complejos, rodeada de tela moviéndose. 

Las partículas por GPU han sido un punto fuerte de Sucker Punch desde Infamous Second Son. En Ghost of Yōtei continuamos añadiendo cosas a nuestro repertorio de trucos, permitiendo a las partículas muestrear el material del terreno, la deformación y el flujo del agua. Por ejemplo, esta toma muestra partículas cayendo y flotando río abajo. 

Además de afectar al mundo, anclamos a los personajes haciendo que el mundo responda. Hacemos esto salpicando información en una cuadricula direccional deformada alrededor del personaje que después usamos para aplicar efectos de texturas para hacer que el personaje parezca mojado, ensangrentado, embarrado o lleno de nieve. 

También aprovechamos nuestros sistemas de partículas para permitir al jugador viajar al pasado y explorar la historia familiar de Atsu. Para cambiar entre pasado y presente, cambiamos el esqueleto y la geometría de Atsu mientras mantenemos consistente su estado de personaje y animación. Elementos en el fondo e iluminación son cosas que también cambiamos gracias a la velocidad del SSD y a precargas seleccionadas cuidadosamente. Esto se hace tras una cortina de partículas animadas que muestrean una copia del búfer justo antes de la transición. 

Trazado de rayos y mejoras de PS5 Pro

Al ser un juego nativo de PS5, sabíamos que queríamos mejorar la calidad de imagen aplicando alguna de las nuevas tecnologías de la plataforma. Con el lanzamiento de PS5 Pro, también queríamos avanzar en una dirección que nos ayudase con juegos futuros. Ayudándonos de un apoyo sólido desde los equipos principales de tecnología de PlayStation, quisimos apostar por dos grandes áreas: el trazado de rayos y el escalado de imagen con PSSR.

Como Ghost of Yōtei tiene lugar en la naturaleza del Hokkaido del siglo XVII, hay pocas superficies que actúen como espejos y se presten a los reflejos de trazados de rayos. En su lugar, decidimos usar el trazado de rayos para mejorar la fidelidad de nuestra solución para la iluminación global. Afrontamos esto desde dos direcciones: primero con un modelo de luces mejorado y más automatizado, el cual luego pudimos aumentar con iluminación global con trazado de rayos de corto alcance (RTGI en inglés). Esto requirió cambios significativos en nuestro formato de transmisión de mallas, permitiéndonos descomprimir de forma dinámica las estructuras de aceleración utilizadas por el hardware de trazado de rayos. Gracias a usar el hardware más eficiente en trazado de rayos de PS5 Pro, los jugadores podréis activar el RTGI fijando los 60 fotogramas por segundo en las consolas Pro. 

Para Ghost of Yōtei hemos reconstruido nuestros fotogramas para usar un algoritmo de resolución dinámica más general, con muestreo ascendente, en parte para que pudiéramos aprovechar el PSSR PSSR funciona muy bien para nosotros con solo un par de ajustes, incluido el ejecutar rasterización conservadora para partículas pequeñas. En comparación, nuestro algoritmo de muestreo ascendente estándar requiere mucha más ayuda con instrucciones y autorización para lograr buenos resultados. Aquí tenéis un vistazo comparativo. Si hacéis un zoom muy cercano (x16 antes de la compresión del gif), podréis ver que el PSSR hace un mejor trabajo reconstruyendo pequeños detalles en la arquitectura y el follaje. También es más estable en movimiento. 

Velocidad de carga

Durante mucho tiempo, Sucker Punch se ha enorgullecido de hacer que los jugadores entren en sus juegos lo más rápido posible. En Ghost of Yōtei hemos continuado esa tradición duplicando la velocidad en los tiempos de carga.

Hemos optimizado la carga al preprocesar datos de forma que solo requiere unas pocas lecturas del SSD y operaciones de parcheo por ubicación o mosaico del terreno para cargar los datos relevantes para el juego. Luego calculamos y cargamos solo los mips de texturas y los niveles de detalle de las mallas necesarios para renderizar el primer fotograma, con una lectura por elemento. Así se ve la carga desde el extremo sur hasta el norte sin la pantalla apagada. (Nótese que esto es algo más lento de lo que debería ser si no tuviéramos que renderizar el mundo todo el tiempo). 

A lo largo del desarrollo, hacemos “dog food” con estos sistemas en lugar de tener que usar un modelo de carga diferente para el envío de compilaciones. Dog fooding es un término de programación usado para referirnos a todos los programadores, artistas y diseñadores que prueban lo que enviamos para mejorar su calidad.

Conclusión

Esto es un pequeño vistazo a parte del trabajo técnico que hacemos en Sucker Punch. Hacer videojuegos es más de lo que se piensa, es un gran esfuerzo en equipo en el que el arte influye en la tecnología y viceversa.

Cuando empezamos este proyecto hace cinco años, nuestro objetivo era hacer un mundo de juego en el que los jugadores quisieran perderse. Muchas de nuestras decisiones técnicas se basaron en el núcleo de la fantasía de Ghost of Yōtei, lade un guerrero errante que intenta aceptar los acontecimientos de su pasado. Estamos encantados de ver esta visión hacerse realidad a través de los jugadores que comparten sus experiencias y publican increíbles capturas y vídeos del juego usando el Modo Foto.

Estamos muy orgullosos del resultado y esperamos que todos disfruten de vagar por la naturaleza de Ghost of Yōtei.

Si os interesa conocer más sobre la tecnología y los procesos de desarrollo de Sucker Punch, echad un vistazo a nuestras presentaciones anteriores en conferencias como GDC y SIGGRAPH. Esperamos compartir más en 2026.

Especial agradecimiento a Jasmin Patry, Doug Davis y Eric Wohllaib, quienes me ayudaron a editar y preparar el contenido de esta publicación, así como a todos los compañeros de Sucker Punch cuyo trabajo estoy representando aquí.

Únete a la Conversación

Agrega un Comentario

¡Pero no seas mala persona!

Por favor sé amable, considerado y constructivo. Reporta los comentarios inapropiados a PlayStationBlogModeration@sony.com

Deja un comentario

Por favor ingresa tu fecha de nacimiento.

Date of birth fields