Lukas Vogel escribe en una extensa publicación de blog explicando cómo logró renderizar Doom usando una base de datos SQL. El proyecto SQLDoom utiliza un pequeño cliente Python para manejar la entrada y salida, controlar el tiempo del juego y mostrar cada fotograma. Detrás de eso, una serie de tablas Cedar DB rastrean la geometría y el estado del juego, mientras que alrededor de 1300 líneas de consultas SQL en 89 expresiones de tabla comunes implementan la lógica del juego y generan 35 búferes de trama de mapa de bits por segundo.
SQLDoom es una mejora significativa respecto al proyecto anterior de Vogel, Doom QL, que construyó "un shooter multijugador similar a Doom completamente en SQL" pero terminó con gráficos ASCII en escala de grises. El nuevo SQLDoom genera fotogramas a todo color de 640×480 que se asemejan al ejecutable original de Doom.
Convertir los archivos WAD clásicos de Doom a una base de datos relacional fue sencillo, dice Vogel, porque el juego dividía los niveles en vértices, líneas y sectores. Los árboles de partición de espacio binario de Doom se pueden descomponer en SQL usando una sort_key precalculada para cada posición. Con esto, una simple declaración "ORDER BY" determina qué partes de las paredes mostrar en cada fotograma.
Entidades clave: Empresas: Ars Technica | Personas: Lukas Vogel
Preguntas frecuentes: ¿Cómo renderiza SQLDoom fotogramas usando una base de datos?
SQLDoom usa un cliente Python para entrada y visualización, mientras que las tablas Cedar DB almacenan geometría y estado. Alrededor de 1300 líneas de consultas SQL en 89 CTE generan 35 búferes de trama de mapa de bits por segundo, usando ORDER BY con claves de orden precalculadas para un renderizado eficiente.
Fuente: Ars Technica · Resumido por HeadlinesBriefing