What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
For an original Doom port whose game logic and renderer run in SQL, the clearest documented route is SQLDoom on CedarDB. It needs CedarDB-specific functionality, Python for input and display, and a Doom IWAD. Other projects described as “Doom in SQL” run different things, so choose the one that matches your goal before installing anything.
What does “Doom in SQL” mean?
It can mean several different experiments, not one standard port. SQLDoom represents original Doom’s game logic and renderer in SQL. DOOMQL is a Doom-like raycasting game written around SQL simulation and pixel calculations. Turso’s demonstration runs Doom compiled to bytecode in a SQLite-derived virtual machine. The PostgreSQL project pg_doom exposes a C game core through a database extension.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
DOOM Eternal: Standard Edition - PlayStation 4 | $27.49 | Buy on Amazon |
| 2 |
|
DOOM: The Dark Ages – Xbox Series X | $31.49 | Buy on Amazon |
| 3 |
|
DOOM: The Dark Ages – PlayStation 5 | $65.45 | Buy on Amazon |
| 4 |
|
Doom - Xbox One | $26.99 | Buy on Amazon |
| 5 |
|
DOOM + DOOM II (Limited Run Games #144) - for Playstation 5 | $44.48 | Buy on Amazon |
The key question is what the database actually executes. A project can use SQL for game rules and image generation, or use a database as the runtime for compiled program bytecode, or simply connect a database to code written in C. Those approaches differ in fidelity, setup, and how literally they qualify as “Doom in SQL.”
| Project | What runs | What the database does | Practical fit |
|---|---|---|---|
| SQLDoom | Original Doom game logic and renderer | CedarDB runs SQL logic and rendering; Python handles timing, keyboard input, and display | Best documented option here for an original-Doom SQL implementation |
DOOMQL (petergpt/doomql) |
An original Doom-like raycasting game | SQLite calculates the simulation and RGB pixel values; Python transports input and terminal output | A more approachable SQLite experiment if an original Doom port is not required |
| Turso VDBE demonstration | Unmodified Doom compiled to VDBE bytecode | A Turso VM runs the bytecode in a long-lived statement and emits frame rows | Interesting as a database-VM experiment, but not ordinary SQL rendering the game |
pg_doom |
A Doom game core written in C | A PostgreSQL C extension exposes game input and screen functions | Relevant if the goal is integrating a C game core with PostgreSQL, not implementing it in SQL |
How SQLDoom turns game state into a picture
SQLDoom separates the game loop from the display loop. Its SQL logic retains Doom’s original 35 Hz game tic—the rate at which game state advances—while rendering can be requested separately. The author describes a complete 320 × 200 frame buffer represented through the SQL renderer. Python supplies timing and keyboard input, then displays the result; it is not where the game’s core logic or renderer live.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches#1 Best Overall
- Gain access to the latest demon-killing Tech with the DOOM Slayer's advanced praetor suit, including a shoulder-mounted flamethrower and the retractable wrist-mounted DOOM Blade
- Upgraded guns and mods, such as the Super shotgun's new distance-closing meat hook attachment, and abilities like the double Dash make you faster, stronger, and more versatile than ever
- You can't Kill demons when you're Dead, and you can't stay alive without resources. These tools are the key to your survival and becoming the ultimate demon-slayer
- A new class of (destructible) demon
- Battle mode is the new 2 versus 1 multiplayer experience built from the ground up at id software
The architecture is unusual because SQL is doing work normally assigned to a game engine: updating state, handling entities, and producing pixels. CedarDB’s author compares the SQLDoom implementation with the original C game logic, reporting about 5,900 lines of SQL for game logic versus about 9,000 lines of original C, plus about 1,300 lines of SQL for the renderer. These are author-reported implementation counts, not a measure of performance or a proof that the implementations contain exactly equivalent code.
Run SQLDoom on CedarDB
SQLDoom’s repository says CedarDB is currently required because some functions use cedarscript. Treat that as a real engine dependency: this is not a drop-in recipe for vanilla PostgreSQL. The project also uses a Python client, with psycopg2 and pygame among its dependencies, and needs a Doom IWAD game-data file.
Rank #2
- Developed by id Software, DOOM: The Dark Ages is the prequel to the critically acclaimed DOOM (2016) and DOOM Eternal that tells the epic cinematic origin story of the DOOM Slayer’s rage.
- In this third installment of the modern DOOM series, players will step into the blood-stained boots of the DOOM Slayer, in this never-before-seen dark and sinister medieval war against Hell.
- A dark fantasy/sci-fi single-player experience that delivers the searing combat and over-the-top visuals of the incomparable DOOM franchise, powered by the latest idTech engine. With a customizable difficulty system, it’s the perfect entry point whether you’re new to the franchise or a long time fan.
- As the super weapon of gods and kings, shred enemies with devastating favorites like the Super Shotgun while also wielding a variety of new bone-chewing weapons, including the versatile Shield Saw.
- Experience the origin story of the DOOM Slayer’s rage in this epic, cinematic, and action-packed story.
- Check the project README first. Confirm its current CedarDB requirements, supported setup, Python dependencies, and loader/client instructions. The documented setup depends on CedarDB-specific behavior, so do not substitute another PostgreSQL-compatible service on the assumption that it will work unchanged.
- Install and start CedarDB as the README specifies. Ensure the database is reachable by the Python client before loading the game data.
- Prepare an IWAD. The SQLDoom author says the freely redistributable shareware
doom1.wadis sufficient for episode one. Retail WADs can also be used if you own them; a database project does not grant rights to copyrighted game data. - Load the WAD and start the client using the repository’s current commands. The README documents a WAD-loader invocation and a client command. Follow those exact commands and any version-specific configuration there rather than guessing at filenames, connection settings, or command-line options.
The SQLDoom author reports that the renderer can reach up to 60 Hz. In the author’s account, it typically ran at about 60 FPS and dropped to 35 FPS in very busy scenes on a Ryzen 7 PRO 7840U laptop. The same CedarDB account reports average tic times of 2.15 ms with six awake monsters and 10.45 ms in a slow case with 46 awake monsters. These are implementation-author-reported observations on that hardware, not independent benchmarks or expectations for other systems.
Try DOOMQL with SQLite instead
DOOMQL is not an original Doom port. It is an original raycasting game inspired by Doom, which makes a simpler project for seeing SQL participate in a game simulation and image pipeline. Its README specifies a Unix-like environment or WSL, Python 3.11 or newer, SQLite 3.45 or newer with math functions enabled, and a terminal with 24-bit color and Unicode upper-half-block support.
Rank #3
- Developed by id Software, DOOM: The Dark Ages is the prequel to the critically acclaimed DOOM (2016) and DOOM Eternal that tells the epic cinematic origin story of the DOOM Slayer’s rage.
- In this third installment of the modern DOOM series, players will step into the blood-stained boots of the DOOM Slayer, in this never-before-seen dark and sinister medieval war against Hell.
- A dark fantasy/sci-fi single-player experience that delivers the searing combat and over-the-top visuals of the incomparable DOOM franchise, powered by the latest idTech engine. With a customizable difficulty system, it’s the perfect entry point whether you’re new to the franchise or a long time fan.
- As the super weapon of gods and kings, shred enemies with devastating favorites like the Super Shotgun while also wielding a variety of new bone-chewing weapons, including the versatile Shield Saw.
- Experience the origin story of the DOOM Slayer’s rage in this epic, cinematic, and action-packed story.
- Check the runtime prerequisites: use Python 3.11+, SQLite 3.45+ with math functions enabled, and a compatible terminal.
- From the project directory, run
make run. This starts the game using the project’s documented target. - Optionally run
make inspect. The project describes this as opening a read-only live SQL audit alongside the game, useful for examining the database’s role while it runs.
According to the project README, SQL handles input interpretation, movement, collision, enemy behavior, combat, progression, raycasting, pixel values, and ANSI output. Python transports terminal input and results. The terminal requirement matters: this project paints its output as colored text rather than opening a conventional graphical game window.
How the Turso demonstration differs
Turso’s demonstration is about executing a compiled program in a database-derived virtual machine, not expressing Doom’s renderer as ordinary SQL statements. Turso describes compiling C to LLVM IR, translating that into VDBE bytecode, then loading and running the result on a Turso VM with extensions. The game advances as a long-running statement emits rows containing frames.
Rank #4
- A Relentless Campaign: There is no taking cover or stopping to regenerate health as you beat back Hell's raging demon hordes
- Return of id Multiplayer: Dominate your opponents in DOOM's signature, fast-paced arena-style combat
- Near-Limitless Gameplay: Doom SnapMap – A Powerful, but Easy-to-Use Game and Level Editor That Allows for Limitless Gameplay Experiences on Every Platform
- Entertainment Software Rating Board (ESRB) Content Description: Blood and gore, intense violence, strong language
That distinction is useful when evaluating claims that a database “runs Doom.” The demonstration’s subject is the database VM and its ability to execute compiled bytecode; it is not evidence that a standard SQLite query can render the original game’s graphics. Setup involves the demonstration’s compiler and VM approach, rather than the CedarDB SQLDoom loader/client path.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.What pg_doom does—and does not do
pg_doom uses a PostgreSQL extension to bridge database calls to a game core written in C. Its functions expose input and screen data, while a shell wrapper handles I/O. This can make Doom playable through a PostgreSQL-backed experiment, but the substantial game implementation remains C rather than SQL.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Best Value
- DOOM + DOOM II on a region-free physical disc.
- Includes: DOOM, DOOM II, TNT: Evilution, The Plutonia Experiment, Master Levels for DOOM II, No Rest for the Living, Sigil & Sigil II, Legacy of Rust (a new episode created in collaboration by id Software, Nightdive Studios and MachineGames).
- A new Deathmatch map pack featuring 25 maps
- Total of 187 mission maps and 43 deathmatch maps in DOOM + DOOM II
- # of Players: Single System 1-4, Local wireless 1-8, Online 1-16
The repository says a Doom WAD is required and that WAD media data is not freely distributed, so users must obtain it legally. That is a separate acquisition constraint from SQLDoom’s author’s statement about the shareware doom1.wad.
Which project should you choose?
- Choose SQLDoom if you want the most directly documented route in this set for original Doom game logic and rendering represented in SQL, and you are prepared to use CedarDB.
- Choose DOOMQL if your priority is to inspect SQL-driven simulation and pixel generation with SQLite, and a Doom-like game is enough.
- Study Turso’s VDBE demo if you are interested in virtual-machine execution of compiled code inside a database-derived runtime, rather than game rules authored as SQL.
- Look at
pg_doomif you want to explore a PostgreSQL extension around a C game core; it is not the route for keeping the implementation in SQL.
SQLDoom’s author calls rendering Doom in a database “obviously a bad idea.” That is the author’s characterization of the engineering choice, not a claim that the experiment has no value: the same discussion points to relational game state and multiplayer as areas where database capabilities may be useful. The right evaluation depends on whether the goal is a faithful game, a SQL programming experiment, or a demonstration of what a database runtime can execute.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




