Hitster est un jeu de société musical : on écoute une chanson, on devine son année de sortie et on la place au bon endroit sur sa ligne du temps. Hitster entre potes en est une version faite maison, conçue au départ comme cadeau pour quatre amis, chacun ayant choisi des chansons pour un autre. On peut y jouer de deux façons. En vrai, avec des cartes imprimées et une boîte fabriquée à la main : on scanne le QR code d’une carte avec son téléphone et l’extrait démarre sans révéler le titre. Ou à distance, sur internet ou directement dans Discord, avec une version anglaise pour les amis à l’étranger. Le jeu propose un mode chacun pour soi, un mode coopératif, des jetons pour voler des cartes, un classement général et un tutoriel intégré.

Le site est fait de pages HTML, CSS et JavaScript sans framework, servies par Apache, avec une API en PHP 8.3 et un stockage en fichiers JSON protégés par verrou (flock). Pour empêcher la triche, le navigateur ne reçoit jamais la liste des réponses : il demande une seule carte à la fois (carte.php). Une interface d’administration ajoute les cartes automatiquement : iTunes fournit l’extrait de 30 secondes, Deezer les liens et MusicBrainz l’année de première sortie, puis le titre et l’artiste sont corrigés automatiquement. En ligne, les joueurs interrogent la partie environ chaque seconde, l’extrait démarre au même moment chez tout le monde grâce à une compensation du décalage d’horloge, et toutes les règles sont appliquées côté serveur. Côté Discord, la commande /hitster de mon bot BotGee lance une partie, et une Activité Discord permet de jouer sans quitter le salon vocal, avec connexion OAuth2 et annonce des résultats dans le salon.

Fonctionnalités

  • Scanner de QR code intégré au site, sans application externe
  • Génération des cartes à imprimer et du patron de la boîte, au format de chaque deck
  • Decks thématiques, import de playlists Deezer, Spotify et Apple Music
  • Parties en ligne par code à 4 lettres, sans compte
  • Modes classique et coopératif, jetons Hitster, classement général
  • Interface bilingue français / anglais
  • Bot, Activité et Rich Presence Discord

Défis techniques

Les QR officiels de Hitster ne fonctionnent qu’avec l’application et la base de données de l’éditeur : j’ai donc créé mon propre format. Quand l’API publique de song.link a fermé, je l’ai remplacée par Deezer. Pour les années faussées par les remasters et les compilations, les sources sont croisées et la plus ancienne l’emporte. Enfin, l’Activité Discord restait bloquée à la connexion à cause d’une redirection qui changeait le référent de la page : il est maintenant transmis puis rétabli.

Le projet tourne sur mon serveur, comme Elemental.