Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies. OK | Más información

La voz del desarrollador: Imanolea con su Rocket Man

Nos llamó la atención desde que lo vimos. Nos encantó desde que lo probamos. Teníamos que tener a este desarrollador en el blog hablando de su creación para GameBoy. Hablamos de Imanol Barriuso (@imanolea) y su increíble Rocket Man. Lo que comenzó como un proyecto de carrera se ha convertido en algo increíble y mágico. En este post, es el propio desarrollador el que nos lo cuenta todo.

Antecedentes

Desde siempre me han apasionado los videojuegos, pero no fue hasta que tuve quince años cuando descubrí descubrí que desarrollarlos era como mínimo igual de divertido que jugarlos.

Fue cuando tuve mi primer contacto con la programación, primero con PASCAL y luego con Visual Basic en la asignatura de informática de mi colegio. En este último lenguaje programé un par de juegos, y aún tratándose de Visual Basic, consiguió que me decantara por ingeniería informática a la hora de escoger una carrera (dejando a un lado comunicación audiovisual). Y, con la vista puesta en ahondar más en esta apasionante disciplina que acababa de descubrir, comencé mis estudios universitarios.

No acabó el primer año del grado y ya me di cuenta de que el desarrollo de software era tratado de una manera muy genérica y poco enfocada al mundo del entretenimiento interactivo. Tomé la determinación de estudiar por mi cuenta programación de videojuegos y abrí un blog con un nombre improvisado y en principio provisional, Imanolea’s Games, donde mostraría todos los progresos de mi aprendizaje.

En este blog se encuentran detallados tanto desarrollos para sistemas actuales como clásicos, ya que, a pesar de tratarse de una época que no he vivido, me maravilló descubrir que en España hubo un tiempo en el que se enseñaba a programar en las revistas de videojuegos, en el que las producciones de juegos nacionales tenían gran presencia internacional, y en el que cada byte y ciclo de reloj resultaban cruciales cuando se trataba de programar.

A lo largo de la carrera intenté encajar dentro de trabajos de asignatura todos los videojuegos que pude, y era importante escoger bien el proyecto de fin de grado, ya que a diferencia del resto de trabajos este iba a requerir una inversión de tiempo mucho mayor. Es en este contexto donde surge Rocket Man.


Mi escritorio, aunque intento trabajar fuera de casa siempre que puedo, en una mediateca de mi ciudad

Nacimiento

Era momento de elegir un proyecto de fin de grado, y en un principio no consideré a la portátil de ocho bits de Nintendo como una de las opciones. En su lugar, estaba convencido de que realizar un juego para PC en C++ con su propio motor era lo más conveniente si quería encontrar un hueco en la industria del videojuego en el futuro. Así que me dispuse a estudiar a fondo la teoría del lenguaje, sus librerías más populares, programación gráfica… En ese momento llegue a un punto de inflexión. ¿Hasta qué punto valoraba la salida comercial de algo que principalmente hacía por afición? ¿No era acaso más conveniente priorizar la ilusión que el propio proyecto me pudiera transmitir? Es entonces cuando la idea de realizar un juego para Game Boy vino a mi cabeza. Era arriesgado académicamente hablando y no me iba a servir demasiado colocarlo en mi currículum, pero a nivel personal me entusiasmaba muchísimo.

Rápidamente (al igual que hiciera con The Subject, un proyecto anterior), dibuje un sencillo personaje de dieciséis por dieciséis píxeles, y le añadí dos cohetes en la espalda para cuadrar las dimensiones. Se me ocurrió que el personaje podría usar dichos cohetes en un juego de plataformas, y usarlos incluso como arma. Lo bauticé como Rocket Man y programé un simple prototipo con el héroe saltando por la pantalla. Al ser mi primera toma de contacto con el hardware opté por GBDK (Game Boy Development Kit), un conjunto de herramientas y librerías que permiten programar en C para la portátil.


Estado final del prototipo anterior al Rocket Man actual

A medida que el prototipo se expandía también aumentaron los problemas: el juego sufría de ralentizaciones y el compilador devolvía resultados inesperados de las operaciones más básicas. Y mi total desconocimiento de la arquitectura de la consola no ayudaba. Si quería desarrollar un juego que hiciera un buen uso de los recursos y capacidades del sistema más me valía estudiarlo bien. Y qué mejor manera de hacerlo que programando el juego en ensamblador.

Mi punto de entrada a este lenguaje fue a través del ZX Spectrum, cuyo procesador guarda similitudes con el de la Game Boy. Ya que mientras el desarrollo para la portátil no está muy documentado, existen muchos libros y cursos orientados a la programación del microordenador en cuestión. Concretamente, CODIGO MAQUINA zx spectrum para principiantes de Indescomp me enseñó mucho sobre la programación de bajo nivel y la manera en la que se relaciona directamente con el sistema que la implementa. Una vez hube leído suficiente, decidí afianzar los conocimientos que había adquirido realizando algunas rutinas que acelerasen el pintado gráfico del ya mencionado The Subject. Este aprendizaje me sirvió para derribar la barrera psicológica que supone plantearse la programación de un videojuego íntegramente en ensamblador, y ver que era viable.

El prototipo en C fue desechado, y me propuse reprogramarlo de cero. Pero esta vez con un enfoque distinto, en lugar de crear una experiencia jugable de cero observaría y estudiaría muchos videojuegos, entre ellos Mega Man o Gargoyle’s Quest, para identificar la manera en la que conseguían atrapar al jugador. Todo ello con el objetivo de crear algo que juntase en una misma experiencia mis mecánicas de acción/plataformas preferidas, pero intentando crear en última instancia algo nuevo y diferente. Por supuesto, haciendo esta vez uso exclusivo del ensamblador como lenguaje de programación.

En esta ocasión me serví de RGBDS (Rednex Game Boy Development System), un ensamblador, como principal herramienta para crear un nuevo prototipo, prototipo que serviría como piedra angular al actual Rocket Man.


Imagen del prototipo inicial del actual Rocket Man

Desarrollo

El nuevo prototipo marcaría el inicio formal de mi proyecto de fin de grado, y el inicio también de las primeras incorporaciones al equipo del juego. Ya que Fernando (Seiyouh) se ofreció a colaborar en el apartado gráfico a través del foro de FaseBonus, con unos artes conceptuales más que prometedores.


Arte conceptual que marcaría el nuevo estilo artístico del título

Esta vez con la documentación oficial de referencia (GAME BOY PROGRAMMING MANUAL) fui descubriendo poco a poco las bondades del sistema: la memoria de fondos, de sprites, DMA Transfer, las paletas, el scroll por hardware… Y aplicándolas al juego mientras aprendía sobre ellas.

El juego se presentó como mi proyecto de fin de grado, con mejores resultados de lo que esperaba. Pero teniendo en cuenta que dicha presentación fue una mera excusa para dedicar tiempo al desarrollo de un juego de estas características, el proyecto no terminó ahí. Aún quedaba mucho por hacer.

Una de las grandes carencias del juego era la música y los efectos de sonido. El compañero Nelson (NAP.VGM), actual miembro del equipo, se prestó a colaborar en dicha parte en cuanto supo del proyecto. Ocupándose del apartado sonoro de la producción.

Esto supuso un nuevo desafío para la parte de programación, ya que aún no había sido necesario trastear con el hardware de sonido de la consola, y no parecía existir una implementación sencilla de las composiciones realizadas con Deflemask que Nelson me enviaba.

La solución que se me ocurrió, y que actualmente se encuentra integrada en Rocket Man, fue realizar ingeniería inversa. Partir de la ROM de Game Boy que Deflemask genera para previsualizar las composiciones para luego desensamblarla e identificar las rutinas de reproducción con el objetivo de incorporarlas a mi programa, detectando también la dirección del audio en dicha ROM. En el futuro, aprovechando los conocimientos que he adquirido desde entonces, planeo rehacer por completo las rutinas de reproducción, permitiendo una gestión más óptima del sonido.

Y así, el juego fue tomando forma y creciendo en alcance. Y decidí marcarme un objetivo intermedio, que ayudara a marcar plazos y al mismo tiempo proporcionara a los seguidores del proyecto de algo tangible que poder ejecutar en sus Game Boy. Una demo de un nivel completo cumpliría con dicho propósito.

La demo ha sido la guía del desarrollo durante este año. Miembros de FaseBonus, compañeros de trabajo, y gente interesada en el proyecto en general, han ayudado a través de sus impresiones y críticas a perfilar la demo jugable de Rocket Man que actualmente se encuentra publicada en mi blog. Este hito sirve para demostrar la viabilidad de un proyecto como el que nos ocupa, y marca el inicio de un desarrollo más orientado a la creación de nuevo contenido en forma de niveles, elementos interactivos, enemigos, personajes, y todo tipo de elementos que ayuden a hacer realidad este videojuego de acción y plataformas.


Os animo a probar la demo de Rocket Man y dar vuestras impresiones

Una de las esperanzas que tengo con este proyecto es que acabe viendo la luz en forma de edición física (esto no quita que la ROM final se publique de manera gratuita), y por eso trabajo paralelamente junto a mi padre en la elaboración de artes promocionales de personajes y escenarios para adornar una posible caja, cartucho o manual de instrucciones. Estos artes también han terminado teniendo una representación dentro del propio juego, y servirán además para ambientar escenas de la historia.


El arte de Light, el antagonista del juego, se encuentra actualmente en proceso de creación


‘“’Coming soon’”’ no parece dar demasiadas pistas sobre la fecha de lanzamiento

Herramientas utilizadas

Notas finales

Antes de finalizar me gustaría recalcar que este artículo cubre la concepción de Rocket Man y su evolución en el ámbito de su diseño y programación, pero la ilusión y el aprendizaje también han estado presentes en la elaboración artística y musical que mis compañeros Fernando (Seiyouh) y Nelson (NAP.VGM) han llevado a cabo respectivamente. Y por supuesto en la exploración de los estilos de dibujo para los artes que he llevado junto a mi padre.

El desarrollo de Rocket Man continúa viento en popa, y espero poder mostrar más información pronto. De momento, una demo jugable de un nivel completo se encuentra disponible en mi blog, cualquier crítica es bienvenida y ayudará a mejorar Rocket Man en el futuro.

Enlaces:

Blog del autor | Imanolea’s Games
Twitter | @imanolea
Twitter | Seiyouh
Twitter | NAP.VGM

Coméntalo en: Twitter Facebook Google +