Oddworld vs. PS Vita
Los desarrolladores explican su experiencia trabajando con la portátil de Sony.
En Digital Foundry nunca hemos ocultado que desde un punto de vista técnico PlayStation Vita es una consola que nos atrae bastante, pero más allá de vistazos en profundidad a WipEout 2048 y Uncharted: Golden Abyss no hemos tenido demasiadas oportunidades para hablar de ella. En una serie de artículos que iremos publicando próximamente trataremos de poner remedio a esta situación, estudiando más a fondo la portátil de Sony.
El primero de ellos es esta entrevista con Peter Memmott, programador en Just Add Water, y Stewart Gilray, CEO de Just Add Water y director de desarrollo de Oddworld Inhabitants. Ambos han trabajado en el port para Vita de Stranger's Wrath HD, publicado originalmente para PlayStation 3 el año pasado. Seguid leyendo para averiguar el proceso de desarrollo del port de Vita, las dificultades que encontraron en el camino y las lecciones que se aprenden al trasladar un juego diseñado para consolas de sobremesa a una portátil.
Una buena forma de empezar es con la propia documentación y también con el código de ejemplo que proporcionan. Esto te da una idea de lo que es capaz de hacer el hardware y de si cubre las exigencias de tu proyecto. Una de las preocupaciones que tuvimos al principio era cómo utilizar al máximo el procesador de cuatro núcleos. Para nosotros resultó que era una de la claves para aprovechar todas las posibilidades de Vita.
En general estoy de acuerdo con ellos. Creo que la única similitud con PlayStation 3 son las librerías online, pero lo demás es bastante nuevo. Eso no es necesariamente malo, porque necesitas estar lo más cerca posible al hardware y esto significa tratar con las diferencias inherentes a desarrollar en plataformas diferentes.
"Uno de los puntos fuertes es tener un procesador de cuatro núcleos... con un poco de esfuerzo puedes sacar muchísimo rendimiento de esta CPU."
Uno de los puntos fuertes es tener un procesador de cuatro núcleos con multiproceso real por hardware, en vez del limitado rendimiento del hyperthreading. Con un poco de esfuerzo puedes sacar muchísimo rendimiento de esta CPU. Supongo que también puedes considerarlo una debilidad en ciertos aspectos, porque es difícil utilizar la CPU al máximo todo el tiempo, pero en general es una gran ventaja. Obviamente en comparación con PS3 Vita no tiene SPUs, pero creo que el procesador de varios núcleos ayuda a compensar eso.
Desde luego, el alcance del juego y sus requisitos técnicos parecen hechos a medida para Vita. Y a juzgar por algunos de los análisis que hemos tenido y por la reacción de los jugadores, es también un tipo de juego que funciona bien en este tipo particular de plataforma portátil.
Sí, Stranger's Wrath funciona a 960x544. La pantalla de Vita es fantástica y sería una lástima no sacarle todo su potencial. Tras hacer el port de Stranger's Wrath puedo entender la razón, ya que al principio del proyecto te planteas bajar la resolución para obtener un frame-rate decente. Ese fue nuestro planteamiento durante la primera mitad del proceso de desarrollo. Fue tras un intenso proceso de optimización cuando pudimos hacerlo funcionar a resolución completa teniendo también un frame-rate decente.
Para correr a resolución completa todo se reduce al fill-rate y a hacer los cambios necesarios para estar seguro de que no sobrecargas la GPU en cualquier fragmento del frame. Uno de los mayores problemas que tuvimos fueron las pasadas a pantalla completa durante cada frame para los efectos. Hay un overhead extra al hacer cada pasada porque debe hacerse una nueva escena para cada uno, así que lo mejor es reducir el número de escenas o cambiar el orden para renderizarlo en el mismo buffer. Jugar con el orden de dibujado de las escenas también conllevó otras mejoras por la forma que tiene el sistema de implementar el rendering diferido de tiles. Otra ganancia vino con el efecto bloom, en el que combinamos varias pasadas de blur en una única pasada, y lo compensamos cambiando el patrón de las muestras de las texturas.
Algunas de las mejoras más obvias que pueden olvidarse fácilmente son el uso de una correcta optimización de las opciones del compilador CG, cambiar al modo de alimentación alternativo durante el juego individual para aumentar la velocidad de reloj de la GPU y reducir la resolución de las sombras, reflejos y otros buffers de efectos.
"ara correr a resolución completa [960x544] todo se reduce al fill-rate y a hacer los cambios necesarios para estar seguro de que no sobrecargas la GPU en cualquier fragmento del frame."
Bueno, para empezar queríamos usar los touchpads, así que pensamos varios usos para ellos. Eso involucraba un poco de prueba y error para ver qué funciona y qué no. Cuando lanzamos el juego creo que fuimos demasiado optimistas asignando la acción del puñetazo en el panel trasero; es algo que apuntaban varios análisis y que hemos solucionado en un futuro parche. También hemos limitado el área activa del panel trasero, y eso es una mejora importante porque evita que lo pulses accidentalmente. El parche también incluirá un esquema de control alternativo que lo elimina por completo, en caso que el jugador lo desee. También hemos usado el panel trasero para acciones específicas como escalar o descender por cuerdas, o para moverte cuando Stranger controla una barca.
Al haber tantas posibilidades diferentes a la hora de usar el touchpad, es algo que debes decidir pronto en el proyecto, o de lo contrario te acabarás pillando los dedos más tarde.
Bueno, el Cross Save usa el sistema TUS (Title User Storage) para facilitar la transferencia, y eso tiene un límite de 1mB, algo que ya sabíamos de cuando trabajamos en el contenido generado por los usuarios de Gravity Crash para PS3. Para ser claros, no hay una configuración Cross Save como tal, sino que es parte de un sistema existente. Con Stranger las partidas guardadas pueden ocupar hasta 5MB, ya que el juego almacena mucha información al poder guardar en cualquier momento.
No había librería PSGL para Vita cuando desarrollamos el juego, así que hacer el port fue un reto considerable. Nuestro enfoque fue emular todo lo que pudiésemos del sistema. Gran parte del código del juego ya tiene una década de antigüedad, así que modificar cosas a alto nivel nos daría problemas más adelante. Y la verdad es que trabajando yo solo con el código habría sido una tarea demasiado grande.
Así que básicamente emulé todo lo que pude del sistema existente y de las llamadas de rendering. Creo, visto en perspectiva, que esto fue la mejor opción posible, porque nos permitió tener el juego funcionando en Vita en un corto espacio de tiempo. Obviamente hay problemas de rendimiento con la emulación básica, pero una vez tienes el juego funcionando bien y sin errores gráficos puedes usar las herramientas de depuración para optimizar las áreas necesarias. Gracias a una larga serie de iteraciones de optimización pudimos obtener el rendimiento necesario con un impacto mínimo en el código base original, lo cual también implica menos tiempo en testeo.
"Aparte del menor tamaño de las texturas y de la simplificación de los modelos de un par de personajes, el producto final es esencialmente el mismo que en PS3."
Aparte de lo que mencionas, la otra gran diferencia es la reducción del tamaño de las texturas, aunque esto es aceptable debido a la menor resolución del dispositivo. También hemos reducido a la mitad la densidad de las decoraciones del escenario. Al principio nos preocupaba que eso afectase a la riqueza de los escenarios, pero al final casi ni se notaba el cambio mientras jugabas. Creo que esto se debe simplemente a que la pantalla es más pequeña y no necesitas llenarla con tantos objetos.
Aparte del menor tamaño de las texturas y de la simplificación de los modelos de un par de personajes, el producto final es esencialmente el mismo que en PS3.
El mayor reto ha sido sin duda conseguir que el juego funcionase a resolución nativa. Fue tan sólo a mitad de proyecto cuando vimos que podía hacerse; hasta entonces habíamos utilizado una resolución inferior para alcanzar los 30FPS. Pero tras una serie de optimizaciones y con la inestimable ayuda de Sony conseguimos alcanzar la resolución nativa y en algunas áreas incluso logramos llegar a los 50FPS, lo cual fue una sorpresa muy agradable.
Afortunadamente Sony proporciona unas herramientas de evaluación excelentes en los devkits. Sin ellas no habría forma de alcanzar la calidad que hemos conseguido con el mismo tiempo. Han sido inestimables. No vale la pena intentar adivinar qué supondría una buena optimización: en muchas ocasiones lo que pensaba que sería el caso acababa siendo incluso perjudicial. Así que al final acabas confiando en las herramientas de evaluación para conseguir las mayores ganancias.
Tras la optimización de los gráficos el juego consumía mucha CPU. Una vez más las herramientas de evaluación fueron fantásticas para analizar el código, y una de las mejores ventajas que conseguimos fue pasar todas las llamadas de rendering a un hilo separado. Nos dimos cuenta durante la evaluación que se destinaba una considerable cantidad de tiempo en las llamadas de dibujado. Parte de la razón de esto está en que no usamos objetos precalculados, así que pasar los datos puros de dibujado en cada llamada consumía mucho. Al moverlos a un hilo separado y hacer que corriesen en otro núcleo utilizábamos mejor la CPU y obteníamos una gran mejora en el frame-rate. Sin hacer eso no creo que hubiésemos podido conseguir que el juego funcionase a resolución nativa.
También tuvimos una gran ayuda por parte de Sony. Uno de sus mejores tipos vino durante un día y nos dio montones de consejos y trucos de optimización. Uno de los mejores fue utilizar un modo alternativo de energía que tiene Vita, con el que puedes aumentar la velocidad de reloj de la GPU desactivando la WiFi. Esto, desde luego, no hace sino enfatizar lo importante que es leerse los manuales.
"Una de las mayores mejoras vino de usar un modo de alimentación alternativo que permite aumentar la velocidad de reloj de la GPU desactivando la WiFi."
No estoy seguro de si es una gran lección de desarrollo, sino que creo que es más bien darnos cuenta de que se puede hacer mucho con un poco de paciencia. Estamos increíblemente orgullosos de Stranger para Vita, especialmente con el tiempo y la poca gente destinada a él, así que esa pequeña máquina es una bestia capaz de hacer mucho, mucho más.
Es tan servicio al fan como un experimento. Stranger's Wrath HD será el primer Oddworld con tablas de clasificación, así que queríamos probar cómo resultaba implementarlas en un título existente. Las añadimos a Vita al final del desarrollo del proyecto, pero se apartaron por pequeños problemas técnicos. Hemos tenido la necesidad de reducir el tamaño de la versión PS3 de 3.2GB a algo más manejable, así que al reducirlo a 1.5GB pensamos que era la oportunidad para añadir tablas de clasificación también en PS3. Nuestro objetivo es publicar el parche en marzo.
Desde un punto de vista comercial será interesante ver si la gente vuelve a jugar ciertas partes del juego para mejorar su puntuación, así como ver cuánta gente lo recupera ahora que hemos añadido las tablas de clasificaciones. Es en cierto modo una forma de animar a la comunidad y de permitir que los jugadores se reten entre ellos. Será interesante.
No, creo que es seguro decir que ya hemos terminado con Stranger's Wrath HD. Eso incluye la oportunidad de hacer una versión para Xbox 360, porque lo último que escuché de Microsoft es que no lo hiciésemos a no ser que hiciésemos también una secuela.
"Estamos increíblemente orgullosos de Stranger en Vita, especialmente por el tiempo y la poca gente que trabajó en él, así que esta pequeña máquina es una bestia capaz de hacer mucho, mucho más."
Has dado en el clavo. Cuando terminemos estas actualizaciones para Stranger's Wrath toda la compañía se centrará en Abe's Oddysee New 'n' Tasty. Ahora somos quince personas junto con el equipo original de OddWorld Inhabitants que ha regresado para esto, así que estamos muy orgullosos de ello. Creo que en el proyecto ahora hay 22 personas, hemos crecido, los presupuestos han crecido y con un poco de suerte los indies empezarán a superar la brecha que hay entre los proyectos 'indie' y 'AAA', especialmente en esta era de distribución digital.
No son los mejores tiempos, desde luego. Pero desde nuestro punto de vista las cosas han ido muy bien, siendo el juego más comprado en la región SCEE durante diciembre y enero, el tercero en la región SCEA y sigue vendiéndose muy bien en ambas. Tenemos dos juegos más en desarrollo para Vita que ya hemos anunciado, más otro que aún no hemos desvelado, así que todo pinta bien y vamos a seguir apoyando la plataforma hasta que no tenga sentido seguir haciéndolo.
Traducción por Josep Maria Sempere.