CPC Retrodev 2021: Wireware
1049 hits

eXTReMe Tracker

Otoño de 2021: el certamen CPC Retrodev volvió a abrir sus puertas, lo que significaba que había llegado la hora de volver a probar suerte. El resultado fue "Wireware" y este artículo explica brevemente su desarrollo. -- Autumn 2021: the CPC Retrodev compo opened its gates again, and that meant it was time to try my luck once more. The outcome was "Wireware" and this article briefly explains its development.



"Epimetheus" y "Fire Tyre" -- "Epimetheus" and "Fire Tyre"

El título no era nuevo: ya en 2019 quise hacer un juego con dicho nombre. Pero solamente tenía el concepto de rescatar prisioneros provistos de una IA elemental: no tenía ideas claras para el tipo de juego ni para la apariencia que debía tener. Al final me rendí y en dos días hice "Epimetheus". Lo mismo pasó en 2020; el concepto de "Wireware" no despegaba y una semana antes de la fecha de entrega lo abandoné e improvisé "Fire Tyre". Pero a la tercera va la vencida, así que para 2021 quise que el juego fuese "Wireware" y ningún otro. -- The title wasn't new: back in 2019 I already wanted to make a game with such a name. But all I came up with was the concept of rescuing hostages equipped with an elementary AI: I didn't have any clear ideas for the game type or for the appearance it needed. So I finally gave up and made in two days "Epimetheus". The same story happened in 2020; the concept of "Wireware" didn't take of and one week before the deadline I dropped it and improvised "Fire Tyre". But the third time is the charm, so for 2021 I wanted the game to be "Wireware" and nothing else.



"Sol Negro", "Jetpac", "Antiriad" y "Rainbow Islands" -- "Sol Negro", "Jetpac", "Antiriad" and "Rainbow Islands"

Algunas ideas ya estaban más definidas. "Sol Negro" (1988 Opera Soft) me había animado a hacer un juego con scroll horizonal donde tanto el jugador como los prisioneros pudiesen volar. Otras inspiraciones eran "Jetpac" (1983 Ultimate / A.C.G.) y su secuela "Lunar Jetman" (1984), así como "Antiriad" (1986 Palace Software) donde también se volaba con mucha libertad, los disparos eran horizontales y el objetivo general se basaba en recoger objetos y llevarlos a sitios concretos. Al final, a pesar de las reglas del concurso, "Rainbow Islands" no me dio más ideas que las de representar los prisioneros rescatados mediante siete tarjetas con los mismos colores de los siete diamantes del arcoiris. -- Some ideas were already more defined. "Sol Negro" (1988 Opera Soft) had already made me wish to make a horizontal-scrolling game where both the player and the hostages would be able to fly. Other inspirations were "Jetpac" (1983 Ultimate / A.C.G.) and is sequel "Lunar Jetman" (1984), as well as "Antiriad" (1986 Palace Software) where you also could fly with great freedom, shots were horizontal and the general goal was based on finding items and carrying them to particular locations. In the end, despite the contest rules, "Rainbow Islands" didn't give me more ideas than displaying the rescued hostages as seven cards with the same colours of the seven rainbow diamonds.

Por desgracia seguían siendo pocas ideas y solamente empecé a trabajar en el juego propiamente dicho cuando quedaban diez días. Lo primero que escribí fue el motor gráfico: inspirado por el propio "Sol Negro" y otros juegos de Opera Soft con la misma tecnología ("Mutan Zone" y "Gonzalezzzzz") decidí que el mapa midiese 8192x128 píxeles cuadrados y que utilizaría azulejos de 32x16 píxeles cuadrados: así el mapa tendría 256 azulejos de anchura, lo que me simplificaría mucho las matemáticas, y 8 de altura, lo que me daría un mapa de 2048 bytes con hasta 256 tipos distintos de azulejos. Ahora bien, como 256 azulejos por 32x16 píxeles cuadrados son 32k de gráficos, los reduje a la mitad (128 azulejos, 16k de gráficos) y emplear el bit sobrante para indicar algo relativamente novedoso: el plano al que pertenecería el azulejo. Sí, como lo leéis: ¡dos planos de scroll! Después de todo, ¿por qué no? -- Unfortunately these ideas were still too few and I only began working on the game proper when there were just ten days left. The first part I wrote was the graphic engine: inspired by "Sol Negro" itself and other Opera Soft games with the same technology ("Mutan Zone" and "Gonzalezzzzz") I decide that the map would measure 8192x128 square pixels and that it would use tiles of 32x16 square pixels: thus the map would be 256 tiles wide, that would greatly simplify the mathematics, and 8 tiles tall, that would give me a 2048-byte map with up to 256 different types of tiles. However, as 256 tiles multiplied by 32x16 square pixels are 32k of graphics, I cut them in half (128 tiles, 16k of graphics) and use the remaining bit to tell a relatively new trait: the layer the tile belonged to. Yes, you're reading it well: two scroll planes! After all, why not?

La lógica de sprites se basaba en las mismas ideas presentes en "The Adventures of Timothy Gunn", mi juego para CPC Retrodev 2018: imitar las dimensiones de los sprites de hardware del C64 (24x21 píxeles cuadrados) para aprovechar las matemáticas altamente convenientes de tener cada sprite perfectamente alineado dentro de una página de 128 bytes y de saber siempre de antemano sus dimensiones exactas y poder hacer los cálculos necesarios para recortar óptimamente los sprites ubicados en los márgenes de la pantalla. El resultado: un motor capaz de redibujar todos los azulejos y hasta 16 sprites a la vez a un ritmo estable de 12,5 frames por segundo. Incluso pude permitirme añadir un fondo de estrellas y algunos efectos especiales para el disparo del jugador y las barreras que dividirían el mapa en sectores. -- The sprite logic was based on the same ideas that were featured in "The Adventures of Timothy Gunn", my game for CPC Retrodev 2018: mimicking the C64 hardware sprite dimensions (24x21 square pixels) to benefit from the highly convenient mathematics of having each sprite perfectly aligned within a 128-byte page and to know always in advance its precise dimensions and making the required calculations to optimally clip the sprites located on the screen boundaries. The outcome: an engine able to redraw all the tiles and up to 16 sprites at once at a stable rhythm of 12.5 frames per second. I could even afford adding a starfield background and some few special effects for the player fire and the barriers dividing the map in sectors.

Sin embargo, el 28 de octubre tocaba a su fin. Me quedaban cinco días y cuatro noches para hacer todo lo demás: dibujar todos los sprites (¡todavía no tenía ni siquiera el protagonista del juego!), pintar todos los azulejos, construir todo el mapa y escribir toda la lógica del juego. Y a la hora de la verdad seguía tan poco inspirado como cinco días antes, cuando escribí la primera línea del motor gráfico. Así fue como me puse a dibujar desesperadamente azulejos sin tener las ideas claras, sin seguir más plan que el de imitar lo que me pareciese mínimamente atractivo de algunos de los juegos utilizados como referencia y de otros parecidos, ¡incluso reciclé gráficos de mis juegos anteriores!; cuando empecé a hacer los sprites ya solamente quedaban tres días y dos noches, y aún tenía que escribir la lógica del juego. -- However, October 28 was about to end. There were five days and four nights left to do everything else: drawing all the sprites (I didn't even have yet the hero of the game!), painting all the tiles, building the whole map and writing the entire gameplay logic. And ultimately I was as little inspired as five days earlier, when I typed the first line of the graphic engine. That's how I started desperately drawing tiles without any clear ideas, without following any plans but imitating whatever I deemed minimally interesting from some of the games used as reference and other similar ones, I even recycled graphics from past games of mine!; when I began making the sprites only three days and two nights were left, and I had yet to write the gameplay.

Hice tanto los sprites como la lógica a la vez, casi al azar, y para colmo me tocó abandonar diversos gráficos y borrar reglas de juego porque no estaban dando el efecto deseado: por ejemplo, permitir que el astronauta prisionero aterrizase y caminase ralentizaba enormemente el ritmo del juego, ya de por sí lento por obligar al protagonista a guiar cuidadosamente al prisionero sin perderlo de vista. Al final todo se redujo a enemigos dibujados al azar que atacaban en oleadas más o menos definidas: formaciones horizontales o verticales, movimientos sinusoidales o lineales, etc. También tuve que descartar los enemigos de fin de fase capaces de disparar al jugador y de aguantar ellos mismos hasta veinte disparos: no había ni arte ni tiempo. -- I made both the sprites and the gameplay at the same time, almost at random, and to add insult to injury I was bound to drop graphics and to erase gameplay rules because they weren't giving me the desired result: for example, allowing the hostage astronaut to land and walk enormously slowed down the game rhythm, already slow on its own by forcing the main character to carefully guide the hostage without losing sight. In the end everything was reduced to randomly drawn enemies that attacked in roughly defined waves: horizontal or vertical formations, sinusoidal or linear motions, etc. I also had to discard the level boss enemies, able to fire at the player and to hold themselves up to twenty shots: there were no art or time left.

En efecto, llegó el último día y la primera versión del juego solamente estuvo lista menos de cuatro horas antes de la hora de entrega; y aún así tuve que hacer una segunda versión para retocar algunos detalles; además la organización del concurso me avisó de que no había terminado de mandar todos los ficheros necesarios para cumplir el reglamento... El resultado final fue que el paquete que el jurado recibió quedó terminado solamente diez minutos antes de medianoche. Naturalmente, tras la entrega empecé a encontrar errores aparecidos durante las últimas horas de desarrollo: el más importante era que los enemigos atacaban al jugador por detrás cuando éste debía encontrar al séptimo y último astronauta, lo que les daba una desventaja porque bastaba con volar en lugar de caminar para dejarlos atrás hasta recoger al astronauta. ¡Las cosas de hacer comparaciones con signo en lugar de sin signo! -- Indeed, the last day came and the first version of the game just got ready less than four hours before the deadline; and even then I had to make a second version to patch several details up; besides, the competition management warned me that I hadn't fully sent all the files required by the ruleset... The final otucome was that the package the jury received was finished just ten minutes before midnight. Naturally, after delivery I began spotting mistakes that had spawned during the last hours of development: the most important one was that enemies attacked the player from behind when he had to locate the seventh and last astronaut, putting the enemies in disadvantage because flying instead of walking was enough to leave them behind till meeting the astronaut. The things of making signed comparisons instead of unsigned ones!


"Wireware: menu"


"Wireware: gameplay"

Dejo la música para el final porque fue lo único que logré escribir en 2019 y que mantuve hasta el final, y que además era de cosecha propia en lugar de tirar de "covers" de Rob Hubbard y compañía. ¡Al menos esta vez "Gominolas" no se quejaría! Cuatro canciones (menú, transcurso, victoria y fin de juego) escritas con CHIPNSFX que contenían un leitmotiv de acordes mayores y menores poco innovador (todas las películas de marcianos de la Edad de Plata hacían las mismas tonterías con el teremín), pero el toque "espacial" encajaba en un juego de astronautas. -- The music is the final topic because it was the only part that I succesfully wrote in 2019 and that stayed till the end, and it was also my own creation instead of resorting to "covers" of Rob Hubbard and friends. At least this time "Gominolas" wouldn't complain! Four songs (menu, in-game, victory and game over) written with CHIPNSFX featuring a leitmotiv of major and minor chords that was little innovating (all the space aliens films from the Silver Age made the same trash with the theremin), but the "spacial" touch belonged in an astronaut game.


youtu.be/Nq2UXBa3tqY

El artículo llega a su fin, y la despedida se reduce a dos citas históricas: "Así fue la historia y así se la hemos contado" y "Si os ha gustado, batid palmas y aplaudid al autor." -- The article reaches its end, and the farewell is reduced to two historic quotations: "Thus was the history and thus we told it to you" and "If you enjoyed it, clap your hands in applause for the author."

César Nicolás-González, 12 de noviembre de 2021


Changelog

[ CPCRetroDev 2021 Awards | amstrad.es | cpcwiki.eu ]
Download the first public version (101 hits)
Send a comment
Return to index