Phase 0 foundation: - Docker Compose with PostgreSQL, Redis, Hardhat node - RPSArena.sol commit-reveal smart contract with tests - Node.js + Socket.io server with matchmaking and match state machine - Next.js + Phaser 3 frontend with Boot, Lobby, Arena, Result scenes - Nginx Proxy Manager integration planned for jeu.cosmolan.fr Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
The Arena — RPS Royale
Un jeu multijoueur Pierre-Feuille-Ciseaux en 2D premium avec paris sur la blockchain (pattern commit-reveal anti-triche), animations cinématiques et musique adaptive.
Démo en ligne
- Frontend : https://jeu.cosmolan.fr
- API : https://api.jeu.cosmolan.fr
- Forgejo : https://git.cosmolan.fr/ubuntu/rps-royale
Stack technique
| Couche | Technologie |
|---|---|
| Moteur 2D | Phaser 3 (WebGL) |
| Frontend | Next.js 15 + Tailwind CSS |
| Temps réel | Node.js + Socket.io |
| API & DB | Express + Prisma ORM + PostgreSQL 17 |
| Cache | Redis |
| Blockchain | Hardhat + Solidity + Ethers.js v6 |
| Audio | Howler.js |
| CI/CD | Forgejo Actions |
| Reverse Proxy | Nginx Proxy Manager |
Structure du monorepo
rps-royale/
├── apps/
│ ├── web/ # Next.js + Phaser (jeu)
│ ├── server/ # Node.js + Socket.io + API
│ └── contracts/ # Hardhat + Solidity
├── packages/
│ └── shared/ # Types et constantes partagés
└── docker-compose.yml
Développement local
Prérequis
- Node.js 20+
- pnpm 9+
- Docker & Docker Compose
Installation
# À la racine du monorepo
pnpm install
# Démarrer la base de données et Redis
docker-compose up -d rps-db rps-redis hardhat-node
# Générer les types Prisma et migrer la DB
pnpm db:generate
pnpm db:migrate
# Compiler et déployer le contrat en local
pnpm contract:compile
pnpm contract:deploy:local
# Lancer le serveur et le frontend (dans deux terminaux)
pnpm --filter server dev
pnpm --filter web dev
Déploiement production
Le déploiement est entièrement automatisé via Forgejo Actions. Un push sur la branche main déclenche :
- Build des images Docker
- Déploiement sur le VPS via SSH +
docker-compose
Voir docs/DEPLOYMENT.md pour les détails.
Game Design
Le jeu repose sur un pattern commit-reveal blockchain pour garantir l'intégrité :
- Commit : chaque joueur envoie le hash de son choix + nonce secret
- Suspense : phase cinématique avec musique et particules
- Reveal : les joueurs dévoilent leur nonce et choix
- Résultat : le smart contract vérifie les hashes et distribue le pot
Voir docs/GAME_DESIGN.md pour la documentation complète.
Licence
MIT