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:
228
docs/specs/visiteur.md
Normal file
228
docs/specs/visiteur.md
Normal 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
|
||||
Reference in New Issue
Block a user