Ganimedes Portada ZX SPECTRUM

Ganimedes, mi juego para Zx Spectrum

Publicado por

Pues tras un largo tiempo y muchas vicisitudes por fin he publicado Ganimedes, mi primer juego con MPAGD para Zx Spectrum.

Enlace a Ganimedes en Itch.io

La verdad es que me lo he pasado genial desarrollando el videojuego, aunque hay que decir que algunas fases del desarrollo como el testeo no son tan divertidas. Pero bueno, empecemos por el principio.

Ganimedes, el surgimiento de la idea

Pues la verdad es que el germen de la idea sobre el juego surgió hace por lo menos 4 años o más tras descubrir por Internet que existía una cosa llamada AGD, Arcade Game Designer de Jonathan Cauldwell. Mientras más leía del tema más ganas tenía de desarrollar algo, ya que era la clásica espinita clavada de todos los que tuvimos ordenadores de 8 bits. El hecho de no haber hecho nunca un juego serio para nuestra querida máquina, en mi caso para el Zx Spectrum.

Sobre el argumento, no me costó mucho decidirme por hacer un plataformas ambientado en el espacio, ya que además me estaba leyendo en ese momento alguna novela de ciencia ficción espacial, y me venía al pelo. En Verano, al disponer de más tiempo libre suele ser mi momento de lectura empedernida, y parece que últimamente también, el momento de realizar algún proyecto retro.

Así que la cosa era crear un plataformas, con un robot en una base espacial y que evidentemente tuviera que recoger determinados objetos para cumplir su objetivo. Todavía con nada concretado pero con la idea general clara, comencé a ver como funcionaba el AGD y sus peculiaridades.

AGD, Arcade Game Designer

El MPAGD desarrollado por Jonathan Cauldwell es una herramienta que permite el desarrollo de videojuegos para varias plataformas de 8 bits, y en particular para el Zx Spectrum.

La idea original AGD estaba especialmente desarrollada para correr directamente sobre un Spectrum y realizar el desarrollo desde el mismo. Sin embargo, con la adopción de MPAGD, que es ejecutado sobre Windows, se ha añadido la posibilidad de desarrollar para otros ordenadores de la época.

AGD

Mediante una programación basada en scripts con una sintaxis similar al BASIC, nos permite programar la lógica del juego basada en eventos e interacciones con los distintos elementos gráficos del juego. Estos elementos gráficos también pueden ser gestionados y creados desde la propia herramienta. Para luego poder ser dispuestos en pantalla con el editor que incluye.

Esto nos permite realizar el desarrollo completo de un videojuego incluyendo todas las etapas desde una única herramienta. Es cierto, que existe la posibilidad de ampliar las funcionalidades mediante scripts en código ensamblador, pero no es necesario a priori. También se pueden gestionar las pantallas de carga, he incluso con algún MOD para modificar el MPAGD, podemos añadir música de una manera bastante sencilla.

MPAGD usado para desarrollar Ganimedes

No quiero que esto se convierta en un tutorial, pero desde luego si te apetece desarrollar un juego para Zx Spectrum, AGD o la versión más moderna y que corre sobre Windows MPAGD deberían de ser las herramientas para iniciar tu proyecto.

Diseños e ideas para Ganimedes

Boceto Ideas Ganimedes

Una vez con el concepto general en mente de lo que quería hacer, no hay nada como sentarse tranquilamente e ir apuntando ideas en un papel para ir perfilando como debería de ser el juego.

Esta parte, aunque pueda parecer mentira, es sumamente importante, ya que es la primera aproximación a la lógica y objetivos principales del juego, pero entrando en detalles. Una idea puede ser muy buena, pero cuando uno hace el ejercicio de como plasmarla a lo mejor deja de ser tan buena.

Boceto tipos Enemigos Ganimedes

Con esto en mente, estando de vacaciones, y una cervecita en la playa, las ideas no tardaron mucho en surgir.

Fisionomía del personaje, objetos que interactuaran con el, tipos de enemigos, etc… Intentar definir el universo del juego en papel para tener meridianamente claro hacia dónde queremos ir.

Escenarios ideas Ganimedes

Evidentemente, muchas veces a lo largo del desarrollo se abandonan ideas y se adoptan otras. Eso es inevitable, y totalmente deseable, ya que el propio juego va creciendo en entidad y te va indicando de sus carencias o mejoras durante las pruebas de jugabilidad.

Cosas pendientes Ganimedes

Ojo, que también puede haber cambios derivados de la propia programación. Hay que tener en cuenta la limitación de memoria y por ende de la cantidad de código que podemos usar en nuestro videojuego. De hecho, muchas partes del código de Ganimedes, han tenido que ser descartadas para mantener el núcleo del juego funcionando correctamente. Desde luego, siempre es mejor descartar alguna floritura o adorno y mejorar el código principal del juego.

Y no me querría olvidar de la parte de testeo, en donde aparecen muchas cosas que uno no se imagina. Es sumamente importante.

Tiempo de desarrollo de Ganimedes

Aquí desde luego hay una de las cosas graciosas de como ha sido el desarrollo del juego. Como habéis podido leer un poco más arriba, todo esto arrancó durante unas vacaciones de verano. Pero sin embargo a la vuelta de las mismas el proyecto por entonces estaba prácticamente plasmado solo en papel y alguna prueba que estaba haciendo con AGD para entender su funcionamiento. No se había avanzado nada de nada. Pero bueno, llegaron las Navidades, y con los ejemplos que había probado en AGD, ya pensaba que tenía la soltura para ir empezando la codificación.

Pasados unos meses, ya tenía algo funcional, aunque muy simple con respecto a las ideas iniciales sobre papel. Pero sucedió algo que me descorazono totalmente para seguir con el proyecto.

Viendo un vídeo por Youtube de juegos desarrollados con AGD, indicaba el comentarista con gran acierto, que casi todos los juegos que estaban saliendo con este motor eran iguales. Y la verdad, es que en aquel momento lo ví claro. El mío tal y como estaba, era otro más del montón, sin nada que aportar nuevo a priori. Pero es que además, para terminar de dar la estocada al videojuego, ví una concurso de Bytemaniacos sobre realizar juegos en BASIC. Con estas ideas rondando en mi cabeza, cerré el desarrollo de Ganimedes, y me centré en el concurso.

Con el juego presentado ya al concurso, el cual evidentemente no gané, apareció un hilo nuevo en un foro del que soy miembro de temática retro. Hacían ya casi 3 años desde que dejé en la cuneta a Ganimedes. Pero en la entrada del foro, se comentaba que uno de los compañeros estaba desarrollando un nuevo juego para Spectrum.

El caso es que viendo su juego, los avances en las distintas versiones, etc… me dió mucha pena por el proyecto de Ganimedes. Y decidí, que tenía que intentar sacarlo, mejorar mucho todas las lógicas que tenía implementadas, gráficos, rutinas, etc..

Simplemente me propuse convertir ese juego inconsistente y baladí que tenía en aquel momento, en un juego al que me hubiera gustado jugar de pequeño en mi Zx Spectrum.

Cuatro meses después de reiniciar el proyecto, por fín lo había acabado. Y eso teniendo en cuenta que no partía de un cascarón vacío.

Habilidades adquiridas durante el desarrollo

Pues en estos cuatro meses, sobre todo, a parte de seguir exprimiendo MPAGD y entendiendo su modo de funcionamiento ya a niveles no tan básicos. Sobre todo he tenido que ponerme las pilas en el tema del grafismo y también en ensamblador.

El caso es que de ensamblador ya había seguido un pequeño curso para hacer un Pong, pero la verdad, es que sigo estando muy verde. Pero bueno, con lo que he aprendido puedo entender el código de los demás, e incluso hacer alguno mio simple reaprovechado código.

La pantalla de transición de las naves, y el mapa que se muestra durante el juego, han sido mis dos aportaciones al ensamblador. Con el mapa me he quedado muy contento, pq hago un volcado de la pantalla en uno de los bancos del spectrum, luego presento la screen del mapa, y cuando pulsa la tecla, vuelvo a volcar a la pantalla la copia que había dejado almacenada en memoria. Por su puesto parando el juego, para que nadie cambie durante dicho proceso.

Por supuesto también ha sido necesario integrar rutinas de otras personas, como el parpadeo de las sirenas o ampliar el MPAGD Sound MOD de Ramón, para meter 4 pantallas en memoria además de la de carga. Y evidentemente poner canciones que era uno de los objetivos principales del MOD.

Sprites Ganimedes

Sobre el tema de los Sprites, algo siempre ha tonteado uno, pero siempre me había movido en sprites más grandes y con más colores. Pero la dificultad de plasmar algo que se reconozca en una celda de 8×8 o a lo sumo de 16×16 y contando solo con dos colores y el Colorclash es realmente todo un reto. Y eso contando con que soy consciente que no son los mejores gráficos, pero teníais que ver las primeras versiones, jajaja. Entonces entenderíais hasta donde he avanzado.

La música era un tema que tenía también pendiente, pero menos mal que vino en mi rescate un compañero de trabajo que es aficionado a componer música en sus ratos libres y aceptó el reto de crear algo para un ordenador de 8 bits. No lo había hecho antes, pero se hizo con la herramienta de edición Vortex Tracker rápidamente el tío. Sino fuera por el, todavía seguro que estaba en el proceso de composición de la música.

Y bueno ya por último y para dejar bien acabado el trabajo, es bueno prestarle atención a los detalles. Unas instrucciones claras y pulidas, una buena portada, etc… No hay que dejar de apretar en esta última fase.

Futuro, después de Ganimedes

Pues con el juego ya lanzado, mi idea es darle un poco mas de cariño al Blog, que lo he tenido un poco aparcado por culpa suya. Lo mas seguro es que me apunte este año a la edición 2023 del concurso de Basic de Bytemaniacos. Y casi seguro que en la categoría de Boriel compilado.

Ya tengo varias ideas en el cuadernillo apuntadas para siguientes proyectos, pero ahora toca dormir el sueño de los justos hasta el próximo proyecto.

Si alguien ha llegado hasta aquí, cosa que me extraña, deja tus comentarios sobre que te ha parecido el juego o lo que te parezca.

Y si quieres ver algo más de programación de videojuegos y te atreves con el Next, aquí tienes algunos tutoriales que te pueden servir:

https://lacavernainformatica.com/nextbasic-zx-spectrum-next-sprites-hardware-tutorial-1/

¡Venga, nos vemos en la próxima entrada!

3 comentarios

  1. Excelente trabajo GENIO.Dificultad “justa”,las que me gustan a mi.Te pido por favor subas la version DSK.
    Gracias por tu trabajo.Un saludo

    1. ¡¡Ya tienes versión DSK!!. Que conste que no la he montado yo sino un compañero del foro vade retro, pero ya la tienes disponible para descargarla desde itch.io

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

tres × uno =