Le contexte
Le SQL Murder Mystery de Knight Lab est un classique pour
apprendre le SQL en s’amusant, mais il est en anglais, visuellement daté, et son intrigue tient sur
deux tables. J’ai voulu une version française, contemporaine et plus ambitieuse : Maxime
Ferrand, CTO de la startup Datalyze, est retrouvé mort dans la salle serveur la veille de la
signature d’une série B.
Le défi
Faire tourner une vraie base de données dans le navigateur, sans serveur ni installation :
c’est SQLite compilé en WebAssembly (sql.js) qui exécute les requêtes du joueur. Et côté jeu,
construire un dataset cohérent (11 tables, 11 personnages avec alibis, mobiles et
incohérences volontaires) où chaque découverte est détectée automatiquement pour faire avancer
l’enquête.
Une seule page, en JavaScript vanilla : une console SQL (CodeMirror) avec coloration et
historique, une carte interactive du campus dont les lieux s’allument au fil des découvertes,
un trombinoscope dont les fiches se remplissent d’indices, un carnet de détective qui tient
la timeline des 14 indices, et un schéma interactif des tables (un clic insère une requête
d’exemple). Trois niveaux d’aide par étape, de la piste vague à la requête complète, et une
accusation en deux temps : l’exécutant, puis le commanditaire. La progression est sauvegardée
en localStorage.
Ce que j’en retire
C’est le projet qui m’a le plus appris sur la pédagogie par la pratique : doser la difficulté,
récompenser chaque requête réussie, ne jamais bloquer le joueur. Et une conviction : WebAssembly
ouvre la porte à des outils riches livrés comme de simples fichiers statiques, sans backend à
héberger ni maintenir.