A lo largo de los más de 40 años que llevamos viendo todo tipo de videojuegos, hay algunos que destacan sobre los demás y los recordamos como juegos clásicos. DOOM se consideraría uno de estos, pues esta saga lleva décadas con nosotros y aunque seguimos recibiendo entregas más modernas, es el primer juego el que lo llevó al éxito. Ese juego de DOOM de principios de los años 90 no solo fue toda una innovación en su día, sino que se sigue usando a día de hoy para algo muy particular y ciertamente meme: hacer ports a todo tipo de dispositivos y formatos. En esta ocasión, nos toca hablar de un port de DOOM que es tan absurdo como impresionante, pues se puede "jugar" desde TypeScript Types con una auténtica barbaridad de líneas de código y requisitos absurdamente altos.
Cuando el primer juego de DOOM salió en 1993, este se trataba de un juego de disparos en primera persona que donde más destacó fue en los gráficos y animaciones. Estamos hablando de una época donde prácticamente todo era en 2D y DOOM se diferenciaba del resto de juegos por tener gráficos en 3D y otras funciones como juego online y mods. Fue un juego muy popular, pues vendieron más de 10 millones de unidades y recibió numerosas versiones para todo tipo de dispositivos y consolas, como la llegada a la Game Boy Advance en 2001, a la Sega Saturn en 1997 o a la PS1/SNES en 1995.
Crean un port de DOOM con Types en TypeScript y funciona a 0,0000009645 FPS, es decir 1 FPS cada 12 días
Si bien tenemos más de 10 versiones distintas de forma oficial, donde más sorprende DOOM es en el hecho de que tiene ports a todo lo que puedas conocer. No estamos exagerando cuando decimos que se han hecho ports que parecen absurdos, pues se ha podido jugar a DOOM en una calculadora, sin Windows directamente en la BIOS, en una cámara, en un tractor y hasta en el bloc de notas de Windows o incluso en el teletexto de una TV vieja. Tras haber visto auténticas locuras en cuanto a ports de DOOM, ahora tenemos uno más que es incluso más absurdo, pues estamos hablando de hacerlo funcionar en el programa TypeScript con el tracker Types, haciendo que funcione a nada menos que 0,0000009645 FPS a una resolución de 320 x 200 píxeles. Sí, está lejos de conseguir siquiera 1 FPS, por lo que olvídate de que funcione en tiempo real.
De hecho, el YouTuber indica que para poder compilar a través de Types ha tenido que tardar 12 días para conseguir un solo frame, algo que pensaba que no iba a funcionar. La razón por lo que ocurre esto es muy sencilla y es que este proyecto realizado por el ingeniero de software Dmitri Mitropoulos, ha requerido escribir 3,5 billones de líneas de código (types) dejando este port con un tamaño de nada menos que 177 TB, si otra cifra que parece que es un error pero es real.
Pide 90 GB de RAM y ocupa 177 TB el código y sin optimizar habrían sido 1,25 PB

Para poder conseguir un mísero frame se deben ejecutar 20 millones de instancias de types y todo esto pide un hardware de la NASA, pues necesitaremos 90 GB de RAM. El ingeniero de software ha estado trabajando durante un año en este proyecto de hacer un port de DOOM para TypeScript con Types. A pesar de su esfuerzo, ya hemos visto que está lejos de ser jugable, pero el ingeniero cree que se puede optimizar mucho más. De hecho, opina que en lugar de tardar 12 días para un solo frame el tiempo podría reducirse a "únicamente" de 1 a 12 horas.
Este trabajo titánico de un año entero ha requerido hacer herramientas propias, aprender C, C++, WebAssembly y realizar nada menos que 12.364 pruebas de código a mano. El ingeniero asegura que esta es la mayor base de código de TypeScript de la historia y es que resulta que antes de realizar la optimización actual, calculó que el proyecto podía ocupar hasta 1,25 PB (Petabytes).
https://elchapuzasinformatico.com/2025/02/doom-typescript-types-port/