JoeQuiz
Un quiz multijoueur de salon : les téléphones comme buzzers, une télé comme écran commun, quatorze mini-jeux. Il se comporte comme en temps réel sur n'importe quel hébergement mutualisé.
Le problème
L'idée était une soirée façon Buzz! sur PlayStation, pas un concours de réflexes : dix personnes dans la même pièce, chacune avec son téléphone. La contrainte, c'était l'hébergement : pas de WebSocket, pas de processus toujours actifs, un serveur mutualisé ordinaire à côté d'autres sites.
Les plateformes existantes demandent une infrastructure dédiée ou réduisent tout à celui qui appuie le premier. JoeQuiz devait être juste sur les temps, même avec les variations d'un WiFi domestique.
Comment ça marche
Structure
Trois écrans, un par rôle : la régie pour l'animateur, le jeu pour qui tient un téléphone, la scène pour la télé. Chacun reçoit une vue de l'état construite exprès, et celle des joueurs ne contient même pas la bonne réponse. Un seul moteur de manches, quatorze configurations.
Parcours d'usage
On ouvre une salle depuis l'ordinateur, les autres entrent depuis leur téléphone avec un code de six lettres, sans application ni inscription. Un joueur choisit le thème et la difficulté, le système tire le mini-jeu au sort. Les manches déterminent le temps de départ de la finale, qui se joue jusqu'au dernier.
Choix techniques
Du polling HTTP toutes les demi-secondes avec l'état dans MySQL, une synchronisation d'horloge façon NTP pour savoir qui a vraiment appuyé le premier, des questions livrées masquées et révélées à tous au même instant. Le jeu avance grâce aux requêtes des joueurs eux-mêmes ; une tâche cron couvre le cas où plus personne ne demande rien.
Limites connues
Les scores sont dans la configuration et doivent être réajustés sur de vraies soirées : la valeur la plus délicate est le temps minimum de la finale. La banque de questions couvre cinq thèmes ; musique, séries, sport et jeux vidéo sont encore à l'état de brouillon.
Chiffres
| Questions dans la banque, plus de | 6 400 |
|---|---|
| Mini-jeux, plus la manche finale | 14 |
| Vérifications automatiques, plus de | 850 |
| Tables du schéma | 35 |
| Lignes de code applicatif, environ | 30 000 |
Stack
- PHP 8
- MariaDB
- JoeCMS
- JavaScript
- Polling HTTP
- Python