# RollerLogic - Document de Conception et Stratégie de Monétisation

## 🎮 Concept du Jeu

**RollerLogic** est un jeu de puzzle mobile basé sur la logique où le joueur doit créer un chemin en déplaçant des tuiles/cartes pour permettre à une bille de rouler du point de départ (A) au point d'arrivée (B).

### Inspiration

Inspiré du jeu HABA **"Logic! Games Splash Labyrinthe"** (jeu de taquin avec toboggans aquatiques), adapté pour mobile avec des mécaniques enrichies.

**Jeu original** :

- 60 défis pré-conçus avec difficultés croissantes
- Grille 4x4 avec case vide, 13 tuiles fixes (toboggans)
- Principe du taquin : faire coulisser les tuiles adjacentes
- Bille physique qui roule sur le chemin reconstitué
- Âge : 6-12 ans, Durée : 10-15 min/partie

---

## 🎯 Gameplay Core

### Mécaniques Principales

1. **Grille de jeu** : Plateau composé de cases avec une seule case vide (ex: 3x3 à 6x6 selon la difficulté)
2. **Tuiles de chemin** : Cartes avec différentes formes de chemins
   - Ligne droite (─ │)
   - Coude (└ ┘ ┐ ┌)
   - T-junction (┬ ┴ ├ ┤)
   - Croix (+)
   - **Ronds-points** : Tuiles à trou/traversables (obstacles, niveaux avancés)

3. **Déplacement** : Faire coulisser une tuile adjacente vers la case vide (haut/bas/gauche/droite), une tuile à la fois
4. **Contrôles** : Clic souris ou tap doigt sur une tuile adjacente; seules les 2-4 tuiles autour de la case vide peuvent bouger
5. **Objectif** : Connecter le point A au point B en déplaçant les tuiles
6. **Contraintes** :
   - Nombre de mouvements limités (mode challenge)
   - Temps limité (mode arcade)
   - Tuiles bloquées (non déplaçables)
   - Obstacles sur certaines cases

**Pas d'énergie/vies** : Le joueur peut rejouer sans limite; la difficulté vient des mouvements/temps/obstacles.

### Phase d'Animation (inspirée du jeu HABA)

Après résolution du puzzle :

- **Animation automatique** : La bille roule le long du chemin créé (avec effets d'eau/splash)
- **Option avancée (post-MVP)** : Mini-jeu de "tilt" avec accéléromètre pour guider la bille
- **Feedback visuel** : Particules d'eau, éclaboussures, son de glisse
- **Récompense** : Écran de victoire avec confettis/splash animé

**Note** : Le jeu physique HABA inclut une phase motricité où l'enfant penche la boîte pour faire rouler la bille. Dans notre version mobile, cette phase devient une **animation de victoire interactive** qui renforce le thème aquatique.

### Etats de jeu et flow (proposition)

- Boot -> Menu principal -> Choix de mode -> Selection niveau -> Gameplay
- Gameplay : Idle (attente input) -> Move (animation) -> Resolve (check chemin) -> Win/Fail
- Overlays : Pause, Settings, Hint/Rewarded
- Ecrans fin : Win (stats, etoiles, suivant) / Fail (retry, hint, rewarded)

#### Transitions d'etats (detail)

- Boot -> Menu : chargement assets OK.
- Menu -> Choix de mode -> Selection niveau : navigation UI.
- Selection niveau -> Gameplay/Idle : grille chargee, timer pret, moves reset.
- Idle -> Move : clic/tap sur tuile adjacente a `empty`, tuile non verrouillee.
- Move -> Resolve : fin d'animation.
- Resolve -> Win : chemin continu `start` -> `goal` valide.
- Resolve -> Fail : `timeSec <= 0` ou `moves <= 0`.
- Resolve -> Idle : ni win ni fail, continuer.
- Any -> Pause : bouton pause, timer stop.
- Pause -> Idle : reprise.
- Fail -> Rewarded -> Idle : pub acceptee, ajout moves/temps.
- Fail -> Retry : reset niveau.
- Win -> Next : charger niveau suivant ou retour menu.

### Progression

#### Niveaux de Difficulté

- **Facile** : 3x3 → 4x4, 0 tuile bloquée, marge de coups large
  - **Accessibilité** : Premiers niveaux jouables **avant 6 ans** (tutoriel intuitif)
  - **Progression douce** : Jamais décourageante, motive à faire "un niveau de plus"
- **Moyen** : 4x4 → 5x5, 1 tuile bloquée, limite de coups
  - **Cible** : Enfants 7-9 ans habitués aux puzzles
- **Difficile** : 5x5 → 6x6, 2-3 tuiles bloquées, limite stricte
  - **Cible** : Enfants 8-10 ans, adultes casual
- **Mort subite** : difficulté extrême, soit timer court (4x4-5x5) soit limite de coups très serrée (4x4-6x6)
  - **Cible** : Joueurs experts

**Note** : Les grilles 7x7 sont trop complexes pour un puzzle casual et risquent de frustrer les joueurs. Le jeu HABA propose **60 niveaux évolutifs** mais toujours **faisables** - votre jeu doit suivre cette philosophie.

**Choix de difficulté** : le joueur choisit un palier au menu; la progression est séparée par difficulté et le niveau suivant se débloque après chaque victoire.

#### Distribution des niveaux

- 200-300 niveaux par difficulté (cible 240), répartis en paliers de taille/obstacles/limites.
- Le joueur progresse niveau par niveau dans la difficulté choisie (déblocage séquentiel).
- Prototype : génération déterministe via seed fixe (mêmes niveaux pour tous).
- Release : génération offline + validation de solvabilité, puis export dans le build.
- Mises à jour régulières pour ajouter de nouveaux packs de niveaux.

#### Mini-spec génération/validation (offline)

- Entrées : taille de grille, set de tuiles, positions A/B, obstacles, tuiles bloquées, cible de difficulté.
- Générer un état "résolu" avec un chemin A -> B valide, puis placer le reste des tuiles et la case vide.
- Scrambler par N mouvements légaux pour obtenir l'état de départ (solvable garanti).
- Valider avec un solveur (BFS/IDA\*) pour mesurer le nombre minimal de coups et filtrer les niveaux trop faciles/durs.
- Exporter chaque niveau en JSON (grille, tuiles, case vide, contraintes, seed, difficulté) et l'embarquer dans le build.

#### Outil de génération offline (choix recommandé)

- Outil CLI Node.js/TypeScript pour générer, valider, prévisualiser et exporter.
- Solveur embarqué (lib TypeScript) pour calculer `minMoves` et filtrer la difficulté.
- Export JSON versionné dans le projet; batch generation possible avant release.

#### Pipeline de generation offline (etapes + livrables)

- Etape 1 : definir la config (taille, set de tuiles, obstacles, locked, cible diff).
- Etape 2 : generer un etat resolu (chemin valide) + remplir le reste.
- Etape 3 : scramble par N moves legaux pour obtenir l'etat de depart.
- Etape 4 : solver -> `minMoves` + verification solvabilite.
- Etape 5 : appliquer regles de difficulte (taille + moves + timer + obstacles).
- Etape 6 : exporter en pack JSON + index (liste id/difficulte).
- Etape 7 : QA rapide (5-10% des niveaux joues a la main).

**Livrables** :

- `levels_pack_001.json` (contenu)
- `levels_index.json` (meta: pack_id, version, release_date, min_app_version)
- `levels_report.csv` (stats: minMoves, diff, time)

#### Versioning des packs (choix recommande)

- Format pack_id : `campaign_001`, `campaign_002`, etc.
- Version : increment si modif du pack (`version: 1, 2, 3...`).
- MAJ : packs trimestriels ou mensuels selon cadence.
- Index : mappe pack_id -> liste de level_ids et version.

#### Schéma JSON (v1)

- `id` : identifiant unique du niveau.
- `gridSize` : taille de la grille (carrée).
- `empty` : position de la case vide.
- `startPos` : position de connexion du START (bordure).
- `startDir` : direction de connexion du START (N/E/S/W).
- `goalPos` : position de connexion du GOAL (bordure).
- `goalDir` : direction de connexion du GOAL (N/E/S/W).
- `tiles` : liste de tuiles (type, rotation, position, éventuellement verrouillée).
- `blocked` : cases non jouables (trous/obstacles).
- `constraints` : limites de coups et/ou de temps.
- `difficulty` : étiquette de difficulté (easy/medium/hard/expert).
- `seed` : seed de génération (traçabilité offline).

**Types de tuiles** : `straight`, `elbow`, `tee`, `cross`, `roundabout`, `decor`, `empty`, `blocked`  
**Rotation** : `rot` en quarts de tour (0=0°, 1=90°, 2=180°, 3=270°).  
**⚠️ IMPORTANT** : La rotation est **FIXE** (définie à la création du niveau). Les tuiles NE pivotent PAS pendant le jeu (principe du taquin classique). Elles glissent uniquement en gardant leur orientation.  
**Règle** : toutes les cases jouables ont une tuile, sauf `empty` (une seule).

#### Stockage des niveaux (choix recommandé)

- Campagne/Daily : JSON local (offline), packagé dans le build; updates via mises a jour.
- UGC (post-launch) : JSON stocke dans OVH Object Storage; metadata (auteur, votes, tags) en MySQL.
- MySQL : progression, comptes, achats, classements, et liens vers fichiers UGC.

#### Connecteurs et validation (N/E/S/W)

**Connecteurs par type (avant rotation)** :

- `straight` : N<->S.
- `elbow` : N<->E.
- `tee` : N<->E et N<->W (il manque S).
- `cross` : N/E/S/W.
- `roundabout` (ronds-points) : connexions multiples (N/E/S/W)
- `decor` / `empty` / `blocked` : aucun connecteur

**Rotation** : appliquer la rotation à ces connecteurs de base.

**Validation du chemin** :

- Deux tuiles adjacentes sont connectées si leurs connecteurs se font face (ex: une tuile a E et l'autre a W).
- Un niveau est solvable si un chemin continu relie START à GOAL (connecteurs externes).
- Toutes les tuiles "chemin" doivent être connectées; aucune connexion ouverte hors START/GOAL.
- `decor`, `empty` et `blocked` ne portent pas de connecteurs.

#### Format JSON (exemple)

```json
{
  "id": 12,
  "gridSize": 5,
  "empty": { "x": 2, "y": 4 },
  "startPos": { "x": 0, "y": 0 },
  "startDir": "N",
  "goalPos": { "x": 4, "y": 4 },
  "goalDir": "S",
  "tiles": [
    { "x": 1, "y": 0, "type": "straight", "rot": 1 },
    { "x": 2, "y": 0, "type": "elbow", "rot": 2 },
    { "x": 4, "y": 4, "type": "elbow", "rot": 2, "locked": false }
  ],
  "blocked": [{ "x": 3, "y": 2 }],
  "constraints": { "maxMoves": 30, "timeSec": 0 },
  "seed": 12345,
  "difficulty": "medium"
}
```

#### Critères de difficulté (proposition)

- La difficulté dépend de 3 axes : nombre minimal de mouvements, taille/nb de tuiles, et pression du temps.
- Base par taille (à ajuster par playtests) :
  - 3x3 : easy 4-8
  - 4x4 : easy 6-12, medium 13-20, hard 21-30, mort subite 31+
  - 5x5 : medium 21-32, hard 33-48, mort subite 49+
  - 6x6 : hard 45-65, mort subite 66+
- Modificateurs :
  - Timer : si `timeSec > 0` et `timeSec < minMoves * 2`, +1 palier; si `timeSec < minMoves * 1.5`, +2 paliers.
  - Obstacles/tuiles bloquées : +1 palier si `blocked` ou `locked` > 0.
- Pour le mode challenge : `maxMoves` cible = `ceil(minMoves * 1.4)` (ajustable).

#### Modes de Jeu

1. **Mode Campagne** (Story Mode)
   - 200+ niveaux progressifs
   - Introduction graduelle de nouvelles mécaniques
   - Boss levels tous les 20 niveaux
   - Thèmes variés (forêt, ville, espace, etc.)

2. **Mode Arcade** (Timed Challenge)
   - Résoudre un maximum de puzzles en temps limité
   - Difficulté croissante
   - Classement mondial
   - Récompenses quotidiennes

3. **Mode Puzzle du Jour** (Daily Challenge)
   - 1 puzzle unique par jour
   - Même puzzle pour tous les joueurs
   - Classement global
   - Récompenses spéciales

4. **Mode Créateur** (Level Editor)
   - Déverrouillable après 5 niveaux via achat unique 4,99€ (MVP: création locale)
   - MVP : création locale (sauvegarde appareil), preview et export
   - Post-launch : upload cloud, partage communautaire, votes/likes, modération
   - Les niveaux peuvent utiliser des thèmes premium; tous les joueurs peuvent y jouer, avec incitation à acheter le thème
   - Les joueurs peuvent jouer aux niveaux communautaires gratuitement (post-launch)

---

## 🎨 Direction Artistique

### Style Visuel

- **Thème par défaut : Aquatique** (fidèle au jeu HABA "Splash Labyrinthe")
  - Toboggans de parc aquatique colorés
  - Bille personnifiée (mascotte "Billie" avec bouée)
  - Effets d'eau, splash, éclaboussures
- **Design coloré et accessible** : Palette vive adaptée aux enfants/famille
- **Animation fluide** : Déplacement des tuiles avec feedback tactile
- **Particules** : Splash/confettis lors de la victoire
- **Thèmes déblocables (post-launch)** : Bois, néon, espace, jungle, etc.

### Audio

- **Musique d'ambiance** : Douce et non intrusive
- **SFX** : Sons satisfaisants pour chaque action (clic, glissement, victoire)
- **Feedback haptique** : Vibrations subtiles sur actions importantes

---

## 💰 Stratégie de Monétisation

### Modèle Freemium avec Publicité

#### Lancement (MVP) - simple

- Publicité : Interstitiels (cap), Rewarded (indices/temps), Banner menu (optionnelle)
- Achats uniques : Retrait de la publicité 4,99€; Déblocage éditeur de niveaux 4,99€ (après 5 niveaux)
- Extensions post-launch : consommables, abonnements, monnaie premium, pass saisonnier

#### 1. **Publicité (Revenue Principal)**

- ✅ **Interstitiels** : Entre les niveaux (max 1 toutes les 3 parties)
- ✅ **Rewarded Video** :
  - Continuer après échec (mouvements supplémentaires ou temps bonus)
  - Obtenir des indices (hints)
  - Débloquer une tuile bonus
  - Doubler les récompenses
- ✅ **Banner Ads** : Discrets en menu principal (optionnel)

#### 2. **Achats In-App**

**Achats uniques (MVP) :**

- 🚫 **Retrait de la publicité** : 4,99€ (achat unique)
- 🧩 **Déblocage éditeur de niveaux** : 4,99€ (achat unique, après 5 niveaux)

**Catalogue IAP (IDs proposes) :**

- `remove_ads` : retrait pub
- `editor_unlock` : debloque editeur
- `hints_s` / `hints_m` / `hints_l` : packs d'indices
- `undo_s` / `undo_m` / `undo_l` : packs d'undo
- `time_ext_s` : extensions de temps
- `theme_pack_01` : pack themes premium
- `music_pack_01` : pack musiques
- `vip_pass` : pass VIP
- `premium_monthly` / `premium_annual` : abonnement premium
- `battlepass_s01` : pass saisonnier

**Consommables (post-launch) :**

- 💎 Indices (Hints) :
  - 5 indices : 0,99€
  - 15 indices : 1,99€
  - 50 indices : 4,99€
- 🔄 Annuler coup (Undo) : Packs de 10/30/100
- ⏱️ Extensions de temps : Pour mode arcade
- ⭐ Boosters : Résolution automatique d'une partie du puzzle

**Non-Consommables (post-launch) :**

- 🎨 **Pack de Thèmes Premium** : 2,99€
- 🎵 **Pack Musiques** : 1,99€
- 🏆 **Pass VIP** : 9,99€ (accès à tous les contenus cosmétiques)

**Abonnement (post-launch, optionnel) :**

- ⭐ **Premium Pass** (Mensuel : 2,99€ / Annuel : 19,99€)
  - Aucune publicité
  - Indices quotidiens gratuits (3/jour)
  - Bonus quotidien d'étoiles
  - Accès prioritaire aux nouveaux niveaux
  - Thèmes exclusifs
  - Multiplicateur de points x2

#### 3. **Système de Monnaie Virtuelle**

**MVP** : étoiles uniquement; gemmes ajoutées post-launch.

**Étoiles (⭐)** - Monnaie gratuite

- Gagnées en complétant des niveaux
- Récompenses quotidiennes
- Accomplissements
- Utilisées pour : débloquer thèmes basiques, acheter indices

**Gemmes (💎)** - Monnaie premium

- Achetées avec argent réel (post-launch)
- Petites quantités via rewarded ads (post-launch)
- Utilisées pour : contenus premium, boosters, continuer partie

#### 4. **Pass Saisonnier** (Battle Pass, post-launch)

- Durée : 30-45 jours par saison
- Version Gratuite : Récompenses basiques
- Version Premium (4,99€) :
  - Récompenses exclusives
  - Thèmes saisonniers
  - Avatars uniques
  - Boost XP x1.5

---

## 📊 Métriques de Rétention

### Systèmes d'Engagement

1. **Connexion Quotidienne**
   - Jour 1 : 50 étoiles
   - Jour 2 : 100 étoiles
   - Jour 3 : 150 étoiles
   - Jour 7 : thème exclusif + bonus d'étoiles (gemmes post-launch)

2. **Quêtes et Achievements**
   - Quotidiennes : Compléter 3 niveaux, gagner sans indice, etc.
   - Hebdomadaires : Compléter 20 niveaux, mode arcade 5x
   - Permanentes : Compléter tous les niveaux d'un monde, etc.

3. **Classements (Leaderboards)**
   - Global
   - Amis Facebook/Google Play
   - Pays/Région
   - Guildes/Clans (feature avancée)

4. **Événements Limités**
   - Événements thématiques (Noël, Halloween, etc.)
   - Niveaux exclusifs temporaires
   - Récompenses uniques

---

## 🛠️ Stack Technique

### Frontend : Web Mobile (Capacitor + Phaser)

**Choix recommandé** : Web app embarquée via Capacitor.

- **Langage** : **TypeScript** - code unique pour gameplay + UI
- **UI** : **HTML/CSS** pour toutes les pages (menus, HUD, shop, settings)
- **Rendu jeu** : **Phaser 3** (canvas 2D) pour tuiles, bille et animations
- **Build** : **Vite** (dev server + bundle)
- **Packaging mobile** :
  - ✅ **iOS** (App Store) via Capacitor
  - ✅ **Android** (Google Play Store) via Capacitor
- **Avantages** :
  - UI 100% CSS, pas de graphisme obligatoire
  - Itération rapide (hot reload)
  - Canvas 2D léger, parfait pour puzzle
  - Base web réutilisable pour une démo navigateur (optionnel)
- **Libs/Plugins front essentiels** :
  - Phaser 3 (moteur 2D)
  - Capacitor (bridge mobile)
  - Plugin AdMob (pubs) + plugin IAP (achats in-app)
  - Howler.js (audio) ou Web Audio API
  - GSAP ou animations CSS pour transitions UI (optionnel)

### Backend : API Docker sur serveur dédié OVH (Linux)

**Infrastructure propriétaire sur serveur dédié OVH**

#### Configuration Serveur

**Stack Backend** :

- **Serveur Web** : Node.js 20 + **Fastify** (TypeScript)
- **ORM** : Prisma (MySQL)
- **Base de données** :
  - **MySQL** (Cloud OVH - données relationnelles : comptes, progression, scores)
  - **Redis** (cache, sessions, leaderboards temps réel, optionnel)
  - **Stockage fichiers** : OVH Object Storage (pour niveaux créés par utilisateurs, assets)
- **OS** : Ubuntu Server LTS (Linux)
- **Reverse Proxy** : Nginx ou Caddy (HTTPS, load balancing)

#### Containerisation (déploiement)

- Image Docker pour l'API (build TypeScript -> runtime Node)
- `docker compose` sur le serveur pour API + reverse proxy
- Secrets/config via variables d'environnement; MySQL OVH externe

**Avantages MySQL Cloud OVH** :

- ✅ **Performance** : Optimisé pour lectures/écritures fréquentes
- ✅ **Maturité** : Très stable, documentation exhaustive
- ✅ **Coût** : Moins cher que PostgreSQL cloud
- ✅ **Backup automatique** : OVH gère sauvegardes quotidiennes
- ✅ **Scalabilité** : Facile d'upgrader RAM/CPU sans migration
- ✅ **Compatibilité** : Excellents drivers Node.js (mysql2) + ORM Prisma
- ✅ **Transactions ACID** : Pour achats IAP et économie virtuelle

#### API REST/WebSocket

**Endpoints principaux** :

- `/api/auth` - Authentification (JWT tokens)
- `/api/player` - Profil joueur, progression
- `/api/leaderboard` - Classements globaux
- `/api/levels` - Packs de niveaux (post-launch) / meta UGC
- `/api/user-levels` - Upload/download niveaux créés (post-launch)
- `/api/shop` - Achats IAP (validation receipts)
- `/api/analytics` - Tracking événements
- **WebSocket** `/ws` - Events temps réel (multijoueur async)

#### Schema MySQL minimum (MVP)

- `players` : id, email (unique), password_hash, created_at, last_login_at, region, platform.
- `player_progress` : player_id (PK/FK), campaign_level, stars_total, updated_at.
- `level_results` : player_id + level_id (PK), best_moves, best_time_sec, best_score, updated_at.
- `wallets` : player_id (PK), stars, gems (nullable), updated_at.
- `entitlements` : id, player_id, product_id, granted_at, expires_at (nullable), source.
- `iap_receipts` : id, player_id, store, product_id, receipt_hash, status, created_at, validated_at.
- `user_levels` (post-launch) : id, player_id, title, json_url, theme_id, created_at, status.
- `user_level_votes` (post-launch) : user_level_id + player_id (PK), vote, created_at.

**Notes** :

- Leaderboards temps reel : Redis, avec snapshot periodique en MySQL si besoin.
- Campagne/Daily reste offline (JSON); MySQL sert a progression/UGC/achats.
- product_id doit matcher le catalogue IAP (ex: `remove_ads`, `editor_unlock`, etc.).
- UGC online (user_levels/votes) active post-launch uniquement.

#### Fonctionnalités Backend

1. **Authentification & Comptes**
   - **Phase 1 (MVP)** : Système email/password uniquement
     - Hash Argon2id (paramètres sécurisés)
     - Validation email (lien de confirmation)
     - Reset password sécurisé
     - JWT tokens pour sécurité (access + refresh tokens)
   - **Phase 2 (Post-Launch)** : OAuth2 optionnel
     - Google Play Games (Android)
     - Apple Game Center (iOS)
     - Steam (PC)
     - Liaison de comptes (joueur peut connecter plusieurs méthodes)
   - Sauvegarde cloud synchronisée

2. **Progression & Économie**
   - Sauvegarde progression (local) + sync cloud (MySQL OVH)
   - Gestion monnaies virtuelles (⭐ étoiles, 💎 gemmes)
   - Historique achats IAP
   - Validation receipts iOS/Android côté serveur

3. **Leaderboards & Matchmaking**
   - Classements globaux (Redis sorted sets)
   - Classements par pays/région
   - Challenge quotidien synchronisé
   - Tournois hebdomadaires

4. **Level Editor & Partage**
   - Upload niveaux créés (JSON)
   - Stockage : disque SSD ou objet storage
   - Système de votes/likes
   - Modération (flags, validation manuelle)

5. **Analytics & Monitoring**
   - Suivi KPIs : DAU, rétention, ARPDAU
   - Logs événements joueurs (niveaux complétés, achats)
   - Monitoring serveur (uptime, latence)
   - Dashboard admin custom

6. **Sécurité**
   - HTTPS obligatoire (Let's Encrypt)
   - Rate limiting (anti-spam API)
   - Hash passwords (Argon2id)
   - Validation côté serveur (anti-cheat)
   - Backups quotidiens automatiques

#### Scalabilité

- **Phase 1** : 1 serveur suffit (jusqu'à 50k joueurs actifs)
- **Phase 2** : Load balancing (2+ serveurs web, 1 DB)
- **Phase 3** : Cluster MySQL (read replicas), Redis cluster
- OVH offre scaling vertical/horizontal facile

---

## 📱 Plateformes de Lancement

### Phase 1 : Soft Launch (Mobile)

- **Google Play (Android)** : Marché de test plus permissif
- Pays test : Canada, Philippines, Suède
- Durée : 2-3 mois
- Objectif : Tester monétisation, équilibrage, bugs, charge serveur

### Phase 2 : Launch Global (Mobile + PC)

**Mobile** :

- ✅ **Google Play Store** (Android)
- ✅ **Apple App Store** (iOS)

**PC (optionnel)** :

- ✅ **Steam** (Windows, macOS, Linux)
- ✅ **Epic Games Store** (optionnel)
- ✅ **Itch.io** (version démo/marketing)

**Site web** :

- ✅ **Site vitrine** (marketing, pas de version jouable navigateur)

**Avantages version PC** :

- Écran plus grand = meilleur confort pour puzzles complexes
- Contrôles souris + clavier (plus précis)
- Monétisation Steam (Workshop pour niveaux communautaires)
- Cross-save PC ↔ Mobile (via compte serveur OVH)

---

## 📈 KPIs et Objectifs

### Métriques Clés

- **D1 Retention** : >40% (Jour 1)
- **D7 Retention** : >20% (Jour 7)
- **D30 Retention** : >10% (Jour 30)
- **ARPDAU** (Average Revenue Per Daily Active User) : >0,15€
- **Conversion IAP** : >3% des joueurs actifs
- **Ad Fill Rate** : >90%

### Objectifs Financiers (Exemple)

- **Mois 1-3** : 10 000 téléchargements, 500€/mois
- **Mois 6** : 100 000 téléchargements, 5 000€/mois
- **Année 1** : 500 000+ téléchargements, 20 000€/mois

---

## 🚀 Roadmap de Développement

> Note: cette roadmap est la feuille de route de conception initiale (v1.0).  
> Le statut d'implémentation courant est suivi dans `README.md` ("Statut du Projet").

### Phase 1 : MVP (2-3 mois)

- [ ] Core gameplay (déplacement tuiles, détection chemin)
- [ ] Outil de génération offline + solveur (validation solvabilité/difficulté)
- [ ] Export JSON + chargement des niveaux dans le runtime
- [ ] 30 niveaux fonctionnels
- [ ] Menu basique
- [ ] Sauvegarde locale
- [ ] Intégration AdMob (test)

### Phase 2 : Pre-Alpha (1 mois)

- [ ] 60 niveaux (3 mondes)
- [ ] Système de progression
- [ ] Animations et polish visuel
- [ ] Sons et musiques
- [ ] Intégration IAP basique

### Phase 3 : Alpha (1 mois)

- [ ] 100 niveaux
- [ ] Mode arcade
- [ ] Daily challenge
- [ ] Intégration serveur OVH (API REST + WebSocket)
- [ ] Leaderboards
- [ ] Tutorial interactif

### Phase 4 : Beta / Soft Launch (2 mois)

- [ ] 150+ niveaux
- [ ] Mode créateur local (v1)
- [ ] Système de hints/boosters
- [ ] Pass saisonnier
- [ ] Tests utilisateurs intensifs
- [ ] Optimisation monétisation

### Phase 5 : Launch Global (1 mois prep)

- [ ] 200+ niveaux
- [ ] Marketing materials (trailer, screenshots)
- [ ] Store optimization (ASO)
- [ ] Support multi-langues (EN, FR, ES, DE, PT)
- [ ] Campagne marketing

### Phase 6 : Post-Launch (Continu)

- [ ] Nouveaux niveaux mensuels (20-30)
- [ ] Événements saisonniers
- [ ] UGC online : upload, votes, modération
- [ ] Optimisations basées analytics

---

## 🎯 Différenciateurs & USPs

### Ce qui rend RollerLogic unique :

1. **Mélange puzzle & physique** : La bille "roule" vraiment avec physique réaliste
2. **Mode créateur** : Engagement communautaire fort
3. **Progression satisfaisante** : Courbe d'apprentissage bien dosée
4. **Esthétique soignée** : Visual polish qui démarque du marché
5. **Monétisation juste** : Jamais P2W (pay-to-win), que cosmétique et confort

---

## 💡 Features Avancées (Post-Launch)

### Court Terme (3-6 mois post-launch)

- Multijoueur asynchrone (défis entre amis)
- Replay system (revoir sa solution)
- Graphiques de stats personnelles
- Achievements Steam-like

### Moyen Terme (6-12 mois)

- Mode histoire avec narration
- Personnalisation bille (skins)
- Guildes/Clans
- Tournois hebdomadaires

### Long Terme (12+ mois)

- Version PC (Steam)
- Niveaux collaboratifs (2 joueurs)
- Mode réalité augmentée (AR)
- Licences avec marques (Coca-Cola, Disney, etc.)

---

## 📞 Contact & Next Steps

**Prochaines Étapes Recommandées :**

1. ✅ Valider le concept avec prototype papier/digital
2. 🎨 Créer mockups UI/UX dans Figma
3. 💻 Développer MVP (30 niveaux jouables)
4. 👥 Tests utilisateurs (amis, famille)
5. 📊 Analyse feedback et itération
6. 🚀 Soft launch

---

**Document créé le** : 22 janvier 2026  
**Version** : 1.0  
**Statut** : Conception initiale

---

## 📝 Notes & Idées en Vrac

- Considérer mechanic "gravité" où la bille peut tomber sur plusieurs niveaux
- Easter eggs cachés dans certains niveaux
- Mode zen sans timer ni limite de coups
- Partenariat avec écoles pour version éducative (logique mathématique)
- Cross-promotion avec autres jeux puzzle
