Auth SuperOAuth (JWT validation + httpOnly cookie), entités users/characters/level_thresholds, lazy calculation endurance, seed 100 niveaux, config prod-ready (trust proxy, helmet, CORS, rate limit). Validé : health 200, auth flow, character CRUD, endurance lazy, 401 sans cookie.
525 lines
17 KiB
Markdown
525 lines
17 KiB
Markdown
# TetaRdPG — Game Design Document
|
||
|
||
> Version : 1.0 — Mars 2026
|
||
> Statut : Conception — pré-production
|
||
> Type : Idle-RPG textuel communautaire | Extension Twitch + Site Web
|
||
|
||
---
|
||
|
||
## Pitch
|
||
|
||
TetaRdPG est un RPG communautaire asynchrone intégré à Twitch.
|
||
Les viewers créent un personnage, le font progresser via des actions consommant de l'endurance,
|
||
et interagissent avec le stream et la communauté en temps réel.
|
||
|
||
**Ce qui rend ce jeu unique :**
|
||
- L'engagement Twitch (Bits, abonnements, points de chaîne) est une ressource de jeu
|
||
- La progression est persistante et stratégique, pas un simple clicker
|
||
- La communauté joue ensemble — succès collectifs, boss mondiaux, guildes
|
||
|
||
---
|
||
|
||
## Piliers de design
|
||
|
||
| Pilier | Description |
|
||
|--------|-------------|
|
||
| **Stratégie** | Chaque action coûte de l'endurance — gérer sa ressource est central |
|
||
| **Persistance** | La progression survit aux streams, les choix ont des conséquences durables |
|
||
| **Communauté** | Les objectifs collectifs sont aussi importants que la progression individuelle |
|
||
| **Intégration Twitch** | L'activité sur le stream a une valeur en jeu directe |
|
||
|
||
---
|
||
|
||
## Systèmes Core
|
||
|
||
### Endurance
|
||
|
||
L'endurance est la ressource principale. Elle régule toutes les actions du joueur.
|
||
|
||
| Paramètre | Valeur |
|
||
|-----------|--------|
|
||
| Base | 100 pts |
|
||
| Maximum (avec équipement) | 150 pts |
|
||
| Recharge passive | 10 pts / heure (1 pt toutes les 6 min) |
|
||
|
||
**Recharge active :**
|
||
- 1 TetardCoin → +20 endurance
|
||
- Potions : +25 / +50 / +100 endurance
|
||
|
||
**Coût des actions :**
|
||
|
||
| Action | Coût endurance |
|
||
|--------|---------------|
|
||
| Combat | 10 |
|
||
| Entraînement (léger) | 20 |
|
||
| Entraînement (moyen) | 40 |
|
||
| Entraînement (intensif) | 60 |
|
||
| Quête (facile) | 15 |
|
||
| Quête (moyenne) | 30 |
|
||
| Quête (difficile) | 50 |
|
||
| Fuite en combat | 5 |
|
||
|
||
---
|
||
|
||
### Combat PvE
|
||
|
||
**Format :** tour par tour — Attaque / Défense / Objet / Fuite
|
||
|
||
**Formules de dégâts :**
|
||
|
||
| Type | Formule |
|
||
|------|---------|
|
||
| Mêlée | Arme + (Force × 1.5) |
|
||
| Distance | Arme + (Agilité × 1.5) |
|
||
| Magique | Arme + (Intelligence × 1.5) |
|
||
|
||
**Mécanique défensive :**
|
||
- Réduction selon type d'armure + coefficient de défense
|
||
|
||
**Coups critiques et esquive :**
|
||
|
||
| Mécanique | Formule | Effet |
|
||
|-----------|---------|-------|
|
||
| Critique | 5% + (Chance × 0.2%) | Dégâts × 1.5 |
|
||
| Esquive | 5% + (Chance × 0.1%) | Annule les dégâts |
|
||
|
||
**Fin de combat :**
|
||
- Victoire → XP + Or + loot + récupération 10% PV
|
||
- Défaite → retour auberge, -50 endurance, perte d'or
|
||
- Récupération PV hors combat → 10% PV toutes les 15 min
|
||
|
||
---
|
||
|
||
### Progression & Niveaux
|
||
|
||
**Courbe XP :** `XP requise = 100 × N^1.5`
|
||
|
||
| Niveau | XP requise (cumulé) |
|
||
|--------|-------------------|
|
||
| 2 | 283 |
|
||
| 10 | 3 162 |
|
||
| 50 | 35 355 |
|
||
| 100 | 100 000 |
|
||
|
||
**Niveau maximum :** 100, puis **Niveau Beta** *(définition à préciser — prestige, cosmétique ?)*
|
||
|
||
**Statistiques :**
|
||
- 5 stats : Force, Agilité, Intelligence, Chance, Vitalité
|
||
- Base : 5 points à répartir à la création
|
||
- Gain : +5 points par niveau
|
||
- Plafond : 101 par stat (via entraînement et équipement)
|
||
- PV de base : 100 (Vitalité influence le max)
|
||
|
||
**Déblocages par niveau :**
|
||
|
||
| Niveau | Déblocage |
|
||
|--------|-----------|
|
||
| 5 | Quêtes moyennes |
|
||
| 10 | Forge |
|
||
| 15 | Boutique avancée |
|
||
| 20 | Quêtes difficiles + Guildes |
|
||
| 30 | Équipements épiques |
|
||
| 50 | Succès communautaires + Quêtes d'élite |
|
||
|
||
---
|
||
|
||
### Artisanat & Forge
|
||
|
||
**Forge** (accès niveau 10+)
|
||
|
||
Améliore les équipements existants : +stat, effet spécial, bonus set anticipé.
|
||
|
||
| Niveau d'amélioration | Résultat | Risque |
|
||
|----------------------|----------|--------|
|
||
| Niv. 1 – 2 | Succès garanti | Aucun |
|
||
| Niv. 3 | Succès / Échec | 20% perte matériaux |
|
||
| Niv. 4 | Succès / Échec | 30% perte matériaux |
|
||
| Niv. 5 | Succès / Échec | 40% perte matériaux |
|
||
|
||
Coût max : 12 TetardCoin (succès garanti, tous niveaux)
|
||
|
||
**Artisanat**
|
||
|
||
Création d'équipements, consommables, améliorations à partir de recettes + matériaux.
|
||
|
||
| Paramètre | Valeur |
|
||
|-----------|--------|
|
||
| Durée | 15 min à 2 h (temps réel) |
|
||
| Endurance | 5 + (Rareté × 3) |
|
||
| Accélération | TetardCoin |
|
||
|
||
Sources de matériaux : loot, échanges joueurs, événements.
|
||
|
||
**Bonus de sets d'équipement :**
|
||
|
||
| Pièces du même set | Bonus |
|
||
|--------------------|-------|
|
||
| 2 pièces | +3% stat associée |
|
||
| 3 pièces | +10% + effet spécial |
|
||
|
||
---
|
||
|
||
## Économie
|
||
|
||
### Monnaies
|
||
|
||
| Monnaie | Obtention | Usage |
|
||
|---------|-----------|-------|
|
||
| **Or** | Combats, quêtes, succès | Forge, consommables, boutique de base |
|
||
| **TetardCoin** | Twitch (Bits, abonnements), achat direct | Recharge endurance, boutique Twitch, forge garantie |
|
||
| **Matériaux** | Loot, artisanat, événements | Forge, artisanat |
|
||
|
||
### Boutiques
|
||
|
||
| Boutique | Accès | Contenu |
|
||
|----------|-------|---------|
|
||
| Base | Niveau 1 | Équipements communs/rares, potions simples |
|
||
| Avancée | Niveau 15 | Épiques, recettes, matériaux |
|
||
| Événementielle | Événements | Objets thématiques limités |
|
||
| Twitch | TetardCoin uniquement | Cosmétiques, boosts XP/loot |
|
||
|
||
### Marché communautaire *(futur — post-lancement)*
|
||
|
||
- Vente / achat d'objets et matériaux entre joueurs
|
||
- Taxe : 5% Or sur chaque transaction
|
||
- Limite d'accès : selon niveau joueur
|
||
- Phase alpha : interface simple, sans enchères
|
||
- Phase évoluée : filtres avancés, système d'enchères
|
||
|
||
---
|
||
|
||
## Communauté
|
||
|
||
### Succès
|
||
|
||
**Individuels** — catégories : Progression / Combat / Zones / Équipements / Économie
|
||
Récompenses : Or, objets rares, titres honorifiques
|
||
|
||
**Communautaires** — objectifs collectifs :
|
||
- Exemples : tuer 10 000 monstres, collecter 1M TetardCoin, vaincre un GIGABOSS
|
||
- Récompenses : boosts globaux XP/loot, boutique spéciale, titres exclusifs
|
||
|
||
### Événements mondiaux
|
||
|
||
**GIGABOSS mondial**
|
||
- Boss unique accessible à tous pendant 72h
|
||
- Chaque joueur inflige des dégâts cumulés
|
||
- Récompenses proportionnelles à la contribution (Or, loot, titres)
|
||
|
||
**Semaines thématiques**
|
||
- Focus sur une zone ou activité (XP doublée, loot spécial, quêtes exclusives)
|
||
|
||
**Chasses communautaires**
|
||
- Tuer X monstres spécifiques ensemble
|
||
- Suivi en temps réel (barres de progression)
|
||
|
||
### Guildes & Alliances
|
||
|
||
**Guildes** (accès niveau 20)
|
||
- Création : coût Or + TetardCoin, nom + blason + description personnalisés
|
||
- Chat de guilde (site + extension)
|
||
- Coffre de guilde (matériaux, or, objets partagés)
|
||
- Quêtes hebdomadaires collectives
|
||
|
||
| Niveau guilde | Bonus |
|
||
|---------------|-------|
|
||
| 1 | +5% XP |
|
||
| 2 | +10% loot |
|
||
| 3 | +5% endurance max |
|
||
|
||
**Alliances** (jusqu'à 3 guildes)
|
||
- Bonus événementiels partagés
|
||
- Classements inter-guildes (PvE, quêtes, contribution économique)
|
||
- Récompenses : titres collectifs, cosmétiques, accès boutique exclusive
|
||
|
||
---
|
||
|
||
## Compétitif
|
||
|
||
### PvP — Tag & Resolve
|
||
|
||
Inspiré du modèle LaBrute (site classique) : **les combats sont asynchrones, résolus automatiquement par le serveur.**
|
||
|
||
**Ressource PvP : tickets journaliers**
|
||
|
||
- 10 tickets par jour, remise à zéro quotidienne (heure fixe à définir)
|
||
- 1 combat = 1 ticket, qu'il s'agisse d'un humain ou d'un bot
|
||
- Pas de coût en endurance — le PvP est indépendant du PvE
|
||
- *(Bonus de tickets via abonnements Twitch ou TetardCoin : à définir lors de la session monétisation)*
|
||
|
||
---
|
||
|
||
**Flux d'un combat PvP :**
|
||
|
||
```
|
||
1. Le joueur s'inscrit en file PvP (tag)
|
||
2. Le système trouve un adversaire dans sa fenêtre Elo
|
||
3. Le combat se résout côté serveur (même moteur que le PvE)
|
||
4. Les deux joueurs consultent le log de combat + résultat
|
||
5. Les Elo se mettent à jour
|
||
```
|
||
|
||
Aucune interaction en temps réel requise — le joueur peut voir le résultat à sa prochaine connexion.
|
||
|
||
---
|
||
|
||
### Système Elo
|
||
|
||
**Elo de départ :** 1000
|
||
|
||
**Formule :**
|
||
```
|
||
Score attendu = 1 / (1 + 10^((EloAdversaire - EloJoueur) / 400))
|
||
Nouvel Elo = Elo + K × (résultat - score attendu)
|
||
résultat = 1 (victoire) | 0 (défaite)
|
||
```
|
||
|
||
**K-factor :**
|
||
|
||
| Statut | Combats | K |
|
||
|--------|---------|---|
|
||
| Elo provisoire | < 20 combats PvP | 32 |
|
||
| Elo stable | ≥ 20 combats PvP | 16 |
|
||
| Combat contre bot | Tout statut | 8 |
|
||
|
||
**Fenêtre de matchmaking :**
|
||
- Départ : ±150 Elo
|
||
- Si aucun adversaire trouvé après 5 min → fenêtre élargie à ±300
|
||
- Si toujours rien → bot inséré
|
||
|
||
---
|
||
|
||
### Bots de simulation
|
||
|
||
Permettent de jouer dès le lancement même avec peu de joueurs, et de tester l'équilibrage en continu.
|
||
|
||
Le bot est construit à partir d'un profil de stats correspondant à son tier Elo — il utilise le même moteur de combat que les joueurs.
|
||
|
||
| Tier | Elo | Profil |
|
||
|------|-----|--------|
|
||
| Têtard | < 800 | Stats faibles, build généraliste |
|
||
| Apprenti | 800 – 1 000 | Stats moyennes, pas d'équipement rare |
|
||
| Guerrier | 1 000 – 1 200 | Stats optimisées, set de base complet |
|
||
| Élite | 1 200 – 1 500 | Build spécialisé, équipements épiques |
|
||
| Légendaire | 1 500+ | Build maxé, équipement rare, set complet |
|
||
|
||
> Un combat contre un bot met l'Elo à jour (K=8). Le joueur sait qu'il a joué contre un bot.
|
||
|
||
---
|
||
|
||
### Ligues saisonnières
|
||
|
||
- Saisons de durée fixe *(durée à définir)*
|
||
- Classement basé sur l'Elo PvP en fin de saison
|
||
- **Soft reset** en début de saison : Elo ramené vers 1000 (ex : `nouvel Elo = (Elo + 1000) / 2`)
|
||
- Récompenses de fin de saison selon rang (cosmétiques, titres, TetardCoin)
|
||
|
||
**Rangs de ligue *(noms illustratifs)* :**
|
||
|
||
| Rang | Elo |
|
||
|------|-----|
|
||
| Têtard | < 800 |
|
||
| Apprenti | 800 – 1 000 |
|
||
| Guerrier | 1 000 – 1 200 |
|
||
| Élite | 1 200 – 1 500 |
|
||
| Légendaire | 1 500+ |
|
||
|
||
---
|
||
|
||
### Classements complémentaires
|
||
|
||
En plus du classement PvP Elo, plusieurs axes de classement coexistent :
|
||
|
||
| Classement | Basé sur |
|
||
|------------|----------|
|
||
| XP globale | Niveau + XP totale |
|
||
| Richesse | Or accumulé |
|
||
| Contribution communautaire | Dégâts GIGABOSS, chasses, événements |
|
||
| Hall of Fame mensuel | Activité + performance du mois |
|
||
|
||
---
|
||
|
||
## Économie Twitch — Intégration enrichie *(Direction A)*
|
||
|
||
> Enrichissement de l'expérience pour UN streamer et sa communauté.
|
||
> Développable en continuité directe de la v1.0.
|
||
|
||
### Sources de TetardCoin via Twitch
|
||
|
||
| Source | Mécanisme | Montant |
|
||
|--------|-----------|---------|
|
||
| Bits | EventSub `channel.cheer` → conversion directe | *À définir* |
|
||
| Abonnement Prime | EventSub subscribe | Bonus mensuel *à définir* |
|
||
| Abonnement Lv.1 | EventSub subscribe | Bonus mensuel *à définir* |
|
||
| Abonnement Lv.2 | EventSub subscribe | Bonus mensuel *à définir* |
|
||
| Abonnement Lv.3 | EventSub subscribe | Bonus mensuel *à définir* |
|
||
| Activité chat | EventSub `channel.chat.message` | *À définir — ratio et anti-spam* |
|
||
| Présence stream | Token de présence côté serveur (pendant live) | *À définir — fréquence* |
|
||
|
||
### Présence stream (Watch Time)
|
||
|
||
Le viewer s'authentifie une fois sur le site.
|
||
Pendant que le stream est live (`stream.online`), le serveur lui crédite des TetardCoin passifs toutes les X minutes.
|
||
|
||
> Twitch n'expose pas le watch time via API — la détection de présence se fait côté serveur (token actif + stream live). Le viewer n'a pas besoin de rester sur le site.
|
||
> **Question ouverte :** doit-il être connecté sur le *site* ou juste sur *Twitch* ? *(impacte l'implémentation)*
|
||
|
||
### Activité chat
|
||
|
||
Récompenser la participation des viewers en direct.
|
||
|
||
- Commandes dédiées (`!combat`, `!quête`, `!statut`) → déclencher des actions en jeu depuis le chat
|
||
- Messages passifs → TetardCoin au message ou par tranche de X messages
|
||
- **Question ouverte :** récompenser tout message ou uniquement les commandes ? *(anti-spam à définir)*
|
||
|
||
### Événements Twitch → Événements en jeu
|
||
|
||
| Événement Twitch | Événement en jeu |
|
||
|-----------------|-----------------|
|
||
| Hype Train | Boost communautaire temporaire (XP/loot doublés, boss surprise) |
|
||
| Sub Gift massif | Événement spécial (drop de matériaux rares) |
|
||
| Raid entrant | Accueil des raiders avec bonus temporaire |
|
||
| *Autres à définir* | *Session brainstorm événements* |
|
||
|
||
---
|
||
|
||
## Portail multi-streamers *(Direction B)*
|
||
|
||
> TetaRdPG comme service — héberger le jeu pour plusieurs streamers.
|
||
> Architecture distincte de la v1.0 — à traiter comme un projet parallèle.
|
||
|
||
### Vision
|
||
|
||
Chaque streamer s'enregistre sur la plateforme et lie son compte Twitch.
|
||
La plateforme gère son token, ses viewers jouent dans son royaume TetaRdPG.
|
||
Le jeu grandit en réseau : plus de streamers = plus de joueurs = communauté étendue.
|
||
|
||
### Modèle d'univers — question ouverte
|
||
|
||
Deux options architecturales non tranchées :
|
||
|
||
| Modèle | Description | Avantage | Inconvénient |
|
||
|--------|-------------|----------|-------------|
|
||
| **Royaumes isolés** | Chaque streamer a son propre jeu indépendant | Simple, streamer = maître de son univers | Pas de communauté inter-streamers |
|
||
| **Univers partagé** | Un compte joueur global, plusieurs streams rejoignables | Réseau fort, croissance organique | Équilibrage complexe, gouvernance |
|
||
|
||
> **Question ouverte :** univers partagé ou royaumes isolés ?
|
||
|
||
### Modèle économique — question ouverte
|
||
|
||
| Option | Description |
|
||
|--------|-------------|
|
||
| Freemium streamer | Gratuit de base, fonctionnalités premium payantes |
|
||
| Abonnement streamer | Mensuel fixe par streamer enregistré |
|
||
| % transactions | Commission sur les achats TetardCoin des joueurs |
|
||
| Hybride | Freemium + commission |
|
||
|
||
> **Question ouverte :** quel modèle économique pour les streamers ?
|
||
|
||
### Ce que la plateforme gère par streamer
|
||
|
||
- Token Twitch broadcaster (EventSub sur son channel)
|
||
- Base de joueurs liée à son channel
|
||
- Personnalisation : nom du royaume, lore local *(optionnel)*
|
||
- Classements et événements propres à sa communauté
|
||
|
||
### Roadmap Direction B
|
||
|
||
> À ne pas démarrer avant que la v1.0 (Direction A) soit stable en production.
|
||
|
||
```
|
||
v1.0 stable → extraire l'architecture multi-tenant → onboarding premiers streamers partenaires
|
||
```
|
||
|
||
---
|
||
|
||
## Intégration Twitch
|
||
|
||
**Authentification**
|
||
- Connexion via OAuth Twitch → lien compte Twitch ↔ compte site
|
||
|
||
**Données récupérées**
|
||
- Statut live du stream
|
||
- Points de chaîne
|
||
- Bits (conversion en TetardCoin)
|
||
- Abonnements (bonus TetardCoin mensuel)
|
||
|
||
**Extension Twitch (panel viewer)**
|
||
- Statut du personnage
|
||
- Actions rapides depuis le stream
|
||
- Affichage des succès et classements
|
||
|
||
**Actions spéciales via récompenses personnalisées Twitch**
|
||
- Exemples : boost XP, lancement de quête, défi communautaire
|
||
|
||
---
|
||
|
||
## Monétisation *(valeurs à définir — session dédiée)*
|
||
|
||
| Source | Mécanisme | Valeur |
|
||
|--------|-----------|--------|
|
||
| Bits | 1 Bit → X TetardCoin | *À définir* |
|
||
| Abonnement Prime | Bonus mensuel TetardCoin | *À définir* |
|
||
| Abonnement Lv.1 | Bonus mensuel TetardCoin | *À définir* |
|
||
| Abonnement Lv.2 | Bonus mensuel TetardCoin | *À définir* |
|
||
| Abonnement Lv.3 | Bonus mensuel TetardCoin | *À définir* |
|
||
| Achat direct TetardCoin | Recharge endurance / objets | *À définir* |
|
||
|
||
---
|
||
|
||
## Lore & Univers *(illustratif — à redéfinir)*
|
||
|
||
> Ce qui suit est une base d'inspiration, pas un canon définitif.
|
||
> Tout peut être réinventé lors d'une session lore dédiée.
|
||
|
||
Monde aquatique régi par la mythologie du **Têtarastafarisme** et du *Têtard Prophétique*.
|
||
|
||
Exemples de zones : marais, forêt brumeuse, grottes, ruines, temple.
|
||
Exemples de PNJ : sage, alchimiste, forgeron, guide mystérieux.
|
||
|
||
---
|
||
|
||
## Roadmap v1.0
|
||
|
||
| Phase | Durée | Livrables clés |
|
||
|-------|-------|----------------|
|
||
| Pré-production | Sem. 1–4 | Stack validé, wireframes, systèmes formalisés |
|
||
| Sprint 1 — Auth + Backend | Sem. 5–6 | Auth Twitch, création personnage, API core |
|
||
| Sprint 2 — Combat + UI | Sem. 7–8 | Combat PvE, interface joueur |
|
||
| Sprint 3 — Artisanat | Sem. 9–10 | Forge, craft, recettes |
|
||
| Sprint 4 — Succès + HoF | Sem. 11–12 | Succès, classements, Hall of Fame |
|
||
| Bêta fermée | Mois 4 | Tests communauté, feedback, équilibrage |
|
||
| Lancement v1.0 | Mois 5 | Extension Twitch + Site Web en prod |
|
||
|
||
---
|
||
|
||
## Post-lancement (v1.1+)
|
||
|
||
| Trimestre | Contenu |
|
||
|-----------|---------|
|
||
| T1 | Guildes v1.1, premier GIGABOSS rotatif, boutique de succès |
|
||
| T2 | PvP v1.2, personnalisation joueur, marché communautaire étendu |
|
||
| T3 | Nouvelles zones & lore avancé v1.3, événements saisonniers |
|
||
| T4 | Alliances de guildes v1.4, GIGABOSS légendaires, personnalisation Twitch avancée |
|
||
|
||
**Fréquence de mises à jour :**
|
||
- Patchs : toutes les 2 semaines (bugfix, équilibrage)
|
||
- Contenu : mensuel (zones, quêtes, objets, événements)
|
||
|
||
---
|
||
|
||
## Points ouverts
|
||
|
||
| Point | État |
|
||
|-------|------|
|
||
| Stack technique | **TypeScript partout** — NestJS (backend) + React (frontend) + PostgreSQL + Redis |
|
||
| Monétisation — valeurs exactes (Bits, abos) | *Session dédiée* |
|
||
| Présence stream — détection côté site ou Twitch ? | *À trancher — Direction A* |
|
||
| Chat rewards — tout message ou commandes seulement ? | *À trancher — Direction A* |
|
||
| Direction B — univers partagé ou royaumes isolés ? | *À trancher — Direction B* |
|
||
| Direction B — modèle économique streamers | *À trancher — Direction B* |
|
||
| Durée des saisons PvP | *À définir* |
|
||
| Niveau Beta (post-100) | *À préciser* |
|
||
| Lore & univers | *Redéfinition libre lors d'une session dédiée* |
|
||
| Zones et contenu v1.0 | *À définir selon le scope MVP* |
|