DOOM funziona anche dentro un database: il progetto SQLDoom di Vogel ricrea lo sparatutto con grafica a 60 FPS, audio e multiplayer, affidando i calcoli al linguaggio SQL. Il codice è consultabile e scaricabile da GitHub, mentre la componente Python gestisce la visualizzazione delle immagini, il suono e i comandi del giocatore.
Le sperimentazioni dei fan della serie spaziano dalla modifica grafica di Doom 64 a questa riscrittura basata su CedarDB, un sistema compatibile con PostgreSQL. L'architettura mantiene la logica di gioco a 35 Hz, come nell'originale, e separa il rendering in un altro thread. La posizione della visuale viene interpolata tra gli aggiornamenti della simulazione.
Il lavoro è partito dalla conversione dei contenuti dei file WAD in tabelle. La struttura dei dati ha facilitato il passaggio: le mappe contengono già relazioni gerarchiche tra elementi, traducibili nel modello del database. Per realizzare questa fase di importazione sono bastate circa mille righe di Python.
La logica principale occupa invece 5.900 righe di SQL, contro le 9.000 del codice originale in C preso come riferimento. Una parte della riduzione deriva dal modo in cui vengono aggiornate le entità: un'istruzione UPDATE con una condizione WHERE può sostituire cicli che esaminano gli elementi uno alla volta, consentendo anche l'elaborazione in parallelo.
Memorizzare gli elementi come righe di una tabella permette inoltre di modificare armi e nemici durante l'esecuzione. Le caratteristiche delle prime e il comportamento dei secondi possono essere cambiati intervenendo direttamente sui dati, senza doverli gestire attraverso strutture separate dal database.
Il renderer grafico conta altre 1.300 righe e si basa su un'interrogazione che coinvolge 89 tabelle. Il sistema riprende la suddivisione dello spazio utilizzata dal motore originale: i percorsi nell'albero vengono rappresentati numericamente, permettendo a un'istruzione SELECT con ORDER BY di ordinare le pareti dalla più vicina alla più lontana. Gli algoritmi per disegnare pavimenti e soffitti sono stati più difficili da adattare a SQL.
Per il multiplayer, Vogel ha sfruttato le funzioni del database che mantengono coerenti dati distribuiti tra tabelle collegate. Snapshot, autenticazione e controllo degli accessi sono già gestiti dal sistema. Ogni aggiornamento della simulazione viene racchiuso in una transazione: si apre l'operazione, si esegue la logica e si confermano le modifiche, sincronizzando lo stato della partita.