Accueil / Jeux / Doom tourne désormais dans une base de données SQL, à 60 images par seconde

Doom tourne désormais dans une base de données SQL, à 60 images par seconde

Doom tourne désormais dans une base de données SQL, à 60 images par seconde

Faire tourner Doom sur n’importe quoi est devenu un sport à part entière chez les développeurs : calculatrices, imprimantes, montres connectées… Le développeur Lukas Vogel vient d’ajouter une entrée particulièrement improbable à la liste avec SQLDoom, une version du jeu de tir culte d’id Software dont la logique est presque entièrement confiée à une base de données relationnelle. Lui-même reconnaît, dans le long billet de blog où il détaille le projet, que l’idée est « évidemment mauvaise ».

Le jeu réduit à des tables et des requêtes

Concrètement, un petit programme en Python se contente de gérer les commandes du joueur, la cadence du jeu et l’affichage. Tout le reste se passe dans CedarDB : des tables stockent la géométrie des niveaux et l’état de la partie, tandis qu’environ 1 300 lignes de SQL, réparties en 89 expressions de table communes, calculent la logique du jeu et produisent des images en couleur de 640 × 480 pixels. Un net progrès par rapport à DoomQL, sa tentative de l’an dernier, qui n’affichait qu’un rendu en caractères ASCII gris, plus proche de Wolfenstein 3D que de Doom.

Selon Vogel, convertir les fichiers WAD d’origine en tables a été la partie facile : le moteur de 1993 découpait déjà ses niveaux en sommets, lignes et secteurs, une structure qui se prête bien au modèle relationnel. Même les fameux arbres de partition binaire de l’espace peuvent être traduits grâce à une clé de tri précalculée, qu’un simple ORDER BY exploite à chaque image pour savoir quels morceaux de murs afficher. Le rendu des sols et des plafonds s’est révélé plus délicat ; le développeur l’a contourné avec une solution qu’il qualifie lui-même de bricolage.

Plus qu’une simple curiosité ?

Malgré le coût de toutes ces lectures et écritures en base, SQLDoom atteindrait environ 60 images par seconde sur un ordinateur portable équipé d’un processeur Ryzen 7, avec des chutes à 35 images par seconde dans les scènes chargées. Surtout, Vogel y voit un intérêt réel pour le multijoueur : une base de données garantit un état de jeu cohérent et gère nativement les accès simultanés, ce qui évite selon lui les mises à jour partielles et les litiges pour savoir si une roquette a bien touché sa cible.

Les curieux peuvent tester le projet chez eux à partir du code publié sur GitHub, d’une copie de CedarDB et d’un fichier WAD de Doom, ou rejoindre une partie de démonstration hébergée en ligne. Une preuve de plus que, trente ans après sa sortie, Doom reste le terrain de jeu favori des bidouilleurs.

Image : Barbiere1138, CC BY-SA 3.0, via Wikimedia Commons

Étiquetté :

Répondre