Chess Obscur Web : serveur jouable pour une variante d'échecs
Chess Obscur Web est le serveur de jeu de mon projet Chess Obscur. L'idée était de créer une variante d'échecs originale, puis de la rendre jouable dans un navigateur avec des parties en temps réel.
L'historique GitHub du dépôt se concentre sur février 2026. Le projet va plus loin qu'un simple plateau : il contient un moteur de règles, un orchestrateur Socket.IO, de la persistance et des exports pour alimenter le projet Chess Obscur RL.

Caractéristiques techniques du projet
- Backend : Node.js, Express, Socket.IO.
- Moteur de jeu : JavaScript fonctionnel, règles isolées dans un module dédié.
- Persistance : fichiers JSON, index de parties, exports PGN et NDJSON.
- Tests : moteur de règles, serveur et stockage.
- Déploiement : Docker Compose.
- IA : client HTTP vers l'agent RL.
Détails du projet
Règles du jeu
Chess Obscur reprend la base des échecs, mais ajoute plusieurs mécaniques :
- captures probabilistes selon les forces des pièces ;
- QTE défensif pour tenter de bloquer ou parer une attaque ;
- parade qui peut donner temporairement le contrôle d'une pièce adverse ;
- règle des trois échecs ;
- export des parties pour analyse et entraînement.
Ces règles créent des phases supplémentaires dans une partie. Le serveur ne peut pas simplement appliquer un coup et passer au joueur suivant : il doit parfois ouvrir une phase défensive, attendre une décision, résoudre la capture, puis reprendre le fil normal.
Architecture serveur
Le projet sépare trois responsabilités principales :
chess.jspour le moteur de règles pur ;server.jspour l'orchestration Socket.IO et les phases de partie ;store.jspour la persistance, les exports et l'index des parties.
Cette séparation m'a permis de tester une partie des règles sans lancer tout le serveur web.
Intégration avec l'agent RL
Le serveur peut exporter les parties dans un format exploitable par le pipeline RL. Dans l'autre sens, il peut aussi interroger un serveur d'IA pour obtenir un coup et faire jouer un bot contre un humain.
C'est ce lien entre application web et machine learning qui rend le projet intéressant : les deux dépôts ont été pensés pour fonctionner ensemble.
Ce que le projet m'a appris
Ce projet m'a montré qu'un jeu temps réel devient surtout un problème de transitions d'état. Les règles custom rendent le jeu plus intéressant, mais elles obligent aussi à être très strict sur les phases, les validations et les événements envoyés aux clients.
Auto-critique du résultat
La persistance en JSON est suffisante pour expérimenter et exporter des parties, mais elle ne serait pas idéale pour une plateforme ouverte à beaucoup de joueurs. Le README principal mériterait aussi d'être plus démonstratif, avec captures ou GIF, car le dépôt contient une bonne architecture mais ne la rend pas immédiatement visible.
Sources du projet
Le code source est dans un dépôt privé. La page reste donc centrée sur l'architecture et les choix techniques.
