Récemment, un programmeur a utilisé du « SQL pur » pour créer un jeu de tir multijoueur à la première personne similaire à « Doom » appelé DOOMQL.Le jeu est implémenté avec seulement environ 150 lignes de code Python. Bien qu'il existe des limites dans l'architecture logicielle, l'effet de course est surprenant et la fréquence d'images peut atteindre environ 30 FPS.
DOOMQL a été inspiré par le projet DuckDB-DOOM de Patrick Trainer, qui essayait également d'utiliser SQL pour créer un jeu similaire à "Doom", mais utilisait JavaScript pour le rendu et le traitement des entrées.

En revanche, DOOMQL implémente un véritable jeu « pur SQL », qui prend non seulement en charge le mode multijoueur, mais utilise également SQL pour gérer le rendu et la saisie, avec une résolution allant jusqu'à 128 × 64 pixels.
Le développeur Lukas Vogel a déclaré que l'utilisation de JavaScript dans DuckDB-DOOM "ressemble à de la triche" et que son propre travail est également meilleur en termes de performances, avec une fréquence d'images bien supérieure à celle de 8FPS de DuckDB-DOOM.
Vogel, qui est également co-fondateur de la société de performances de bases de données CedarDB, a achevé le développement de DOOMQL pendant un mois de congé parental.
L'architecture du jeu est simple et intelligente : l'état est stocké dans des tables de base de données et le rendu implémente le lancer de rayons et la projection de sprites via des vues SQL.La boucle du jeu est pilotée par un petit script shell qui exécute le fichier SQL environ 30 fois par seconde, tandis que le client se compose d'environ 150 lignes de code Python responsables de l'interrogation des entrées et de l'interrogation de la base de données pour la vue 3D.
Actuellement, le code de DOOMQL est open source sur GitHub et les joueurs peuvent utiliser Docker et Python pour exécuter le jeu localement. Vogel prévoit d'améliorer le jeu à l'avenir, notamment en ajoutant des bonus, une variété d'armes, en optimisant le système de niveau de détail des sprites, en améliorant le client et en ajoutant des adversaires IA.
