The Arena — RPS Royale : jeu multijoueur Pierre-Feuille-Ciseaux avec paris blockchain
|
Some checks failed
Deploy to VPS / deploy (push) Has been cancelled
- Add match:requestAI server handler creating matches against bot - AI commits and reveals automatically with random choices - Frontend generates guest address when no MetaMask is detected - AI matches skip blockchain calls (offline test mode) - Add 'Jouer contre l\'IA' button in LobbyScene Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| apps | ||
| docs | ||
| packages/shared | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| docker-compose.prod.yml | ||
| docker-compose.yml | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
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