Files
builazoo/docs/specs/visiteur.md
Nicolas Cantu e031c9a1d2 Initial commit
**Motivations:**
- Initialisation du versionning git pour le projet

**Root causes:**
- N/A (Nouveau projet)

**Correctifs:**
- N/A

**Evolutions:**
- Structure initiale du projet
- Ajout du .gitignore

**Pages affectées:**
- Tous les fichiers
2026-03-03 22:24:17 +01:00

6.2 KiB

Spécifications : Visiteur

Définition

Personnage non-joueur (PNJ) qui visite le zoo.

Comportement

  • Apparition : Arrive par la Billeterie (venant d'une Ville).
  • Déplacement : Se promène sur la grille, attiré par les animaux et boutiques.
  • Durée : Reste jusqu'à 1 journée (variable selon attractivité).
  • Dépense : Paie l'entrée + achats en boutique.

Incidents et Exigences

  • Besoins : Soif, Repos (banc), Propreté (poubelle), Envie de photo.
  • Feedback : Bulle d'icône au-dessus du visiteur.
  • Résolution : Clic du joueur sur la bulle.
  • Conséquence :
    • Résolu : Gain de pièces + Attractivité.
    • Ignoré : Perte d'attractivité, départ anticipé.
  • Contexte : Apparaissent plus souvent pendant les temps d'attente (camion/enchère).

Types

  • Standard
  • Luxe (8%) : Paie plus cher, plus exigeant.

Annexes Techniques

1. Données et États

Modèle de Données (JSON)

{
  "id": "uuid_v4",
  "type": "enum ('standard', 'vip')",
  "entry_time": "timestamp",
  "max_duration": "integer (seconds)",
  "budget": "integer",
  "satisfaction": "float (0-100)",
  "needs": {
    "thirst": "float (0-100)",
    "rest": "float (0-100)",
    "toilet": "float (0-100)"
  },
  "current_target": { "x": "int", "y": "int" },
  "position": { "x": "int", "y": "int" }
}

Caractéristiques Initiales

Caractéristique Standard Luxe (VIP)
Budget 50 200
Durée Max 300s (5 min) 600s (10 min)
Satisfaction 50 50

Scores Initiaux

N/A

2. Cycles de Vie et Apparition

Conditions d'Apparition

Facteur Taux
Attractivité Zoo log(Attractivité) * FacteurVille
Heure Pic à 14h, Nul à 22h

Conditions de Disparition

Cause Seuil
Temps écoulé Durée > Max Duration
Insatisfaction Satisfaction <= 0
Budget épuisé Budget <= 0 (Départ normal)

Hérédité

N/A

3. Impacts Environnementaux

Impact Température

Météo Effet
Canicule Soif augmente 2x plus vite
Pluie Satisfaction baisse plus vite (sauf si abri)

Impact Milieu (Biome)

N/A

Impact Saisons

Saison Affluence (Multiplicateur)
Printemps x1.0
Été x1.5 (Vacances)
Automne x0.8
Hiver x0.6

Impact Heure / Jour-Nuit

Heure Flux Entrant
08h-10h Faible
10h-16h Fort
16h-18h Décroissant
> 18h Nul

4. Impacts Biologiques et Sociaux

Impact Reproduction

N/A

Impact Mort

Événement Effet Satisfaction
Voir animal mort -50 (Départ quasi immédiat)

Impact Nourriture

N/A (Concerne les animaux, ici c'est "Soif/Faim visiteur" -> Boutiques)

Impact Attractivité (Visiteurs/Animaux)

Cible Poids Attraction
Animal Légendaire 100
Animal Commun 10
Boutique 50 (si besoin > 50)

Impact Valeur

N/A

5. Impacts Logistiques et Économiques

Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)

Paramètre Valeur
Vitesse Marche 1 case / 2 sec

Dépenses (Boutiques/Visiteurs)

Action Dépense
Ticket Entrée 10 (Standard) / 50 (VIP)
Boutique Souvenir 15-30
Boisson 5

Trajet Visiteurs

Algorithme : Weighted Random Walk vers les points d'intérêt (POI) avec decay sur la distance.

6. Événements

Événements du Jeu / Carte / Zoo / Ville / Visiteur

  • Incident (Bulle) : Apparition aléatoire (probabilité augmentée si attente joueur).
  • Achat : Interaction avec boutique.

7. Progression

Tableau des Upgrades

N/A

8. Logique et Interfaces

Pseudo-code Impacts

function updateVisitor(visitor):
  visitor.satisfaction -= decayRate
  visitor.needs.thirst += 1
  
  if visitor.needs.thirst > 80:
    target = findNearestShop()
    if not target:
      visitor.satisfaction -= 5 (Frustration)
      spawnIncident("Soif")
      
  if visitor.satisfaction <= 0:
    leaveZoo(visitor)

Messages d'Infos / Alerte

ID Niveau Message
VISITOR_ANGRY Info "Un visiteur est parti mécontent."
VISITOR_HAPPY Info "Un visiteur a adoré le zoo !"

Annexes UX/UI

1. Expérience Utilisateur (UX)

Visite (Passif)

Description UX : Le visiteur entre, marche, regarde les animaux, achète, repart. Description UI : Petit sprite humain. Vêtements colorés. Emplacement : Grille Zoo. Intégration : Foule. Navigation : N/A Événements : VISITOR_WALK.

Assets

  • Musiques : N/A
  • Sons : Pas sur l'herbe/béton.
  • Graphiques : Sprites variés (H/F/Enfant).
  • Images : N/A
  • Vidéos : N/A
  • Animations : Marche, Regarde (tourne la tête), Prend photo (flash).
  • Couleurs : Aléatoires.
  • Textes : N/A
  • Formes : N/A

Incident / Besoin (Action)

Description UX : Une bulle apparaît au-dessus d'un visiteur (ex: Soif, Perdu, Envie pipi). Le joueur clique pour résoudre (ex: Indiquer toilettes, Donner eau). Description UI : Bulle blanche avec icône noire. Clignote si urgent. Emplacement : Au-dessus du sprite visiteur. Intégration : Overlay World Space. Navigation : Clic Bulle -> Résolution (Animation + Gain). Événements : INCIDENT_SPAWN, INCIDENT_SOLVE.

Assets

  • Musiques : N/A
  • Sons : bubble_pop.mp3 (apparition), coin_collect.mp3 (résolution). Design ASMR : Son satisfaisant et tactile ("Pop" organique).
  • Graphiques : Icônes (Goutte d'eau, Point interrogation, Appareil photo).
  • Images : N/A
  • Vidéos : N/A
  • Animations : Bulle qui pop. Visiteur qui sourit après résolution.
  • Couleurs : Bulle Blanche/Rouge (Urgent).
  • Textes : "Merci !" (flottant).
  • Formes : Bulle BD.

Départ (Passif)

Description UX : Le visiteur quitte le zoo. Description UI : Marche vers la sortie et disparaît (Fade out). Emplacement : Billeterie. Intégration : Fin cycle. Navigation : N/A Événements : VISITOR_EXIT.

Assets

  • Musiques : N/A
  • Sons : N/A
  • Graphiques : N/A
  • Images : N/A
  • Vidéos : N/A
  • Animations : Fade out.
  • Couleurs : N/A
  • Textes : N/A
  • Formes : N/A