Article
Elemental
Elemental est un jeu de cartes à collectionner mêlé à un jeu de plateau, entièrement en français, dans lequel deux joueurs s’affrontent en duel. On peut y jouer en ligne avec des amis à distance ou en réseau local à la maison. Le jeu est en phase de test : un groupe d’amis y joue déjà depuis une simple page web, sans rien installer, et les cartes créées sont partagées entre tous les testeurs. L’objectif final est une application à télécharger en un seul fichier, avec une interface soignée. Tout le projet, du moteur de jeu au serveur, est conçu et hébergé de façon indépendante, sans service externe.
Le projet est organisé en monorepo. Au centre se trouve un moteur de combat 1 contre 1, couvert par des tests unitaires, dans lequel les cartes sont des données structurées : leurs effets sont des listes d’EffectInstance typées plutôt que du texte libre. Il gère les zones d’action miroir, la Magnitude, la Recharge et une dizaine de mots-clés (Brûlure, Protection, Vulnérabilité, Combo, Croissance…). Le serveur Node.js + WebSocket est autoritaire : il exécute lui-même le moteur et reste la seule source de vérité sur l’état de la partie, ce qui empêche la triche côté client. Les joueurs se retrouvent dans des salles identifiées par un code à 4 lettres, et le catalogue de cartes est stocké en SQLite. En production, le serveur tourne comme service systemd sur mon VPS, derrière Apache configuré en reverse proxy WebSocket.
Fonctionnalités
- Moteur de combat complet, validé par 12 tests unitaires
- Salles de jeu rejointes par un code à 4 lettres
- Catalogue de cartes partagé en temps réel entre les testeurs
- Serveur jouable en ligne ou en réseau local
- Client web autonome, sans installation
Défis techniques
J’avais d’abord prévu Caddy comme reverse proxy, mais il entrait en conflit avec Apache, qui occupe déjà les ports 80 et 443 pour mes autres sites. J’ai donc configuré Apache avec proxy_wstunnel. La base de données est stockée hors du dépôt git, pour ne pas être touchée par les mises à jour, et le serveur récupère le code privé grâce à une clé de déploiement SSH en lecture seule.
Prochaines étapes
Connexion chiffrée (wss://), client desktop Tauri distribué en installeur Windows, interface finale et mains adverses cachées.
- Code source Elemental :
Dépôt privé, disponible sur demande - Statut :
En développement, démo disponible sur demande
Tags : jeu de cartes, multijoueur, Node.js, SQLite, Tauri, WebSocket
Derniers articles
-
Hitster entre potes
September 27, 2026
-
SoundGee
September 27, 2026
-
Elemental
September 27, 2026
-
BotGee
September 27, 2026
-
NFT Store — Boutique Web Transactionnelle en PHP
January 29, 2026


