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.
Qué pasa en cada nivel
| Nivel | Novedad | Cómo se consigue sin guardar nada |
|---|---|---|
| 1 | Recoger 6 cristales | El laberinto sale de un número; el cristal es la condición “|u| + |v| < 1” |
| 2 | Monstruos que te persiguen | El 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 |
| 3 | La luz se apaga 4 segundos | Un solo número, la luz, multiplica todos los colores. Los ojos no se multiplican y por eso brillan |
| 4 | El fuego entra por el este | Una sola variable dice hasta qué columna ha llegado. Las llamas son un triángulo que tiembla con un seno |
| 5 | Jefe final en sala abierta | Se 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.