YAMS · Architecture

Un jeu de dés. Un moteur temps réel.
Sans framework, sans bundler — du code qui tourne partout.

Parti d'un jeu de dés classique. Arrivé à un moteur multijoueur temps réel, auth sans mot de passe et 7 langues. En vanilla.

Comment est construit YAMS/Yahtzee — choix techniques, points originaux, ce que ça démontre.

Voir le jeu →

YAMS / Yahtzee

Multijoueur en temps réel, sans framework, sans bundler.

Node.js Express Socket.IO SQLite nginx HTML / CSS / JS WebAuthn Google OAuth
🎲

Deux modes de jeu

YAMS 5 dés (règles classiques, bonus à 63 pts) et YAHTZEE 6 dés avec combinaisons étendues : 3 paires, suite complète, bonus à 84 pts → +100. Même moteur de règles, deux jeux distincts.

🤖

Intelligence artificielle — Bot "Dédé"

Algo suggestKeep() + suggestScore() à plusieurs niveaux de priorité. Le même fichier strategy.js est partagé entre le bot serveur, les hints en ligne et le mode Solo — isomorphisme client/serveur sans duplication de logique.

🎯

Mode Solo / Conseiller

Jouable hors-ligne, aucun socket requis. L'utilisateur saisit manuellement ses dés et obtient des suggestions de stratégie. Utile pour apprendre ou tester des coups spécifiques.

🔑

Auth moderne sans mot de passe

Google OAuth + Passkeys via WebAuthn (SimpleWebAuthn) — connexion par empreinte digitale ou Face ID. Les invités jouent sans compte ; seuls les utilisateurs authentifiés apparaissent au Palmarès.

🌍

Internationalisation — 7 langues

FR, EN, DE, ES, IT, PT, KO. Détection automatique du navigateur, switcher manuel. Les clés d'erreur serveur sont traduites côté client — aucune string hardcodée côté serveur.

UX multijoueur soignée

Minuteur de tour configurable (15 s → 3 min) avec auto-score à l'expiration. Indicateurs de connexion par joueur en temps réel. Wake lock (écran allumé pendant la partie). Partage par lien (?join=CODE). Dissolution automatique si le créateur quitte la salle d'attente.

🚫

Filtre de pseudos

944 mots interdits en 7 langues. Normalisation phonétique (ph→f, doubles lettres, accents). Détection par ratio de couverture pour éviter les faux positifs sur les noms communs.

WebSockets temps réel
Socket.IO, état de jeu synchronisé entre clients
Auth sans mot de passe
WebAuthn / Passkeys via SimpleWebAuthn
Algo stratégie isomorphe
strategy.js partagé client / serveur / bot
i18n production
7 locales, fallback chain, cache anti-flash
SQLite + migrations auto
game/db.js — léger, sans serveur DB séparé
Admin panel
Stats, export Excel, fusion de comptes
Filtre de pseudos
944 mots, 7 langues, normalisation phonétique

Essayer le jeu

YAMS / Yahtzee · Assistant IA · Multijoueur en ligne