Un shoot 'em up completo en un ejecutable de Windows de 3 kB mediante una máquina virtual de bytecode a medida

Fuentes: Making a game on a custom bytecode VM in 7 days and 3kB

Laurent Le Brun presenta el proyecto shmup8, un juego de tipo shoot 'em up desarrollado en siete días para la game jam Langjam, cuyo ejecutable final para Windows ocupa apenas 3 kB. El reto consistía en crear un lenguaje de programación y emplearlo para construir un juego. La clave de la reducción de tamaño fue integrar una pequeña máquina virtual de bytecode personalizada, escrita en C++, y delegar toda la renderización gráfica en un único píxel shader GLSL a pantalla completa. La lógica del juego se compila desde un lenguaje con sintaxis similar a C a un bytecode minimalista cuyo único tipo de dato es float32; no hay pila, registros ni etiquetas de tipo, lo que mantiene el intérprete y el bytecode ligeros. Las constantes entre 0 y 255 se almacenan en un byte y el resto de valores en dos bytes mediante un truco de empaquetado de números en coma flotante. El ejecutable se comprimió con Crinkler y el shader se minificó. El flujo de trabajo se basó en live coding: el compilador vuelca bytecode a un archivo y el binario en C++ lo recarga en cada frame, mientras el shader también se recarga al editarlo. Así fue posible iterar sobre el juego sin recompilar C++. En el plano jugable, shmup8 es infinito: arranca con tres enemigos y suma uno cada siete segundos, con tres tipos de enemigos y un sistema basado en teletransporte al impactarles, lo que simplifica el código. La duración por partida se sitúa entre 30 y 60 segundos. El artículo compara además el tamaño del bytecode frente a una versión equivalente en C++ para evaluar si la máquina virtual aporta de verdad una ventaja. El código fuente está disponible en GitHub y el juego puede probarse en itch.io.