**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
180 lines
6.1 KiB
Markdown
180 lines
6.1 KiB
Markdown
# 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 | 500–5000 | 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 d’une 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.
|