Cómo construir un Doom-Like usando sólo Lenguaje SQL (o en Excel)
El juego de DOOM es un clásico entre los clásicos en el mundo del PC. Y es una referencia para muchos de nosotros cada vez que queremos probar algo con la tecnología de aquella época, especialmente porque John Carmack innovó y de qué manera en sus juegos, creando una nueva generación de juegos. Y hoy os quería hablar de otro vuelto de tuerca jugando a ser el máster en Lenguaje SQL creando un juego tipo DOOM.
El juego DOOM es el primero que me vino a la mente a mí cuando quería probar a ejecutar programas MS-DOS en iPhone, y fue con el que hice la prueba del emulador, como recordaréis, que os publiqué hace un año en el artículo: "Cómo jugar al DOOM de MS/DOS en iPhone & iPad (o cualquier otro DOS Game) con iDOS"
Figura 2: Jugando al Doom con GamePad o teclas
El DOOM también es el juego que utilizaron los investigadores de Google para demostrar cómo la IA podría crear Mundos Virtuales en tiempo real con GenAI, que luego usaron para lanzar Genie 3.0 y dejar impresionado al mundo, en el artículo:"Diffusion Models Are Real-Time Game Engines".
No es casualidad esto. Al final DOOM es un ejemplo de calidad de código, de innovación, de jugabilidad, de optimización de los algoritmos, y un montón más de excelencias, que usarlo como referencia es siempre muy atractivo.
DuckDB DOOM on the browser
En este caso, PatrickTrainer ha creado un juego tipo DOOM construido para jugar en el navegador, pero construido enteramente en Lenguaje SQL, y eso mola todo. Lo que ha hecho ha sido construir un mundo basado en caracteres ASCII almacenados con tablas SQL sobre la base de datos DuckDB que corre en el navegador usando las librerías WASM, para describir el mapa de un juego tipo DOOM, meter enemigos, marcados con la letra E y tener a un jugador moviéndose por el mundo, marcado con el carácter @.
Y por debajo, toda la representación en pantalla son ejecución de comandos del Lenguaje SQL que le permiten, utilizando Vistas, implementar el algoritmo Z-Buffer para poder tener la perspectiva del mapa desde el punto de vista del jugador, localizar a los enemigos, y disparar su proyectil (*).
Con que te bajes un el fichero Index.html y Demo.html podrás correr en cualquier sitio este juego, que como ejercicio de programación es maravilloso.
DOOMQL: Multiplayer
Y como suele suceder, una idea inspira otras ideas. En este caso Lukas Vogel ha publicado la semana pasada DOOMQL, un juego tipo DOOM, multiplayer, construido íntegramente con Lenguaje SQL en la base de datos CedarDB. Repito: multiplayer. Pero también a 30 Frames per Second y con menos de 200 líneas de código.
Tienes un artículo titulado: "DOOMQL: A DOOM-like multiplayer shooter in pure SQL" en el que explica en detalle todo el proceso, incluyendo el algoritmo de pintar el "3D", o el Raycasting para disparar los proyectiles. Mola todo, que además ha dejado publicados los cheat codes.
Como en el caso anterior, tienes todo el código disponible y documentado en el GitHub de este proyecto: DoomQL en GitHub. Todo son Tablas, Vistas y consultas en Lenguaje SQL. Te va a sorprender la simplicidad y elegancia del código final logrado por el programador.
Lenguaje SQL
Me han hecho especial cariño estos dos proyectos, porque como cuento siempre, yo entré en el mundo del hacking y la ciberseguridad casi de casualidad. Lo que yo sabía era programar, y especialmente mucho de bases de datos, que es en todo lo que me centré en mi vida. Os conté esa historia en el artículo de "El amo de lo datos".
![]() |
| Figura 8: Libro Hacking de Aplicaciones Web: SQL Injection de Enrique Rando y Chema Alonso |
Saber mucho de Lenguaje SQL hizo que cuado aparecieron las técnicas de SQL Injection yo pudiera jugar mucho con ellas. Time-Based Blind SQL Injection using Heavy Queries, Arithmetic Blind SQL Injection, Remote File Downloading using SQL Injection, Connection String Parameter Pollution, (Blind) LDAP Injection in Web Applications, WordPress in Paranoid Mode, WhatsApp Anti-Delete Protection Tool. Todo fue jugar con lo que había aprendido de bases de datos. Y de todo ello está escrito el libro de Hacking de Aplicaciones Web: SQL Injection (3ª Edición)
Bonus Track: Doom en EXCEL
No puedo escribir un artículo sobre como ser el máster de algo para hacer un proyecto como un juego de DOOM, sin hablar el trabajo que hizo c Bell hace ya muchos años para hacer un DOOM-Like en Excel sin utilizar VBA, que es una pasada.
Figura 9: Doom-Like en Excel
Y es que, si con Lenguaje SQL Se pueden hacer "locuras" con un EXCEL en las manos la cosa puede desmadrarse. De hecho, hay un MS Excel World Championship que se celebra en Las Vegas donde los expertos de Excel deben resolver problemas híper-complejos.
Este año debían resolver retos como este "Temple of the Golden Idol", para conseguir, sólo utilizando fórmulas de EXCEL que los animales resolvieran los laberintos.
Figura 12: Temple of the Goldem Idol (2)
Me encantan estas cosas. Son el tipo de PoCs & Hacks Just for Fun que tanto nos gusta, como cuando quisimos hacer el Copilot para AMSTRAD CPC 6128 con el objetivo de poder desarrollar programas den BASIC usando GenAI, o cuando conectamos el Apple Macintosh a la nube.. Simplemente por que mola todo.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)



DragonJAR
8.8 Chile
Ekoparty
e-Hack MX
AREA 51
Comunidad Dojo Panamá
ARPAHE SOLUTIONS 













No hay comentarios:
Publicar un comentario