Alguien ha introducido Doom dentro de una base de datos SQL, y en realidad funciona. Lukas Vogel, el desarrollador detrás del proyecto, llama al resultado SQLDoom, y renderiza fotogramas a todo color a 35 fotogramas por segundo utilizando solo consultas SQL. La configuración es absurdamente literal: la geometría del juego, el estado y la lógica de renderizado residen todos en tablas, con aproximadamente 1,300 líneas de consultas SQL distribuidas en 89 expresiones de tabla comunes que hacen la mayor parte del trabajo.
El proyecto es una secuela directa del DoomQL anterior de Vogel, que intentó construir «un shooter multijugador similar a Doom completamente en SQL». Ese experimento produjo gráficos ASCII en escala de grises basados en el raycasting que se parecía más a los mapas con ángulos de 90 grados de Wolfenstein 3D que a cualquier cosa que se pareciera a la apariencia real de Doom. SQLDoom, por el contrario, genera fotogramas a todo color de 640×480 que podrían pasar por la salida del juego original.
Cómo funciona SQLDoom
El sistema no es puramente SQL. Un pequeño cliente de Python se encarga de la entrada y la salida, controla el tiempo del juego y muestra cada fotograma en la pantalla. Detrás de esto, una serie de tablas de CedarDB rastrea la geometría y el estado del juego. Las consultas SQL se encargan del renderizado, generando 35 búferes de fotogramas de mapa de bits por segundo.
El proceso de conversión fue relativamente simple, escribe Vogel, debido a la forma en que Doom divide los niveles en vértices, líneas, sectores y así sucesivamente. Incluso los famosos árboles de partición de espacio binario de Doom pueden descomponerse en SQL utilizando una clave de ordenación para los objetos que se precalcula para cada posición en el momento de la carga. Con eso configurado en su tabla, una simple declaración «ORDER BY» determina qué partes de las paredes mostrar y cuáles ignorar, mejorando significativamente el rendimiento.
El cliente de Python se limita a manejar la entrada/salida y la visualización. Todo lo demás — la geometría, el estado y la lógica de renderizado — reside en la base de datos. Las consultas son el motor, y el cliente de Python es solo el conductor.
De DoomQL a SQLDoom
La comparación entre los dos proyectos es instructiva. DoomQL fue un intento de reconstruir todo el motor del juego en SQL, incluyendo soporte para multijugador. El resultado fue una prueba de concepto que funcionó, pero fue fea. SQLDoom toma un enfoque diferente: utiliza SQL para el renderizado y el seguimiento del estado, pero se apoya en Python para todo lo demás.
| Proyecto | Renderizado | Gráficos | Rendimiento |
|---|---|---|---|
| DoomQL | Solo SQL | Grisáceo ASCII | De baja calidad |
| SQLDoom | SQL + Python | A todo color 640×480 | 35 fotogramas por segundo ) |
La tabla muestra el cambio claramente. DoomQL fue una prueba de concepto que funcionó, pero era fea. SQLDoom es una prueba de concepto que se ve bien. )
Por qué SQL es la herramienta correcta aquí )
La clave está en que la geometría de Doom ya está estructurada como una base de datos. Los niveles se construyen a partir de vértices, líneas y sectores. Los árboles de partición del espacio binario pueden traducirse en una clave de ordenación que la función «ORDER BY» de SQL puede usar de manera eficiente. )
Esto significa que la base de datos está realizando la mayor parte del trabajo. Cada fotograma se genera consultando las tablas de geometría, ordenando los elementos visibles y renderizando el resultado. El cliente de Python maneja la entrada/salida y la visualización, pero el renderizado real lo realiza SQL. )
Las consultas de SQL no son solo una novedad. Son el motor de renderizado. El cliente de Python es la interfaz de usuario. La base de datos es el juego. )
Qué significan los números )
Los números cuentan la historia. Aproximadamente 1,300 líneas de SQL en 89 expresiones de tabla comunes impulsan todo el pipeline de renderizado. Es mucho código, pero también es un logro notable. La cifra de 35 fotogramas por segundo es notable porque proviene únicamente de las consultas de SQL. )
El proyecto logra algo genuinamente novedoso: un motor de renderizado de Doom totalmente funcional que vive completamente en SQL. El cliente de Python maneja los bordes, pero el corazón del renderizado es puro SQL. )
Los límites prácticos )
SQLDoom es una demostración, pero muestra lo que es posible. Requiere una base de datos, un entorno de Python y la disposición de observar SQL sin procesar durante horas. El predecesor ASCII demostró que el concepto era posible. SQLDoom demuestra que puede ser hermoso. )
El proyecto también es un recordatorio de que las herramientas que utilizamos no están fijas. Los juegos se construyen a partir de datos, y los datos se pueden consultar. La brecha entre un juego y una base de datos es menor de lo que parece. )
Por Qué Esto Importa )
El proyecto es una curiosidad técnica, pero también tiene valor práctico. Demuestra cómo los activos de juego existentes pueden ser reutilizados para nuevas plataformas. Un archivo WAD contiene datos de nivel, y SQLDoom demuestra que esos datos pueden ser mapeados a un esquema de base de datos.
Las cifras de rendimiento son modestas según los estándares modernos, pero el proyecto logra algo genuinamente novedoso: un renderizador de Doom completamente funcional que vive enteramente en SQL. El cliente de Python maneja los bordes, pero el corazón del renderizado es SQL puro.
El Dictamen )
SQLDoom es un truco inteligente, y funciona. El proyecto de Vogel toma un juego que fue construido para la velocidad y lo reconstruye como una consulta de base de datos literal, y el resultado se mantiene unido. El rendimiento es constante, y la tecnología subyacente es genuinamente inusual.
El proyecto es un recordatorio de que la creatividad en el software a menudo proviene de direcciones inesperadas. Vogel llevó SQL al punto en que el juego se renderiza a sí mismo a partir de consultas.
El resultado es un renderizador de Doom funcional que se ejecuta en SQL, y eso vale la pena celebrarse en sus propios términos.
Material fuente: “Alguien metió Doom en una base de datos SQL,” Ars Technica.
Recibe El Cuaderno.
Las mejores historias del día y cada veredicto nuevo, en español claro, en tu correo a las siete. Un correo al día, nada más.

