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.