Files
ClickerZ/docs/GDD.md
Tetardtek a52746ed0c feat(sprint1-step3b): backend save system + anti-cheat + données rattrapées
- game_saves table + migration 002 (JSON state, anti-cheat metadata)
- saveControllers.js : load/save avec validation delta ressources (750k/s × 1.1)
- GameSaveManager : upsert MySQL ON DUPLICATE KEY UPDATE
- useSaveSync hook : auto-save 30s + keepalive beforeunload + guest fallback
- save-validation.test.ts : 8 tests anti-cheat
- economy.ts : arbre d'évolution 5 nœuds + prestige ADN (rattrapage step 2)
- economy.test.ts : +40 tests (évolution tree, multipliers, start bonus)
- GDD + SPRINT1.md : docs sprint complètes
- Rethème data : shop.json, Achievements.json, Cookie, Legal (rattrapage step 1)
2026-03-20 13:40:16 +01:00

189 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Clickerz — GDD (Game Design Document)
> Tetard Universe — Clicker/idle hybride
> Dernière mise à jour : 2026-03-20
> Repo : git.tetardtek.com/Tetardtek/clickerz
> URL : https://clickerz.tetardtek.com/
---
## Identité
**Clickerz** — Clicker/idle hybride dans le Tetard Universe.
Un marais mystérieux où des têtards naissent, évoluent, mutent et bâtissent un écosystème.
Chaque prestige = une nouvelle "génération" de têtards, plus forte, plus étrange.
**Archétype :** hybride — clicker au départ (onboarding immédiat), idle dominant en mid-game (rétention), couche stratégique en late-game (prestige + arbre permanent).
---
## Univers — Tetard Universe
Le joueur est le **Gardien du Marais**. Les têtards sont la ressource vivante — ils naissent, travaillent, évoluent. Le marais grandit, se diversifie, attire de nouvelles espèces.
Cross-promo naturelle avec TetaRdPG (même univers, assets partageables à terme).
### Vocabulaire in-game
| Concept mécanique | Nom in-game | Icône |
|-------------------|-------------|-------|
| Ressource principale | **Têtards** | 🥚 |
| Click | **Ponte** | tap/click |
| Générateurs tier 1 | **Nid** | 🪹 |
| Générateurs tier 2 | **Mare** | 🌊 |
| Générateurs tier 3 | **Marécage** | 🏞️ |
| Générateurs tier 4 | **Étang Ancien** | 🏛️ |
| Générateurs tier 5 | **Lac Mystique** | ✨ |
| Prestige currency | **ADN Ancestral** | 🧬 |
| Prestige reset | **Nouvelle Génération** | 🔄🐸 |
| Arbre permanent | **Arbre d'Évolution** | 🌳 |
| Milestones | **Mutations** | 🧪 |
---
## Stack technique
| Couche | Techno | Justification |
|--------|--------|---------------|
| Frontend | React 18 + TypeScript + Vite | Existant validé, lazy calc pattern |
| State | Zustand | Game loop adapté, léger |
| Style | Tailwind CSS (migration SCSS → Tailwind) | Productivité, cohérence |
| Backend | Express + MySQL | Existant avec SuperOAuth câblé |
| Auth | SuperOAuth (clickerz.tetardtek.com) | SSO Tetardtek ecosystem |
| Tests | Vitest | 13 tests existants sur economy.ts |
---
## Mécaniques core
### Ressource principale : Têtards
**Sources de production :**
- Ponte (clic manuel) : +1 × clickMultiplier × prestigeMultiplier
- Générateurs idle : 5 tiers, coût `base × 1.15^owned`, production/s cumulative
### Générateurs — progression tier
| Tier | Nom | Coût base | Production/s | Ratio scaling |
|------|-----|-----------|-------------|---------------|
| 1 | Nid | 10 | 0.1 | 1.15 |
| 2 | Mare | 100 | 0.5 | 1.15 |
| 3 | Marécage | 1 000 | 3 | 1.15 |
| 4 | Étang Ancien | 10 000 | 20 | 1.15 |
| 5 | Lac Mystique | 100 000 | 150 | 1.15 |
**Formule coût :** `coût = base_cost × 1.15^owned`
**Formule production :** `output = base_prod × owned × multipliers`
> Ratio 1.15 = standard éprouvé. Assez steep pour forcer la diversification, assez doux pour que chaque achat ait un impact.
---
## Boucle de progression — 3 couches
```
┌─────────────────────────────────────────────────┐
│ BOUCLE 1 — La Run (secondes → minutes) │
│ │
│ Ponte (click) → +têtards │
│ Acheter Nid → +têtards/sec (idle) │
│ Upgrades Nid → multiplicateur │
│ Débloquer Mare → nouveau tier, plus cher, │
│ plus rentable │
│ ...jusqu'à atteindre un plateau │
└──────────────────────┬──────────────────────────┘
│ plateau atteint
┌─────────────────────────────────────────────────┐
│ BOUCLE 2 — Nouvelle Génération (heures → jours) │
│ │
│ Prestige → reset générateurs + têtards │
│ Gain : ADN Ancestral (formule sur total têtards) │
│ ADN → Arbre d'Évolution (permanent) │
│ → +% production globale │
│ → débloquer nouvelles mutations │
│ → débloquer nouveaux types de générateurs │
│ Nouvelle run = plus rapide, va plus loin │
└──────────────────────┬──────────────────────────┘
│ arbre mature
┌─────────────────────────────────────────────────┐
│ BOUCLE 3 — Méta (semaines) [Sprint 3+] │
│ │
│ Espèces rares, événements saisonniers, │
│ leaderboard, objectifs communautaires │
│ (hors scope Sprint 1) │
└─────────────────────────────────────────────────┘
```
---
## Prestige — Nouvelle Génération
**Seuil :** 1 000 000 têtards produits (total lifetime de la run)
**Formule ADN :** `adn = floor(150 × sqrt(lifetime_tadpoles / 1e9))`
**Ce qui reset :** têtards, générateurs, upgrades de run
**Ce qui persiste :** ADN Ancestral, Arbre d'Évolution, achievements, stats
**Prestige actuel (hérité) :** `+0.1× multiplicateur permanent par reset`
**Cible Sprint 1 :** migrer vers ADN Ancestral + Arbre d'Évolution
---
## Arbre d'Évolution (permanent — jamais reset)
Sprint 1 — linéaire (5 nœuds). Sprint 2+ → branches.
| Nœud | Coût ADN | Effet |
|------|----------|-------|
| Ponte Améliorée | 1 | +100% click power |
| Instinct Grégaire | 3 | +50% production tous générateurs |
| Mémoire Génétique | 10 | Commence chaque run avec 100 têtards |
| Mutation Alpha | 25 | Débloquer tier 5 dès le début de la run |
| Symbiose | 50 | +1% production par achievement débloqué |
---
## Sauvegarde & Anti-triche
- Save côté serveur uniquement (backend Express + MySQL)
- Pas de localStorage pour les données de jeu (cache UI uniquement)
- Auto-save toutes les 30 secondes via API
- Validation snapshot : `elapsed_time × max_possible_production × 1.1 >= claimed_resources`
- Client considéré hostile — toute donnée validée côté serveur
---
## Monétisation
**Cosmétiques only** — pas de pay-to-win
- Thèmes visuels (couleurs, icônes marais)
- Titres / badges de génération
- Effets de ponte (particules)
- Raison : 0 compliance fiscale, 0 déséquilibre économie, communauté saine
---
## Hors scope Sprint 1
- Boucle 3 (méta, events, leaderboard)
- Branches arbre d'évolution (linéaire suffit)
- Cosmétiques / skins
- Monétisation effective
- Sound / musique
- Mobile responsive (desktop first)
- Offline gains calculés côté serveur (Sprint 2)
- Migration Express → Fastify (si besoin Sprint 3+)
- Intégration Twitch
- Multijoueur
---
## Changelog
| Date | Changement |
|------|------------|
| 2026-03-17 | GDD initial — sprint1-step1, stack React+TS+Vite, mécaniques core |
| 2026-03-20 | Refonte game-designer — Tetard Universe, Arbre d'Évolution, anti-triche backend, SuperOAuth, stack confirmée Express |