Super Retro Robot Rampage es un juego que mezcla elementos de dos géneros: de arcade y acción. El modo es para un solo jugador y el objetivo es pasar el mayor número de niveles posibles y conseguir la máxima puntuación derrotando a los enemigos.

La historia trata de un pequeño robot que acaba atrapado en una mazmorra y atrayendo la atención a peligrosos enemigos de las profundidades. Tendrá que sobrevivir a las oleadas de monstruos que irán acechándole y acabar con el mayor número posible.

Nuestro pequeño robot protagonista tendrá como arma para defenderse de las oleadas de enemigos un cañón con el que podrá disparar potentes bolas de fuego. Sin embargo, los enemigos intentarán por todos los medios impedir al robot que avance y le atacarán con todo lo que tengan. Nuestro protagonista tendrá un máximo de 6 toques antes de ser derrotado. En cada nivel saldrán enemigos de distinto tipo, los cuales deberán ser derrotados para pasar al siguiente nivel. Si acaban contigo perderás la partida y tendrás que empezar de nuevo.

En el juego hay en total cuatro enemigos:

Zombie : este enemigo es un caminante de las profundidades que perseguirá al jugador constantemente por toda la sala a una velocidad muy lenta, haya obstáculos por el camino o no.

: este enemigo es un caminante de las profundidades que perseguirá al jugador constantemente por toda la sala a una velocidad muy lenta, haya obstáculos por el camino o no. Ghost : es un fantasma que aparecerá rondando de forma tranquila por la sala y desaparecerá pasados unos segundos. Cuando el jugador se detenga, volverá a aparecer en la posición del jugador para dañarle.

: es un fantasma que aparecerá rondando de forma tranquila por la sala y desaparecerá pasados unos segundos. Cuando el jugador se detenga, volverá a aparecer en la posición del jugador para dañarle. Doppelganger : es una copia de ti, hará exactamente lo que tú hagas pero de forma inversa. Si te mueves a la derecha, él se moverá a la izquierda, si disparas, él también disparará. ¡Tendrás que andarte con cuidado!

: es una copia de ti, hará exactamente lo que tú hagas pero de forma inversa. Si te mueves a la derecha, él se moverá a la izquierda, si disparas, él también disparará. ¡Tendrás que andarte con cuidado! Vyl: es un enemigo que mantendrá en todo momento una distancia de seguridad con el jugador y le disparará cuando lo tenga en línea. Si te acercas a él intentará evitarte y alejarse lo máximo posible.

Historia del juego y desarrollo

Al principio comenzamos el desarrollo del juego utilizando el lenguaje de programación BASIC, sin embargo, tras encontrar diversas dificultades que cada vez se iban agravando, optamos por cambiar de lenguaje y usar C con la librería cpcrslib. De hecho, fueron diversas las veces en que dudamos si elegir un lenguaje u otro. Hay que añadir que uno de los factores más importantes que nos hicieron decantarnos definitivamente por C fue el hecho de que BASIC había que programarlo directamente en el emulador Amstrad CPC, y eso dificultaría mucho las cosas. Desde luego, estamos muy satisfechos de habernos decantado por C. A pesar de todo, las paredes, el movimiento del jugador y los disparos de Super Retro Robot Rampage estuvieron implementadas en BASIC.

Mientras nos decantábamos en elegir un lenguaje u otro, decidimos aprender a usar un repositorio que facilitara el desarrollo del proyecto. Desgraciadamente era un tipo de herramienta que no habíamos usado nunca antes, pero que ha terminado convirtiéndose en un salvavidas para nosotros y para nuestro juego. Nuestra elección fue GIT, aprendimos su manejo y funciones mediante la consola de “cygwin”. Más tarde empezamos a usar la aplicación SourceTree para un control gráfico y eficiente de nuestras versiones de trabajo.

Fase inicial

Finalmente llegó el momento de ponerse manos a la obra. Mientras nos habituábamos a las herramientas y librearías que íbamos a utilizar, empezamos a crear las piedras angulares de Super Retro Robot Rampage. Se creó inicialmente la base del juego a nivel estructural, dando especial importancia a las paredes y la disposición que más adelante tendrían los elementos.

Paralelamente se crearon en forma de ejecutables la propia IA, cobrando importancia el Zombie y el Phantom, que son los únicos enemigos que no disparan. El desarrollo gráfico en esta fase de gestación es muy importante y quizás el que más peso tiene de todo el proceso de desarrollo de gráficos del juego. Esto se debe a que prácticamente podíamos empezar a implementar directamente con los gráficos finales del juego, ya que al ser de 8 píxeles de ancho y alto, no suponen un gran coste de trabajo. Los primeros elementos gráficos del juego fueron el protagonista sin animar y los ocho sprites que forman las paredes. Le siguieron el Ghost, el Vyl, el Zombie y el Doppelganger.

Desarrollo y complicaciones

En un principio nos costó un poco entender cómo se utilizaba la librería “cpcrslib” para pintar los sprites por pantalla. Finalmente mediante el código de ejemplo de los juegos del concurso #CPCRetroDev Contest entendimos su manejo.

Sin duda una de las partes clave del desarrollo del juego fue la gestión de colisiones. Hasta que se llegó a un algoritmo óptimo y eficiente pasó bastante tiempo. Las primeras versiones eran altamente inestables e ineficientes, ralentizaban mucho al bucle del juego. Y éste era un factor importante dado que teníamos proyectada la implementación de obstáculos aleatorios y las colisiones iban a ser casi constantes. Pero mientras tanto no se desaprovechó el tiempo. Se desarrolló gran parte de la IA y se crearon los menús y la interfaz. El disparo del protagonista llegó poco después, hasta que finalmente se alcanzó la gestión óptima de obstáculos y los personajes empezaron a colisionar.

Cuando ya estaba testeado y funcionando al 100% el profesor nos animó a crear nuestra propia canción y efectos de sonido. Para ello utilizamos el programa WYZTracker para la canción y AY Sound FX Editor para la creación de los efectos de sonido.Ya solo quedaba retocar algunos detalles, como por ejemplo mejorar determinados sprites y aplicar algunas animaciones. Después de eso, elaboramos el manual del juego intentando darle el aspecto típico que tenían en esa época.

Tecnologías utilizadas

SDCC como compilador para el código fuente en C.

CPC-Dev-tool-chain para toda la cadena de compilación y generación de DSK y CDT.

Retro Game Asset Studio: para crear los sprites y exportarlos a formato binario de CPC.

AY Sound FX para crear los efectos de sonido.

WYZTracker para crear la música del juego y exportarla a binario para reproducirla.

WinAPE como emulador principal de Amstrad donde probar y depurar los resultados.

Conclusión

Desarrollar un juego para un ordenador de hace tantos años con capacidades tan limitadas nos ha supuesto un reto desde el principio. Sin embargo, al mismo tiempo nos ha aportado conocimientos técnicos que podremos aplicar en nuestros proyectos actuales para máquinas modernas y, en general, en cualquier proyecto que desarrollemos en un futuro.