feat(sprint1-step2): core economy TS + useEconomy hook (lazy calc) + 13 tests vitest

This commit is contained in:
2026-03-17 06:36:51 +01:00
parent c414cf2d07
commit c69da320cc
13 changed files with 2627 additions and 174 deletions

76
docs/GDD.md Normal file
View File

@@ -0,0 +1,76 @@
# Clickerz — GDD Minimal
> Sprint 1 — Step 1 output
> Date : 2026-03-17
---
## Stack technique
**React + TypeScript + Vite** — vanilla, sans moteur de jeu
Justification : prototype existant déjà en React/Vite (Xmass Clicker), shop.json et Achievements.json validés, backend Node.js en place. Phaser/PixiJS = overhead injustifié pour un clicker — la logique est dans les chiffres, pas dans le rendu.
---
## Mécaniques core
**Ressource principale** : Cookies (ou ressource thématique à nommer)
**Sources de production** :
- Clic manuel : +1 ressource/clic (multiplicateur upgradable)
- Générateurs idle : 5 tiers, coût `base × 1.15^n`, production `/s` cumulative
**Tiers upgrades** (structure shop.json existante — x10 de coût par tier validé) :
| Tier | Coût base | Production/s |
|------|-----------|-------------|
| 1 | 10 | 0.1 |
| 2 | 100 | 0.5 |
| 3 | 1 000 | 3 |
| 4 | 10 000 | 20 |
| 5 | 100 000 | 150 |
---
## Boucle de progression
**Prestige / Reset**
- Seuil déclencheur : 1 000 000 ressources (ajustable à l'équilibrage)
- Récompense : +0.1× multiplicateur permanent par reset (stackable)
- Reset : ressources + générateurs à 0, upgrades prestige conservés
- Courbe : reset 1 = ×1.1, reset 10 = ×2.0, reset 50 = ×6.0
**Milestones visibles** : barre de progression vers prestige, compteur resets, multiplicateur actuel affiché
---
## Monétisation
**Cosmétiques only** — pas de pay-to-win
- Thèmes visuels (couleurs, icônes)
- Titres / badges de prestige
- Effets de clic (particules)
- Raison : 0 compliance fiscale, 0 déséquilibre économie, communauté saine
---
## Sauvegarde
- localStorage (sprint 1 — immédiat, zéro infra)
- Sync API backend (backend déjà en place — câblage sprint 1 si temps le permet)
- Auto-save toutes les 30 secondes
---
## Hors scope Sprint 1
- Leaderboard (exclu — infra ranking = sprint 2)
- Intégration Twitch
- Multijoueur
---
## Prochaines étapes → Step 2
Fondations techniques : init projet React/TS/Vite, boucle core clic → +ressource, 1er générateur idle, 1er upgrade.