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

6.6 KiB
Raw Permalink Blame History

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.

{
  "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 dombre/boutiques soif +
Hiver recherche dintérieur fatigue +

Impact Heure / Jour-Nuit

Période Activité Visibilité
10h16h exploration max haute
17h19h 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 dattroupement. É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).