Files
builazoo/docs/specs/boutique.md
Nicolas Cantu 5143a79890 docs: enrich docs/specs and remove placeholders
**Motivations:**
- Make docs/specs implementation-ready without empty sections or placeholders.

**Root causes:**
- Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording.

**Correctifs:**
- Replace placeholders with explicit tables, structures, and typed examples.
- Align “no cache / no memorization” statements where relevant.

**Evolutions:**
- Add a features doc entry to track the documentation enrichment effort.

**Pages affectées:**
- docs/specs/*
- docs/features/docs-specs-enrichment.md
- docs/leo.md
- docs/plan-enrich-docs-specs.md
2026-03-05 03:08:15 +01:00

216 lines
7.1 KiB
Markdown

# Spécifications : Boutique
## Définition
Bâtiment commercial générant des revenus passifs grâce aux visiteurs.
## Fonctionnalités
- **Vente** : Vend des produits (souvenirs, nourriture, boissons) aux visiteurs.
- **Attraction** : Attire les visiteurs sur sa case.
- **Rétention** : Augmente la durée de visite (satisfaction besoins).
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Augmente le revenu par visiteur et la capacité d'accueil simultanée.
- **Ratio** : 1 unité couvre 5 visiteurs simultanés max.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "shop",
"level": "integer (1-7)",
"position": { "x": "int", "y": "int" },
"stats": {
"revenue_total": "integer",
"visitors_served": "integer"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Revenu / Visiteur | 15 pièces |
| Capacité | 5 visiteurs |
| Attractivité | 10 |
### Scores Initiaux
**Stock** : 100 unités.
**Popularité** : 10/100.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Construction par le joueur sur case vide.
### Conditions de Disparition
Destruction par le joueur (Remboursement 50%).
### Hérédité
**Franchise** : Coût construction -10% si 5 boutiques identiques déjà posées (Économie d'échelle).
## 3. Impacts Environnementaux
### Impact Température
**Canicule** : Vente Eau x3. Vente Chocolat -50%.
**Froid** : Vente Chocolat x3. Vente Glaces -80%.
### Impact Milieu (Biome)
**Thème** : +10% ventes si le skin boutique correspond au biome (ex: Cabane en bois en Forêt).
### Impact Saisons
| Saison | Modificateur Ventes |
| :--- | :--- |
| Été | +20% (Boissons/Glaces) |
| Hiver | +10% (Chocolat chaud/Cadeaux) |
| Automne | +5% (Parapluies) |
| Printemps | Standard |
### Impact Heure / Jour-Nuit
| Heure | Fréquentation |
| :--- | :--- |
| 12h-14h | Pic (Repas - Food) |
| 16h-18h | Pic (Souvenirs avant départ - Gifts) |
| Nuit | Fermé (0 Ventes) |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Merchandising** : Vente peluche "Espèce du moment" x2 lors d'une naissance rare.
### Impact Mort
**Deuil** : Ventes -20% dans les boutiques proches d'une mort récente (Ambiance triste).
### Impact Nourriture
**Concurrence** : Si Stand Nourriture proche (< 3 cases), ventes Food partagées (-10% chacun).
### Impact Attractivité (Visiteurs/Animaux)
| Niveau | Rayon Attraction |
| :--- | :--- |
| 1 | 2 cases |
| 7 | 10 cases (Centre commercial) |
### Impact Valeur
**Revente** : 50% de l'investissement initial + upgrades.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Vitesse Service** : 1 visiteur / 5 secondes (Niv 1) -> 1 visiteur / 1 seconde (Niv 7 - Caisses auto).
### Dépenses (Boutiques/Visiteurs)
Génère du revenu. Coût réapprovisionnement : 10% du CA (automatique).
### Trajet Visiteurs
Point d'intérêt majeur pour le pathfinding (Poids 50). Arrêt obligatoire si besoin > 80.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Vente** : Gain de pièces.
* **File d'attente** : Si Capacité atteinte, visiteurs frustrés.
* **Rupture Stock** : Si stock géré, fermeture temporaire.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Revenu/Visiteur | Capacité | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 15 | 5 | 0s |
| 2 | 150 | 20 | 8 | 0s |
| 3 | 225 | 25 | 12 | 0s |
| 4 | 340 | 35 | 18 | 0s |
| 5 | 510 | 50 | 25 | 0s |
| 6 | 765 | 70 | 35 | 0s |
| 7 | 1150 | 100 | 50 | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function processShop(shop, visitors):
queue = visitors.filter(v => v.target == shop)
served = min(queue.length, shop.capacity)
for i in 0..served:
revenue = shop.baseRevenue * seasonMod
player.addCoins(revenue)
visitors[i].satisfaction += 5
visitors[i].needs.thirst = 0
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `SHOP_FULL` | Warning | "Boutique pleine ! Des clients partent." |
| `SHOP_PROMO` | Info | "Soldes lancées ! Affluence +20%." |
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
* **Sprites** : 4 directions.
* **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## 1. Expérience Utilisateur (UX)
### Vente (Passif)
**Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur.
**Description UI** : Animation de porte qui s'ouvre/ferme. Popups "+15" au-dessus du toit.
**Emplacement** : Case Boutique.
**Intégration** : Automatique.
**Navigation** : Auto (Comportement).
**Événements** : `SALE_MADE`.
#### Assets
- **Musiques** : Musique d'ambiance "Supermarché" (Muzak).
- **Sons** : `coin_jingle.mp3` (volume bas, pas trop répétitif).
- **Graphiques** : Sprite Boutique (différents skins selon type : Burger, Cadeaux).
- **Images** : Icônes Produits (Burger, Peluche, Ballon).
- **Vidéos** : Pub télévisée miniature sur l'écran de la boutique (détail).
- **Animations** : Pièce dorée qui monte et disparaît.
- **Couleurs** : Or #FFD700.
- **Textes** : "+XX".
- **Formes** : Bulle de dialogue rectangulaire.
### Consultation Stats (Consultation)
**Description UX** : Le joueur clique pour voir combien la boutique a rapporté.
**Description UI** : **Bottom Sheet** simple avec "Revenus totaux" et "Clients servis".
**Emplacement** : Case Boutique.
**Intégration** : Standard.
**Navigation** : Clic -> Modal.
**Événements** : `OPEN_SHOP`.
#### Assets
- **Musiques** : Jingle "Caisse" (court).
- **Sons** : `ui_open.mp3`
- **Graphiques** : Graphique en barres simple.
- **Images** : Icône Caisse.
- **Vidéos** : Graphique animé des ventes (barres qui montent).
- **Animations** : Barres qui montent progressivement.
- **Couleurs** : Vert (Profit).
- **Textes** : Chiffres clés.
- **Formes** : Rectangle arrondi.
### Construction (Action)
**Description UX** : Le joueur choisit "Boutique" dans le menu construction et la place sur la grille.
**Description UI** : Fantôme du bâtiment vert/rouge selon validité.
**Alternative** : Tap to Select -> Tap to Place.
**Emplacement** : Menu Construction -> Grille.
**Intégration** : Mode construction global.
**Navigation** : Clic Menu -> Drag/Click Grille.
**Événements** : `BUILD_SHOP`.
#### Assets
- **Musiques** : Bruit de chantier (marteau, scie).
- **Sons** : `construction_hammer.mp3`.
- **Graphiques** : Sprite Fantôme semi-transparent.
- **Images** : Plan bleu (Blueprint) au sol.
- **Vidéos** : Time-lapse construction (accéléré).
- **Animations** : Petit effet de poussière à la pose.
- **Couleurs** : Bleu (Blueprint).
- **Textes** : "Construction".
- **Formes** : Grille de placement.