Si hubo alguna razón por la cual quise aprender a programar, seguramente haya sido las ganas de hacer un juego propio; no me
importaba si fuera bueno o malo, simplemente quería tener la capacidad para poder hacerlo. Afortunadamente, me encontraba en un momento donde existían programas que facilitaban su desarrollo por medio de una interfaz gráfica. Clic aquí y allá, pulsar en jugar y estaba todo hecho. Pasado ya el tiempo y perdidas las pequeñas invenciones, buscaba volver a hacer juegos simples, aunque ahora con alguna noción sobre programación y mejor entendimiento de las cosas. Hubiese sido todo sencillo si hubiese buscado los programas que usaba y me pasaba el rato; sin embargo, me encontraba ahora en GNU/Linux y quería hacerlo desde aquí. Ya no contaba con las herramientas conocidas, sino que tenía que encontrar algo similar o equivalente.
Lo primero que intenté fue buscar alternativas libres a lo que ya conocía. Lamentablemente, eran proyectos por la mitad, en desarrollo o abandonados. Cualquiera sea el caso, aún no estaban listos para funcionar y, si lo estaban, no valía la pena probarlos aún. Por otro lado, la solución más viable que encontraba requería programar, nada de arastrar y soltar. Era SDL, unas librerías de manejo de audio y video con las cuales podríamos dibujar en la pantalla y reproducir sonidos. En un principio me interesó la idea pues podía aprovechar para repasar y seguir aprendiendo C/C++. Sin embargo, a medida que iba avanzando con un tutorial que me introduciría al uso de las librerías, empecé a notar que se volvería algo trabajoso lograr algo simple. Si bien sabía que escribir código para un juego podría ser una tarea larga y complicada, me daba pereza el hecho de tener que escribir y leer tanto para mostrar una ventana en negro, especialmente porque era algo que buscaba para pasar el rato.
Era muy probable que todo quedara en la nada Mientras tanto, un día, le comenté a un compañero de la universidad mi intento fallido con SDL y le pregunté si conocía algo que sea más sencillo. Me recomendó las librerías Allegro pues son más fáciles de aprender a usar y no cuesta trabajo realizar tareas simples. Investigué un poco y deje que la idea madurara. Finalmente, hace un par de semanas, empecé a leer en la wiki oficial y ver algún tutorial como para ir teniendo una idea.
Allegro (Atari Low-Level Game Routines, que fue reemplazado por Allegro Low-Level Game Routines) consiste en unas librerías para C/C++ (que también se pueden utilizar en Python, D, Pascal y Lua) que facilitan el manejo multimedia para programar, principalmente, juegos. Actualmente, se encuentra en su versión 5; es multiplataforma, por lo que es compatible con Windows, Mac y -por supuesto- GNU/Linux / Unix y para móviles con iPhoneOS y Android. Con
respecto a la licencia, en su sitio no hace mención a alguna en particular aunque sí permite usarlo, modificarlo y redistribuirlo bajo ciertas condiciones.
Etimológicamente, «allegro» viene del italiano y significa alegre, brillante. Además, como se puede ver en su sitio comunitario, en su logo hace referencia a un caimán (en inglés Alligator) agregando un juego de palabras que menciona uno de los juegos más populares hechos con estas librerías: Alex the Allegator 4 (cuyo código fuente está disponible). Volviendo a Allegro en sí, su uso es extremadamente sencillo. En primer lugar se especializa en 2D (aunque puede ser usado con OpenGL) y, por lo tanto, provee de los agregados necesarios para poder dibujar en pantalla simples figuras geométricas o una imagen. Se aceptan utilizar archivos de audio de los tipos .wav, .flac, .ogg, .it, .mod, .s3m y .xm por medio de la librería allegro_acodec; .bmp, .pcx, .jpg y .png en lo que respecta a imágenes; y fuentes TrueType, FreeType y desde una imagen.
A pesar de todo, no es soplar y hacer botellas tampoco sino que requiere un mínimo de conocimientos de programación en C para poder llevar a cabo un juego sencillo. Con sólo conocer condicionales, bucles, arrays y struct, basta para un proyecto pequeño. Sin embargo, se hace más interesante al incluir clases de C++ aprovechando una programación orientada a objetos. En la práctica, todo se puede ir aprendiendo con ejemplos y ejercicios, lo vital es conocer y saber usar las funciones que traen las librerías e ingeniarse armando algoritmos que funcionen debidamente.
Hay que tener en cuenta que Allegro no es motor de juegos sino que otorga las herramientas básicas para poder armar desde la base nuestras aplicaciones multimedia. De esta manera, Allegro únicamente facilita toda la parte audiovisual y eventos, mientras que nosotros escribimos el código de las cosas que deberían suceder. Al fin y al cabo, podríamos decir que un juego no es más que una serie de imágenes cambiando rápidamente generando la ilusión de movimiento y demás.
Un ejemplo de mi intento de recrear el clásico Galaxian
En conclusión, probablemente existan otras librerías para programar juegos de tipos específicos (por ejemplo, en primera persona); a pesar de todo, siento una especial atracción a programar de esta manera, con Allegro, ya que es gratificante construir un algoritmo, por cuenta propia, que represente la lógica de juegos que ya habéis jugado. De hecho, cambia completamente la forma de ver juegos de vuestra infancia, por ejemplo. Sea porque eran mucho más complejos de lo que
parecían o, todo lo contrario, eran extremadamente simples. No queda mucho más que decir más que deciros que se probarlo, especialmente quienes quieran aprender a programar y necesitáis una excusa. A continuación, os dejo unos enlances útiles (en inglés):