Tilengine - una librería para crear juegos estilo 8/16 bits, con denominación de origen

Publicado el 08 enero 2016 por Retromaniac @RetromaniacMag
Es curioso cómo funciona el tema de la tecnología: cuando llega una nueva generación, deja a la anterior obsoleta a ojos de la gente. ¿Quién querría jugar a los vetustos 8 bits cuando llegaron los espectaculares 16 bits? ¿Quién podría volver siquiera a divertirse en dos dimensiones tras contemplar la majestuosidad de los tridimensionales mundos de las máquinas de 32 bits?
Sin embargo, el tiempo acaba poniendo a cada cual en su lugar, y los vetustos y obsoletos juegos de máquinas de 8 y 16 bits vuelven a ponerse -hasta cierto punto- de moda, tanto que incluso se diseñan juegos nuevos imitando sus posibilidades visuales y de jugabilidad -el recientemente denominado ‘neoretro’-, cuando no directamente creando el juego para máquinas con más de 25 años a sus colectivas espaldas.
Por suerte, si bien para crear juegos para una consola con un puñado de megahercios en su CPU y unos cuantos kilobytes de RAM disponibles hay que tener un gran conocimiento técnico y conocer muy bien la máquina para la que se está programando, cuando de lo que se trata es de hacer un juego de estilo retro en máquinas más modernas -y más capaces-, la cosa cada vez se va haciendo más sencilla gracias a los nuevos entornos, librerías y herramientas de desarrollo que pretenden facilitarnos la vida y permitirnos desarrollar nuestra creatividad sin el corsé de las limitaciones técnicas de las máquinas retro.

¿Sonic? No, échale un vistazo a 'Platformer' y lo verás...


En este terreno tenemos desde entornos de desarrollo completos, como pueden ser Unity (que cada vez incluye más herramientas para juegos 2D) o GameMaker (el programa con el que nuestro admirado Locomalito crea sus juegos), a toda clase de librerías 2D como SDL, SFML, Cocos2D y un cada vez más largo etcétera.
Es aquí, en el ámbito de las librerías de programación, donde se encuentra Tilengine, una API creada en C que, apoyándose en otras librerías como SDLv2, nos facilita la vida a la hora de crear juegos de PC con una estética de consola de 16 bits.

¿Siempre quisiste programar un juego tipo “Mode 7” de SNES?
Sin ser exactamente lo mismo, con Tilengine ahora puedes


Tilengine ha sido creada por Marc Palacios, un programador profesional de Barcelona que aprendió a programar en un Spectrum 128 +2A cuando tenía tan solo 11 años, y que como él mismo nos cuenta, lleva “15 años trabajando como analista programador en el mundo de la consultoría de proyectos” pero su verdadera pasión “han sido siempre los videojuegos, especialmente los clásicos".
Y, efectivamente, comprobando las diversas demos técnicas que nos ofrece junto con las librerías de Tilengine vemos que los resultados finales parecen pantallas de consolas como la Mega Drive o la SNES en un monitor CRT de los de 'toda la vida'. "Lo que diferencia a tilengine de otros motores de tiles es que emula el funcionamiento real de un chip gráfico clásico, dibujando la pantalla secuencialmente por líneas completas y dando la opción al programador de ajustar los parámetros de render en cada línea, lográndose así los llamados efectos raster. El resto de motores modernos basados en tiles dibujan la pantalla por tiles completos, siendo incapaces de conseguir este tipo de efectos tan habituales en la era 16-bit", nos comenta Marc.

No se puede negar el encanto de los resultados de Tilengine, sobre todo
si adoras los juegos de principios de los 90


Tilengine es gratuita aunque por el momento no es software libre, aunque sí está en la mente de Marc que pase a serlo "cuando vea que realmente hay interés y vea gente que empieza a trabajar con él". No obstante, no es un proyecto totalmente hermético, porque también nos menciona que "a pesar de no tener publicado el código fuente, lo cedo de forma particular a cambio de poder integrar la nueva versión en el proyecto principal, y un reconocimiento explícito a quien se ha encargado de hacerlo."
En cualquier caso, lo que Tilengine ofrece es la librería compilada tanto para Windows como para Linux. Está escrita en C apoyándose también en la librería SDL -que también está en el paquete para que no haya que ir buscándola-. Se incluye también en el paquete, además de los ejemplos donde ver implementados los distintos efectos disponibles -todos muy “16 bits”-, un interfaz para poder ser usadas tanto con C/C++ como con Java y Python: "La idea es que programas el juego en C, Python o Java, usando Tilengine como una especie de VDP virtual. El paradigma es el mismo que en los sistemas clásicos reales, pero en vez de programarse en assembler y manipulando los registros de un chip, se hace en un lenguaje de alto nivel y con una API cómoda más acorde con los tiempos modernos".

Ahora mismo, esto es lo más parecido a un juego que tiene Tilengine - aunque en movimiento luce mucho más


¿En qué se diferencia Tilengine de otras opciones? En sí, la gracia de la librería radica en su enfoque en el uso de tiles como principal recurso gráfico, algo que hoy en día ya no se usa porque eso sólo sirve para entornos 2D y además la gran cantidad de memoria de que se dispone -y la cantidad de colores de las paletas- hacer que ni sea necesario ni tenga mucho sentido. Pero por explicarlo algo rápido y burdamente, los tiles son pequeños patrones que se van repitiendo en la pantalla y con la que se generan los gráficos. Son como piezas de lego, donde tú defines las distintas piezas -según la capacidad de la consola tienes un número mayor o menor- y luego las vas colocando en la pantalla para formar los decorados, los edificios, los enemigos, los personajes... algo que en una máquina cuya RAM se mida en Gigas no te exige que hagas salvo que quieras hacerlo exactamente así.
Finaliza Marc con la que es a su juicio una de las características más interesantes de Tilengine: "internamente funciona como los VDPs de los sistemas clásicos, línea a línea, y el modelo de programación es el mismo. Utiliza capas de tiles, sprites, paletas, y es el único que permite realizar toda clase de efectos raster de forma nativa, tal como se hacía originalmente". Un magnífico set de herramientas para los entusiastas de los videojuegos de toda la vida que quieran internarse en esta manera de programarlos.
Más info en la página de Tilengine