A developer named Lukas Vogel has managed to render Doom using an SQL database, a project he calls SQLDoom. The setup uses a small Python client to handle input, output, and frame display, while a series of CedarDB tables track game geometry and state. About 1,300 lines of SQL queries across 89 common table expressions implement the game logic and generate 35 bitmap framebuffers per second.
Converting Doom's WAD files into a relational database was straightforward because the original game already breaks levels into vertices, lines, and sectors. Vogel also found that Doom's binary-space partition trees could be represented in SQL using a pre-computed sort key, allowing a simple ORDER BY statement to determine which wall segments to draw each frame. The main difficulty was rendering floors and ceilings, which required a "pretty hacky" replacement for the original game's column-based visplane approach.
Despite the overhead of reading and writing to SQL tables, Vogel achieved around 60 fps on a Ryzen 7 laptop, with occasional drops to 35 fps in busy scenes. He also notes that the database's reference snapshots and concurrency controls help avoid partial updates or physics disagreements in multiplayer. The code is available on GitHub, and a free online demo is hosted for those who want to try it without local setup.