From Ars Technica · · 1m 40s
Doom now runs inside an SQL database
A developer rendered the classic shooter using database queries, achieving 60 fps with full-color graphics.
In brief
A developer rendered the classic shooter using database queries, achieving 60 fps with full-color graphics. Lukas Vogel built SQLDoom, a working version of Doom that runs inside an SQL database using Python for input and output, generating thirty-five bitmap framebuffers per second. Originally reported by Ars Technica.
Doom rendered in SQL
Lukas Vogel built SQLDoom, which renders the classic shooter using an SQL database. A Python client handles input, output, timing, and display while CedarDB tables track game geometry and state.
“Rendering Doom in a database is obviously a bad idea”
How it works technically
About one thousand three hundred lines of S Q L queries spread across eighty-nine common table expressions implement the game logic and generate thirty-five bitmap framebuffers per second at full-color six hundred forty by four hundred eighty resolution.
Better than the last attempt

Vogel's previous DoomQL project generated grayscale A S C I I graphics similar to Wolfenstein three D. SQLDoom improves on this by generating full-color frames that look like they came from the original Doom executable.
Converting Doom to database

Doom's classic W A D files converted to a relational database relatively simply because the original game broke levels into vertices, lines, and sectors. Binary-space partition trees use a sort key pre-computed for each position at load time.
Performance and multiplayer benefits
SQLDoom runs at about sixty frames per second on a Ryzen seven-powered laptop, with occasional dips to thirty-five fps for busy scenes. The database's reference snapshot of game state offers benefits for multiplayer servers.
“no partially applied updates, physics bugs, or disagreements over whether the rocket actually hit”
How to try it yourself
The code is available on GitHub with CedarDB and a Doom W A D file. A free online hosted demo match is also available, though performance varies depending on your connection and system.
The takeaway
Lukas Vogel built SQLDoom, a working version of Doom that runs inside an SQL database using Python for input and output, generating thirty-five bitmap framebuffers per second.

