CPC Retrodev 2018: The Adventures of Timothy Gunn
669 hits

eXTReMe Tracker


Portada del juego, hecha por un servidor.
-- The game's cover art, made by yours truly.

"Las aventuras de Timothy Gunn" es el título que presenté al concurso de retroinformática CPC Retrodev 2018. En años anteriores había presentado otros juegos: "Frogalot" (2015, segunda plaza, áccesit al mérito técnico), "Hire Hare" (2016, segunda plaza, premio Jon Ritman al mérito técnico) y "Basket Cases" (2017, tercera plaza, premio Pablo Ariza a la inteligencia artificial). Así que a finales de verano de 2018 decidí probar suerte de nuevo y ponerme manos a la obra.
-- "The Adventures of Timothy Gunn" is the title I sent to the retrocomputing contest CPC Retrodev 2018. I had already sent other games to previous editions: "Frogalot" (2015, second place, special prize to the technical achievement), "Hire Hare" (2016, second place, Jon Ritman prize to the technical achievement) and "Basket Cases" (2017, third place, Pablo Ariza prize to the artificial intelligence). So in late 2018 I chose to try my luck again and get to work once more.






"Chicago's 30" y los demás juegos de Topo Soft de 1988: "Emilio Butragueño Fútbol", "Mad Mix Game", "Rock 'n Roller", "Silent Shadow", "Titanic", "Wells 'n Fargo", "Black Beard", "Coliseum", "Tuareg" y "Score 3020"
-- "Chicago's 30" and Topo Soft's other games from 1988: "Emilio Butragueño Football", "Mad Mix Game", "Rock 'n Roller", "Silent Shadow", "Titanic", "Wells 'n Fargo", "Black Beard", "Colosseum", "Tuareg" and "Score 3020"

Las bases del concurso presentaban como objeto de homenaje un juego de Topo Soft, "Chicago's 30", publicado en 1988. Se me hizo extraña la elección, pues aunque era comprensible cambiar de tercio y dejar de usar juegos de Dinamic como referencias ("Camelot Warriors" en la edición de 2016, "Phantis" en la de 2017) este título no es precisamente de los más notables de Topo; más bien al contrario. En aquel mismo año Topo había publicado otros diez juegos: algunos especialmente notables, "Emilio Butragueño Fútbol" y "Mad Mix Game"; otros igualmente bien hechos aunque menos famosos, "Rock 'n Roller", "Silent Shadow", "Titanic" y "Wells 'n Fargo"; algunos más débiles, "Black Beard", "Coliseum" y "Tuareg"... y juegos abiertamente malos, "Score 3020" y el propio "Chicago's 30".
-- The contest rules showcased as a object of homage a game by Topo Soft, "Chicago's 30", released in 1988. The choice seemed strange to me, because even if it was understandable to change fields and stop using games by Dinamic as references ("Camelot Warriors" in the 2016 edition, "Phantis" in 2017) this title wasn't precisely among Topo's most noteworthy; rather the opposite. Back in that same year Topo had published other ten games: some especially noteworthy, "Emilio Butragueño Football" and "Mad Mix Game"; others equally well made although less famous, "Rock 'n Roller", "Silent Shadow", "Titanic" and "Wells 'n Fargo"; some weak ones, "Black Beard", "Coliseum" and "Tuareg"... and openly bad games, "Score 3020" and "Chicago's 30" itself.





Portadas e instantáneas para Spectrum de "Chicago's 30" (por Alfonso Azpiri) y "Cobra", más dos instantáneas para CPC de "Mortadelo y Filemón II" y "Gremlins 2".
-- Cover art and snapshots for Spectrum of "Chicago's 30" (by Alfonso Azpiri) and "Cobra", plus two snapshots for CPC from "Mortadelo y Filemón II" and "Gremlins 2".

"Chicago's 30" (cuyo título aparece por lo demás representado ambiguamente como "Chicago 30's", "Chicago '30s", etc. según dónde se mire, empezando por la ilustración de Azpiri) no solamente era un juego lento, tosco y casi mudo: encima estaba imitando con incompetencia y descaro el memorable "Cobra" (1986 Ocean) cuya versión para Spectrum fue realizada por el gran Jonathan "Joffa" Smith y era un ejemplo excelente de scroll suave, abundancia de sprites en pantalla, ritmo frenético y acción sin complejos. Es interesante observar que el personal de Topo iba a repetir la imitación dos veces más: la segunda mitad de "Mortadelo y Filemón II" (1989 Animagic, fundada por exmiembros de Topo) y "Gremlins 2" (1990 Topo, con código heredado del anterior); en todos estos casos se intenta imitar tanto el concepto como la técnica de "Cobra" (incluso copiando detalles como que el protagonista muere en una corona de explosiones) como el contenido, pero sin éxito: "Mortadelo y Filemón II" y "Gremlins 2" eran tan lentos y mudos como "Chicago's 30", aunque al menos eran menos toscos y algo más entretenidos.
-- "Chicago's 30" (whose title was otherwise shown ambiguously as "Chicago 30's", "Chicago '30s", etc. depending on the place, beginning with Azpiri's picture) wasn't just a slow, crude and almost mute game: even worse, it was incompetently and shamelessly aping the memorable "Cobra" (1986 Ocean) whose Spectrum version was developed by the great Jonathan "Joffa" Smith and was an excellent example of smooth scroll, many sprites on screen, frantic rhythm and unabashed action. It's interesting to notice that the crew at Topo was to ape it twice more: the second half of "Mortadelo y Filemón II" (1989 Animagic, founded by former members of Topo) and "Gremlins 2" (1990 Topo, sharing codebase with the former); in all these cases they tried aping both the concept and the technique of "Cobra" (going as far as copying details such as the main character dying in a crown of explosions) and the content, but succeslessly: "Mortadelo y Filemón II" and "Gremlins 2" were as slow and mute as "Chicago's 30", although at least they were less crude and a bit more entertaining.



Instantáneas de "Cobra" para Spectrum y "Power Drift" para Commodore 64.
-- Snapshots from "Cobra" for Spectrum and "Power Drift" for Commodore 64.

En esta tesitura se me presentaba la posibilidad de hacer un juego de acción de tema callejero, y el tiempo disponible me animaba a contemplar el proyecto con ambición. Así fue como concebí un posible juego dividido en dos partes que alternarían sucesivamente: un simulador automovilístico tridimensional en tercera persona semejante en diseño al "Power Drift" para C64 (aprovechando además que "Chicago's 30" incluía algunas escenas a bordo de un coche), y un juego de acción pura y dura con plataformas y scroll horizontal directamente semejante a "Cobra" para Spectrum, e indirectamente a "Chicago's 30".
-- In this context there was the possibility to make an action game set in a street theme, and the available time encouraged me to feel ambitious towards the project. That's how I conceived a possible game divided in two parts that would play alternatively: a car driving simulator in three dimensions and third person similar in design to "Power Drift" for C64 (also relying on "Chicago's 30" featuring several scenes set while driving a car), and an pure action game with platforms and horizontal scroll directly related to "Cobra" for Spectrum, and indirectly to "Chicago's 30".


Los motores gráficos en acción: a la izquierda el motor de azulejos 8x8 (con algunos gráficos provisionales), a la derecha el motor de 16x16 (todavía sin gráficos).
-- The graphic engines in action: on the left, the 8x8 tile engine (with several temporary graphics), on the right the 16x16 engine (still without graphics)

Fue así como cometí el gran error de empezar a escribir los motores gráficos antes de todo lo demás. Lo bueno: conseguí crear un motor de "tiles" cuadrados 8x8 basado en cachés de azulejos sucios (para las escenas de coches), así como otro motor de "tiles" cuadrados 16x16 basado en mapas de "supertiles" de azulejos 16x8 emparejados y además capaz de usar offsets horizontales parciales (para las de plataformas); ambos motores se beneficiaban de la aceleración de doble búfer por hardware. ¿Por qué fue un error? Porque tardé bastante más tiempo del debido en conseguir una eficiencia adecuada para mis objetivos, y para cuando lo cumplí no solamente había pasado mucho tiempo (quedaban menos de cuatro semanas para entregar el juego) sino que además el tamaño de las rutinas era excesivo y la memoria que sobraba era a todas luces insuficiente para meter gráficos y mapas con un mínimo de variedad.
-- That's how I made the great mistake of writing the graphic engines before everything else. The upside: I was able to create a square 8x8 tile enine based on cached dirty tile (for the driving scenes) as well as another engine based on square 16x16 tiles based on supertile maps of 16x8 coupled tiles, and also able to use partial horizontal offsets (for the platform ones); both engines benefitted from the hardware double buffer acceleration. Why was it a mistake? Because I took far more time than intended in achieving a sufficient performance for my goals, and by the time I achieved it not only too much time had gone by (there were fewer than four weeks left to deliver the game) but the size of the routines as also excessive and the memory that was left was simply insufficient to add graphics and maps with a minimum of variety.


El motor gráfico 16x16, con algunos azulejos todavía primerizos, además de con errores. Obsérvese que la fuente ya estaba diseñada y que el menú ya estaba hecho.
-- The 16x16 graphic engine, with several still early tiles, as well as with errors. Notice that the text font was already designed and the menu was already there.

Tras varios días de frustración hube de tomar una decisión final: descartar una de las mitades del juego. La víctima fue la mitad automovilística, pues me pareció que era mucho menos capaz de "sostener" un juego entero por sí sola que la plataformera. La experiencia previa sugiere que los juegos de deportes en general y los automovilísticos en particular tienden a ser limitados en su concepción y tediosos de jugar. Al fin y al cabo, ¿qué puedes hacer con un coche ficticio sino avanzar y avanzar? Por tanto abandoné el motor de tiles 8x8 y los gráficos ya hechos, y me concentré en el otro motor y en lo que debía hacer con él: un juego de scroll horizontal y plataformas de acción.
-- After several days of frustration I finally had to make a choice: discarding one half of the game. The casualty was the car driving half, because I believed that it was way less likely to "support" a whole game by itself than the platforming half. Previous experience suggests that sports games in general and car drivers in particular are often limited in their conception and tedious to play. After all, what can you do with a fictional car but moving forward and forward? Thus I abandoned the 8x8 tile engine and the graphics already made, and I focused on the other engine and on what I had to do with it: a horizontal scrolling platform action game.


"Peter Gunn" theme


"Magnetic Fields" #2


"Chicago's 30" C64 #1

El tiempo restante se consumió muy desigualmente. Por una vez no hice la música al final: improvisé una versión sencilla del tema principal de "Peter Gunn" de Henry Mancini para el menú del juego, una adaptación de la canción secundaria de la versión de C64 de "Chicago's 30" de Pablo Toledo para los "high scores", y algo que en su momento no hizo Rob Hubbard pero que no hubiese desentonado nada: una adaptación de la segunda canción de "Magnetic Fields" de Jean Michel Jarre, y más exactamente de la frenética versión electrónica a cargo de Frant Fuka que en su momento apareció en el cuarto "musicdisk" de Fuxoft.
-- The remaining time was spent very unequally. For once I didn't procrastinate the music until the end: I improvised a simple version of the main theme of "Peter Gunn" by Henry Mancini for the game menu, an adaptation of the secondary song of the C64 version of "Chicago's 30" by Pablo Toledo for the high scores, and something that back in the day Rob Hubbard didn't do but that wouldn't have been unexpected of him: an adaptation of the second song of "Magnetic Fields" by Jean Michel Jarre, and more exactly the frantic electronic version devised by Frant Fuka that back in the day was featured in the fourth musicdisk from Fuxoft.




Los primeros sprites "presentables": uno de los malos, y el protagonista con varias armas.
-- The first "watchable" sprites: a baddie, and the hero carrying several weapons

Los gráficos consumieron bastante tiempo. Algunos azulejos de los decorados ya estaban hechos; los que no se inspiraban en los fondos de "Chicago's 30" se basaban en "Dalek Attack" (1993 Alternative Software) porque este juego se ubicaba en varias ciudades del mundo y me gustó la idea de crear varias ambientaciones distintas. A la hora de la verdad, lo difícil fue hacer que todos los decorados cupiesen en 128 azulejos de 16x8, de los que los 16 primeros estaban reservados a colores macizos. Además hube de crear mi propio editor de mapas de azulejos (más exactamente de "supertiles" 16x16 compuestos de parejas de "tiles" 16x8) porque en todo Internet no había nada mínimamente adecuado para lo que intentaba hacer, ¡y eso que no era nada extraordinario! En fin, de ello salió una herramienta casera más, TILEMAPP. En cuanto a los sprites, para ahorrar memoria dividí los personajes en dos mitades, igual que hicieron "Renegade" (1987 Imagine) y "After the War" (1989 Dinamic): la mitad superior (cabeza, tronco y brazos) era constante, y la inferior (cintura y piernas) estaba animada. No obstante tuve el cuidado de que la mitad superior subiese y bajase durante el movimiento para evitar incurrir en la animación robótica perpetrada por Dinamic.
-- The graphics ate quiet a lot of time. Some background tiles were already made; those that weren't inspired from the backgrounds of "Chicago's 30" were based upon "Dalek Attack" (1993 Alternative Software) because this game was located in several cities around the world and I liked the idea of creating several distinct ambiances. Trush be said, the hard part was to make all the backgrounds fit in 128 16x8 tiles, where the first 16 were limited to solid colours. Besides, I had to create my own tile map editor (more properly 16x16 supertiles made of couples of 16x8 tiles) because there was nothing minimally adequate on the whole Internet for what I intended to do, despite it being nothing out of the ordinary! Ah well, that's how I got yet another housemade tool, TILEMAPP. About the sprites, to save memory I divided the characters in two halves, just like it was done in "Renegade" (1987 Imagine) and "After the War" (1989 Dinamic): the top half (head, body and arms) was static, and the bottom half (waist and legs) was animated. However, I was careful to ensure that the top half bobbed up and down during motion to avoid falling into the same robotic animation perpetrated by Dinamic.


Comparación entre los pósteres de "Terminator" (1984 Carolco) y "Cobra" (1986 Warner Bros) a los lados y el retrato (todavía sin terminar) de Timothy Gunn en el centro.
-- Comparison of the film posters of "Terminator" (1984 Carolco) and "Cobra" (1986 Warner Bros) on the sides and the (still unfinished) portrait of Timothy Gunn in the middle.

La ilustración de portada es una combinación de los pósteres de "Terminator" y "Cobra", ya de por sí parecidas (¿sería la segunda una imitación de la primera?). Por ser mi juego un homenaje de "Cobra" (más aún que a "Chicago's 30") estaba claro que la portada debía serlo también, pero a pesar de todo la postura de Sylvester Stallone no terminaba de gustarme, había algo que no me convencía. Entonces me acordé de Arnold Schwarzenegger en "Terminator" con una postura más rígida y vertical, cosa que me venía muy bien debido a la forma del arma que Timothy Gunn debía llevar consigo: una ametralladora Tommygun modificada con un cargador más moderno que el "tambor" original.
-- The cover art is a mixture of the posters of "Terminator" and "Cobra", already similar to each other (was the second one an imitation of the first one?). Because my game paid homage to "Cobra" (even more than to "Chicago's 30") it was obvious that the cover art had to be a homage too, but Sylvester Stallone's pose wasn't completely satisfactory to me nonetheless, there was something that didn't satisfy me. Then I remembered Arnold Schwarzenegger in "Terminator" with a more stiff and vertical pose, something that was very convenient to my purposes because of the weapon Timothy Gunn had to carry: a Tommygun submachine gun with a more modern magazine than the original "drum".




Poco a poco el juego cobra vida. El jugador se mueve y puede disparar, y los enemigos comienzan a aparecer.
-- Step by step the game comes to life. The player moves and can shoot, and the enemies start spawning.

Con los sprites dibujados y los mapas hechos ya no quedaban excusas para no hacer el juego propiamente dicho; tampoco quedaba mucho tiempo, ¡tres días! El modelo de "Cobra" requería algunos cambios: era importante que el jugador estuviese siempre armado (¡nada de cabezazos!) y que los enemigos no hiciesen daño letal al contacto, sino que drenasen la energía del protagonista con sus armas. La idea era hacer el juego un poco menos frenético y algo más estratégico: obligar al jugador a hacer algo más que correr y matar a todo quisque. En consecuencia, el arma por defecto del jugador es la pistola, cuya cadencia de fuego es baja, y solamente en determinados momentos es posible emplear una ametralladora a la vieja usanza (de ahí el nombre del juego: Tommygun submachine gun -> Tommy Gun ~~ Timmy Gun -> Timothy Gunn) que por lo demás era parte de la diversión de "Cobra": de la desesperación de defenderse a cabezazos y de la tensión de aprovechar bien los disparos de la pistola se pasaba a la alegría de liquidar a media humanidad con la ametralladora.
-- Now that the sprites were drawn and the maps were made there weren't more excuses to delay the game itself; there wasn't much time left either, three days! The "Cobra" model required several changes: it was important to ensure that the player always had a weapon (no headbutting!) and that the enemies weren't harmful by touch, but that they drained the player's energy with their weapons. The ideas was to make the game a little less frantic and a little more strategic: making the player do something else than running and killing everyone. Consequently, the player's default weapon is the pistol, whose fire rate is low, and only in certain moments it can be replaced with an old timey submachine gun (hence the game's name: Tommygun submachine gun -> Tommy Gun ~~ Timmy un -> Timothy Gunn) that was otherwise part of the fun of "Cobra": we moved from the despair of headbutting for our survival and the tension of carefully counting the pistol shots to the joy of slaughtering half mankind with the submachine gun.


youtu.be/xIUq1-_3DoY

El juego evoluciona rápidamente. Los enemigos siguen al jugador, arrojan proyectiles, abren fuego contra él... y dejan caer objetos útiles.
-- The game evolves quickly. Enemies follow the player, throw missiles, shoot at him... and drop items useful to the player.

Así llegamos a la parte más peliaguda del proyecto: la inteligencia artificial de los enemigos. Hacer daño por contacto estaba descartado: por lo tanto el énfasis de la IA era atacar de lejos al jugador. Esto significaba que los enemigos primero debían acercarse al jugador a una distancia segura, y acto seguido abrir fuego contra él: si se trataba de enemigos con armas de fuego, el ataque debía ser continuo; de lo contrario, los enemigos debían huir tras el ataque, pues tras arrojar las cajas de madera, los pedruscos, los cócteles molotov, etc. que traían encima estaban temporalmente desarmados. Solamente cuando el proyectil desaparecía (bien por acertar al jugador, bien por errar el disparo y romperse contra una plataforma) el enemigo volvía a estar listo para atacar. Por supuesto, la existencia de plataformas significaba que los enemigos debían ser capaces de entender cuándo debían saltar para elevarse y cuándo debían dejarse caer. En particular hice que los saltos pudiesen ser diagonales además de verticales para que los enemigos persiguiesen al jugador más eficientemente.
-- That's how we reach the most sensible part of the project: the enemies' artificial intelligence. Inflicting damage by contact was out of question: thus the focus of the AI was to attack the player from afar. This meant that enemies had first to approach the player until reaching a safe distance, and right next opening fire against him: if they were enemies armed with guns, the attack had to be continuous; if not, enemies had to flee after the attack, because after throwing the wooden crates, the stones, the molotov cocktails, etc. that they carried they became temporarily defenseless. Only when the missile vanished (either because it hit the player, or because it had missed the shot and crashed against a platform) the enemy was again ready to attack. Of course, the existence of platforms meant that enemies had to be able to understand when they had to jump to rise and when they had to let themselves drop. Most specially I made that jumps could be diagonal besides vertical so the enemies could chase the player more efficiently.


Dos cosas que se quedaron fuera de la versión entregada: corregir un error en los "high scores" e implementar la lógica del enemigo final, un coche que embiste al jugador.
-- Two things that were left out of the delivered version: fixing a mistake in the high scores and implementing the final boss logic, a car that ran over the player.

Y como siempre ocurre el tiempo se acabó antes de que todos los cabos sueltos quedasen atados. Se colaron varios errores en la inteligencia artificial (a veces no obraba bien y hacía que los enemigos se agolpasen junto al jugador, aunque fuese temporalmente), otro en la animación de los proyectiles (no dan vueltas correctamente: se pierde un "frame" de los cuatro que deben tener), uno más en los "high scores" (que en ocasiones salen desordenados), otro en el motor musical (que no mezcla debidamente la música con el ruido de los golpes y los disparos)... y además se quedó sin implementar el enemigo final del juego, un coche dispuesto a aniquilar al bueno de Timothy Gunn a base de atropellarlo, que necesitaría más de veinte disparos para ser destruido y (por fin) dar la última fase por resuelta. Todas estas carencias serán resueltas en la versión pública, que habrá de esperar a que salgan los resultados del concurso. ¡Que Dios reparta suerte!
-- And as it always happens time ran out before all loose ends could be tied down. Several bugs crept into the artificial intelligence (sometimes it misbehaved and made the enemies clump next to the player, albeit temporarily), into the missile animation (they don't spin correctly: a "frame" is lost out of the four they had to show), in the high scores (that sometimes are shown out of order), in the musical engine (that doesn't properly mix the music with the sound of hits and shots)... and ultimately I left unimplemented the final boss of the game, a car ready to annihiliate the good old Timothy Gunn by running over him, that would need more than twenty shots to be destroyed and (at last) complete the last stage. All these flaws will be taken care of in the public release, that will have to wait until the contest scores are out. May God bring good luck!

César N.G., Nov 5 2018, 16:59

EDIT 2018-11-09 21:45: cuarta plaza de la categoría principal, ningún áccesit. -- fourth place in the main category, no special awards.


Changelog

[ amstrad.es | cpcrulez.fr | indieretronews.com ]
Download the current version (41 hits)
Download the fourth version (32 hits)
Download the third version (29 hits)
Download the second version (93 hits)
Download the original version together with its source code (48 hits)
Send a comment
Return to index