Faire tourner DOOM sur un écran d'imprimante, dans un tableur ou même dans un fichier PDF est devenu un exercice de style pour développeurs. Mais une équipe de CedarDB vient de repousser les limites de l'exercice en portant le célèbre jeu de tir à la première personne en SQL, le langage de requête utilisé pour interroger les bases de données relationnelles. Le projet, disponible en open source, démontre que SQL peut dépasser son rôle traditionnel de gestion de données pour exécuter des tâches de calcul intensif, y compris le rendu graphique en temps réel.
Le défi technique était de taille. Les développeurs ont d'abord stocké l'intégralité des données du jeu — les fameux fichiers WAD qui contiennent les niveaux, les textures, les sons et les sprites — dans une série de tables SQL. Cette étape, relativement simple, n'était que la partie émergée de l'iceberg. La difficulté résidait dans la gestion du timing, le jeu devant tourner à 35 images par seconde, et surtout dans le rendu des images. Pour y parvenir, l'équipe a écrit pas moins de 1300 lignes de SQL réparties en 89 expressions de table communes (CTE), une structure avancée qui permet de décomposer des requêtes complexes en étapes intermédiaires. Le reste du projet, soit environ 4000 lignes de SQL supplémentaires, gère la logique du jeu, complété par un peu de Python pour capturer les entrées clavier, synchroniser le timing et afficher le bitmap généré.
Ce qui rend l'exploit possible tient à la nature même de DOOM. Conçu à une époque où les cartes graphiques dédiées n'existaient pas, le jeu n'est pas véritablement en 3D. Ses développeurs originels ont eu recours à de nombreuses astuces pour simuler la profondeur, notamment des transformations de données et des calculs de projection. Ces opérations, qui reposent sur des manipulations de tableaux et des jointures complexes, s'avèrent étonnamment proches de ce que SQL fait naturellement. Comme le résument les auteurs du projet, on pourrait presque croire que le moteur de rendu original de DOOM a été conçu par quelqu'un maîtrisant parfaitement SQL.
Au-delà de la performance technique, cette expérience illustre la flexibilité de SQL, un langage souvent réduit à sa fonction première. Créé pour interroger des bases de données, il intègre en réalité de nombreuses fonctionnalités des langages de programmation généralistes comme C ou Python. L'équipe de CedarDB, une start-up spécialisée dans les bases de données analytiques, souhaitait précisément démontrer cette puissance insoupçonnée. Le code source du projet est accessible publiquement, permettant à d'autres développeurs d'explorer cette approche singulière.
DOOM reste un terrain d'expérimentation privilégié pour les informaticiens. Après des versions en expressions régulières ou dans Microsoft Word, cette adaptation en SQL confirme que le jeu de 1993 demeure un défi technique autant qu'un objet culturel. Pour les passionnés de technologie et de rétro-informatique, ce projet rappelle que les frontières entre les langages et les usages sont souvent plus perméables qu'on ne le pense. Une leçon d'ingéniosité qui pourrait inspirer de nouvelles façons d'optimiser les bases de données modernes.