Logran ejecutar el videojuego Doom en una base de datos SQL

Logran ejecutar el videojuego Doom en una base de datos SQL

Un desarrollador logra renderizar el juego Doom mediante una base de datos SQL

El desarrollador Lukas Vogel ha presentado SQLDoom, un proyecto diseñado para ejecutar y renderizar el videojuego Doom utilizando una base de datos relacional. Aunque el propio Vogel señaló en una publicación que renderizar este juego en una base de datos es “obviamente una mala idea”, la iniciativa demuestra la capacidad de procesar la lógica de un título interactivo mediante consultas de base de datos.

El sistema SQLDoom utiliza un pequeño cliente de Python para gestionar las entradas y salidas, controlar el tiempo del juego y desplegar cada fotograma en pantalla. Por detrás, una serie de tablas en CedarDB se encarga de rastrear el estado y la geometría de la partida.

Evolución técnica y generación de imágenes

La lógica interna de SQLDoom se ejecuta mediante aproximadamente 1.300 líneas de consultas SQL estructuradas en 89 expresiones de tabla comunes. Esta arquitectura permite procesar el funcionamiento del juego y generar 35 framebuffers de mapa de bits por segundo, produciendo imágenes a todo color en resolución de 640×480 píxeles que recrean la apariencia del ejecutable original.

El desarrollo supone una mejora considerable con respecto a DoomQL, el proyecto anterior que Vogel presentó el año pasado con la meta de construir un juego de disparos multijugador enteramente en SQL. En esa versión previa, los gráficos se limitaban a representaciones ASCII en escala de grises mediante raycasting, asemejándose a los mapas con ángulos de 90 grados característicos de Wolfenstein 3D.

Estructuración de datos y rendimiento

Según explica Vogel, la conversión de los archivos de datos WAD del juego original a una base de datos relacional resultó un proceso directo. Esto fue posible gracias a la manera en que el juego de los años noventa dividía sus escenarios en elementos como vértices, líneas y sectores.

Para manejar los árboles de partición espacial binaria mediante SQL, se utiliza una clave de ordenación identificada como sort_key para los objetos, la cual se calcula previamente para cada posición en el momento de la carga. Con esta clave almacenada en la tabla, una simple instrucción ORDER BY determina en cada fotograma qué fragmentos de las paredes se deben mostrar y cuáles se deben ignorar, elevando de forma significativa el rendimiento del sistema.

Leave a Reply