Lukas Vogel écrit dans un long article de blog expliquant comment il a réussi à rendre Doom en utilisant une base de données SQL. Le projet SQLDoom utilise un petit client Python pour gérer les entrées et sorties, piloter le timing du jeu et afficher chaque image. Derrière cela, une série de tables Cedar DB suit la géométrie et l'état du jeu, tandis qu'environ 1300 lignes de requêtes SQL réparties sur 89 expressions de table communes implémentent la logique du jeu et génèrent 35 tampons d'image bitmap par seconde.
SQLDoom est une amélioration majeure par rapport au précédent projet Doom QL de Vogel, qui construisait "un jeu de tir multijoueur similaire à Doom entièrement en SQL" mais se terminait avec des graphismes ASCII en niveaux de gris. Le nouveau SQLDoom génère des images couleur complètes en 640×480 ressemblant à l'exécutable original de Doom.
Convertir les fichiers WAD classiques de Doom en une base de données relationnelle était simple, dit Vogel, car le jeu divisait les niveaux en sommets, lignes et secteurs. Les arbres de partition spatiale binaire de Doom peuvent être décomposés en SQL en utilisant une sort_key précalculée pour chaque position. Avec cela, une simple instruction "ORDER BY" détermine quelles parties des murs afficher à chaque image.
Entités clés : Entreprises : Ars Technica | Personnes : Lukas Vogel
FAQ : Comment SQLDoom rend-il les images en utilisant une base de données ?
SQLDoom utilise un client Python pour l'entrée et l'affichage, tandis que les tables Cedar DB stockent la géométrie et l'état. Environ 1300 lignes de requêtes SQL sur 89 CTE génèrent 35 tampons d'image bitmap par seconde, en utilisant ORDER BY avec des clés de tri précalculées pour un rendu efficace.
Source: Ars Technica · Résumé par HeadlinesBriefing