Canarias Go Retro: PICO-8, un creador de videojuegos retro

lunes, 11 de julio de 2022

PICO-8, un creador de videojuegos retro

 PICO-8 es una consola virtual, un entorno de desarrollo, una comunidad y una plataforma de distribución todo en uno, veámoslo por partes para comprenderlo mejor. Pero antes de meternos al lío, un poco de historia...

Página web de PICO-8, con algunos cartuchos para jugar. Yo he elegido echarme
una partida al Masters of The Universe, de TheRoboZ.

Lexaloffle es una compañía creada por Joseph White, responsable de PICO-8 y Voxatron. Empieza como Jazz Software en el dormitorio (bedroom coder) de Joseph en 1993, en Nueva Zelanda. Durante años, se dedica a la programación y distribución de juegos para el sistema operativo MS-DOS.

Años más tarde, y después de pasar por varios trabajos, Joseph crea Lexaloffle para desarrollar sus dos productos: PICO-8 y Voxatron (de la cual no hablaré en este artículo).

¿Cómo es eso de que PICO-8 es una consola virtual?

 Pues sí amigos, no hace falta que vayan corriendo a romper la hucha para comprarse la consola y poder jugar porque la consola NO EXISTE. Como decía más arriba, se trata de una consola virtual, podemos acceder a ella online o descargarla. Si decidimos jugar online, basta con acceder a la página web de PICO-8, seleccionar el cartucho que queremos jugar y ponernos a ello sin más. Con esta opción solamente podemos jugar a los juegos.

Si por el contrario queremos descargar el editor, sí que tendremos que acudir a la hucha, pero no se preocupen, porque está a la venta por algo menos de 15 € (14,99 $) y disponible para Windows, MacOS, Linux y Raspberry PI.

Por algo menos de 15 € podemos descargarnos PICO-8 para varias plataformas. Oiga, que me lo quitan de las manos oiga......
Ahora viene la pregunta básica de rácano, pero si tengo la consola disponible gratuitamente, ¿para qué quiero tenerla offline, y encima gastarme dinero? Fácil, te interesa si quieres hacer algo más que jugar. Si eres como yo, y siempre te ha llamado la atención la programación de videojuegos (y sobre todo no tienes ni idea de programar), este framework (¿podemos llamarlo así?) te viene genial.

Lo que podemos hacer con PICO-8 (comprado)

Podemos jugar a juegos programados por otros usuarios de forma gratuita, podemos ver todo el código de esos juegos (los juegos no se distribuyen compilados, por lo que podemos ver la programación, los sprites y los sonidos)

Podemos crear nuestros propios juegos (o programas) con el editor, ya que tiene integrado un entorno de programación completo con un editor de sprites, de mapas y de sonidos. Es decir, no tendremos que salir de PICO-8 para programar un juego de principio a fin.

Lo último de Lexaloffle: Education Edition.

La compañía a sorprendido a toda la comunidad creando una versión online para educación. Para usar esta versión de PICO-8 (gratuita) no hace falta registrarse en ningún sitio, lo que lo hace ideal para profesores que quieran trabajar programación en el aula. Se accede desde el siguiente enlace y funciona casi casi igual que PICO-8 en su versión paga, salvo que no se pueden explorar juegos con el comando SPLORA.

Todas las capturas de pantalla que se ven en este artículo, han sido creadas con PICO-8 Education Edition.

PICO-8 nada más iniciarse nos da la bienvenida con el editor de código.

Los juegos programados en PICO-8 usan el lenguaje de programación Lua, un lenguaje bastante asequible para negados, muy parecido al BASIC. Cuando iniciamos el programa, la primera pantalla que vemos es el shell, aquí podemos ejecutar comandos como:

  • LS (hace un listado de los archivos y directorios)
  • CLS (borra la pantalla)
  • SAVE (guarda el juego que estamos haciendo en el editor)
  • LOAD (carga un juego)
  • HELP (ayuda)
  • SPLORA (abre un explorador de juegos -sólo la versión paga-)
  • INSTALL_DEMOS (instala algunos juegos DEMO)
  • MKDIR (crea un directorio)
  • CD/CD.. (entra/sale de/en un directorio)
  • RUN (ejecuta el juego)

Si queremos cambiar entre el shell y el editor de juegos, pulsaremos la tecla ESC de nuestra teclado, cuando acabemos de dibujar o programar, pulsaremos la tecla ESC nuevamente para volver al shell y ejecutaremos el programa con el comando RUN.

El editor de sprites, podemos dibujar con una paleta de 16 colores y sprites de 16x16 píxeles.

El editor de sprites es muy sencillo de usar, lo más difícil es controlar el arte de dibujar con píxeles como nuestro amigo y compañero @AlmightyGod. Si son unos negados como yo para dibujar, no nos queda más remedio que practicar y practicar, o copiar sprites de sitios como itch.io.

El editor de mapas es muy similar al editor de sprites. Una vez que hayamos creado un sprite de un ladrillo (por ejemplo) lo podemos ir pegando en el mapa para formar un laberinto, por ejemplo.

Imaginemos que queremos hacer un juego en el que un personaje tiene que recorrer un laberinto de ladrillos hasta la salida, crearíamos primero el sprite del ladrillo en el editor de sprites y luego, con ese sprite seleccionado, ir pegándolo para formar el laberinto.

Ladrillo de 16x16 píxeles.

Laberinto creado con el sprite del ladrillo.

Volvamos al editor de sprites para crear un personaje, una llave y un cáliz. Estos elementos serán fundamentales para tener un objetivo en el juego.

Nuestro héroe será el sprite #2, mientras que la llave y el cáliz serán en 3 y 4 respectivamente.

Una vez creados todos nuestros sprites, mapas, música y efectos de sonido, podemos empezar con la tarea más interesante, darle vida a todo programando en el editor incluido. Normalmente los juegos se empiezan programando con 3 funciones básicas (una función es un pedazo de código que podemos volver a reutilziar más adelante, cuando queremos ejecutar todo ese código, llamamos a la función sin tener que reescribir de nuevo todo el código que contiene):

  • Función inicial (INIT)
  • Función actualizar (UPDATE)
  • Función dibujar (DRAW)

Cada vez que iniciemos una función y escribamos el código que tiene que ejecutar, debemos terminarla con el comando END.

Llegados a este punto, es buena práctica cuando estemos programando, escribir el tipo de función que deseamos y cerrarla para no olvidarnos, luego volvemos con el scroll arriba y escribimos el código tabulado, esto indica que ese código es hijo (child) de la función, que es su padre (parent).

FUNCTION _INIT()

END

FUNCTION _UPDATE()

END

FUNCTION _DRAW()

END

 Dentro de la función INIT escribiremos todo lo que queremos inciar cuando se empiece a ejecutar el programa, como por ejemplo las variables. En Lua se comenta con dos guiones y en PICO-8, curiosamente, no se puede escribir en minúsculas.

Dentro de la función UPDATE irá todo el código que queremos ejecutar durante el juego, como por ejemplo, los movimientos de nuestro héroe, el movimiento de los enemigos, la puntuación, el tiempo, etc...

 Dentro de la función DRAW dibujaremos nuestro mapa y sprites.

El código dentro de PICO-8
Si queremos practicar con tutoriales o incluso ver una hoja de ayuda con los comandos del lenguaje de programación, podemos visitar la página web de PICO-8. En este artículo no profundizaré más. Ya tenemos un mapa, un personaje que se mueve por la pantalla, pero falta mucho más: una detección de colisiones, música y efectos de sonido. Podemos ir mejorando poco a poco programando animaciones de los personajes y creando enemigos. La tarea de crear un videojuego es lenta, pero muy gratificante.

Enlaces de interés (para seguir avanzando)

 One last tip...

Como dato curioso, comentar que estando en el juego, podemos salvar una captura de pantalla de nuestro juego pulsando la combinación de teclas CTRL-7 y luego, en el shell, guardar nuestro juego con el comando SAVE NOMBREJUEGO. PICO-8 creará un cartucho con la imagen de la captura. Si este cartucho lo guardamos y lo arrastramos a PICO-8, cargará el juego.
Nuestro juego, listo para comercializarse.




2 comentarios:

Mc nolo dijo...

Gran artículo Airam, ideal para aquellos que no hemos programado nunca pero les pica la curiosidad

acoding.academy dijo...

Dominar la programación móvil es un tesoro profesional. Abre puertas a la innovación, creación de apps únicas y oportunidades de carrera en un universo tecnológico en constante expansión.