# LLM Context URL: https://diegocecato.dcsolution.it/sqldoom-sql-database-architettura/ # SQLDoom non dimostra che SQL sa fare tutto. Dimostra dove metti il problema SQLDoom è un porting sperimentale di Doom costruito sopra CedarDB. Il punto interessante non è semplicemente “far girare Doom in SQL”, ma spostare logica di gioco, stato e renderer dentro il database e osservare come cambiano i confini architetturali. Il progetto usa un piccolo client Python per input, timing e visualizzazione del framebuffer. La logica di gioco, lo stato e il renderer vivono invece nel database. Il game loop mantiene i 35 tic al secondo dell’originale; il rendering è disaccoppiato e può arrivare a circa 60 Hz sul sistema usato dall’autore. Doom si presta all’esperimento perché il formato WAD contiene strutture rappresentabili come dati: vertici, linee, settori, oggetti e BSP. SQLDoom importa queste informazioni in tabelle e riformula parte del rendering come trasformazioni e ordinamenti di insiemi. Il renderer comprende circa 1.300 righe SQL distribuite su 89 CTE. La sequenza temporale del gioco non è “solo SELECT”: viene orchestrata con cedarscript, il linguaggio di scripting lato database di CedarDB simile a PL/pgSQL. L’esperimento attraversa quindi paradigma dichiarativo e procedurale e mostra che SQL, nel suo ecosistema reale, è anche un linguaggio di programmazione/esecuzione ben oltre il CRUD. Nel multiplayer, se il database possiede lo stato autorevole, transazioni, snapshot consistenti, concorrenza e controllo degli accessi diventano primitive del dominio. Un tic può essere racchiuso tra BEGIN e COMMIT, così i giocatori osservano uno stato coerente prima o dopo l’aggiornamento. La lezione non è usare SQL per tutto. È modellare prima di orchestrare, sfruttare le garanzie del componente che possiede lo stato e separare chiaramente I/O dal cuore del sistema. ## FAQ ### SQLDoom è interamente in SQL? No. Logica, stato e renderer sono nel database; un piccolo client Python gestisce input, timing e visualizzazione. ### Perché usa CedarDB? Perché sfrutta SQL e cedarscript, il linguaggio di scripting lato database di CedarDB. ### Che cosa mostra sull’uso di SQL? Che SQL può esprimere molto più del CRUD quando il problema è modellato come dati, trasformazioni, funzioni e transazioni. ### Qual è la lezione architetturale? Capire dove collocare stato e responsabilità, sfruttando le garanzie del componente che possiede lo stato senza trasformare il database in un game engine.