Murder Party

Murder Party

Web App de gestion en temps réel

Design system Développement Web Ergonomie JS MySQL PHP UX/UI

Le projet

J'ai été invité à participer à une murder party construite sur les mécaniques du jeu "Among Us". Les civils accomplissent des tâches dans le lieu, les imposteurs se fondent parmi eux grâce à de fausses tâches et éliminent en silence. Le maître du jeu (MJ) arbitre l'ensemble. Sans outil, le MJ doit tout suivre de tête : qui est vivant, qui a fait quoi, qui a triché. J'ai donc conçu une application en deux interfaces : une console MJ pensée pour l'ordinateur et un espace joueur pensé pour le téléphone. Au cours de cet évènement, 17 joueurs ont utilisé l'application en temps réel sans souci.

Ma démarche

Penser le modèle de données avant l'interface

J'ai modélisé le schéma complet dès la première phase de conception : une vingtaine de tables, pour ne jamais avoir à le refondre. Il sépare deux types de données :

Ouvrir une nouvelle partie ne touche jamais à la bibliothèque. Les résultats sont figés dans une table où l'on ne fait qu'ajouter des lignes. Le classement cumulé se calcule donc par une simple somme, sans risque de désynchronisation.

Du temps réel sur un hébergement mutualisé

L'hébergement O2switch n'accepte ni WebSocket ni processus serveur permanent. J'ai donc construit une boucle de polling HTTP adaptatif :

La présence des joueurs repose sur un heartbeat : un joueur est « en ligne » s'il a donné signe de vie depuis moins de 15 s.

Le serveur comme seul arbitre

Toutes les règles sont vérifiées côté serveur :

Avancer par phases testables

Le développement suit des jalons validés un par un : connexion et salle d'attente, puis bibliothèque, préparation et distribution, jeu en direct, et enfin fin de partie avec classement.

Un design system qui encode le jeu

L'interface suit l'esthétique d'une salle d'opérations nocturne. Le fond sombre permet de jouer dans la pénombre sans éblouir. La couleur porte l'information :

Ces couleurs sont déclarées une seule fois en variables CSS (custom properties). L'espace joueur est conçu d'abord pour le mobile (mobile first), avec des zones tactiles d'au moins 44 px et le respect du réglage prefers-reduced-motion.

Fonctionnalités

Préparer une partie (capture d'écran 1)

Jouer (capture d'écran 2)

Piloter la partie (capture d'écran 3)

Clore et comptabiliser

Le MJ désigne le camp vainqueur (ou décrit une autre issue) et coche les joueurs solo qui ont gagné. Les points sont calculés automatiquement :

Classement de la partie, classement cumulé sur toutes les parties, export JSON.

Stack technique

PHP (PDO) · MySQL InnoDB · JavaScript vanilla, sans framework ni dépendance · CSS custom properties · hébergement O2switch.

Sécurité :

Et ensuite

Le schéma de base prévoit déjà la suite :

Ce que j'en rentiens

Ce fut un projet ambitieux, tant dans sa conception que dans son exécution. Aujourd'hui, il est fonctionnel et prêt à évaluer, ce qui en fait une fierté.

Galerie

Capture d'écran - Murder Party Capture d'écran - Murder Party Capture d'écran - Murder Party

Aperçu du site

julien.weill.mmi-velizy.fr/murder/
Capture du site - Murder Party
Voir le site en direct