domingo, 22 de mayo de 2022

Aventuras y desventuras de la programación de Bugs Inc.

Hola de nuevo a todos, este blog parecía completamente abandonado, y es cierto, lo ha estado bastante tiempo. Comprobando la última actualización, 19 de Marzo del 2021, ha hecho más de un año que no escribo nada. ¿Por qué? Porque no he tenido tiempo, ni ganas, para ser sincero completamente.

El texto publicado en esta entrada se escribió a raíz de la petición de Bieno para un artículo en la página de Commodore Plus. En él debía contar mi experiencia, aprendizaje, desafíos, etc, en la creación de Bugs Inc. 

Pero en su escritura me 'emocione' y escribí un texto demasiado largo. Hubo que recortarlo porque sinceramente, a muchos lectores no les importa mucho los comentarios técnicos y recovecos de mi mente enferma. Tal como me aconsejo Bieno: gustan más las cosas resumidas y al grano. En lo que estoy de acuerdo con él.

Entonces por qué publicas esto ahora, se preguntara alguien. Navegando por mi disco duro he encontrado el fichero primigenio, recordando este blog. A si que me he decidido a publicarlo, cambiando algunas cosas y añadiendo otras. Algunos lectores reconocerán pasajes del artículo de Commodore Plus, incluso capturas.




A continuación el artículo completo:

Tras terminar la versión para disco de 4M Arena, estaba agotado. Este juego con todos los vaivenes emocionales de ese año me habían pasado factura mentalmente, a si que aunque 'no estaba haciendo nada', sí le estaba dando vueltas a algunas ideas, pero ninguna me terminaba de convencer. Por este motivo, cuando decidí programar un nuevo juego, volví a mis ideas primigenias de juegos arcade, pequeños, basados en dinámicas ochenteras. Cuando menciono pequeños, me refiero a juegos manejables, asumibles, para no terminar agotado y cansado del proyecto.

En ese mismo periodo de búsqueda de nuevas ideas, me dio por revivir una de mis primeras experiencias con las maquinitas, es así como al menos yo las llamaba, me refiero a los Game&Watch. Pronto encontré por un precio 'razonable' mi primera G&W, Green House. Cuando la tuve en mis manos recordé viejas experiencias y esto me hizo plantearme una versión para C64 de la misma.

Green House pequeña maravilla arcade

La primera premisa fue realizar el juego como el original, pero no me convencía, aunque considero que el juego original tiene mucho dinamismo y se convierte en algo frenético. Empecé a pensar en una evolución, más en una inspiración u homenaje, con muchas pantallas diferentes, con el estilo, como ya he comentado, arcade.

Gracias a mi último juego pude experimentar y afinar un pequeño algoritmo de multiplexado de sprites, que apliqué sin apenas cambios al motor del juego. Al principio los sprites del jugador eran en baja resolución. El resto en alta resolución, bichos, arañas, gusanos, e insecticida. Esto me proveía de una cantidad de enemigos mucho mayor de la que soportaba el juego original. 

Primera pantalla del juego

Como todo el mundo sabe, ni la música, ni los gráficos son mi fuerte, bueno tampoco se puede decir que la programación... Por lo tanto, los gráficos que dibuje adaptándolos desde la G&W eran un poco de 'aquella manera', como dirían algunos. Tenía los gráficos pendientes pero continuaba afinando el motor del juego, sabia que podía contar con algún viejo conocido para ello.

Primer charset creado


Primeros sprites


En temas musicales del juego siempre tuve claro a quien quería para ello. Narciso (Narcisound), me ofreció su ayuda para componer las músicas y efectos especiales. 

Recopilatorio de melodías del juego

El juego seguía avanzando, el motor continuaba su evolución más o menos sin contratiempos importantes, pero sin embargo, los gráficos aún era un tema pendiente. Por suerte pude contar con Lobo un grafista fantástico que ha participado en juegos como Galencia (ver Nuevo software y bichos espaciales), demos y muchas otros proyectos relacionados con el C64. Una colaboración de lujo gracias a Bieno, que me puso en contacto con él.

Primera versión de la pantalla de inicio.
En inicio iba a ser el menú del juego.


Pantalla del primer nivel como imagen completa

Los gráficos de Lobo desde el principio fueron fantásticos. Me pareció increíble que sólo con una pequeña e incompleta demo del juego, más mis sprites y titles, fuera capaz de redibujarlo de nuevo como pngs. 

Esto fue un problema, pues ya que los sprites tenían el formato correcto para usarlos, los titles no. Creo que interpreto, porque tampoco mi inglés es de Cambridge, las pantallas como una imagen. Por eso tuve que especificar que las pantallas las quería realizar como piezas. Esto ya lo puse en práctica en mi primer juego, con pequeñas piezas gráficas que a través de un script interpretado por el juego, 'dibuja' cada uno de los niveles. Esto nos proporciona poder gestionar muchos más niveles en la escasa memoria del C64.

Piezas sobre las que montar los escenarios.

Nótese las explicaciones de Lobo para montar los niveles

Pronto vino el primer desafío, los sprites eran superpuestos. Un sprite da el color (multicolor/baja definición) y otro hace las veces de perfilado (monocolor/alta definición). Mis grandes ideas de niveles llenos de bichos por doquier quedaron mermadas, haciendo que el número máximo de bichos por nivel pase de trece a cinco. Esto me provocó un poco de desasosiego, porque pensaba que el juego quedaría algo anodino y soso. Viendo esto en perspectiva creo que los niveles han quedado medianamente bien, aunque posean pocos enemigos.

Una maravilla los sprites de Lobo

El juego empieza a demorarse cada vez más y más. Hubo momentos en los que llegue a plantearme si lo abandonaba. Menos mal que la paciencia de mis compañeros en esta aventura ha sido casi inagotable. En pleno desarrollo apareció la pandemia, por suerte para mí, pude trabajar desde casa, pero esto hace que mi productividad ochobitera baje hasta límites desastrosos. Curiosamente lo que provocó un aluvión de nuevos proyectos hizo lo contrario en mi caso.

Aunque, solo a finales del año pasado la programación se ha incrementado a casi un cien por cien, durante todo el proceso hubo avances y desafíos. Uno de los desafíos a superar fue el espacio. Lobo había creado una excelente pantalla de presentación que decidí usar como pantalla de inicio de juego, ocupando 10Kb. Por otra parte, decidí crear cincuenta niveles agrupados en cinco invernaderos. Toda esta información junto con la música, sumada al propio código que ejecuta el mismo, se me antojó casi imposible de manejar en una sola carga. Quizás por mi pasado de cargas desde cinta, intento no crear juegos multicarga.

Pantallas de inicio y fin de juego no usadas en la versión final

Por suerte hoy en día existen compresores y descompresores para el C64. Gracias un plug-in para el KickAss, compilador que uso para programar ensamblador, pude comprimir y asignar en determinadas posiciones de memoria, niveles, pantalla de inicio, charset y parte del código. Toda esta información se descomprime 'en tiempo real' a conveniencia del estado del programa. Todo este manejo de datos también me obligó a aprender a copiar algunos datos comprimidos en la parte mas baja de la memoria, donde se encuentran las rutinas del kernel, que por suerte para mí, no iba a necesitar en el juego.

Otro gran desafío fue el ajuste de las colisiones en el juego. La mecánica del mismo exige que las colisiones entre el insecticida y los bichos sean precisas, pues una mala gestión puede arruinar toda la jugabilidad. Aunque el VIC-II posee una detección de colisiones entre sprites, en este caso su aplicación es muy difícil, pues no solo tenemos todos los sprites solapados, si no también la multiplexación nos hace preguntarnos cuales sprites han colisionado. 

Para ello programe un algoritmo. Esta programación fue bastante difícil, ya que, existen varias excepciones en los casos cuando el insecticida o el enemigo se encuentran más halla de la posición 255 en el eje x, y por lo tanto está activado su MSB (most significant byte). Ajustar la mecánica de las colisiones fue todo un desafío, que pude superar gracias a las pruebas de mis 'testeadores'. No solo descubrieron fallos (muchos), si no también aportaron ideas y ajustes.

Pronto descubrí que la definición de los niveles iba suponer un pequeño infierno. Lo primero que decidí fue realizar mi propia herramienta de generación de niveles. Al principio me supuso un esfuerzo extra, pero a la larga iba a suponer un gran incremento en la rapidez para crear niveles y probarlos. El posicionamiento de plataformas escaleras y demás elementos se realiza de forma visual a través del joystick, obteniendo el resultado final casi inmediatamente.

Bugs Inc Maker

Por último el ajuste de la dificultad puede ser un enorme problema. Reconozco que estoy 'masterizado' en el juego y es difícil calibrar hasta que punto es difícil o no un nivel, así como la evolución de esa dificultad según van avanzando los niveles. Gracias de nuevo a quienes lo jugaban de forma desinteresada, pude ir ajustando esta dificultad. A pesar de ello creo que el juego es un poco difícil...

Entre todos estos procesos contacta conmigo Jazzcat uno de los editores de la nueva Zzap! Desea realizar una pequeña reseña del juego. Reconozco que esto me pereció increíble. Una revista interesada en uno de mis juegos. Debo confesar que también fue gracias a Narcisound y su conexión con el grupo Onslaught. Ambos pertenecen al mismo ;)

El fruto de este primer contacto es un artículo en el numero 03 en la sección New flash en la que se comparte página con Street Fighter II de PacoBlog, todo un honor.

En el segundo contacto con Zzap! el juego funcionaba más o menos correctamente pero aun no estaba completado del todo, por esta razón en el número 04 de la revista aparece una demo con los ocho primeros niveles del primer invernadero. A continuación, y como colofón, el juego aparece completo en su número 06 junto con su descarga gratuita unas semanas después en itch.io

Zzap! 64 número 04

La andadura de las publicaciones de este juego no acaban aquí, cuando juego lleva unas semanas para su descarga, bobr.games también se pone en contacto para realizar una recopilación en cartucho no solo de Bugs Inc, si no de todos mis juegos publicados, otro de los sueños cumplidos, que también realice con 4M Arena, pero eso ya es otra historia...

Bugs Inc and others games by DARRO99

Para finalizar el artículo solo dar de nuevo las gracias a las personas que probaban y aportaban todo tipo de ideas e inquietudes sobre el juego, así como su apoyo incondicional.

Espero que quien juegue a Bugs Inc. disfrute tanto como yo programándolo.

DarrO

Enlaces:

Descarga de Bugs Inc

Bugs Inc - Music Collection

Cartucho recopilatorio Bugs Inc and others games by DARRO

Entrada de Commodore Plus

Street Fighter 2 Champion Edition Demo

Zzap! 64



3 comentarios:

  1. Me encantan estas entradas llenas de anecdotas y detalles. Felicidades por el juego y por revivir el blog :D

    ResponderEliminar
  2. Me encantó toda la historia y el trabajón que te dieron las colisiones, felicidades.

    ResponderEliminar
  3. La información de primera mano no tiene precio. Gracias por compartirla!!

    ResponderEliminar

Los originales (y 3)

Hola de nuevo amigo lector. Parece ser que  la actualización de este blog va a ser anual. Bueno quizás esta sea nuestra rutina a partir de a...