Entrevista técnica: Trials Evolution

Digital Foundry habla con RedLynx.

En una época marcada por el desarrollo multiplataforma las exclusivas para consola ya no son tan abundantes, especialmente en Xbox 360, donde Microsoft no sólo ha reducido sus estudios first-party sino que también ha limitado el desarrollo interno de motores en favor de soluciones middleware (el próximo Fable, por ejemplo, funciona con el Unreal Engine).

Un juego que evita esta tendencia es el fenomenal Trials Evolution de RedLynx, un título diseñado desde cero para el hardware de Microsoft por uno de los estudios más respetados del sector y que ya se puede descargar en el bazar de Xbox Live.

En este especial de Digital Foundry hablamos cara a cara con Sebastian Aaltonen, de RedLynx, para discutir sobre las cosas que aprendieron de Trials HD, su enfoque para el ambicioso editor Track Central y todas las mejoras en el motor de rendering de uno de los videojuegos tecnológicamente más avanzados para la consola de Microsoft.

Texturas virtuales, iluminación, resolución, anti-aliasing, tecnología de post-procesado, técnicas GPGPU... sigue leyendo para descubrir por qué Trials Evolution no sólo es una obra maestra a nivel jugable, sino también un ejemplo de desarrollo puntero de videojuegos para Xbox 360.

Digital Foundry: Empecemos hablando del proceso post-mortem del Trials HD original. ¿Cuáles son las lecciones más importantes que habéis aprendido de él y qué habéis querido mejorar?

Sebastian Aaltonen: Habían dos cosas respecto al DLC que queríamos mejorar. No teníamos ningún sistema de scripts en Trials HD, así que no podíamos añadir nuevos minijuegos con retos en el DLC (los DLCs son tan sólo paquetes con contenido en Xbox Live). Trials HD cargaba todo en la RAM al arrancar, y eso limitaba la cantidad de objetos y texturas que se podían añadir en el DLC.

En la secuela queríamos arreglar esos dos problemas. El streaming de datos soluciona el límite de memoria y hemos implementado un complejo sistema de scripting visual para eliminar el tema de los minijuegos. Huelga decir que el sistema de scripting visual se convirtió rápidamente en todo un sistema de creación de juegos que nos permite crear una gran variedad de cosas (desde shooters en primera persona hasta juegos de carreras de coches).

"El feedback de los usuarios siempre ha sido muy importante para nosotros. Por suerte, a menudo vemos que nuestras propias ideas casan bastante bien con las de los usuarios."

Digital Foundry: A medida que crecía la popularidad del juego debíais recibir un montón de feedback. ¿Hasta qué punto ha influenciado la gente que jugaba a Trials HD vuestros objetivos con el nuevo juego?

Sebastian Aaltonen: El feedback de los usuarios siempre ha sido muy importante para nosotros. Por suerte, a menudo vemos que nuestras propias ideas casan bastante bien con las de los usuarios. El multijugador, la opción para compartir circuitos de forma global y los escenarios exteriores son algo que nos han pedido los usuarios a menudo desde Trials 2 Second Edition. El gran éxito de Trials HD hizo posible que al final creáramos el juego de nuestros sueños.

Digital Foundry: ¿Puedes hablarnos de las cifras de medición que teníais de los jugadores de Trials HD en Xbox Live y qué pistas os ha dado para la creación del nuevo juego?

Sebastian Aaltonen: No teníamos un sistema automatizado de recolección de métricas en Trials HD, pero analizamos los datos de las tablas de récords y de los foros de usuarios. Esta información fue crucial para descubrir la dificultad del juego y ver qué niveles acababan siendo demasiado difíciles para la mayoría de usuarios. Lo más importante que aprendimos era que el juego necesitaba tutoriales en condiciones y una curva de dificultad más suave.

RedLynx optimizó su sistema de renderizado de partículas para minimizar la carga de transparencias en la GPU de 360. El resultado es que Trials Evolution hace muchas cosas que harían a otros juegos sufrir y aún así lo hace a 60Hz. El vídeo está codificado a 60 frames por segundo - usa el botón a pantalla completa (o un dispositivo iOS moderno) para una reproducción más fluida.

Digital Foundry: Nuestra primera impresión con Trials Evolution fue que el campo de visión se ha ampliado significativamente y que se renderizan escenarios completos con una enorme distancia de dibujado. Pero el juego sigue siendo a 60Hz. ¿Cómo lo habéis conseguido? Probablemente se haya rehecho el motor de Trials.

"Nuestro motor gráfico ahora usa una interfaz de bajo nivel con la GPU, en vez de depender de la API de alto nivel DirectX."

Sebastian Aaltonen: Incrementar la distancia de dibujado de 40 metros a 2000 metros implica renderizar cinco veces más objetos por frame que en Trials HD. Muchas cosas del motor se han rehecho para poder soportar ese incremento de objetos. Por ejemplo, el motor gráfico ahora usa una interfaz de bajo nivel más 'cercana al hardware' de la GPU en vez de DirectX, una API de alto nivel que le envía las instrucciones.

Hemos optimizado por completo nuestro sistema de partículas con instrucciones VMX128, y esto liberó uno de los seis threads de hardware para propósito visual, permitiendo al mismo tiempo doblar la cantidad de partículas. Ahora tenemos un buffer de profundidad basado en oclusión piramidal que descarta los objetos muy rápido, y ofrece una mejora de rendimiento en escenas complejas. Y hemos implementado LOD (nivel de detalle) en la geometría de objetos y del terreno para rebajar la carga poligonal según la distancia de la cámara.

El sistema de mapeado de sombras también ha mejorado. El nuevo sistema calcula límites muy precisos para los mapas de cascada de sombras basándose en el análisis del buffer de profundidad (algo inspirado por el algoritmo SDSM de Lauritzen, Salvi y Lefohn), y eso permite alcanzar el nivel requerido de calidad de los mapas de sombras para los terrenos grandes sin demasiado coste extra.

Digital Foundry: Hay más variedad en los escenarios, carreras más largas y algo de pop-in de texturas al resetear los checkpoints. ¿Hay streaming de texturas y geometría? ¿Cómo lo habéis implementado manteniendo los 60Hz?

Sebastian Aaltonen: Ahora hacemos streaming de todo: mallas (triángulos y vértices), mapa de altura del terreno, mapa de vegetación y texturas. Para hacer un streaming eficiente de las mallas tuvimos que comprimir el formato de vértices tanto como fuese posible. Para modelos texturizados se usó un pixel shader con un cálculo de tangente basado en derivadas. Permite ahorrar un montón de ancho de banda y memoria, pero hacía también que los vertex shaders fuesen mucho más rápidos. Para otras mallas experimentamos con varios métodos, pero al final usamos un formato de vértices compacto de 16 bytes. Estas modificaciones también hacían el renderizado un poco más rápido debido al menor uso de memoria de la GPU, así que la era una situación perfecta.

"El texturizado virtual nos permite usar texturas mucho más grandes en los objetos, y libera a los artistas de muchas ataduras a la hora de diseñar el mundo del juego."

Digital Foundry: El cambio a escenarios exteriores implica más iluminación y renderizado atmosférico. ¿Cómo lo habéis enfocado en Trials Evolution?

Sebastian Aaltonen: Ahora tenemos una pipeline de iluminación con corrección de gamma, así que el renderizado se ve mucho más natural que antes. También hemos añadido un sistema de graduación de color controlado por los artistas que permite añadir filtros de Photoshop y combinarlos en una gran tabla de textura 3D que se aplica al final de la pipeline. Esto también incluye los datos de reparación gamma PWL de Xbox (para que la imagen se acerque lo más posible a sRGB real).

El humo y el polvo son básicamente partículas con alpha blending y un poco de efecto borroso de fondo (una nueva característica). Nuestro nuevo sistema optimizado permite usar más partículas, así que hemos usado tantas como sea posible. También añadimos una niebla exponencial físicamente veraz y un filtro 'god ray' por post-proceso que añade un poco de efecto volumétrico a los efectos de iluminación y niebla.

Digital Foundry: También usáis alpha en Evolution de forma generosa, en efectos atmosféricos, explosiones y fuego. En muchos juegos vemos que esto afecta seriamente al rendimiento, pero aquí el único compromiso son buffers de menor resolución. ¿Cuál es vuestro secreto?

Sebastian Aaltonen: Hemos mejorado aún más nuestro viejo sistema de renderizado de partículas. Sigue usando usando front-to-back premultiplied destination alpha blending con stencil counting para rechazar capas extra de partículas (que no se verían debido al fuerte overdraw). El truco del stencil-counting funciona muy bien para mejorar el fillrate, y la ecuación de alpha blending premultiplicado permite renderizar todas las partículas (tanto aditivas como mezcladas por porcentaje) en una única llamada. Hemos optimizado nuestro radix sorter (que se usa para ordenar las partículas y objetos). Está parcialmente vectorizado y se ha optimizado muy bien para la cache.

"Se aplicaron miles y miles de optimizaciones (manuales) de cache y CPU, y también vectorizamos con VMX128 todo el código que se podía vectorizar."

Trials Evolution cambia los claustrofóbicos escenarios interiores por grandes exterior con dos kilómetros de distancia de dibujado, lo cual obligó a realizar enormes cambios en el motor.

Digital Foundry: Habéis hablado en el pasado de cómo se han adaptado elementos de la arquitectura de 360 - como el MSAA por hardware - para trabajos totalmente diferentes. ¿Esa filosofía se ha aplicado a Trials Evolution? ¿Hay algún truco interesante que nos podáis explicar?

Sebastian Aaltonen: Todo el motor se optimizó durante un periodo de un año. La PPC CPU de Xbox es antigua en diseño, así que es vital optimizar muy bien el código si quieres sacarle rendimiento. Se aplicaron miles y miles de optimizaciones (manuales) de cache y CPU, y también vectorizamos con VMX128 todo el código que se podía vectorizar. Así que ahora el código está especialmente optimizado para la arquitectura PPC del procesador de la consola.

Hemos usado el memexport de la GPU un poco más, puesto que siempre me ha gustado GPGPU. En Trials Evolution generamos el follaje del terreno, procesamos las partículas y comprimimos las texturas con la GPU. Nuestros shaders de iluminación y anti-aliasing usan microcódigo específico de Xbox con branching "warp wide". Esta técnica reduce el coste del branching dinámico incoherente (pero depende del tamaño de warp de la GPU y por lo tanto no está disponible en la mayoría de plataformas PC GPGPU excepto CUDA).

Digital Foundry: Trials HD tenía un ligero letterbox para ajustar el framebuffer a la eDRAM de 360. En 360 vuelve la pantalla completa. ¿Qué ha cambiado esta vez?

Sebastian Aaltonen: Hicimos algo de investigación y llegamos a la conclusión de que no se han llegado a vender nunca televisores 1280x720p no nativos. 1366x768 era/es el estándar HD-ready "720p" para TV, y los equipos 1080p son mucho más habituales en los últimos dos años y medio, desde el lanzamiento de Trials HD. No vimos ninguna razón por la cual renderizar nativamente a 1280x720, ya que la mayoría de teles reescalarían la imagen, y nadie la vería con un pixel ratio perfecto 1:1. Así que apostamos por un ligero sub-HD (pero con 16:9 correcto) y dejamos que el reescalador de gran calidad del hardware de Xbox 360 hiciera el escalado a la resolución nativa del televisor.

"Hemos usado una versión modificada de FXAA. Su origen es FXAA 2, pero nuestra versión provoca un emborronado significativamente menor en las texturas, y nuestra versión corre a 0,8ms, menos de un cinco por ciento del frame de 16,66ms."

Digital Foundry: Habéis añadido anti-aliasing por post-proceso a Trials Evolution. ¿Cuanta carga añade eso a la GPU? ¿Usais FXAA y, si es así, habéis hecho algún cambio en el código?

Sebastian Aaltonen: Hemos usado una versión modificada de FXAA. Su origen es FXAA 2, pero nuestra versión provoca un emborronado significativamente menor en las texturas. Hemos usado un truco específico para Xbox que aporta un rendimiento extra del shader (limitando el efecto a zonas con bordes de alto contraste). Nuestra versión corre a 0,8 milisegundos, menos de un cinco por ciento del frame de 16,66 milisegundos.

Digital Foundry: En el pasado hablasteis de 3D estereoscópico y cómo se podría aplicar a Trials, pero no está en Evolution. ¿Llegó a pasar de la fase de prototipo? ¿Es quizás porque no hay suficientes 3DTVs como para justificar el tiempo de desarrollo adicional?

Sebastian Aaltonen: Hice pruebas con 3D estereoscópico al principio de la producción, pero al final no tuvimos tiempo para trabajar en características tecnológicas que sólo beneficiaban a una parte muy pequeña de los usuarios. Conseguir que el mundo del juego funcione a 60 frames por segundos y optimizar las nuevas técnicas de streaming consumió todo el tiempo de nuestros programadores de tecnología.

Digital Foundry: Trials HD supuso una mejora enorme en vuestra tecnología de físicas. ¿Qué cambios y mejoras hay en Evolution? ¿Os preocupaba que si cambiaba demasiado alejaríais a vuestros fans más hardcore?

Sebastian Aaltonen: En esta ocasión los cambios en las físicas no fueron tan radicales. Hemos actualizado a una versión más nueva de Bullet Physics. Desgraciadamente eso implicaba volver a escribir las optimizaciones para Xbox. Pero esta vez conocíamos mucho más los detallitos del hardware y los resultados al final fueron mejores.

Las modificaciones en las físicas eran necesarias, porque la moto se mueve más rápido en los exteriores y los saltos son más grandes. La suspensión debía modificarse para que los impactos más grandes no provocasen que la moto se quedase enganchada en el suelo. En Trials Evolution también damos a los usuarios más opciones para controlas las propiedades físicas de los objetos. Todo, desde la masa a la fricción, puede cambiarse en el editor.

"Las modificaciones en las físicas eran necesarias, porque la moto se mueve más rápido en los exteriores y los saltos son más grandes. La suspensión debía modificarse para que los impactos más grandes no provocasen que la moto se quedase enganchada en el suelo."

Digital Foundry: Hablemos del multijugador. Cuatro jugadores, cuatro motos, cuatro simulaciones de físicas. ¿Qué retos ha supuesto esto? ¿El multijugador por Xbox Live supone un problema adicional?

Sebastian Aaltonen: Trials Evolution es nuestro primer juego multijugador para Xbox Live, así que naturalmente había un proceso de aprendizaje. Por suerte nuestros modos de juego toleran bien la latencia, ya que las motos no pueden chocar entre ellas. En Supercross cada moto tiene su propio carril, y en Trials ves a tus oponentes como fantasmas en tiempo real. Esto nos permite tener un control perfecto del multijugador. Si la red es lenta, sólo las motos de los oponentes muestran lag. Tu moto siempre se mueve perfectamente.

Cada consola sólo simula su propio mundo de físicas. Enviamos una representación visual optimizada a través de la red. Lo que sí hacemos es usar el motor de físicas para hacer la extrapolación y predecir mejor dónde estarán las motos de los oponentes, ya que los datos recibidos por la conexión de red siempre están un poco desfasados.

Digital Foundry: El nuevo editor de circuitos y las opciones para compartir darán a este juego una gran longevidad. ¿Veis LittleBigPlanet 2 como el modelo a seguir en este aspecto? ¿Qué visión general tenéis para el contenido generado por los usuarios?

Sebastian Aaltonen: Track Central es muy importante para nosotros. Aporta un estilo YouTube al tema de compartir contenido, dando a los usuarios opciones para puntuar y buscar. El sistema de scripting visual permite que los usuarios creen sus propias reglas. Ya hemos visto shooters en primera persona, juegos de carreras en 3D, shooters con vista cenital y homenajes a juegos como Pac-Man, Angry Birds o Super Mario. ¡Y en el momento de escribir esto hace sólo dos días que está a la venta! Es básicamente una plataforma de creación de juegos 3D para Xbox 360.

Digital Foundry: Si miramos el periodo de desarrollo de Trials Evolution lo lógico sería que el próximo Trials llegue en una futura plataforma. Con el consiguiente salto generacional en potencia gráfica y de proceso, ¿tenéis pensado a dónde queréis llevar Trials en el futuro?

Sebastian Aaltonen: No hemos pensado aún en el próximo Trials. Estamos todavía muy emocionados con el lanzamiento que acaba de producirse, y estamos ocupados configurando los servidores y haciendo el mantenimiento de los foros. Cuando se disipe el humo entonces ya nos centraremos en futuros proyectos.

Por supuesto, seguimos con atención las tendencias sobre la tecnología del futuro. Compramos tarjetas gráficas DirectX11 para nuestros ordenadores tan pronto como estuvieron disponibles, para poder probar nuevas características como DirectCompute o el teselado. Las GPUs actuales han evolucionado en monstruos de computación paralela que se pueden usar para mucho más que el simple renderizado gráfico. Será interesante ver cómo los futuros juegos se beneficiarán de avances como ese...

Comentarios (2)

Ya no se pueden publicar más comentarios. ¡Gracias por tu aportación!