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)
This commit is contained in:
2026-03-20 13:40:16 +01:00
parent 9f0ccda99b
commit a52746ed0c
20 changed files with 1167 additions and 152 deletions

View File

@@ -111,7 +111,7 @@
},
{
"id": 18,
"name": "un pull de noël",
"name": "Peau de grenouille rare",
"founded": false,
"image": "https://i.goopics.net/uwjwn1.jpg"
},
@@ -189,7 +189,7 @@
},
{
"id": 30,
"name": "Calendrier de l'Avent avec des chocolats au wasabi et moutarde forte",
"name": "Kit de survie du marais au wasabi et moutarde forte",
"founded": false,
"image": "https://i.goopics.net/dakyj9.png"
},
@@ -228,7 +228,7 @@
},
{
"id": 36,
"name": "Chapeau de Noël clignotant",
"name": "Couronne de nénuphars lumineuse",
"founded": false,
"image": "https://i.goopics.net/d4su7e.png"
},

View File

@@ -1,89 +1,89 @@
[
{
"name": "Manic",
"name": "Griffes de Grenouille",
"price": 15,
"incrementValue": 1,
"description": "Evite de vous bruler quand vous sortez les cookies du four, vous gagnez 5 CPS",
"description": "Des griffes acérées pour une ponte plus efficace. +1 par clic.",
"link": "/",
"image": "./svg/Hand.svg",
"buyed": false,
"type": "actif"
},
{
"name": "Tasse à café",
"name": "Algues Nutritives",
"price": 15,
"incrementValue": 1,
"description": "Bien chaud vous permet de tenir sur la durée",
"description": "Les algues nourrissent le marais en continu. +1 têtard/s.",
"link": "/",
"image": "./svg/Tasse.svg",
"buyed": false,
"type": "passif"
},
{
"name": "Mr Bonhomme",
"name": "Crapaud Gardien",
"price": 150,
"incrementValue": 10,
"description": "Un assistant idéal pour le click",
"description": "Un ancien du marais qui veille sur les pontes. +10 par clic.",
"link": "/",
"image": "./svg/Bonhome.svg",
"buyed": false,
"type": "actif"
},
{
"name": "Bonnet",
"name": "Nénuphar Géant",
"price": 150,
"incrementValue": 10,
"description": "Garder vos oreilles bien à l'abri du froid et click !",
"description": "Un nénuphar massif qui attire les têtards. +10 têtards/s.",
"link": "/",
"image": "./svg/Bonnet.svg",
"buyed": false,
"type": "passif"
},
{
"name": "Cookie",
"name": "Oeuf Doré",
"price": 1500,
"incrementValue": 100,
"description": "Fait avec amour",
"description": "Un oeuf rare qui éclot en masse. +100 par clic.",
"link": "/",
"image": "./svg/Cookie.svg",
"buyed": false,
"type": "actif"
},
{
"name": "Canne en sucre",
"name": "Mousse Lumineuse",
"price": 1500,
"incrementValue": 100,
"description": "Le sucre c'est connu, ca reboost",
"description": "La mousse phosphorescente accélère la croissance. +100 têtards/s.",
"link": "/",
"image": "./svg/Canne.svg",
"buyed": false,
"type": "passif"
},
{
"name": "Couronne d'hiver",
"name": "Couronne de Roseaux",
"price": 15000,
"incrementValue": 1000,
"description": "Un bisous ou rien du tout !",
"description": "Le symbole du Gardien suprême du Marais. +1000 par clic.",
"link": "/",
"image": "./svg/Courone.svg",
"buyed": false,
"type": "actif"
},
{
"name": "Mr pain d'épice",
"name": "Esprit du Marais",
"price": 15000,
"incrementValue": 1000,
"description": "Le meilleur c'est la tête",
"description": "L'esprit ancestral bénit les eaux. +1000 têtards/s.",
"link": "/",
"image": "./svg/PainDep.svg",
"buyed": false,
"type": "passif"
},
{
"name": "Bière",
"name": "Nectar de Lotus",
"price": 8000,
"incrementValue": 1000,
"description": "Boisson de qualité, double tout les CPS, attention à ne pas trop en abuser",
"description": "Un nectar enivrant qui trouble les eaux... mais booste la ponte. Attention aux effets secondaires.",
"link": "/",
"image": "./svg/Beer.svg",
"buyed": false,