# Spécifications : Attractivité dans le Zoo sur les Visiteurs ## Définition Comportement des visiteurs une fois qu'ils sont entrés dans l'enceinte du zoo. ## Mécanique de Déplacement Les visiteurs ne se déplacent pas au hasard. Ils ont des "cibles" d'intérêt. - **Cibles Prioritaires** : Animaux Rares > Animaux Communs > Boutiques. - **Algorithme** : À chaque intersection ou fin d'action, le visiteur évalue l'attrait des cases environnantes. ## Facteurs de Rétention - **Diversité** : Voir des animaux différents prolonge la visite. - **Confort** : La présence de bancs, poubelles et boutiques augmente le temps de séjour. - **Départ** : Si l'attrait local tombe sous un seuil (ennui) ou si la journée finit, le visiteur se dirige vers la sortie (Billeterie). # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) Propriétés de `Visiteur`. ```json { "visitor_id": "uuid", "current_target": { "type": "enum('animal','shop','bench','toilet','exit')", "entity_id": "uuid" }, "target_score": "float", "memory": { "seen_species": "string[]", "last_shop_at": "timestamp | null", "fatigue": "float (0-100)", "thirst": "float (0-100)" }, "pathing": { "preferred_tiles": "enum('path','bridge')", "avoid_zones": "uuid[]", "repath_cooldown_ms": "integer" } } ``` ### Caractéristiques Initiales | Caractéristique | Valeur Initiale | Type | Description | |---|---|---|---| | Fatigue | 0 | float | Monte avec la marche ; déclenche recherche de banc. | | Soif | 0 | float | Monte avec le temps/température ; déclenche boutique. | | Diversité vue | 0 | int | Compte d'espèces différentes vues. | ### Scores Initiaux | Score | Valeur Initiale | Plage (Min-Max) | Impact | |---|---:|---|---| | Enthousiasme | 50 | 0-100 | Modifie durée de visite et dépenses. | | Ennui | 0 | 0-100 | Si > 70, visiteur part vers sortie. | ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition | Condition | Seuil | Opérateur | Résultat | |---|---:|---|---| | Visiteur spawn | true | Est | IA interne démarre (choix cibles). | ### Conditions de Disparition | Condition | Seuil | Opérateur | Résultat | |---|---:|---|---| | Ennui | 70 | >= | Cible sortie (billeterie). | | Heure | fermeture | >= | Cible sortie. | ### Hérédité | Parent | Trait Transmis | Probabilité | Mutation Possible | |---|---|---:|---| | Groupe famille | Itinéraire (préférence boutique/enclos) | 100% | Non | ## 3. Impacts Environnementaux ### Impact Température **Canicule/Grand Froid** : Réduit le temps de séjour (-30%). ### Impact Milieu (Biome) | Biome | Compatibilité | Bonus/Malus | |---|---:|---| | Chemin pavés | 100% | fatigue -10%/min | | Boue | 30% | fatigue +20%/min, satisfaction - | ### Impact Saisons | Saison | Effet | Modificateur | |---|---|---| | Été | recherche d’ombre/boutiques | soif + | | Hiver | recherche d’intérieur | fatigue + | ### Impact Heure / Jour-Nuit | Période | Activité | Visibilité | |---|---|---| | 10h–16h | exploration max | haute | | 17h–19h | achats sortie | moyenne | ## 4. Impacts Biologiques et Sociaux ### Impact Reproduction | Facteur | Effet sur Taux | Condition | |---|---|---| | Bébés visibles | + | visiteurs restent plus | ### Impact Mort Voir `visiteur.md` (Départ immédiat). ### Impact Nourriture | Type Nourriture | Gain Santé | Coût | Préférence | |---|---:|---:|---:| | Boisson | soif -50 | 5 | 5 | ### Impact Attractivité (Visiteurs/Animaux) **Poids des Cibles** : | Type Cible | Poids | | :--- | :--- | | Animal Rareté 1 | 10 | | Animal Rareté 5 | 100 | | Boutique | 50 | | Banc (si fatigué) | 200 | ### Impact Valeur | Facteur | Variation Prix | Condition | |---|---:|---| | Visiteur VIP | dépense x2 | si satisfait | ## 5. Impacts Logistiques et Économiques ### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) | Paramètre | Valeur | Unité | Détail | |---|---:|---|---| | Repath cooldown | 500 | ms | évite recalcul permanent | | Poids chemin | 2.0 | facteur | préférence chemin vs herbe | ### Dépenses (Boutiques/Visiteurs) | Action | Dépense | Condition | |---|---:|---| | Achat boisson | 5 | soif > 50 | | Achat souvenir | 15-30 | proche sortie | ### Trajet Visiteurs Algorithme de choix de cible pondéré. ## 6. Événements ### Événements du Jeu / Carte / Zoo / Ville / Visiteur | Event | Déclencheur | Effet | Durée | |---|---|---|---| | `TARGET_CHANGED` | nouvelle cible | path recalculé | instant | | `VISITOR_BORED` | ennui seuil | départ | jusqu’à sortie | ## 7. Progression ### Tableau des Upgrades | Niveau | Coût | Prérequis | Bonus Débloqué | |---|---:|---|---| | 1 | 0 | - | IA basique | | 2 | 2000 | chemins niv 2 | préférence chemins + | ## 8. Logique et Interfaces ### Pseudo-code Impacts ``` function chooseNextTarget(visitor, zoo): candidates = getAllPOIs(zoo) scoredCandidates = candidates.map(c => { score = c.attractiveness / distance(visitor, c) return { target: c, score: score } }) return weightedRandomSelect(scoredCandidates) ``` ### Messages d'Infos / Alerte | Type | Message | Condition | Priorité | |---|---|---|---:| | Info | "La foule se déplace vers une star." | animal rare visible | 2 | | Warn | "Les visiteurs s'ennuient." | ennui moyen > seuil | 4 | # 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) ### Foule (Passif) **Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants. **Description UI** : Densité de sprites visiteurs plus élevée autour des cases "Stars". **Emplacement** : Grille Zoo. **Intégration** : Comportement IA. **Navigation** : Aucune (passif). Option debug : toggle “Heatmap foule” dans HUD pour visualiser les zones d’attroupement. **Événements** : `CROWD_GATHER`. #### Assets - **Musiques** : `ambience_crowd_dynamic.mp3` (volume selon densité). - **Sons** : Rumeur de foule (volume variable selon densité). - **Graphiques** : Particules “flash photo”, bulles d’émotion. - **Images** : `icon_camera.png`, `icon_star.png`. - **Vidéos** : `crowd_flash.webm` (0.6s loop, optionnel). - **Animations** : Applaudissements, Photos. - **Couleurs** : Blanc/Jaune (flash), Or (star). - **Textes** : `CROWD_GATHER` = "La foule se rassemble" - **Formes** : Bulle BD (émotions).