Projet personnel / En cours
Undercover
Jeu de déduction sociale multijoueur en temps réel

Dans le détail
01Attribution de rôles et paires de mots
Rôles civil/undercover/Mr. White distribués selon le nombre de joueurs (2 undercover à partir de 7, Mr. White optionnel à partir de 5), avec garantie mathématique de majorité civile. Le mot de l'undercover est choisi par similarité de tags avec celui du civil (niveaux aucune/proche/très proche), avec relâchement automatique du niveau si le thème choisi n'a pas assez de personnages pour le satisfaire, et une variante où le mot de l'undercover devient un simple attribut du personnage du civil plutôt qu'un personnage entier.
02Mode note (numérique)
Variante sans personnages : civil et undercover reçoivent chacun une note aléatoire (0-20) séparées d'un écart configurable par l'hôte, écart toujours garanti réalisable même aux valeurs extrêmes (0 ou 20). Un joueur propose un thème à chaque manche, à tour de rôle.
03Tours d'indices et rotation
Ordre de passage tiré une fois par partie et conservé sur toute la partie. Les joueurs déconnectés sont automatiquement sautés (indice vide) sans bloquer la manche ; un timer d'indice configurable (30-90s) déclenche le même comportement pour un joueur lent, sans l'éliminer. Nombre de manches d'indices avant chaque vote réglable par l'hôte (1 à 5).
04Vote à la pluralité avec départage
Vote à la pluralité (pas de majorité absolue requise), avec possibilité de s'abstenir ou de changer son vote jusqu'à la fin du délai. Résolution anticipée dès que tout le monde a voté (avec un court délai de grâce pour changer d'avis), ou au bout d'un timer configurable (30-180s) sinon. Une égalité relance un tour de vote restreint aux joueurs à égalité ; une égalité encore rouvre le vote à tout le monde.
05Vote bonus au lieu d'exclusion
Un joueur qui manque son timer d'indice n'est plus éliminé d'office : il reçoit un "vote accusateur" fantôme, cumulé à son encontre au prochain dépouillement puis remis à zéro, quel qu'en soit le résultat.
06Élimination et fin de partie
Phase de révélation après chaque élimination (rôle/mot optionnellement masqué), vérification de la condition de victoire (civils, undercover ou Mr. White) après chaque élimination et après chaque exclusion. Mr. White dispose d'une fenêtre de 60s pour deviner le mot ou la note du civil et voler la victoire.
07Réglages hôte
Choix des thèmes et filtrage par sous-catégorie (franchise/série), niveau de similarité des mots, activation de Mr. White, mode classique/note, écart des notes, timers d'indice et de vote (activables ou non, durée réglable), nombre de manches par vote, révélation du rôle à l'élimination — tous modifiables uniquement dans le salon, avant le lancement.
08Reconnexion et gestion des joueurs
Reconnexion dans le même siège après une coupure réseau, sans perte de progression ; transfert automatique du rôle d'hôte si celui-ci se déconnecte. Exclusion par l'hôte à tout moment de la partie (bannissement du client, distinct d'une simple perte de connexion), avec résolution immédiate de la conséquence (passage de tour, recalcul du vote, victoire).
09Architecture temps réel
Un salon = une Durable Object Cloudflare (état persisté en SQLite embarqué, survit aux redéploiements), pilotée par une seule machine à états (lobby → révélation → indices/thème → vote → élimination → fin) et un unique minuteur d'alarme multiplexé selon la phase. Diffusion en WebSocket d'un état personnalisé par joueur (les infos secrètes des autres restent cachées côté serveur).
10Interface et contenu
Écrans dédiés par phase (lobby, révélation de rôle, indices, vote, élimination, fin), tableau récapitulatif des manches, bouton "Règles" expliquant l'ensemble du jeu, plusieurs franchises de personnages (films, animes...) avec dizaines d'entrées chacune.