Siempre he trabajado en el área de administración de sistemas, pero la programación me llamaba la atención como hobby. En mi infancia aprendí los fundamentos de programación con el lenguaje Basic y un MSX. En los estudios aprendí a escribir programas con Turbo Pascal y Cobol (lo cual poco o nada me ha servidor en mi carrera laboral).
Todo eso ya quedó muy atrás así que en 2010 decidí aprender el lenguaje C, más utilizado que los anteriores y una buena base para luego aprender otros lenguajes, como C++, Rust, etc.
En Internet puedes encontrar infinitos tutoriales para aprender cualquier cosa y el lenguaje C no era la excepción. Acabé descargando un curso en PDF (el cual por desgracia ahora no encuentro online) muy bien escrito y estructurado. Muchos ejemplos, con explicaciones claras y varias tandas de ejercicios.
Muchos de los conceptos (bucles, operadores, condicionantes, etc.) que se explicaban ya los conocía, así que me pude saltar la parte introductoria. Aparecieron nuevos conceptos como los punteros que me costó entender a la primera.
Un tema del curso trataba sobre el desarrollo de juegos simples apoyándose en la librería SDL. Aquello me fascinó. Desde la infancia me han gustado los videojuegos, ¿jugarlos? si... pero más me gustaba todo lo que hay detrás del programa final: como se había hecho, que había oculto en ellos, que curiosidades lo rodeaban. No es extraño que páginas como The Cutting Room Floor sean de mis preferidas respecto a los videojuegos.
Tras terminar todo el curso me quedó el gusanillo de hacer un videojuego pero... ¿cómo? No se dibujar, no se hacer música, tampoco experiencia previa. Decidí buscar un videojuego que conociera bien y hacer mi propia versión. El elegido: Antartic Adventure de MSX.
Pasé varias tardes con Gimp intentando hacer algo medianamente decente. Sin los conceptos básicos de dibujo, ni perspectiva, ni nada. Pillé una banda sonora de una web con música libre de derechos de autor. Finalicé la primera fase del juego y subí un video (capturando directamente del móvil, un vídeo muy borroso) a mi canal de Youtube. Como experiencia estaba bien, pero no me acababa de convencer.
Inicié un segundo prototipo, esta vez del género de las plataformas. Quería aprender conceptos como colisiones, plataformas móviles, animaciones, etc. Terminó en un breve juego donde pude implementar todo lo anteriormente mencionado (y alguna cosa más) pero al igual que el anterior no llegó a más.
Por entonces no existía cosas como Proton. Wine permitía ejecutar algunas aplicaciones de Windows, pero era incompatible con la mayoría de los videojuegos. Un juego relativamente simple, en 2D y cuyo autor estuviera dispuesto a darme los gráficos, música y sonido. Parecía complicado, pero lo encontré: Locomalito aceptó que portara su juego Abbaye des Morts a Linux.
El juego estaba escrito con la herramienta GameMaker y por entonces sólo soportaba Windows. Le llevó tres semanas completar el juego. A mi me llevó más de 3 meses: pasé muchas tardes y noches, mirando vídeos del juego original. Reconstruyendo una a una las 23 pantallas que consta el programa. Tile a tile (un tile es un dibujo de 8x8 píxeles, en este caso cada pantalla tiene 32x24 tiles). Observando cada enemigo, cada objeto y tratando de replicarlo lo más fielmente posible.
No era el código más elegante y optimizado del mundo (ni de lejos), pero lo conseguí. Un juego funcional de principio a fin. Y con mejoras, como poder alternar al vuelo entre el juego original o unos gráficos mejorados. No me lo podía creer.
Publiqué el port bajo licencia GPL3 y más personas se unieron al proyecto. Portando el código a otros sistemas operativos (como BSD) u otras plataformas como consolas (Xbox, Wii, PSP...). Se empaquetó el juego para el formato Flatpak y está disponible en Flathub (aunque es una versión vieja).
Recibí correos electrónicos dándome las gracias por publicar el código fuente, el cual les permitía llevarlo a otras plataformas. También de usuarios que podían jugarlo en Linux. Aquello me resulto muy gratificante.
LocoMalito aceptó otro port de un juego suyo: Hydorah. Siendo un juego más complejo la dificultad aumentaba considerablemente. Tras varios intentos tiré la toalla. No tenía los conocimientos necesarios para escribir un programa de ese calibre. La llegada de traductores más avanzados como Proton y aplicaciones como Lutris restaron bastante sentido al porteo de juegos.
Actualmente estoy usando el código de Abbaye para aprender a usar el motor de código abierto Godot. Por la sencillez del juego es ideal para este menester. Una vez terminado publicaré todo el código bajo licencia GPL3.
No falta mucho para que SDL3 sea publicado. En el proyecto discutiremos que hacer, si lo migramos (tal y como se hizo de SDL1 a SDL2) o pasamos a usar el motor Godot.
Y años más tarde seguimos por aquí escribiendo código de videojuego, cuando hay algo de tiempo libre. El ir pensando como resolver problemas es algo que engancha mucho, más que los propios juegos en si.
Sigo teniendo varias ideas para crear mis propios videojuegos, algún día espero tener las capacidades artísticas necesarias para poder llevarlo a buen puerto.
16/01/2025 - Personal