Ciro Durán Un archivo vivo

Postmortem de Cosmos

Gameplay de Cosmos

Participé en el pasado Caracas Game Jam 2022 (online) haciendo un videojuego. En esta ocasión decidí utilizar PICO-8, una consola de fantasía (he escrito sobre esto en El Chigüire Literario). Al final del evento presenté Cosmos, un juego para dos jugadores cuyo objetivo es construir un planeta manteniendo varios elementos juntos en el mismo lugar, empleando las fuerzas de atracción y repulsión del sol y la luna. Se puede jugar en el navegador o descargándolo desde esa página.

Escribí código con Lua y utilicé las herramientas internas de PICO-8 para hacer el arte, música y sonido del juego. En PICO-8, todo esto va para el mismo archivo. Para escribir el código utilicé Visual Studio Code con una extensión para subrayar la sintaxis. Así, VSCode ocupa media pantalla, y PICO-8 ocupa la otra mitad. Una vez hechos los cambios en VSCode, paso a PICO-8, presiono CTRL-R y la plataforma lee nuevamente el archivo y agarra los cambios.

Un asunto que tuve constantemente y que supongo se debe a la falta de costumbre: cuando haces cambios en PICO-8, ej. sonido, música, sprites, mapas, tienes que guardar el archivo antes de continuar haciendo cambios en el código con VSCode. Si se te olvida, y haces cambios en Code, cuando haces CTRL-R PICO-8 detecta que hubo cambios en el archivo y en el programa, y se niega a abandonar tus cambios en PICO-8. Esto no es un problema, de hecho es algo bueno. No es crítico al final, porque cuando guardas en PICO-8 automáticamente se muestra el cambio en Code, y puedes hacer Undo, copiar las cosas que habías hecho, Redo, y aplicar los cambios donde sea apropiado. Pero es algo de lo que hay que estar pendiente, es mejor evitar hacer cambios en ambos programas al mismo tiempo.

Creo que el formato de texto plano del archivo lo hace ideal para colaborar, e.g. una persona puede hacer los sprites/mapas, otra hace música/sonido, y se hace merge de todo a través de un repositorio git. Esto no lo probé porque trabajé solo, pero creo que un setup así es posible.

Los sprites son de 16 colores, y 8x8 en su tamaño mínimo. La paleta de colores por defecto de PICO-8 es muy bonita, y la puedes cambiar si quieres. Lua como lenguaje de programación: ya lo he usado antes y estoy consciente de sus preferencias (ej. arreglos que comienzan por 1 y no por 0, declarar arreglos y tablas, etc.), Lua para PICO-8 tiene unas ligeras diferencias de la implementación standard (ej. las funciones trigonométricas van de 0..1 y no en radianes o grados), pero la documentación oficial es fenomenal, y hay un cheat sheet que también fue extremadamente útil.

Manual oficial: https://www.lexaloffle.com/dl/docs/pico-8_manual.html
Cheat sheet: https://wh0am1.dev/pico8-api/

La parte de sonido fue mi momento más flojo del proceso, pues era realmente la primera vez que lo utilizaba. Aún así, fue relativamente sencillo hacer la música y entender cómo funciona el sistema. Si hubiese tenido más tiempo hubiese podido escribir el código para que la música cambiase al tempo. La plataforma te ofrece esos datos, pero la llamada de música es super simple y hay que escribir más codigo para este caso.

Me gustaría seguir explorando PICO-8 para otras cosas. Permite hacer llamadas al puerto Serial y al GPIO, lo que lo hace candidato para trabajar con Arduino y Raspberry Pi, me gustaría explorar esa parte un poco más.