FacebookTwitterGoogle+Share

Creando el port de Maldita Castilla EX para Nintendo 3DS

FacebookTwitterGoogle+Share

Cuando entró el proyecto de Cursed Castilla (Maldita Castilla EX) en Abylight, una de las primeras plataformas en las que se pensó para publicarlo fue sin ninguna duda la portátil de Nintendo.

Nos parecía evidente que un juego como éste, creado con tanto mimo, sería perfecto para jugar en la Nintendo 3DS. Ahora bien, conseguirlo no iba a resultar tan sencillo.

Cursed Castilla fue desarrollado con GameMaker, una herramienta ideal para crear juegos en 2D y que tiene soporte para móvil, PC, Xbox One y PS4. Sin embargo, no existe tal cosa para Nintendo 3DS y, llegados a este punto de vida de la consola, no creemos que vaya a haberlo.

Así pues, nos liamos la manta a la cabeza y nos pusimos manos a la obra entendiendo que para conseguir tal gesta solo teníamos dos posibles caminos.

¿Deberíamos hacer un port o un remake?

El juego está desarrollado en GML, el lenguaje de programación propio de GameMaker, y como no disponemos del código fuente del motor, contemplamos la posibilidad de hacer un remake: aprovechando los gráficos, sonidos y quizás los mapas extraídos del proyecto, volver a programar por completo el juego de forma nativa para la portátil de Nintendo.

Aunque parece lo más sencillo en un primer momento, un estudio detallado del código del juego reveló que, tras años de trabajo puliendo una y otra vez la jugabilidad, todo píxel de Cursed Castilla está medido con precisión milimétrica.

Así, tratar de reproducir fielmente desde cero el nivel de pulido conseguido en el juego original era increíblemente complejo, habríamos conseguido una versión parecida a Cursed Castilla, pero no el mismo juego exactamente.

¿Cómo desarrollar un motor compatible con GameMaker?

La segunda opción ataca el problema de raíz: desarrollar un motor compatible con GameMaker para Nintendo 3DS y usar el código original de Cursed Castilla.

La primera acción fue determinar de qué manera extraer el código GML y el resto de información de GameMaker para hacer un motor compatible.

Existen tres opciones: interpretar directamente el bytecode (código intermedio más abstracto que el código máquina y que habitualmente es un archivo binario) de GameMaker, compilar nosotros mismos el lenguaje GML o utilizar el código C++ generado por GameMaker en la exportación ‘nativa’ del compilador de YoYo.

La opción de bytecode quedó descartada en segundos con un analisis rápido. Aunque es fantástico para desarrollo sobre PC, es imposible que una Nintendo 3DS pueda interpretarlo a una velocidad razonable.

La siguiente opción, crear nuestro propio compilador de GML también quedó descartada. Si teníamos que emular por ingeniería inversa la funcionalidad de GameMaker y programar a la vez un compilador propio podríamos decir que Cursed Castilla para 3DS aún estaría en desarrollo.

De este modo sólo nos quedaba una aproximación, emplear el código C++ generado por GameMaker cuando se exporta en ‘nativo’. En aquel momento no sabíamos exactamente qué rendimiento esperar del porting de ese código C++, pero era un buen punto de partida.

De esta manera, usamos el código como base para linkarlo con nuestro propio API compatible.  El resto: gráficos, sonidos, path y otros elementos fue fácil obtenerlos de los ficheros de datos de GameMaker.

Organizar el trabajo

Esta versión de Cursed Castilla requería por un lado el desarrollo de un motor compatible con GameMaker y, por otro, ajustar en el juego todos los “detalles” necesarios, que no son pocos: la pantalla de abajo, reorganizar los mapas para conseguir el efecto 3D esteroscópido, perfiles de jugador…

Afortunadamente, en Abylight Studios llevamos años invirtiendo y desarrollando un motor propio, VEGA, que es multi-plataforma y totalmente modular. La gran ventaja de tener un motor propio es que puedes hacer cualquier cosa con él, adaptarlo a las necesidades de cada juego concreto.

Cómo desarrollar para Nintendo 3DS con GameMaker sin tener ningún tipo de soporte para hacerlo

Aunque VEGA es un motor 3D, los módulos 3D pueden quitarse sin problemas. Así que los quitamos y en su lugar, desarrollamos un módulo nuevo que es nuestra propia implementación del API de GameMaker.

VEGA también dispone de una capa de emulación de hardware que nos permite tener el look&feel de otra máquina, aun siendo el código nativo. De esta manera, empezamos a realizar el port en Linux, pero con una versión virtualmente idéntica a una Nintendo 3DS, antes de compilar en la portátil de Nintendo.

Gracias a esto, al no tener la restricción de velocidad y límite de memoria, pudimos realizar la mayor parte de depuración de bugs y pulido en una plataforma PC.

Un detalle importante, desarrollar las extensiones necesarias en VEGA para que sea compatible con GameMaker y que pueda soportar Cursed Castilla, iba a llevarnos un tiempo. Durante este tiempo de desarrollo del motor no se podían implementar las adaptaciones que el juego necesitaba para 3DS. Imperativamente necesitábamos paralelizar el trabajo si no queríamos un port eterno.

Creando la verdadera experiencia arcade en tu bolsillo: Implementando los nuevos añadidos

Dado que nuestro objetivo es la Nintendo 3DS, debíamos crear un port como Dios (y Castilla) manda exprimiendo al máximo las capacidades 3D de esta consola.

Repasamos en detalle todos los elementos del juego para que la sensación de profundidad sea impecable. Componentes principales del juego, como los enemigos, los disparos, las plataformas o el propio Don Ramiro están en primer plano mientras que los secundarios pasan a estar en uno más alejado. Todo esto consigue una mayor inmersión en la experiencia, permitiendo al jugador que se concentre en los eventos peligrosos.

Cuando un juego ha sido creado para una sola pantalla y todos sus elementos están tan bien medidos, re-colocar algunos elementos secundarios para el juego, como contadores, marcadores o mapas, en la pantalla inferior parece una solución fácil y desganada que no se merecía Cursed Castilla, pero entonces ¿qué hacer con la segunda pantalla?

Locomalito concibió el estilo de Maldita Castilla como un homenaje a las recreativas de finales de los 80 y principios de los 90, con todo lujo de detalle. Incluso la música está hecha con los chips de sonido que solían encontrarse en las máquinas de esa época, así como la paleta y el número de colores. Para nosotros era sumamente importante mantener ese espíritu.

Cursed Castilla nintendo 3DS example view, with the 2 screens

Entonces vino la idea, ¿por qué no completar el homenaje del todo y hacer una máquina recreativa de cuerpo entero? Y así, teniendo como referencia la filosofía que aplicamos en proyectos anteriores como los de la saga Music On para Nintendo DS, transformamos la consola en lo más parecido a un arcade.

Los mandos de la recreativa son totalmente funcionales: reaccionan al input en la pantalla táctil y de los botones de la consola, se puede abrir la puerta de servicio para sacar la placa de la recreativa y trastear con su configuración: cambiar el tamaño de la pantalla, añadir el contador de speedrun, modificar la configuración de los botones.

Options menu in Cursed Castilla, similar to a microchip

Un detalle de época, las monedas en el panel de mandos pueden introducirse en la ranura produciéndose un efecto sorpresa.

Todo ha sido creado con el máximo nivel de detalle; hasta los efectos sonoros han sido grabados de una máquina recreativa real.

Final: Una bendición, no una experiencia maldita

En definitiva, desarrollar la versión de Cursed Castilla para Nintendo 3DS ha sido un largo camino con sus dificultades y su esfuerzo.

No obstante, ver la satisfacción con la que los usuarios están disfrutando este juego, sus detalles y gemas añadidas, sin duda nos hace estar muy orgullosos de haberlo conseguido y transmite una sensación muy gratificante para todo el equipo.

La experiencia adquirida combinada con nuestra veteranía en plataformas portátiles de Nintendo permite que podamos ser capaces de convertir juegos diseñados originalmente para plataformas mucho más potentes, como por ejemplo PC, en algo tan reducido como una Nintendo 3DS. Podríamos decir que somos capaces de meter un océano en una pecera.