Cinco niveles en 3D y un jefe final, dentro de 64K

Texturas, laberintos, monstruos, fuego y música: nada de eso está guardado en el archivo. Se guarda la receta y el ordenador lo fabrica al arrancar.

Cada casilla es 1 KB. Las 64 juntas son el límite de 65.536 bytes.

Con teclado: haz clic en el juego. Flechas o WASD para moverte, Q y E para andar de lado, barra espaciadora para disparar a lo que esté en la cruceta.

Niveles (se desbloquean al superarlos):

Qué pasa en cada nivel

NivelNovedadCómo se consigue sin guardar nada
1Recoger 6 cristalesEl laberinto sale de un número; el cristal es la condición “|u| + |v| < 1”
2Monstruos que te persiguenEl dibujo es un círculo con ojos y dientes hecho con tres comparaciones. Te encuentran con una “mancha de aceite” que se extiende desde tu casilla
3La luz se apaga 4 segundosUn solo número, la luz, multiplica todos los colores. Los ojos no se multiplican y por eso brillan
4El fuego entra por el esteUna sola variable dice hasta qué columna ha llegado. Las llamas son un triángulo que tiembla con un seno
5Jefe final en sala abiertaSe mueve siguiendo dos senos, sus pinchos son otro seno alrededor del círculo, y cada cristal pegado es un rombo más en la misma fórmula

En el nivel 5 los cristales del suelo son tu munición: recógelos y lánzaselos. Cuando tenga 12 pegados, ganas.

Dónde está el truco

Guardar el procedimiento ocupa mucho menos que guardar el resultado. Una textura de 64×64 son 4.096 píxeles; la fórmula que la genera son unos 100 caracteres. Un monstruo dibujado a mano sería una imagen de varios KB; aquí es una función de seis líneas, y además se anima sola. La música sería un MP3 de 1 MB; aquí es una fórmula que elige la nota siguiente.

Qué hace además una intro 64K de verdad

Las producciones de la demoscene (o .kkrieger, un shooter 3D completo en 96 KB) son ejecutables de Windows, sin navegador que les haga el trabajo. Usan la misma idea y le añaden tres cosas: un compresor de ejecutables (Crinkler, kkrunchy), sombreadores que calculan la imagen en la tarjeta gráfica, y un sintetizador propio para la banda sonora. Este ejemplo hace una pequeña trampa: el navegador ya trae el dibujo y el audio.

El código completo

Esto es todo lo que se está ejecutando arriba, con cada sección comentada.