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
This commit is contained in:
2026-03-03 22:24:17 +01:00
commit e031c9a1d2
155 changed files with 22334 additions and 0 deletions

228
docs/specs/visiteur.md Normal file
View File

@@ -0,0 +1,228 @@
# 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)
```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