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

17 KiB
Raw Permalink Blame History

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)

{
  "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

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).

Définition

Champ Valeur
Concept Site “Ville” : nœud de la carte monde générant un potentiel de visiteurs et un budget moyen (wealth_factor).
Rôle Alimenter le flux ville→zoo (choix par attractivité/distance) et porter des événements (festivals, grèves) modifiant la demande.
Portée Une entité fixe sur carte monde, référencée par les calculs dattractivité.
Contrainte Flux calculé à la volée (pas de cache/mémorisation) ; aucun mécanisme danalytics ; événements doivent être explicités via events/messages.

Fonctions (tableau détaillé)

Fonction Déclencheur Entrées Sorties Règles Observabilité
Calculer flux vers un zoo tick / ouverture carte population, wealth_factor, distance, attractivité zoo baseFlow formule (Pop \cdot A / d^2) + mods heure/event Event CITY_FLOW_DISPATCHED
Déclencher événement ville calendrier/saison type event mod flux/budget durée bornée Event CITY_EVENT
Vendre nourriture (marché) interaction (feature) stock, price items pricing selon wealth Event CITY_MARKET_OPENED
Marquer jumelage relation max city_id bonus permanent +5% flux vers zoo jumelé Event CITY_TWINNED

Icone de base

Élément Spécification
Représentation Skyline (petite/moyenne/grande)
Couleur dominante Gris/bleu + lumières jaunes
Variantes city_small.png, city_medium.png, city_large.png
États jour (clair), nuit (lumières), event (feux dartifice)

Interactions (tableau détaillé)

Interaction Type Préconditions Étapes UI Résultat Erreurs / Messages
Ouvrir ville Consultation ville visible clic marker panneau ZONE_NOT_EXPLORED
Voir flux Consultation zoo sélectionné onglet flux valeurs -
Lancer campagne (feature) Action coins ok bouton campagne flux + NOT_ENOUGH_COINS

Annexes Techniques

1. Données et États (tableau détaillé)

Donnée / État Type Exemple Source Contraintes
id uuid_v4 uuid_v4 DB -
type string city DB constant
name string Rivemont DB -
population int 250000 DB >0
wealth_factor float 1.2 DB 0.5..2.0
events.active_event enum | null NATIONAL_HOLIDAY DB null si none
events.ends_at timestamp | null - DB UTC
iso_x int 120 calcul rendu
iso_y int 88 calcul rendu
z_index int 12088 calcul profondeur

Caractéristiques Initiales (tableau détaillé)

Caractéristique Valeur initiale Unité Notes
Bonheur ville 50 % influe fréquence
Îlot chaleur +2 °C vs campagne

Scores Initiaux (tableau détaillé)

Score Valeur initiale Plage Impact
Relation 0 0..100 jumelage
Flux envoyé 0 0..∞ suivi in-game

2. Cycles de Vie et Apparition (tableau détaillé)

Phase Déclencheur Entrées Sorties Invariants
Génération seed monde biome ville fixe
Événement calendrier type mods durée

Conditions d'Apparition (tableau détaillé)

Condition Seuil Opérateur Résultat
Génération carte true est ville créée

Conditions de Disparition (tableau détaillé)

Condition Seuil Opérateur Résultat
Désastre rare true est ville détruite (event)

Hérédité (tableau détaillé)

Élément Hérité Règle
Jumelage Oui bonus permanent
Événements Non expirent

3. Impacts Environnementaux

Impact Température (tableau détaillé)

Condition Effet Notes
îlot chaleur +2°C constant

Impact Milieu (Biome) (tableau détaillé)

Biome Effet Notes
toundra architecture igloos visuel

Impact Saisons (tableau détaillé)

Saison Effet Notes
hiver marché Noël flux +

Impact Heure / Jour-Nuit (tableau détaillé)

Période Effet Notes
nuit lumières pollution lumineuse

4. Impacts Biologiques et Sociaux

Impact Reproduction (tableau détaillé)

Facteur Effet sur taux Condition
baby boom pop + 1 semaine in-game

Impact Mort (tableau détaillé)

Cas Effet Condition
épidémie pop - temporaire

Impact Nourriture (tableau détaillé)

Ressource Effet Condition
marché stock joueur + achats

Impact Attractivité(Visiteurs (tableau détaillé)

Action/État Gain Rayon Notes
richesse budget ↑ monde VIP

Impact Attractivité Animaux) (tableau détaillé)

Action/État Effet animaux Condition
- neutre -

Impact Valeur (tableau détaillé)

Facteur Variation Condition
PIB dépense moyenne ± wealth_factor

5. Impacts Logistiques et Économiques

Vitesse (Camion) (tableau détaillé)

Paramètre Effet Condition
trafic pointe vitesse - 8-9h, 17-18h

Vitesse (Nurserie) (tableau détaillé)

Paramètre Effet Condition
- neutre -

Vitesse (Accueil) (tableau détaillé)

Paramètre Effet Condition
- neutre -

Vitesse (Recherche) (tableau détaillé)

Paramètre Effet Condition
campagne marketing flux + achat

Vitesse (Labo) (tableau détaillé)

Paramètre Effet Condition
conférence science affluence + event

Vitesse (Visite) (tableau détaillé)

Paramètre Effet Condition
distance flux (\downarrow) d^2

Dépenses (Billeterie) (tableau détaillé)

Poste Coût Unité Condition
campagne 1 500 coins panneaux

Dépenses (Boutiques) (tableau détaillé)

Poste Coût Unité Condition
- 1 coins lore

Dépenses (Visiteurs) (tableau détaillé)

Poste Coût Unité Condition
budget visiteurs wealth_factor × $ ville

Dépenses (Employés) (tableau détaillé)

Poste Coût Unité Condition
- 1 coins lore

Dépenses (Boutiques) (tableau détaillé)

Poste Coût Unité Condition
section dupliquée 1 coins conservée

Dépenses (Nurseries) (tableau détaillé)

Poste Coût Unité Condition
- 1 coins lore

Dépenses (Nourriture) (tableau détaillé)

Poste Coût Unité Condition
marchés variable coins achats

Dépenses (Acceuil des animaux) (tableau détaillé)

Poste Coût Unité Condition
- 1 coins lore

Dépenses (Camion) (tableau détaillé)

Poste Coût Unité Condition
parking (lore) 5 $ voiture

Trajet Visiteurs

Trajet Visiteurs vers/depuis la ville (tableau détaillé)
Source Destination Déclencheur Effet
Ville Zoo flux entrée billeterie
Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
Source Destination Déclencheur Effet
Zoo Enclos visite satisfaction
Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
Source Destination Déclencheur Effet
Zoo Boutiques besoins dépenses
Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
Source Destination Déclencheur Effet
Zoo Ville sortie despawn

6. Événements

Événements du Jeu (tableau détaillé)

Event Déclencheur Payload Effet
CITY_EVENT calendrier type flux mod
CITY_TWINNED relation 100 city_id bonus +

Événements du Carte (tableau détaillé)

Event Déclencheur Effet
MAP_ZOOM zoom taille icône

Événements du Zoo (tableau détaillé)

Event Déclencheur Effet
CITY_FLOW_DISPATCHED calcul spawn potentiels

Événements du Ville / Visiteur (tableau détaillé)

Event Déclencheur Effet
NATIONAL_HOLIDAY event flux x2

Événements du Visiteur (tableau détaillé)

Event Déclencheur Effet
VISITOR_SPAWNS_FROM_CITY flux origine

Événements du Joueur (tableau détaillé)

Event Déclencheur Effet
PLAYER_STARTS_CITY_CAMPAIGN action flux +

7. Progression

Tableau des Upgrades (tableau détaillé)

Niveau Coût Effet Débloque
2 1500 flux +10% radio
3 5000 flux +20% TV

8. Logique et Interfaces

Pseudo-code Impacts (tableau détaillé)

Fonction Entrées Sorties Notes
calculateVisitorFlow city, zoo float distance
isPeakHour now bool trafic

Messages d'Infos / Alerte (tableau détaillé)

ID Niveau Message Condition
CITY_EVENT Info "C'est la fête à {city}." event
CITY_STRIKE Warning "Grève : flux réduit." event

Annexes UX/UI

1. Expérience Utilisateur (UX)

Description UX (tableau détaillé)

Parcours But Friction Réduction clics
Identifier ville choisir cible densité taille icône + tooltip
Comprendre flux arbitrer maths panneau simple “flux”

Description UI (tableau détaillé)

Composant Contenu États
Marker ville sprite skyline petit/moyen/grand
Cercle influence rayon visible
Tooltip nom + pop hover

Emplacement (tableau détaillé)

Zone UI Position Notes
Carte monde sites iso

Intégration (tableau détaillé)

Intégration Contrat Notes
carte_monde.md usage map
billeterie.md entrées spawn

Navigation (tableau détaillé)

Action Chemin Résultat
Ouvrir ville clic marker panneau

Événements (tableau détaillé)

Event UI Déclencheur Effet
MAP_ZOOM zoom scale

Assets Skinables

Musiques (tableau détaillé)
Asset Usage Durée Notes
city_ambience_loop.mp3 proximité ville loop discret
Sons (tableau détaillé)
Asset Usage Volume
traffic_far.mp3 ville bas
Graphiques (tableau détaillé)
Asset Usage Contraintes
city_skyline_set.png sprites 4 dirs
Images (tableau détaillé)
Asset Usage
city_influence_ring.png cercle
Vidéos (tableau détaillé)
Asset Usage Durée
city_lights_night.webm nuit 2.0s
Animations (tableau détaillé)
Animation Déclencheur Notes
fumée idle loop
Couleurs (tableau détaillé)
Token Valeur Usage
city_gray #546E7A bâtiments
city_light_yellow #FFEE58 fenêtres
Textes (tableau détaillé)
Clé FR EN
city.population Population Population
city.wealth Richesse Wealth
Formes (tableau détaillé)
Élément Forme Notes
Cercle influence cercle zone