rps-royale/README.md
Ubuntu 64e8fb6c49 Initial commit: monorepo structure, smart contract, server, and Phaser frontend
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>
2026-05-24 02:14:42 +00:00

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

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 :

  1. Build des images Docker
  2. 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é :

  1. Commit : chaque joueur envoie le hash de son choix + nonce secret
  2. Suspense : phase cinématique avec musique et particules
  3. Reveal : les joueurs dévoilent leur nonce et choix
  4. 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