Files
builazoo/docs/specs/attractivite_zoo_sur_ville.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

180 lines
6.1 KiB
Markdown
Raw Permalink 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.
# Spécifications : Attractivité des Zoos sur les Visiteurs des Villes
## Définition
Capacité d'un zoo à faire déplacer des visiteurs depuis une ville située sur la Carte du Monde.
## Formule d'Attraction
L'attraction est calculée pour chaque couple (Ville, Zoo).
`Attraction = (Score_Reputation_Zoo / Distance^2) * Facteur_Ville`
## Facteurs d'Influence
1. **Score de Réputation** : Plus le zoo est prestigieux, plus il attire de loin.
2. **Distance** : La proximité géographique sur la carte du monde est déterminante.
3. **Concurrence** : Les visiteurs se répartissent entre les zoos attractifs.
## Impact
- Détermine le flux entrant quotidien de visiteurs (le nombre de personnes qui passent la porte de la Billeterie).
- Si l'attraction est nulle, aucun visiteur ne vient.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Calculé à la volée, sans cache (cf. règle “pas de mémorisation”).
```json
{
"zoo_id": "uuid",
"city_id": "uuid",
"attraction_score": "float"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale | Type | Description |
|---|---|---|---|
| Rayon attraction max | 30 | cases monde | Au-delà, attraction = 0 (plafond). |
| Facteur ville | 1.0 | float | Multiplie le flux (population/aisance). |
### Scores Initiaux
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Attraction brute | 0 | 0-∞ | Avant concurrence/plafonds. |
| Flux visiteurs/jour | 0 | 0-∞ | Résultat final injecté à la billeterie. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Zoo et ville existent | true | Est | Calcul possible. |
### Conditions de Disparition
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Zoo supprimé | true | Est | Flux devient 0. |
### Hérédité
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Soft reset | Cartographie connue | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
| Condition | Effet |
|---|---|
| Températures extrêmes régionales | réduit la volonté de voyager | flux -10% à -30% |
### Impact Milieu (Biome)
| Biome / route | Effet |
|---|---|
| Montagne (routes lentes) | distance effective + | flux - |
### Impact Saisons
**Hiver** : Réduit la volonté de voyager (-20% rayon d'attraction).
### Impact Heure / Jour-Nuit
| Période | Effet |
|---|---|
| Nuit | pas de départs | flux 0 vers billeterie |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Naissances médiatisées | flux + | événement “baby boom” |
### Impact Mort
| Cause | Conséquence | Durée |
|---|---|---|
| Série de morts | flux - | 24h (décroissance) |
### Impact Nourriture
| Facteur | Variation | Condition |
|---|---|---|
| Prix nourriture élevé | visiteurs budget - | dépense moyenne - |
### Impact Attractivité (Visiteurs/Animaux)
Voir formule.
### Impact Valeur
| Facteur | Variation | Condition |
|---|---|---|
| Ville riche | dépense moyenne + | facteur ville > 1 |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
| Paramètre | Valeur | Unité | Effet |
|---|---:|---|---|
| Recalcul flux | 1 | jour in-game | Recalcul quotidien (ou lazy). |
### Dépenses (Boutiques/Visiteurs)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Marketing ville ciblée | 5005000 | coins | augmente facteur ville temporaire |
### Trajet Visiteurs
| Trajet | Condition | Effet | Notes |
|---|---|---|---|
| Ville→Zoo | calcul distance | flux | distance^2 + plafond rayon |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `FLOW_UPDATED` | recalcul quotidien | met à jour overlay | instant |
| `CITY_FESTIVAL` | événement ville | flux - | 1 jour |
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Flux visible sur carte monde |
| 2 | 2000 | réputation 300 | Rayon attraction +10% |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function calculateDailyVisitors(zoo, city):
dist = distance(zoo.pos, city.pos)
if dist > zoo.maxAttractionRange: return 0
baseFlow = city.population * (zoo.reputation / (dist * dist))
return baseFlow * seasonMod
```
### Messages d'Infos / Alerte
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Nouvelle estimation visiteurs/jour : {n}" | recalcul | 2 |
| Warn | "La distance réduit fortement vos visiteurs." | dist proche plafond | 3 |
# 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)
### Visualisation Flux (Consultation)
**Description UX** : Le joueur regarde la carte du monde pour voir d'où viennent ses visiteurs.
**Description UI** : Lignes pointillées mouvantes reliant les villes au zoo. Épaisseur = Volume flux. **Particules** : Petits points ou voitures circulant sur les lignes pour donner une sensation de vie.
**Emplacement** : Carte Monde.
**Intégration** : Overlay.
**Navigation** : Toggle “Flux visiteurs” dans le HUD carte monde → survol dune ligne → affiche détail (ville, visiteurs/jour, facteur saison, distance).
**Événements** : `VIEW_FLOW`.
#### Assets
- **Musiques** : `ambience_world_flow.mp3` (léger, optionnel).
- **Sons** : `ui_flow_toggle.mp3` (toggle overlay).
- **Graphiques** : Lignes de flux.
- **Images** : `flow_dotted_line.png`, `car_particle.png`.
- **Vidéos** : `flow_ants.webm` (1s loop, optionnel).
- **Animations** : Pointillés qui avancent (effet fourmis).
- **Couleurs** : Blanc ou Vert fluo.
- **Textes** : "150 visiteurs/jour".
- **Formes** : Courbes de Bézier.