Files
builazoo/docs/specs/ville.md
2026-03-05 04:01:29 +01:00

172 lines
5.5 KiB
Markdown
Raw 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 : Ville (Site)
## Définition
Une ville est une entité sur la Carte du Monde qui génère le flux de visiteurs vers les zoos.
## Propriétés
- **Nom** : Nom de la ville.
- **Population** : Nombre de visiteurs potentiels maximum.
- **Icône** : 🏙️
## Mécanique d'Attraction
- Les visiteurs partent de la ville pour aller vers les zoos.
- **Facteur de Distance** : Plus un zoo est proche d'une ville, plus il attire de visiteurs.
- **Facteur d'Attractivité** : La valeur et la diversité du zoo influencent le choix des visiteurs.
## Personnage contextuel (événements & interaction)
Voir `maire.md`.
### Affichage
Le maire saffiche lorsque :
- la ville est **actionnée** (sélection/clic ville, ouverture panneau ville) ;
- un **événement** de ville survient (festival, grève, bonus économique, `CITY_EVENT`).
### Déclencheurs (exemples)
| Event | Condition | Effet UI personnage |
|---|---|---|
| sélection ville | clic icône ville | portrait + synthèse (population, richesse, flux) |
| `CITY_EVENT` | événement actif | bulle “Événement en cours” + impacts chiffrés |
### Skins & thèmes
Portrait et accessoires suivent `theme.md` ; variantes “ville” possibles via `inventaire_skins.md`.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "city",
"name": "string",
"population": "integer",
"wealth_factor": "float (0.5 - 2.0)",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Moyenne |
| :--- | :--- |
| Population | 10,000 - 1,000,000 |
| Richesse | 1.0 |
### Scores Initiaux
**Niveau de Bonheur** : 50% (Influence la fréquence des visites).
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte.
### Conditions de Disparition
**Désastre** : Ville détruite (Event rare "Météorite" ou "Crise Éco").
### Hérédité
**Jumelage** : Bonus permanent de flux (+5%) si relation max atteinte avec une ville.
## 3. Impacts Environnementaux
### Impact Température
**Ilot de chaleur** : La ville est toujours +2°C par rapport à la campagne environnante.
### Impact Milieu (Biome)
**Architecture** : Adaptée au biome (Igloos en Toundra, Tentes en Désert, Gratte-ciels en Plaine).
### Impact Saisons
**Festivals** : Event saisonnier en ville (+Visiteurs pendant 24h).
- Été : Carnaval.
- Hiver : Marché de Noël.
### Impact Heure / Jour-Nuit
**Lumières** : La ville brille la nuit (Pollution lumineuse visible).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Baby Boom** : Augmente la population de la ville (+Flux) pendant 1 semaine.
### Impact Mort
**Épidémie** : Baisse population temporaire (-Flux).
### Impact Nourriture
**Marché** : La ville vend de la nourriture au joueur (Source d'approvisionnement).
### Impact Attractivité (Visiteurs/Animaux)
Source du flux. `Flux = Pop * (AttractivitéZoo / Distance²)`.
### Impact Valeur
**PIB** : Influence le budget des visiteurs (Richesse). Une ville riche envoie des VIP.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Trafic** : Ralentit les camions traversant la ville aux heures de pointe (8h-9h, 17h-18h).
### Dépenses (Boutiques/Visiteurs)
**Facteur Richesse** : Multiplie le budget des visiteurs issus de cette ville.
### Trajet Visiteurs
Point de départ. Les visiteurs arrivent en bus/voiture depuis la ville.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Fête Nationale** : Flux x2.
* **Grève** : Flux / 2.
## 7. Progression
### Tableau des Upgrades
*Note : Campagnes Marketing ciblées.*
| Niveau Campagne | Coût | Effet |
| :--- | :--- | :--- |
| 1 (Panneaux) | 500 | +5% Flux |
| 2 (Radio) | 1500 | +10% Flux |
| 3 (TV) | 5000 | +20% Flux |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function calculateVisitorFlow(city, zoo):
distance = getDistance(city, zoo)
baseFlow = city.population * (zoo.attractiveness / (distance * distance))
if isPeakHour(): baseFlow *= 1.5
if city.hasEvent(): baseFlow *= 2.0
return baseFlow
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `CITY_EVENT` | Info | "C'est la fête à [NomVille] ! Attendez-vous à du monde." |
# 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 Taille (Passif)
**Description UX** : Distinguer les grandes villes des petites.
**Description UI** : Taille de l'icône proportionnelle à la population. Gratte-ciels vs Maisons.
**Emplacement** : Carte Monde.
**Intégration** : Sprite.
**Navigation** : Zoom sur la carte.
**Événements** : `MAP_ZOOM`.
#### Assets
- **Musiques** : Ambiance urbaine (klaxons lointains, vent).
- **Sons** : Bruit de trafic faible.
- **Graphiques** : Sprites Ville (Petit, Moyen, Grand).
- **Images** : Silhouette Skyline.
- **Vidéos** : Lumières des fenêtres qui s'allument la nuit (Pixel Art animé).
- **Animations** : Fumée des cheminées.
- **Couleurs** : Gris/Bleu.
- **Textes** : Nom Ville.
- **Formes** : Cercle d'influence (zone de chalandise).