# RollerLogic 🌊

Jeu de puzzle mobile inspiré du jeu de plateau HABA **"Logic! Games Splash Labyrinthe"**.
Prototype web jouable (Phaser + UI HTML/CSS).

## Vue d'ensemble

| Composant | Technologie | Version / Note |
|---|---|---|
| Moteur de jeu | Phaser 3 + TypeScript | `rollerlogic-mobile` (`v1.3.12`) |
| API | Fastify 5 + MySQL | `rollerlogic-api` (`v1.3.17`) |
| Mobile | Capacitor 8 (Android) + PWA | selon build |
| Paiements | Stripe (web) | checkout + webhooks |
| Déploiement | Docker Swarm + Traefik (OVH) | image tag (ex: `v1.3.38`) |
| Base de données | MySQL 8 (OVH CloudDB) | schéma + migrations SQL |

Modes de jeu : **Campagne**, **Arcade**, **Infini**, **Tutoriel**, **Défi quotidien**, **Défi hebdomadaire**.

Monétisation : cash packs, packs d’avatars, packs de billes, Challenge Pack, VIP No-Ads.

## 📌 Statut du Projet

**✅ Prototype jouable (MVP avancé)**

### Ce qui est fait

- ✅ Projet Phaser 3 + TypeScript + Vite
- ✅ Génération déterministe de 240 niveaux par difficulté
- ✅ Moteur de taquin + validation du chemin (START/GOAL externes)
- ✅ Campagne + progression synchronisée par difficulté (backend)
- ✅ Tutoriel guidé + aides en jeu (indice/annuler/solution)
- ✅ Modes Arcade (chrono), Infini, Défi du jour
- ✅ Défi hebdomadaire + récompenses
- ✅ Classements (global, par difficulté, rang joueur)
- ✅ Variantes de tuiles avancées dans le générateur (T/Croix/Rond-point)
- ✅ UI multi-écrans (home, login, hub, profil, réglages, boutique, aide)
- ✅ Économie synchronisée (wallet/points/aides) avec backend
- ✅ Stats, badges et historique récent
- ✅ SFX procéduraux, vibrations, thèmes UI (ocean/sunset/neon)
- ✅ Animation de victoire (bille + splash)

### En cours

- 🔄 Sprites des tuiles / identité visuelle finale
- 🔄 Musique et SFX réels (actuel : audio procédural)
- 🔄 Ajustements UX mobile (touch + responsive fin)
- 🔄 Backend (durcissement prod, monitoring, anti‑triche, observabilité)
- 🔐 Verrouiller les appels sensibles (anti‑replay, anti‑tampering) avant prod
- ✨ Assets finaux pour le générateur : utiliser Straight/Elbow/Tee/Cross/Rond-point + décor, en garantissant que chaque sortie de carreau est reliée à une autre et qu’aucun trajet n’est laissé sans embout
- 🔄 IAP / Ads (boutique premium : placeholder)

### À venir

- 📦 Build Capacitor iOS (Android déjà en place)
- 🧪 Tests utilisateurs + équilibrage des niveaux
- 🧱 Packs de niveaux offline éditoriaux + solveur/validation avancée
- 🌐 Fonctionnalités sociales avancées (amis/pays/clans/tournois)

## 🚀 Lancement

```bash
cd rollerlogic-mobile
npm install
npm run dev
```

Ouvrir http://localhost:5173 dans le navigateur

## 🎮 Gameplay

### Mécanique du Taquin

1. **Grille 3x3 à 6x6** avec une case vide
2. **Glisser une tuile adjacente** pour la déplacer
3. **Créer un chemin continu** entre START et GOAL placés à l'extérieur du plateau
4. **Victoire** quand le chemin est complet et sans sorties ouvertes
5. **Rotation fixe** : les tuiles ne pivotent pas en jeu

### Types de Tuiles

- **Actuelles** : Straight, Elbow, Tee, Cross, Roundabout, Decor, Empty, Blocked

### Difficultés

- 🟢 **Facile** : 3x3 → 4x4, 0 bloqué
- 🟠 **Moyen** : 4x4 → 5x5, 1 bloqué
- 🔴 **Difficile** : 5x5 → 6x6, 2-3 bloqués
- ⚫ **Mort subite** : 4x4 → 6x6, marge de coups serrée

## 🧩 Modes de jeu

- **Campagne** : progression synchronisée (240 niveaux par difficulté)
- **Tutoriel** : parcours guidé avec étapes
- **Arcade** : run chronométré (score + niveaux enchaînés)
- **Infini** : série zen sans chrono
- **Défi du jour** : puzzle quotidien + récompense mensuelle
- **Défi hebdomadaire** : progression sur 7 jours + récompense

## 🧰 Économie & Aides (prototype)

- **Points** gagnés par victoire (selon difficulté)
- **Packs d'aides** : indices, annulations, solutions
- **Packs premium** : paiement web via Stripe (selon configuration d'environnement)

## 📊 Progression & synchronisation

- Sauvegarde backend (wallet/progression/stats/arcade/infinite/daily/settings)
- Connexion backend via JWT + refresh cookie HttpOnly

## 📁 Structure du Projet

```
RollerLogic/
├── README.md                          # Ce fichier
├── docs/                              # Documentation organisee
│   ├── README.md                      # Index de la documentation
│   └── architecture/game-design.md    # Document de conception complet
└── rollerlogic-mobile/                # Code source du jeu
    ├── index.html                     # UI HTML
    ├── src/
    │   ├── main.ts                    # UI + navigation + session + sync backend
    │   ├── scenes/
    │   │   ├── GameScene.ts           # Gameplay Phaser
    │   │   └── MenuScene.ts           # Menu Phaser
    │   ├── core/                      # Moteurs & logique
    │   │   ├── TaquinEngine.ts
    │   │   ├── PathFinder.ts
    │   │   ├── progress.ts
    │   │   ├── stats.ts
    │   │   ├── economy.ts
    │   │   ├── arcade.ts
    │   │   ├── infinite.ts
    │   │   ├── daily.ts
    │   │   └── settings.ts
    │   ├── data/                      # Niveaux + tutoriel
    │   │   ├── levels.ts
    │   │   └── tutorial.ts
    │   ├── audio/sfx.ts               # SFX procéduraux
    │   ├── style.css                  # UI CSS
    │   └── types/                     # Types TS
    └── package.json
```

## 📸 Assets HABA (si disponibles)

Pour améliorer les visuels, photos du jeu physique utiles :

1. Tuiles individuelles (toboggans)
2. Plateau/grille
3. Bille + bouée
4. Livret des 60 niveaux

## 🎯 Roadmap courte

1. 🎨 Intégration des sprites + polish visuel
2. 🎵 Audio complet + musique
3. 📱 Finaliser iOS (Capacitor) + QA multi-appareils
4. 🔐 Durcissement backend (anti‑replay, anti‑tampering, monitoring)
5. 🧪 Tests utilisateurs + équilibrage
6. 🌐 Fonctionnalités sociales avancées

## 📚 Documentation Complète

Voir [docs/architecture/game-design.md](./docs/architecture/game-design.md) pour :

- Spécifications techniques détaillées
- Stratégie de monétisation
- Architecture backend
- Roadmap complète
- Détail des assets et du générateur attendu (tuiles, raccords, variantes)

Voir aussi :
- `docs/README.md` (index documentation)
- `docs/operations/production-audit.md` (audit pré-prod + checklist sans secrets)

## 🔧 Backend & connectivité

- `rollerlogic-api` contient une API Fastify + MySQL (schema gère `users`, `wallets`, `progress`). Les routes `/auth/register`, `/auth/login`, `/wallet/*` et `/progress/*` sont prêtes à répondre aux requêtes depuis `rollerlogic-mobile/src/core/api.ts` via `VITE_API_URL` (le serveur tourne sur le port 3000 par défaut).
- Le backend est prévu pour être emballé dans `rollerlogic-api/Dockerfile` puis déployé sur OVH Cloud (voir `docs/deployment/ovh-deployment.md`). On prépare une image Docker, la configuration des secrets MySQL/JWT/SMTP et le stack Traefik décrit dans ce guide.
- La progression, les stats, l’economie (wallet + aides), les modes arcade/infinite, le daily et les reglages sont maintenant stockes en base. Le client garde seulement un access token en memoire et un refresh token en cookie HttpOnly.

## 🔐 Sécurité & dette critique

- L’economie (points + packs d’aides) est geree cote backend et ne depend plus du stockage local. Il reste a verrouiller les appels sensibles (anti‑triche, anti‑replay) avant production.
- L’API REST est maintenant authentifiée (JWT + refresh rotation) et rate‑limitée, mais reste en mode prototype : pas de MFA, pas de politique de verrouillage avancée, pas de surveillance brute‑force.
- Le serveur verrouille CORS en production via `APP_URL`, mais la sécurité infra (TLS vers OVH CloudDB, rotation des secrets) doit être validée avant la sortie.

## 🧭 Prochaines étapes (checkpoint)

1. Finaliser l’intégration front/back : achever les modifications de `rollerlogic-mobile/src/main.ts` (connexion, statut, synchronisation wallet/progression) et valider les appels aux endpoints existants.
2. Durcir les endpoints sensibles (wallet/aides/progression) avec anti‑replay et controles serveur.
3. Générer les assets finaux pour le prototype (sprites + variantes requises) et s’assurer que le générateur utilise chaque tuile et boucle sans sorties nues.
4. Préparer l’image Docker finale du backend + déploiement OVH (MySQL Cloud + secrets JWT/SMTP) en suivant `docs/deployment/ovh-deployment.md`.
5. Documenter la sécurisation (JWT, rate-limiting, validation des entrées) en lien avec l’architecture backend et planifier des tests d’acceptation.
