Developer Lukas Vogel has successfully rendered full-color gameplay of the classic shooter Doom inside CedarDB using roughly 1,300 lines of SQL. The project, named SQLDoom, produces 35 frames per second at 640×480 resolution with the help of a small Python client handling input and display.
Rendering a high-speed first-person shooter inside a relational database is obviously a bad idea,
as Vogel freely admits in a detailed technical breakdown of the build. Yet the experiment achieves what standard relational architectures were never designed to handle: live, playable retro graphics powered entirely by declarative queries.
How SQLDoom Turns Relational Tables Into Game Geometry
Translating the classic WAD files of the original game into a database format relies on how the source levels break down into geometric primitives. Relational tables track sectors, lines, and vertices, while binary-space partition trees are restructured into SQL using a pre-computed sort key assigned to each position during the loading phase.

With those sorting keys locked into the database tables, a basic ORDER BY statement figures out which wall segments belong on screen and which to discard during every single frame refresh. That single query optimization yields a massive performance boost over previous database rendering attempts.
From Grayscale ASCII to Full-Color 35 FPS Execution
The project represents a substantial leap forward from Vogel’s earlier DoomQL experiment, which debuted last year as an attempt to construct a multiplayer shooter entirely within SQL. That initial iteration relied heavily on raycasting, grayscale output, and simplistic ASCII graphics that felt more closely related to Wolfenstein 3D than the fluid motion of id Software’s milestone title.
SQLDoom discards the text-mode constraints in favor of full-color 640×480 framebuffers.
- CedarDB tables track game geometry and real-time state.
- Eighty-nine common table expressions contain the core game logic.
- Roughly 1,300 lines of SQL write out 35 bitmap framebuffers every second.
Why Database Engineers Are Paying Attention to Relational Limits
While no enterprise environment is preparing to deploy a database-native first-person shooter for daily operations, engine programmers and data architects view the stunt as a masterclass in stretching query planners to their absolute limits. The implementation provides clear insights into state representation, batch-processing efficiency, and the sheer volume of logic that can be offloaded directly into declarative pipelines.
The project shows that wildly unorthodox implementations often unearth clever solutions to familiar architectural problems. By forcing relational systems to process spatial geometry and game loops at 35 frames per second, the experiment tests the boundaries of data flow in ways standard benchmarks rarely capture.