In a recent technical deep-dive, developer Lukas Vogel detailed the complex process of rendering the classic game Doom using an SQL database. While acknowledging that utilizing a database for graphics rendering is an inefficient approach, Vogel demonstrated that it is technically feasible through his SQLDoom project.
The implementation relies on a lightweight Python client responsible for managing input, output, game timing, and frame display. The core logic, however, resides within CedarDB tables, which store game geometry and state. Approximately 1,300 lines of SQL queries, distributed across 89 common table expressions, execute the game mechanics and produce 35 bitmap frames per second.
This latest effort marks a substantial advancement over Vogel’s 2025 project, DoomQL. That earlier experiment aimed to create a multiplayer Doom-like shooter entirely in SQL but resulted in raycasting-based, grayscale ASCII graphics resembling the simple maps of Wolfenstein 3D. In contrast, SQLDoom generates full-color 640×480 frames that closely mimic the visual output of the original Doom executable.
This is the most ‘developer solving a problem that does not exist’ project I have seen all year. Love it.
So, it runs Doom… in a database. Does it at least hit the original frame rate or is it a slideshow?
I remember DoomQL. The jump to full color at 640×480 is genuinely impressive. How does the latency feel during gameplay?
Eighty-nine CTEs? That is wild optimization for a purpose that does not require it. Brilliant and completely useless.