A estas alturas, el ejecutar el clásico de ID Software en dispositivos que jamás nos imaginamos que fuera posible ya ha dejado de ser un meme o hasta algo humorístico. Es un desafío hasta cierto punto comparable a las ''no hit runs'' o los ''speedrun'', aunque en este caso se requiere de una pericia en informática encomiable, ya que no es tan fácil conseguir que el juego funcione en ciertos sistemas.
Por ejemplo, el port TypeScrypt para Doom, para el que necesitariamos 90GB de RAM y casi 200TB y ''jugar'' su primer nivel nos llevaría décadas. Ahora, nos llega una nueva ''versión'' de las andanzas del ''Doomguy'' -o al menos una basada libremente en la experiencia original de Carmack y Romero- que tiene la particularidad de haber sido comprimida enteramente en un código QR: Backdooms.
¿El primer Doom en HTML y QR?
Si bien no puede decirse que estemos hablando de una recreación 1:1 de Doom en este tipo de lenguaje, sí que es cierto que la idea original de su creador, -Kuber Mehta A.K.A 'kuberwastaken'- era intentar trasladar el juego a este tipo de código, pero había una serie de limitaciones. El primero es que, por ejemplo, sólo el 'sprite' de la ametralladora que usamos en el juego original pesa 1.2KB, y la capacidad máxima de un código QR es de 3KB, poco más del doble de lo que pesa dicho ''sprite'' en el código.
Sin embargo, tirando de mucha inventiva y pericia técnica, Mehta pensó que podía prescindir de algunos elementos para hacer su ''versión'' de Doom: La primera y más obvia era descartar el uso de un motor; todo debería funcionar en base a lenguaje HTML y JavaScript; la segunda era que no podría generar sprites de gráficos, todo debería construirse en base al código que estaba programando, sin añadir nada; finalmente, tampoco podía emplear librerías de datos para intentar aprovechar hasta el último bit de espacio que el código QR podía soportar.

¿La solución? Miniaturización extrema del código. Tal y como postea en Github, primero consiguió compilar una suerte de código HTML que cupiese en el QR, y detalla las líneas de código que se lo permitieron. Con el problema del espacio solucionado, ahora le tocaba enfrentarse al segundo escollo, la generación de mapas.
Para este caso, optó por un sistema de ''semillas'' con el que generar los entornos, pero la representación de estos podría haber sido complicada, y no habría dado para mapas muy grandes. Aquí tiró de picardía, empleando efectos 3D simulados mediante raycasting (una variación de la técnica empleada en el Doom original). Esto le permitió obtener mapeados más grandes y que no fueran minimalistas, mediante distancias de dibujado que simulasen un espacio mayor del que había en realidad (explicado de forma muy simplificada, de nuevo, en el documento se especifica mejor).
En cuanto a los enemigos, también fue un desafío, ya que aunque se pudieran comportar como los de un FPS tradicional, sus acciones estaban muy limitadas. Para compensar eso, se le ocurrió que podía generar más aunque fueran más simples, dando la sensación de que había muchos y fuese complicado avanzar.
Con todo, el código de su programa pesaba 3.4KB, necesitaba comprimirlo. Con ayuda de algunos chatbots descubrió una herramienta conocida como DecompressionStream. Se trata de una WebAPI presente en cualquier navegador actual. Funciona traspasando Streams de Datos en vez de compresiones brutas de archivos como WinRAR o Zip.
Consiguió reducir el peso de su ''Doom'' a sólo 2.9KB, y gracias al uso de esta herramienta de compresión ahorró parte del peso que habría requerido ''traducir'' el juego a un entorno visual en un dispositivo. En el caso de que queráis probarlo vosotros mismos, la portada de este artículo contiene el código QR que almacena todo este programa.
En 3DJuegos PC | Es de lo mejor y más creativo del género cozy hecho en España. No dejes escapar The Cosmic Wheel Sisterhood a mitad de precio
Ver 0 comentarios