Nota aclaratoria
En este artículo no se manifestarán opiniones estéticas acerca del purismo o no de estas plataformas, sino solamente opiniones técnicas. Tampoco pretende ser exhaustivo, solamente voy a reseñar las cuatro que me gustan y que he instalado o manejo mínimamente. El otro criterio es que tengan una comunidad activa, o al menos que no estén abandonadas.
El resto queda para el curioso lector, que puede consultar la lista completa en https://github.com/paladin-t/fantasy. Algunas, como PixelVision8, lleva tres años sin actualizarse en el momento de publicar esta noticia, y también por esta razón se han descartado esta y algunas otras, ya que no tienen soporte reciente.
Introducción
En los últimos años ha habido un interés creciente por seguir desarrollando juegos de estética tradicional. Ahora bien (y aquí viene la característica principal que vamos a tener en cuenta en esta pequeña noticia), este interés nace a veces para desarrollar esos juegos con independencia del hardware.
Fruto de esta inquietud nacen las consolas de fantasía, un hardware virtual que no necesariamente representa a una máquina física real, pero que tiene más o menos la capacidad que tendría una máquina de los 80/90. Normalmente se ejecutan en un PC o una Raspberry Pi, y en algún caso en el navegador web.
Algunas consolas de fantasía funcionan con “cartuchos” virtuales, del tamaño de una ROM de la época (por ejemplo 32K). Disponen de 4 canales de sonido –generalmente– y 16/256 colores también en general, siendo la resolución bastante baja.
El lenguaje de programación suele ser Lua (énfasis en “suele”), un lenguaje funcional sencillo de aprender, un poco “de nicho” (muy específico) que se utiliza, entre otros usos particulares, como lenguaje auxiliar en algunos videojuegos y para programar microcontroladores.
La gran ventaja de Lua para juegos modernos es que se trata de un lenguaje rápido entre los lenguajes interpretados, lo que permite extender los juegos de forma modular sin tocar el código compilado principal.
Fruto de su carácter de fantasía y no retro, ninguna de las consolas analizadas utiliza como lenguaje principal BASIC u otro lenguaje de la época (en realidad MEG-4 lo usa, pero mejor miremos para otro lado de momento). Este es otro de los motivos por los que las denominamos neo-retro, ya que no se programan generalmente con lenguajes de aquel período.
Las consolas de fantasía
Pico 8
Pico 8 es de pago (15$), pero se puede ejecutar gratis en la web. Aunque el programa es privativo (no hay acceso al código fuente), en cambio podemos ver el código de cualquier “cartucho” de otro usuario que nos bajemos, en formato .png específico.
Especificaciones
Características |
Descripción |
|---|---|
Display |
128x128, 16 colores |
Tamaño cartucho |
32k |
Sonido |
4 canales chip Blerps |
Lenguaje |
Lua |
Sprites |
256 sprites de 8x8 píxeles |
Mapa |
128x32 celdas |
Tradicionalmente, Pico-8 no permitía escribir código fuera del entorno de la consola, y esto era un elemento de incomodidad dados los medios modernos de que disponen los IDE y editores de texto modernos. Esto se ha corregido en la versión 0.1.12c del software. Ahora se puede escribir el código en cualquier editor de texto, y luego importarlo al entorno de la consola.
El editor de sonido es probablemente uno de los más fáciles dentro de los editores internos de las consolas del sector. Una gran ventaja de esta consola es que hay disponibles muchos cartuchos hechos por otros usuarios para descargar, jugar y examinar su código.
Löve
Löve: este entorno de desarrollo opensource es el único de los cinco que no se considera propiamente como plataforma de programación de juegos retro, sino de juegos en general en 2D. El lenguaje de programación es (¡sorpresa!) Lua, y es multiplataforma.
Ahora bien, dada su relativa sencillez, y la facilidad con la que se puede conseguir una estética retro utilizando los medios estándar que incluye, puede servir para nuestro cometido. Por este motivo, y por el detalle de utilizar el lenguaje Lua, se ha incluido.
Su caso es un poco extraño porque es tan potente que de hecho, tomándola como entorno de desarrollo, se ha desarrollado incluso una consola de fantasía, LIKO-12 (un clon de PICO-8). Solamente este detalle ya nos deja ver que “juega en otra liga”.
No obstante, no llega al nivel de “mastodontes” como Godot, y ni mucho menos Unity.
Pyxel
Pyxel es una plataforma de generación de juegos retro 2D, pero más sencilla que Löve. La diferencia principal con todas las demás analizadas aquí es que está escrita en Python. Esto lo vemos como un rasgo positivo, aunque LUA también sea una excelente opción para este sector.
Está en el mismo “nicho” que TIC-80 y PICO-8, por lo que “compite” directamente con ellas. Tiene una amplia comunidad de desarrolladores, ya que desde el primer momento de publicación ha gozado de gran éxito. No hay que olvidar que, al estar escrita en Python, puede haber atraído a mucha gente que no conoce LUA o no quiere aprenderlo. También el lenguaje de programación la coloca en el sector de “entorno de fantasía”, no siendo un lenguaje original de la época.
En mi opinión, y en un mundo donde Python domina, Pyxel es especialmente interesante por su carácter abierto, por su desarrollo constante, y por su valor didáctico para aprender a programar, entre otros muchos motivos, aunque estos son mis favoritos.
También dispone de un amplio catálogo de juegos
TIC-80
TIC-80 incluye editor de código, sprites, música y (interesante) mapas. También pueden exportarse los cartuchos virtuales de formato .TIC, del mismo modo que con Pico-8.
Los cartuchos pueden luego funcionar en diversos sistemas operativos, como Windows, Linux, y Raspberry Pi, etc. y también en el navegador.
El curioso lector ya habrá adivinado que la competencia directa de TIC-80 es PICO-8, por el detallito de los cartuchos virtuales. Se puede programar con diversos lenguajes incluido LUA.
En el sitio web de TIC-80 se pueden encontrar una gran cantidad de juegos en cartucho virtual, creados por la comunidad, y esta colección sigue creciendo. Si tengo que ser sincero, es complicado elegir entre PICO-8 y TIC-80, pero TIC-80 tiene quizás un poco más de encanto.
MEG-4
Meg-4 es la pequeña venganza del software libre que todos estábamos esperando sin atrevernos a confesarlo: no, no teníamos suficiente con Pyxel. Después de investigar un poco en la lista de consolas de fantasía, me he encontrado con esta joya. Es software libre; no es tan avanzada quizás como las otras, pero al menos sigue en desarrollo (muchas de las consolas de fantasía ya no se actualizan y son en la práctica abandonware)
La tenemos en versión Linux y en versión navegador, además de poder disponer obviamente del código fuente. Según su página web, presenta las siguientes características: es multilingüe (aunque muchos sistemas de escritura no “caben” en un bitmap de 8x8). Por otra parte, y a diferencia de PICO-8, es software libre y de código abierto.
El autor alega que, tiene una interfaz más fácil de usar y un mejor soporte de API que TIC-80. La interfaz no me ha parecido su mayor fuerte, aunque es adecuada (al fin y al cabo, esto también es un artículo de opinión). Sin embargo, tiene algunas características interesantes, como la posibilidad de importar cartuchos de PICO-8, TIC-80 y otros.
Incluye editores integrados, pero admite la importación de recursos en varios formatos. (Pongámonos técnicos: : .png, .tmx, .mod, .mid, .bdf, .sfd, .psfu, entre otros). A su vez, permite importar y exportar todo el proyecto en formato .zip. Se programa en C, BASIC, ensamblador o Lua.
Al igual que la “competencia”, puede exportar juego que hayamos creado como aplicación independiente (Windows, Linux, WebAssembly) pero solamente en MEG-4 PRO. El autor también alega que es más completo que la competencia; por ejemplo, también admite gráficos de tortuga (mi debilidad) y laberintos 3D.
Según el autor, es fácil de compilar y de integrar (el repositorio incluye varias “plataformas”: SDL, GLFW, raylib, sokol, allegro, libretro, etc.). Una cosa que hay que reconocerle al autor, y es que es rápido, ya que fue un requerimiento de diseño (prueba superada). Como guinda del pastel, está muy bien documentado y su API también está disponible como un framework nativo para nano-juegos (LUDUS).
Tabla de lenguajes de programación de plataformas “Neo-retro” y “Pseudo-retro”
Nombre de la plataforma |
Lenguaje de programación |
|
Neo-retro |
Herramientas internas para gráficos y música |
|---|---|---|---|---|
|
LUA |
Python |
|
|
Pyxel |
no |
SI |
Sí |
Sí |
Pico 8 |
Si |
no |
Sí |
Si |
TIC-80 |
SI |
no |
Sí |
Si |
Löve |
Si |
no |
NO |
NO |
Meg-4 |
SI |
no |
Sí |
Si |
Tabla de características del hardware
Plataforma |
Ejecutable en local |
Número de sprites |
Canales de sonido |
Número de colores |
|---|---|---|---|---|
|
|
|
|
|
Pyxel |
Sí |
No hay límite |
4 |
256 |
Pico 8 |
Online. En local, de pago. |
256 8x8 sprites |
4 |
16 |
TIC-80 |
Sí |
256 |
4 |
16 |
Meg-4 |
Sí |
1024 |
8 pistas, 4 canales |
256 |
Löve |
Sí |
“Sin límite” |
“Sin límite” |
“Sin límite” |
Licencia del software
Plataforma |
Licencia de uso libre |
Uso sin pagar |
Código fuente disponible |
|---|---|---|---|
|
|
|
|
Pyxel |
Sí |
Sí |
Sí |
Pico 8 |
No |
Sí (Web) |
No |
TIC-80 |
No |
Sí (Web) |
No |
Löve |
Sí |
Sí |
Sí |
Meg-4 |
Sí |
Sí |
Sí |
Conclusión
Si el sector evoluciona, especialmente si alguna consola “revive” o surge alguna nueva, nos plantearemos una segunda parte de esta pequeña guía.