Exécuter l'Enfer : comment un développeur a fait tourner Doom entièrement dans une base de données SQL

L'horloge tic-tac infinie du portage rétro
Depuis des décennies, la communauté des développeurs partage un défi tacite et fantaisiste : si un appareil possède un processeur et un écran, il doit finasser par exécuter Doom. Au fil des ans, cela a donné naissance à une lignée excentrique de portages matériels faisant tourner le chef-d'œuvre d'id Software sorti en 1993 sur tout, des appareils photo numériques et thermostats intelligents aux tests de grossesse et écrans d'oscilloscopes. Pourtant, repousser les limites de ce qui constitue un « ordinateur » a pris un tournant délicieusement absurde dans le domaine des logiciels d'entreprise et des systèmes de gestion de données.
Plutôt que de s'appuyer sur des cycles d'horloge en silicium brut ou sur du matériel embarqué physique, un projet récent a accompli l'impensable en compressant les couloirs chaotiques de l'Enfer dans une base de données relationnelle. En exploitant la puissance expressive des langages de requêtes de bases de données standard, cette prouesse met en évidence à la fois le dévouement extrême des bidouilleurs modernes et les capacités de calcul étonnamment robustes cachées au plus profond d'environnements logiciels qui n'étaient pourtant pas conçus pour afficher des graphismes.
Réécrire le moteur en requêtes pures
Au cœur de cette réalisation se trouve un script compact d'environ 1 300 lignes de SQL. Plutôt que d'écrire du code procédural qui indique à une machine, étape par étape, comment progresser dans la mémoire, l'auteur a dû structurer la machine à états, le pipeline de rendu et la boucle de jeu dans le paradigme déclaratif des requêtes de base de données. Les bases de données relationnelles sont optimisées pour récupérer, filtrer et organiser des tables de données, et non pour effectuer des mises à jour de tampons de trame en temps réel ou gérer l'audio spatial.
Pour contourner ces limitations structurelles, le moteur de base de données traite essentiellement les états du jeu, les tampons de pixels et les calculs de lancer de rayons (raycasting) comme des ensembles de données relationnelles. Chaque tic de la boucle de jeu devient une exécution de requête itérative, transformant des lignes et des colonnes en géométrie, en murs et en ennemis. Atteindre une fréquence d'images jouable — rapportée à un impressionnant 35 images par seconde — a exigé une optimisation minutieuse des requêtes pour éviter de lourdes pénalités de performance généralement associées aux jointures relationnelles complexes et aux scans de tables non indexés.
Pourquoi les bases de données relationnelles font de piètres moteurs de jeu
D'un point de vue architectural, les bases de données relationnelles et les moteurs de jeux se situent aux antipodes de la conception logicielle. Les bases de données sont conçues pour la conformité ACID, l'intégrité transactionnelle et le stockage massif de données concurrentes, privilégiant la cohérence et la durabilité à la vitesse brute et volatile du rendu d'images. À l'inverse, une boucle de jeu traditionnelle exige des millisecondes d'exécution prévisibles, un accès direct à la mémoire et un contrôle fin sur les interruptions matérielles et les pipelines GPU.
Forcer une base de données à agir comme un moteur graphique expose la complétude de Turing inhérente aux langages de requêtes modernes. Bien que SQL soit conçu pour récupérer des données, les extensions et les expressions de tables communes récursives (CTE) lui confèrent un poids de calcul suffisant pour simuler des transitions d'états complexes. Cependant, cela nécessite de tordre le moteur de requêtes d'une manière que les administrateurs de bases de données qualifieraient probablement de cauchemar en matière de performances. C'est un exercice brillant qui consiste à plier un outil bien au-delà de ses spécifications de conception initiales.
La fascination de la communauté des développeurs pour ces portages ésotériques est bien plus qu'un simple mème. Elle sert de cours magistral sur la compréhension approfondie des contraintes système, de la gestion de la mémoire et de l'optimisation algorithmique. Lorsqu'un développeur tente d'exécuter Doom dans un environnement inattendu, il est contraint de déconstruire un système logiciel complexe jusqu'à ses fondamentaux mathématiques et de le reconstruire à l'aide de primitives non conventionnelles.
Ce type de piratage informatique de pointe encourage les ingénieurs à regarder au-delà des abstractions superficielles des piles technologiques modernes. Il démontre qu'avec suffisamment de créativité, les frontières apparemment rigides imposées par la conception des langages ou l'architecture de l'infrastructure peuvent être contournées de manière créative. Bien que l'exécution d'un jeu vidéo à l'intérieur d'un outil de requête de base de données n'ait pratiquement aucune application pratique en entreprise, les muscles mentaux exercés lors d'une telle entreprise se traduisent fréquemment par de meilleures compétences en résolution de problèmes pour les défis quotidiens du génie logiciel.
L'impact plus large sur la culture des développeurs et l'informatique ésotérique
La programmation ésotérique et les portages matériels non conventionnels occupent une place de choix dans la culture des hackeurs, faisant le pont entre la théorie informatique de haut niveau et l'expression créative pure. Des projets de ce type inspirent les développeurs juniors et seniors à expérimenter sans la pression de la viabilité commerciale ou des repères de performance. Ils rappellent à l'industrie que le développement de logiciels peut encore être une forme d'art ludique et exploratoire plutôt qu'un simple pipeline de production commerciale.
De plus, ces projets mettent parfois en lumière des fonctionnalités négligées au sein de technologies matures. En poussant un moteur SQL dans ses derniers retranchements, le projet teste l'efficacité de l'optimiseur de requêtes sous-jacent, des stratégies d'allocation de mémoire et des algorithmes de planification d'exécution. Les mainteneurs de bases de données eux-mêmes examinent souvent ces tests de résistance aux cas limites extrêmes avec un mélange d'amusement et de véritable curiosité technique quant à la façon dont leur logiciel se comporte sous des charges de travail bizarres.
Regard vers l'avenir sur les limites du calcul
Tant qu'il y aura des langages de requêtes, des machines virtuelles et des couches informatiques à explorer, les ingénieurs continueront de trouver des moyens ingénieux de porter des titres classiques vers des endroits où ils n'auraient jamais dû aller. Bien qu'un Doom piloté par une base de données ne remplace pas les pipelines de développement de jeux traditionnels ou les architectures cloud modernes, il témoigne de l'ingéniosité humaine et de la joie pure du bricolage numérique.
En fin de compte, ce projet cimente une vérité merveilleuse sur la technologie moderne : si le logiciel est suffisamment flexible, vous pouvez transformer à peu près n'importe quel système en terrain de jeu. Alors que les développeurs continuent de repousser les limites du possible avec les langages déclaratifs, nous ne pouvons qu'attendre de voir quel environnement inattendu accueillera la prochaine itération de la création légendaire d'id Software.
Source: arstechnica.com