**Motivations:** - Harmoniser la documentation technique pour faciliter le développement. - Garantir l'exhaustivité des données de Game Design pour chaque entité. **Root causes:** - Documentation hétérogène et incomplète. **Correctifs:** - N/A **Evolutions:** - Réécriture complète de 53 fichiers de spécifications selon un modèle strict. - Ajout de données de Game Design (prix, durées, impacts) pour combler les manques. - Ajout systématique des annexes UX/UI. **Pages affectées:** - docs/specs/*
204 lines
6.6 KiB
Markdown
204 lines
6.6 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"
|
|
}
|
|
}
|
|
```
|
|
|
|
### 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
|
|
|
|
## 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.
|