jueves, 26 de septiembre de 2024

Haciendo un remake de un clásico de MS-DOS


Han pasado cuatro años desde la última entrada (madre mía!) pero me apetecía compartir este pequeño proyecto que he estado haciendo en mis ratos libres y quizás, si acabas por aquí de casualidad, podría parecerte interesante.

El tema de hoy es que acabo de publicar un juego en html5 por lo que es jugable directamente desde el navegador. En realidad no es un título original sino una recreación de un clásico de Apogee de 1991 llamado Crystal Caves.




Mi intención era intentar empezar (y sobre todo acabar) un proyecto pequeño que pudiera ser manejable. Por eso esto es tan solo un nivel del juego que contiene muchas mecánicas clásicas que son perfectas para aprender. El objetivo era no solo replicar el juego original 
sino el darle un lavado de cara y añadirle un poco más de gamefeel (o juiciness) y mejoras de usabilidad o como se conoce en anglosajón como QoL (quality of life improvements).

Crystal Caves +  en Itch.io

Te dejo el juego en el mismo post TRAS EL SALTO así como algunos detalles extra del desarrollo. 👇👇👇


El juego

Antes de nada el juego a un click. Es un juego de 1991 por lo que ya te aviso que es dificultad de la época. Aún así, una vez comprendes todo se pasa en un voleo. 




SOLO CON TECLADO * (click en el juego para que funcione el teclado)

↑                    Saltar
← , →            Mover
Ctrl                Disparar



Eligiendo el motor


Después de dar muchos tumbos en la eterna pelea de qué motor utilizar, llegué a la conclusión de que Construct era lo que encajaba conmigo. Este debate interior se debe a que siento que hay un sentimiento generalizado del que no se habla directamente en el que algunos motores parecen ser la opción correcta. Los desarrolladores de verdad que saben programar usan Unity o Godot (por ejemplo), y otros motores como Construct son a veces vistos como juguetes.

En los últimos años he probado casi todos, desde Game Maker hasta Unity pero siempre acababa en el mismo punto en el que no sabía como seguir. Tras varios tutoriales me daba cuenta de que cuando intentaba ponerme por mi cuenta apenas sabía nada y me bloqueaba de manera irremediable. 

Con Game Maker hice mis pinitos pero no sabía como escalar los proyectos y no pasaba de hacer cuatro prototipos chorras.




Llevo ya unos cuantos años trabajando de manera profesional como artista y unos pocos menos trabajando con Unity pero la programación es algo que se me atraganta y que no consigo resolver simplemente con tutoriales así que volví a Construct después de varios años, me puse con un objetivo claro y cuando me di cuenta la cosa marchaba. Esto, a pesar de ser algo muy pequeñito, es lo más lejos que he llegado nunca creando algo por mi cuenta.

El razonamiento que hizo que me convenciera fue que si quiero hacer algo grande necesitaré a más gente, por lo tanto el motor puede ser lo que mejor que adapte al proyecto y el que nos permita trabajar más cómodamente. En cambio, si quiero hacer algo por mi cuenta, pequeño, abordable por una sola persona, más vale que busque la opción más cómoda. 


Por qué Crystal Caves?

Pensé que la mejor manera de aprender era intentar replicar mecánicas de algún juego sencillo antes de intentar crear algo original ya que, inevitablemente, a la primera barrera intentaría simplificar las cosas o al contrario, sería fácil venirse arriba y perder el foco. Así que para este proyecto prefería sacar el papel del diseñador fuera de la ecuación (que por otra parte es en realidad lo que más me llama la atención del desarrollo).

No quería elegir los clásicos como hacer un Snake, un Pacman, un Asteroids o incluso un Mario así que recordé este juego de la época del Shareware que contenía muchas mecánicas muy clásicas en el género de los plataformas; plataformas móviles, plataformas jump-thru, enemigos con una patrulla, llaves que abren cofres, palancas que abren puertas...

 




Como la prioridad era aprender a utilizar la herramienta y entender la parte de la programación (luego hablo sobre esto), decidí hacer solo un nivel ya que estaba seguro de que no iba a saber montar esto de manera escalable mientras, en paralelo, iba aprendiendo sobre la marcha. Efectivamente no me equivocaba. La organización del proyecto es un auténtico despropósito pero lo importante es que todo funciona (si le buscas las cosquillas seguro que le sacas punta).

En realidad, el juego tiene un remake oficial que puedes encontrar en Steam, pero me parecía que aunque era cumplidos, era casi un reskin del juego original ya que se sentía igual de tosco. Ese pasito extra de hacerlo sentir un poco más actual con algunas partículas extra, animaciones más cuidadas y demás, era lo que me motivaba a intentarlo.

Pero como decía, lo realmente importante era superar la barrera de la programación.


Pero en Construct no se programa!

Esto estarás harto de oírlo pero es mentira. Lo que no vas a hacer (al menos de primeras) es escribir código pero tienes que aprender la lógica de programar y de eso no te libras. No solo eso, hay una gran cantidad de conceptos que debes conocer para resolver las situaciones que te encuentres como por ejemplo saber lo que es un trigger o un raycast por decir un par.

Oye, hacer un videojuego es muy complicado y quien diga lo contrario miente como un bellaco. Quieres hacer que un muñequito se mueva saltando por un nivel plataformeando y matando algunos enemigos al saltar encima? Lo vas a tener hecho en media hora, quizás menos, pero ahora haz que el salto se sienta bien, quizás le añades el coyote time para que se sienta más agradable, añade una escalera y verás la de problemas que te encuentras. Ahora haz que tu personaje se agache y suelta del cursor cuando te encuentres con una colisión encima de tu cabeza.... Pronto descubres de que cada paso que das entra en conflicto con algo que habías hecho o no funciona por alguna razón que todavía no comprendes.




La parte difícil de un proyecto es acabarlo. He oído esto mil veces pero es que no podría estar más de acuerdo. El último 10% es lo complicado de verdad. Arreglar ese bug al que no estabas echando mucha cuenta, averiguar como hacer para que cuando cojas dos monedas seguidas el sonido no se acople, toda la parte de UI....

Lo que quiero decir es que aunque uses un programa tan visual como Construct vas a aprender a programar, quizás con ruedines, pero programarás porque los problemas son los mismos que si escribes código. 

Me ha costado entender esto y viendo a la gente yéndose a tropel a Godot me hacía pensar que quizás yo debería hacer lo mismo pero si quieres un consejo, pasa de todo eso. Elije lo que quieras, lo importante es que empieces y consigas acabar algo, no importa si has dibujado con Paint, has programado con Scratch o has hecho la música con un Casiotone (bueno, esto último en realidad molaría bastante). Simplemente hazlo.


Qué cambia respecto al original?


Lo primero era redibujar algunas cosas. Este paso fue divertido y me servía para reposar la cabeza de vez en cuando y no quemarme. Intenté respetar al máximo el estilo del original.




Todos los assets estaban encajados religiosamente en una cuadrícula de 16 x 16 y aunque lo he respetado todo lo posible, al final me he saltado algunas reglas en pos de que quedara más chulo. He usado escalados y rotaciones cuando me ha parecido que encajaba. Soy de la opinión que mola que algo se sienta retro pero no hace falta que lo sea de verdad.

Aunque tenía de referencia el remake oficial del juego, lo cierto es que no me ha servido demasiado ya que era un repintado muy literal y decidí hacer algunos cambios.



Pero quizás a lo que más ganas tenía de meterle mano era al personaje ya que la animación de caminar era rarísima y se mantuvo en el remake. He intentado mantenerme fiel al sprite original pero he cambiado todas las animaciones para que estuviera a mi gusto.




Respecto al tileset, empecé con la idea de hacer algo realmente nuevo con varias capas de parallax para que pareciera una cueva alienígena y aunque la verdad es que pintaba bien, el proyecto se me estaba alargando y quería acabarlo para poder pasar a otra cosa. Por lo tanto, recorte al canto.

Dejé el suelo bastante saturado porque por alguna razón me parecía que recordaba a la paleta CGA en la que todo es muy estridente. Quizás la podría haber desaturado un poco más pero así se quedó.




Finalmente añadí una pantalla para el inicio aunque la verdad es que la rematé rápido, especialmente el terreno, porque como decía, el proyecto ya se me estaba alargando demasiado así que la dejé con el detalle justo para que fuera agradable y un buen acompañamiento como pantalla de inicio.




Respecto al gameplay, están todos los elementos del original. He cambiado un par de colisiones en el nivel para que fuera más fácil navegar y he procurado jugar con los colores para que no se vea tanto follón en pantalla ya que en el original cuesta mucho entender que es interactuable y qué no (de hecho en mi versión también pasa p
ero créeme que menos).


Conclusión

Ha llevado más faena de la que pensaba pero estoy muy contento de haber llegado hasta el final. Hacer algo completamente solo es una experiencia interesante. Después de esto he ido haciendo más pruebas que quizás algún día enseñe (o no) pero la verdad que espero que la motivación no desaparezca del todo ya que en el proceso he aprendido mucho.

Llevo ya unos años trabajando en videojuegos de forma profesional pero esto es una experiencia totalmente distinta aunque se trate de algo tan chiquito como este proyecto. El salir de tu zona para tomar decisiones de otras áreas es algo que pienso que puede ayudar a la hora de enfrentarte a un desarrollo más grande en el que quizás puedes valorar mejor cuanto cuesta hacer algo e incluso saber como pedirle algo con más claridad a un programador, por ejemplo.

Yo no soy nadie excepcional y si he podido hacer esto cualquiera puede. Suena a tópico pero te aseguro que lo pienso honestamente. Lo complicado es mantener el ánimo cuando te das una y otra vez contra la pared. Lo importante es hacer un poquito cada día, por poco que sea, da igual. Cuando te des cuenta tendrás algo que empieza a parecer un juego.

Mi consejo si quieres aprender es que hagas lo mismo. Coge un juego clásico que te guste y que creas que es relativamente sencillo (no elijas un Sonic para empezar, por favor!) e intenta replicarlo. La cantidad de cosas a resolver será mucho más grande de lo que esperas pero el quitarte la parte creativa de diseño te va a permitir centrarte en aprender a usar la herramienta. Ya habrá tiempo de crear tu obra maestra, no te preocupes.

Espero que haya sido de interés. Hasta la próxima!


No hay comentarios:

Publicar un comentario

Gracias por comentar!