Da qualche parte tra la provocazione intellettuale e l'ingegneria genuina, Lukas Vogel ha dimostrato che i confini tra database e motore grafico sono più permeabili di quanto si creda: SQLDoom fa girare Doom interamente dentro un sistema SQL, a 60 fotogrammi al secondo, sfidando decenni di assunzioni su come si costruisce un videogioco. Non è un trucco né una curiosità accademica, ma un esperimento funzionante che interroga la separazione classica tra dati, logica e rendering. La domanda che lascia aperta non è se questo approccio sostituirà i motori tradizionali, ma cosa rivela sulla natura d
SQLDoom: il leggendario sparatutto gira dentro un database SQL a 60 fps
Un database relazionale può fare cose che pensiamo appartengano a un motore di gioco
Perché qualcuno dovrebbe mettere Doom dentro un database? Non è solo una cosa strana per il gusto di essere strani?
Sì, è strano, ma non è solo per questo. Mostra che un database relazionale può fare cose che di solito pensiamo appartengano a un motore di gioco. La logica, il rendering, tutto.
Ma quanto è veramente veloce? 60 fotogrammi su un portatile con Ryzen 7 suona bene, ma scende a 35 nei momenti difficili. Vogel non dice quanto sia impegnativo il carico di lavoro rispetto a Doom originale.
È vero, ma il punto non è battere i motori grafici. È mostrare che il modello funziona. Ogni operazione passa attraverso SQL — è un sovraccarico enorme.
E il multiplayer? Vogel dice che potrebbe risolvere alcuni problemi.
Esattamente. Un database mantiene uno stato coerente. Se più giocatori condividono lo stesso mondo, il database sa sempre cosa è vero. Non ci sono divergenze nascoste.
Ma è una teoria. Non sappiamo se funzionerebbe davvero con tanti giocatori, con latenza di rete, con situazioni reali. Vogel non ha testato il multiplayer.
No, non l'ha fatto. È ancora un esperimento. Ma l'idea è solida.
Quanto codice SQL ci vuole?
1.300 righe distribuite in 89 Common Table Expressions. Tutto quello che serve per gestire la logica e produrre i fotogrammi.
E il client Python? Quanto lavoro fa?
Solo input, timing e visualizzazione. Il database fa tutto il resto.
Quindi se qualcuno volesse provarlo?
Può eseguire il codice in locale con CedarDB e un file WAD, oppure usare la demo online.
Il Polso
- Un programmatore ha fatto girare Doom dentro un database SQL con 1.300 righe di codice, raggiungendo 60 fps su un portatile — qualcosa che la maggior parte degli sviluppatori avrebbe scartato come impossibile o inutile.
- Il vero nodo tecnico era il rendering: 89 Common Table Expressions si costruiscono l'una sull'altra per produrre fotogrammi bitmap a 640×480 pixel, trasformando un semplice ORDER BY in un meccanismo di selezione visiva.
- Pavimenti e soffitti hanno resistito fino all'ultimo — il metodo originale dei visplane non si adattava al modello relazionale, costringendo Vogel a inventare un sistema alternativo basato su pannelli ordinati, grezzo ma funzionante.
- Nelle scene più affollate le prestazioni scendono a 35 fps, un overhead che nessun motore tradizionale accetterebbe, eppure sufficiente a dimostrare che l'architettura regge sotto pressione reale.
- L'orizzonte più intrigante è il multiplayer: un database offre coerenza dello stato, gestione nativa della concorrenza e meno divergenze tra simulazioni — vantaggi che i motori grafici classici non hanno mai avuto per costruzione.
Da qualche parte tra la provocazione intellettuale e l'ingegneria genuina, Lukas Vogel ha dimostrato che i confini tra database e motore grafico sono più permeabili di quanto si creda: SQLDoom fa girare Doom interamente dentro un sistema SQL, a 60 fotogrammi al secondo, sfidando decenni di assunzioni su come si costruisce un videogioco. Non è un trucco né una curiosità accademica, ma un esperimento funzionante che interroga la separazione classica tra dati, logica e rendering. La domanda che lascia aperta non è se questo approccio sostituirà i motori tradizionali, ma cosa rivela sulla natura dei sistemi che diamo per scontati.
Lukas Vogel ha fatto quello che sembrava una battuta: ha messo Doom dentro un database SQL e l'ha fatto funzionare davvero, a 60 fotogrammi al secondo. Il progetto si chiama SQLDoom e non è una dimostrazione teorica — è un gioco che gira, con 1.300 righe di SQL che gestiscono logica, geometria, stato della partita e rendering.
L'architettura rovescia le convenzioni. CedarDB conserva tutto: mappe, posizione del giocatore, nemici, ogni elemento necessario a ricostruire il mondo istante dopo istante. Un piccolo client Python esterno si limita a leggere l'input, gestire il timing e mostrare sullo schermo ciò che il database produce. Il cuore del sistema sono 89 Common Table Expressions che si costruiscono l'una sull'altra fino a generare fotogrammi bitmap a colori in risoluzione 640×480. Il database non è uno strato separato: è il motore.
La struttura geometrica originale di Doom — vertici, linee, settori, alberi Binary Space Partition — si è adattata sorprendentemente bene alle tabelle relazionali. I problemi più ostici sono arrivati con pavimenti e soffitti: il metodo dei visplane non funzionava nel modello relazionale, e Vogel ha dovuto costruire un sistema alternativo basato sull'iterazione di pannelli ordinati. Non elegante, ma funziona.
Sui numeri: 60 fps in condizioni normali, 35 nelle situazioni più impegnative su un portatile con Ryzen 7. È un overhead che nessun motore tradizionale si porterebbe dietro, eppure l'esperimento regge. E apre una prospettiva inattesa: un database mantiene uno stato coerente della partita con meccanismi nativi per la concorrenza, il che potrebbe ridurre le divergenze tipiche del multiplayer. Non un'alternativa ai motori reali, ma una dimostrazione che i confini tra dati, logica e rendering sono molto meno fissi di quanto sembri.
Lukas Vogel ha fatto quello che sembrava una battuta: ha messo il leggendario Doom dentro un database SQL e l'ha fatto funzionare a 60 fotogrammi al secondo. Non è uno scherzo di programmazione, non è una dimostrazione teorica. È un gioco che gira davvero, con 1.300 righe di SQL che gestiscono la logica, la geometria dei livelli, lo stato della partita e il rendering stesso. Il progetto si chiama SQLDoom e rappresenta una sfida radicale a come pensiamo ai videogiochi e ai database.
L'architettura è elegante nella sua stranezza. CedarDB conserva tutto — le mappe, lo stato del gioco, la posizione del giocatore, i nemici, tutto quello che serve per ricostruire il mondo di Doom istante dopo istante. Un piccolo client Python esterno si occupa solo di tre cose: leggere l'input dal giocatore, gestire il timing e mostrare sullo schermo quello che il database produce. Il cuore del sistema è fatto di 89 Common Table Expressions, strutture SQL che si costruiscono l'una sull'altra per trasformare i dati grezzi in fotogrammi bitmap a colori, risoluzione 640×480 pixel. È il contrario di come funziona un motore grafico tradizionale, dove il database è una cosa separata, lontana dal rendering. Qui il database è il motore.
Portare Doom dentro un modello relazionale non era impossibile, grazie alla struttura geometrica del gioco originale. Doom organizza i suoi livelli attraverso vertici, linee e settori — una rappresentazione che si adatta naturalmente alle tabelle. Gli alberi Binary Space Partition, la struttura che id Software usava per decidere cosa disegnare e cosa no, trovano posto nelle righe di una tabella. Vogel ha usato una chiave di ordinamento precalcolata per determinare quali elementi della scena vanno mostrati e quali esclusi, trasformando un semplice ORDER BY in uno strumento di selezione durante la composizione dell'immagine.
I veri problemi sono arrivati con pavimenti e soffitti. Il metodo originale di Doom, basato sui visplane, non si adatta bene a un modello relazionale. Vogel ha dovuto inventare un sistema alternativo fondato sull'iterazione di pannelli ordinati. Lo stesso autore ammette che non è elegante, ma funziona. Completa la pipeline grafica. A volte è così che vanno le cose quando si spinge un'idea fino al limite.
Sui numeri: 60 fotogrammi al secondo su un portatile con Ryzen 7. Nelle situazioni più impegnative scende a 35. Questi dati vanno letti per quello che sono — il risultato di un esperimento dove ogni componente del gioco passa attraverso operazioni su strutture SQL. È un sovraccarico che un'architettura videoludica tradizionale non si porterebbe dietro nemmeno per un istante. Eppure funziona.
L'aspetto più interessante emerge quando si pensa al multiplayer. Un database mantiene una fotografia coerente dello stato della partita. Ha meccanismi nativi per la concorrenza e la gestione degli accessi. Secondo Vogel, questa impostazione potrebbe ridurre i problemi che affliggono i giochi multiplayer — gli aggiornamenti applicati solo in parte, le divergenze nello stato della simulazione quando più giocatori condividono lo stesso mondo. È un vantaggio che nessun motore grafico tradizionale offre naturalmente.
Nessuno sostiene che SQLDoom diventerà un'alternativa ai motori grafici reali. Il progetto è una dimostrazione di ciò che un modello dati può fare quando viene usato in modo radicalmente diverso, quando si mette in discussione la separazione classica tra database, logica applicativa e rendering. Chi vuole provarlo può eseguire il codice in locale con CedarDB e un file WAD di Doom, oppure usare la demo disponibile online. È un esperimento che funziona, e questo è tutto quello che conta.
Citazioni salienti
Un database mantiene una fotografia coerente dello stato della partita e offre meccanismi nativi per la concorrenza e la gestione degli accessi— Lukas Vogel, su come SQLDoom potrebbe ridurre i problemi del multiplayer