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
This commit is contained in:
2026-03-05 03:08:15 +01:00
parent e92c1355d0
commit 5143a79890
44 changed files with 1361 additions and 319 deletions

View File

@@ -48,7 +48,11 @@ Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou tr
| Capacité | 1 animal | 7 animaux |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
| :--- | :--- | :--- | :--- |
| Confort Quarantaine | 60 | 0-100 | Modifie le stress initial de lanimal lors du placement (\(-\)stress = +confort). |
| Risque Contamination | 2% | 0-25% | Probabilité dincident sanitaire (quarantaine prolongée, coût supplémentaire) par animal accueilli. |
| Traçabilité | 80 | 0-100 | Qualité des infos affichées au joueur (traits révélés, historique). |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
@@ -58,7 +62,10 @@ Présent au démarrage du jeu (Tutorial ou Nouvelle Partie). Position fixe gén
Indestructible. Ne peut pas être vendu ni déplacé (sauf si feature de réaménagement global).
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---|---|
| Accueil Niv 4+ | Trait temporaire “Calme” (+5 Satisfaction Visiteurs à proximité après placement) | 100% | Non (effet temporaire, non génétique) |
| Accueil Niv 7 | Trait temporaire “Confiant” (stress \(-15\) au placement) | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
@@ -87,10 +94,17 @@ Pas de mort possible en zone d'accueil (Stase). Les jauges de faim/soif/santé s
Nourri automatiquement (coût nul ou inclus dans les frais de gestion globaux).
### Impact Attractivité (Visiteurs/Animaux)
N/A - Les visiteurs ne voient pas l'intérieur de l'accueil.
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| Façade entretenue (Propreté > 80) | +5 | 6 cases |
| File dattente visible (Capacité saturée) | -10 | 8 cases |
| Livraison spectaculaire (animal rare) | +20 | 10 cases |
### Impact Valeur
N/A
| Facteur | Variation Prix | Condition |
|---|---:|---|
| Niveau Accueil | +5% / niveau | Appliqué à la valeur du zoo (bâtiment clé non revendable). |
| Historique sans incident | +10% | Si aucun événement `QUARANTINE_ALERT` sur 7 jours in-game. |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
@@ -106,10 +120,17 @@ N/A
| 7 | Instantané | 100% |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût Hebdo | Maintenance |
|---|---:|---:|
| Consommables quarantaine | 50 pièces | 10 pièces |
| Nettoyage & désinfection | 30 pièces | 5 pièces |
| Contrôle vétérinaire | 80 pièces | 0 pièce (service périodique) |
### Trajet Visiteurs
N/A - Bâtiment administratif.
| Trajet | Condition | Effet | Détails |
|---|---|---|---|
| Visiteurs passent devant | Chemin adjacent | Attraction faible | Le bâtiment nest pas une attraction nominale, mais une façade visible peut influer sur lambiance. |
| Visiteurs évitent la zone | `QUARANTINE_ALERT` actif | Déviation | Les visiteurs recalculent leur chemin pour éviter un rayon de 6 cases autour. |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
@@ -187,19 +208,19 @@ def add_animal_to_reception(reception_center, animal):
**Notification Push** : "Votre [Animal] est arrivé à l'accueil !" envoyée si le joueur est hors ligne.
**Emplacement** : Case Accueil.
**Intégration** : Suite de l'action Camion.
**Navigation** : N/A
**Navigation** : Clic sur Accueil → Bottom Sheet “Accueil” (liste slots) → action “Placer” ouvre le mode placement sur la carte du zoo.
**Événements** : `DELIVERY_COMPLETE`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ambience_stable_soft.mp3` (léger, discret, pas intrusif).
- **Sons** : `truck_door.mp3`, `crate_drop.mp3`.
- **Graphiques** : Sprite Caisse en bois.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `reception_building.png` (bâtiment), `reception_icon.png` (icône), `badge_quarantine.png` (badge).
- **Vidéos** : `delivery_short.webm` (2s, loop optionnel sur notif).
- **Animations** : Camion qui repart.
- **Couleurs** : Marron (Caisse).
- **Textes** : N/A
- **Formes** : N/A
- **Textes** : `RECEPTION_DELIVERY_DONE` = "Livraison effectuée", `RECEPTION_ANIMAL_ARRIVED` = "Votre {animalName} est arrivé à l'accueil !"
- **Formes** : Bulle (notif), badge rond (état).
### Consultation & Acclimatation (Consultation)
**Description UX** : Le joueur vérifie le temps restant avant de pouvoir placer l'animal.
@@ -210,11 +231,11 @@ def add_animal_to_reception(reception_center, animal):
**Événements** : `OPEN_RECEPTION`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_modal_soft.mp3` (jingle court).
- **Sons** : `ui_open.mp3`
- **Graphiques** : Style "Quarantaine" ou "Étable propre".
- **Images** : Portrait animal.
- **Vidéos** : N/A
- **Vidéos** : `progress_fill.webm` (0.8s loop) pour la barre dacclimatation (optionnel).
- **Animations** : Barre de progression qui avance.
- **Couleurs** : Orange (En cours), Vert (Prêt).
- **Textes** : "Prêt dans X min".
@@ -230,18 +251,18 @@ def add_animal_to_reception(reception_center, animal):
**Événements** : `PLACE_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_confirm_place.mp3` (jingle court de confirmation).
- **Sons** : `animal_happy.mp3` (cri de l'animal).
- **Graphiques** : Sprite Animal.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `placement_ghost_ok.png`, `placement_ghost_ko.png` (surbrillance vert/rouge).
- **Vidéos** : `placement_glow.webm` (1.2s, non loop).
- **Animations** : Animal qui saute de joie au placement.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A
- **Couleurs** : Vert (#2ECC71) placement valide, Rouge (#E74C3C) placement invalide, Ambre (#F39C12) état “en acclimatation”.
- **Textes** : `BTN_PLACE` = "Placer", `RECEPTION_READY` = "Prêt"
- **Formes** : Badge “!” (prêt), sablier (en cours).
### Vue Isométrique
- **Sprite Bâtiment** : 4 directions (Nord, Sud, Est, Ouest) pour s'aligner avec la route.
- **Sprite Bâtiment** : 4 directions isométriques (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest) pour s'aligner avec les chemins.
- **Occlusion** : Le bâtiment doit être semi-transparent si le joueur passe la souris derrière (pour voir les objets cachés).
- **Indicateur d'état** : Une icône flottante (bulle) au-dessus du bâtiment indique si un animal est prêt (point d'exclamation vert) ou en cours (sablier).
- **Z-Index** : Doit être trié correctement par rapport aux visiteurs passant devant.

View File

@@ -16,7 +16,7 @@ Action sur l'objet `Zoo` (dimensions).
"zoo_id": "uuid",
"dimensions": { "width": 5, "height": 6 },
"expansion_history": [
{ "direction": "EAST", "cost": 1000, "timestamp": "..." }
{ "direction": "EAST", "cost": 1000, "timestamp": "timestamp" }
],
"max_dimensions": { "width": 20, "height": 20 }
}

View File

@@ -33,11 +33,21 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
},
"style_id": "wood_basic",
"status": "enum (OK, BROKEN, TAGGED)",
"status_since": "timestamp",
"repair_cost": "integer",
"clean_cost": "integer",
"cooldowns": {
"next_interaction_at": "timestamp"
},
"animal_info": {
"name": "Lion d'Afrique",
"scientific_name": "Panthera leo",
"conservation_status": "VU"
},
"i18n": {
"title_key": "string",
"subtitle_key": "string"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
@@ -48,6 +58,10 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
* **Placement Auto :** Le jeu détermine la meilleure position (côté sud ou est généralement, face au chemin le plus proche).
* **Unicité :** Une seule affiche par enclos fusionné (ou une tous les X cases de périmètre).
* **Mise à jour :** Si l'animal change (enclos vidé puis rempli avec autre chose), l'affiche se met à jour automatiquement.
* **Dégradation** :
* `TAGGED` : naffecte pas la lisibilité mais réduit lattractivité (ex. -5 rayon 6 cases) jusquau nettoyage.
* `BROKEN` : la Zoopédia est inaccessible au clic, et malus attractivité plus fort (ex. -15 rayon 8 cases).
* **Cooldown clic** : éviter les spams ; appliquer `next_interaction_at` (ex. 1s) sur ouverture Zoopédia.
### Algorithme de Placement
```python
@@ -72,6 +86,11 @@ def place_sign(enclosure):
* **Orientation :** Le sprite doit correspondre à l'orientation du mur (4 sprites différents).
* **Z-Index :** Doit être dessiné *après* la clôture mais *avant* les visiteurs passant devant.
### Messages i18n (exemples)
* `ENCLOSURE_SIGN_OPEN` : FR "Ouvrir la Zoopédia" / EN "Open Zoopedia"
* `ENCLOSURE_SIGN_TAGGED` : FR "Affiche taguée" / EN "Sign tagged"
* `ENCLOSURE_SIGN_BROKEN` : FR "Affiche cassée" / EN "Sign broken"
# Annexes UX/UI

View File

@@ -18,45 +18,90 @@ Les visiteurs ne se déplacent pas au hasard. Ils ont des "cibles" d'intérêt.
## 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
N/A
| 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
N/A
| 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
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Visiteur spawn | true | Est | IA interne démarre (choix cibles). |
### Conditions de Disparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Ennui | 70 | >= | Cible sortie (billeterie). |
| Heure | fermeture | >= | Cible sortie. |
### Hérédité
N/A
| 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)
N/A
| Biome | Compatibilité | Bonus/Malus |
|---|---:|---|
| Chemin pavés | 100% | fatigue -10%/min |
| Boue | 30% | fatigue +20%/min, satisfaction - |
### Impact Saisons
N/A
| Saison | Effet | Modificateur |
|---|---|---|
| Été | recherche dombre/boutiques | soif + |
| Hiver | recherche dintérieur | fatigue + |
### Impact Heure / Jour-Nuit
N/A
| Période | Activité | Visibilité |
|---|---|---|
| 10h16h | exploration max | haute |
| 17h19h | achats sortie | moyenne |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Bébés visibles | + | visiteurs restent plus |
### Impact Mort
Voir `visiteur.md` (Départ immédiat).
### Impact Nourriture
N/A
| Type Nourriture | Gain Santé | Coût | Préférence |
|---|---:|---:|---:|
| Boisson | soif -50 | 5 | 5 |
### Impact Attractivité (Visiteurs/Animaux)
**Poids des Cibles** :
@@ -68,25 +113,39 @@ N/A
| Banc (si fatigué) | 200 |
### Impact Valeur
N/A
| Facteur | Variation Prix | Condition |
|---|---:|---|
| Visiteur VIP | dépense x2 | si satisfait |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| 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)
N/A
| 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
N/A
| 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
N/A
| 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
@@ -101,7 +160,10 @@ function chooseNextTarget(visitor, zoo):
```
### Messages d'Infos / Alerte
N/A
| 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
@@ -120,16 +182,16 @@ N/A
**Description UI** : Densité de sprites visiteurs plus élevée autour des cases "Stars".
**Emplacement** : Grille Zoo.
**Intégration** : Comportement IA.
**Navigation** : N/A
**Navigation** : Aucune (passif). Option debug : toggle “Heatmap foule” dans HUD pour visualiser les zones dattroupement.
**Événements** : `CROWD_GATHER`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ambience_crowd_dynamic.mp3` (volume selon densité).
- **Sons** : Rumeur de foule (volume variable selon densité).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **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** : N/A
- **Textes** : N/A
- **Formes** : N/A
- **Couleurs** : Blanc/Jaune (flash), Or (star).
- **Textes** : `CROWD_GATHER` = "La foule se rassemble"
- **Formes** : Bulle BD (émotions).

View File

@@ -20,7 +20,7 @@ L'attraction est calculée pour chaque couple (Ville, Zoo).
## 1. Données et États
### Modèle de Données (JSON)
Calculé à la volée ou mis en cache.
Calculé à la volée, sans cache (cf. règle “pas de mémorisation”).
```json
{
"zoo_id": "uuid",
@@ -30,67 +30,105 @@ Calculé à la volée ou mis en cache.
```
### Caractéristiques Initiales
N/A
| Caractéristique | Valeur Initiale | Type | Description |
|---|---|---|---|
| Rayon attraction max | 30 | cases monde | Au-delà, attraction = 0 (plafond). |
| Facteur ville | 1.0 | float | Multiplie le flux (population/aisance). |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Attraction brute | 0 | 0-∞ | Avant concurrence/plafonds. |
| Flux visiteurs/jour | 0 | 0-∞ | Résultat final injecté à la billeterie. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Zoo et ville existent | true | Est | Calcul possible. |
### Conditions de Disparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Zoo supprimé | true | Est | Flux devient 0. |
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Soft reset | Cartographie connue | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Condition | Effet |
|---|---|
| Températures extrêmes régionales | réduit la volonté de voyager | flux -10% à -30% |
### Impact Milieu (Biome)
N/A
| Biome / route | Effet |
|---|---|
| Montagne (routes lentes) | distance effective + | flux - |
### Impact Saisons
**Hiver** : Réduit la volonté de voyager (-20% rayon d'attraction).
### Impact Heure / Jour-Nuit
N/A
| Période | Effet |
|---|---|
| Nuit | pas de départs | flux 0 vers billeterie |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Naissances médiatisées | flux + | événement “baby boom” |
### Impact Mort
N/A
| Cause | Conséquence | Durée |
|---|---|---|
| Série de morts | flux - | 24h (décroissance) |
### Impact Nourriture
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Prix nourriture élevé | visiteurs budget - | dépense moyenne - |
### Impact Attractivité (Visiteurs/Animaux)
Voir formule.
### Impact Valeur
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Ville riche | dépense moyenne + | facteur ville > 1 |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Paramètre | Valeur | Unité | Effet |
|---|---:|---|---|
| Recalcul flux | 1 | jour in-game | Recalcul quotidien (ou lazy). |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Marketing ville ciblée | 5005000 | coins | augmente facteur ville temporaire |
### Trajet Visiteurs
N/A
| Trajet | Condition | Effet | Notes |
|---|---|---|---|
| Ville→Zoo | calcul distance | flux | distance^2 + plafond rayon |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `FLOW_UPDATED` | recalcul quotidien | met à jour overlay | instant |
| `CITY_FESTIVAL` | événement ville | flux - | 1 jour |
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Flux visible sur carte monde |
| 2 | 2000 | réputation 300 | Rayon attraction +10% |
## 8. Logique et Interfaces
### Pseudo-code Impacts
@@ -104,7 +142,10 @@ function calculateDailyVisitors(zoo, city):
```
### Messages d'Infos / Alerte
N/A
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Nouvelle estimation visiteurs/jour : {n}" | recalcul | 2 |
| Warn | "La distance réduit fortement vos visiteurs." | dist proche plafond | 3 |
# Annexes UX/UI
@@ -123,15 +164,15 @@ N/A
**Description UI** : Lignes pointillées mouvantes reliant les villes au zoo. Épaisseur = Volume flux. **Particules** : Petits points ou voitures circulant sur les lignes pour donner une sensation de vie.
**Emplacement** : Carte Monde.
**Intégration** : Overlay.
**Navigation** : N/A
**Navigation** : Toggle “Flux visiteurs” dans le HUD carte monde → survol dune ligne → affiche détail (ville, visiteurs/jour, facteur saison, distance).
**Événements** : `VIEW_FLOW`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Musiques** : `ambience_world_flow.mp3` (léger, optionnel).
- **Sons** : `ui_flow_toggle.mp3` (toggle overlay).
- **Graphiques** : Lignes de flux.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `flow_dotted_line.png`, `car_particle.png`.
- **Vidéos** : `flow_ants.webm` (1s loop, optionnel).
- **Animations** : Pointillés qui avancent (effet fourmis).
- **Couleurs** : Blanc ou Vert fluo.
- **Textes** : "150 visiteurs/jour".

View File

@@ -29,7 +29,7 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
"current_queue_length": "integer"
},
"entry_log": [
{ "timestamp": "...", "visitor_count": 5, "revenue": 50 }
{ "timestamp": "timestamp", "visitor_count": 5, "revenue": 50 }
],
"iso_x": "integer",
"iso_y": "integer",

View File

@@ -41,10 +41,18 @@ Sélection hiérarchique : **Famille** > **Spécialisation**.
```
### Caractéristiques Initiales
N/A
| Caractéristique | Valeur Initiale | Type | Description |
|---|---:|---|---|
| Fréquence min | 5 | minutes | Intervalle minimal entre actions. |
| Fréquence max | 60 | minutes | Intervalle maximal (profil lent). |
| Budget action | 10% | % coins | Part des coins max utilisable par action (plafond anti-ruine). |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Agressivité marché | 50 | 0-100 | Propension à acheter/vendre. |
| Prudence survie | 50 | 0-100 | Propension à acheter nourriture/soins. |
| Priorité expansion | 20 | 0-100 | Propension à agrandir carte/améliorer bâtiments. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
@@ -54,46 +62,72 @@ Activation par joueur (déconnexion) ou Spawn serveur (Bot permanent).
Connexion joueur.
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Profil choisi | Paramètres logique | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Condition | Effet |
|---|---|
| Froid/Chaud extrême | Augmente achats régulation/biome | priorité survie + |
### Impact Milieu (Biome)
N/A
| Biome | Effet |
|---|---|
| Biome défavorable à la majorité | Achats “changement milieu” | priorité survie + |
### Impact Saisons
N/A
| Saison | Effet | Modificateur |
|---|---|---|
| Printemps | Focus reproduction | priorité éleveur + |
| Hiver | Focus survie | priorité conservateur + |
### Impact Heure / Jour-Nuit
N/A
| Période | Effet |
|---|---|
| Nuit | Actions limitées | fréquence + lente |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Score survie élevé | Bot tente reproduction | profil éleveur |
### Impact Mort
N/A
| Cause | Conséquence | Durée |
|---|---|---|
| Série de morts | Bot achète nourriture/soins | 24h |
### Impact Nourriture
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Stock bas | Achat immédiat | seuil profil |
### Impact Attractivité (Visiteurs/Animaux)
N/A
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| Placements optimisés | + | zoo du bot |
### Impact Valeur
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Profil commerçant | Valeur cash + | ventes fréquentes |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Fréquence Action** : 1 action toutes les 5 à 60 minutes (selon profil).
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Achats auto nourriture | variable | coins | selon seuil |
| Achat upgrades | variable | coins | selon priorité |
### Trajet Visiteurs
N/A
| Trajet | Règle | Notes |
|---|---|---|
| Rapport dabsence → décisions | Script profilé | Le bot ne “se déplace” pas : il calcule des actions sur létat du zoo et sur le marché. |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
@@ -101,7 +135,10 @@ N/A
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Profil basique |
| 2 | 5000 | Réputation 300 | Stratégies avancées (arbitrage) |
## 8. Logique et Interfaces
### Pseudo-code Impacts
@@ -144,11 +181,11 @@ function runBotLogic(bot, zoo):
**Événements** : `SELECT_BOT_PROFILE`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_bot_family_pick.mp3` (jingle court).
- **Sons** : `card_flip.mp3`.
- **Graphiques** : Illustrations des familles (ex: Conservateur avec bouclier, Commerçant avec bourse).
- **Images** : Portraits Bots.
- **Vidéos** : N/A
- **Vidéos** : `bot_family_cards.webm` (1s loop, optionnel).
- **Animations** : Flip de carte au choix.
- **Couleurs** : Code couleur par famille (Vert=Conservateur, Jaune=Commerçant, etc.).
- **Textes** : Titres et Descriptions courtes.
@@ -162,12 +199,12 @@ function runBotLogic(bot, zoo):
**Navigation** : Lire -> Fermer.
**Événements** : `SHOW_REPORT`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_report_open.mp3` (jingle court).
- **Sons** : `notification.mp3`.
- **Graphiques** : Icône Robot.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Images** : `icon_robot.png`, `report_bg.png`.
- **Vidéos** : `report_scroll.webm` (0.8s loop, optionnel).
- **Animations** : Apparition slide-in + highlight des lignes importantes.
- **Couleurs** : Gris/Métal.
- **Textes** : Liste des actions.
- **Formes** : Liste à puces.

View File

@@ -211,5 +211,5 @@ function processShop(shop, visitors):
- **Vidéos** : Time-lapse construction (accéléré).
- **Animations** : Petit effet de poussière à la pose.
- **Couleurs** : Bleu (Blueprint).
- **Textes** : "Construction...".
- **Textes** : "Construction".
- **Formes** : Grille de placement.

View File

@@ -171,12 +171,12 @@ function updateWorldMap(map, deltaTime):
**Description UI** : Nuages ou zone sombre en périphérie.
**Emplacement** : Bords Carte.
**Intégration** : Mask.
**Navigation** : N/A
**Événements** : N/A
**Navigation** : Zoom-out via upgrade carte ; au clic sur une zone masquée, afficher un tooltip “Zone non explorée”.
**Événements** : `FOG_HOVER`, `FOG_CLICK_BLOCKED`
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Musiques** : `ambience_fog_soft.mp3` (optionnel, très discret).
- **Sons** : `fog_whoosh.mp3` (au reveal), `ui_denied.mp3` (clic zone bloquée).
- **Graphiques** : Texture Nuages.
- **Images** : Masque alpha (bords flous).
- **Vidéos** : Effet de brume (particules).

View File

@@ -39,7 +39,33 @@ La carte du zoo est l'espace principal de gestion du joueur où il place ses bâ
"owner_id": "uuid",
"width": "integer (init 5)",
"height": "integer (init 6)",
"cases": [ ... ]
"cases": [
{
"id": "uuid",
"grid": { "x": "integer", "y": "integer" },
"iso": { "iso_x": "integer", "iso_y": "integer" },
"z_index": "integer",
"biome": "enum('prairie','ocean','montagne')",
"terrain": {
"ground_type": "enum('herbe','terre','sable','roche','eau')",
"path_type": "enum('none','terre','gravier','paves','bois_pont')",
"decoration_ids": "uuid[]"
},
"occupancy": {
"type": "enum('empty','animal','building','service','enclosure_fence','water_obstacle')",
"entity_id": "uuid | null"
},
"render": {
"tile_variant": "string (auto-tiling key)",
"occluder": "boolean",
"click_hitbox": "enum('tile','base_sprite','custom_polygon')"
},
"timestamps": {
"created_at": "timestamp",
"updated_at": "timestamp"
}
}
]
}
```

View File

@@ -18,18 +18,37 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde).
{
"x": "integer",
"y": "integer",
"grid_id": "string (stable key: `${x}:${y}`)",
"owner_id": "uuid | null (null = carte neutre/monde)",
"created_at": "timestamp",
"updated_at": "timestamp",
"biome_id": "integer",
"temperature_offset": "float",
"biome_type": "enum('prairie','ocean','montagne','savane','toundra','desert','jungle','marais')",
"temperature_offset": "float (°C, additive)",
"content_ref": "uuid | null",
"content_type": "string",
"content_type": "enum('empty','animal','building','visitor','staff','decoration','path','bridge','water','fence')",
"fertility_level": "float (0-100)",
"state_flags": ["frozen", "dry", "dirty", "fertilized"],
"cleanliness_level": "float (0-100)",
"state_flags": [
"enum('frozen','dry','dirty','fertilized','muddy','snowy','flooded','trampled')"
],
"render": {
"tile_variant": "string (auto-tiling key)",
"occluder": "boolean",
"hitbox": "enum('tile','base_sprite','custom_polygon')"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Contraintes (Invariants)
* **Unicité** : (`x`,`y`) est unique dans une grille.
* **Cohérence contenu** : si `content_type === 'empty'` alors `content_ref === null`.
* **Température** : `temperature_offset` sapplique additivement à la température “biome” et aux modificateurs (saison, jour/nuit).
* **Z-index isométrique** : `z_index` est dérivé principalement de `y` (et secondairement de `x`) pour garantir le recouvrement correct.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```python
@@ -48,6 +67,13 @@ def fertilize_case(case, player):
return success("CASE_FERTILIZED")
```
### Messages d'Infos / Alerte
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Sol fertilisé." | `state_flags` ajoute `fertilized` | 2 |
| Warn | "Fonds insuffisants." | `player.money < cost` | 4 |
| Warn | "Case occupée : action indisponible." | `content_type` non compatible | 3 |
# Annexes UX/UI
## 0. Direction Artistique & Vue
@@ -69,9 +95,11 @@ def fertilize_case(case, player):
**Événements** : `FERTILIZE_SOIL`.
#### Assets
- **Musiques** : Bruit de poudre.
- **Musiques** : `ambience_garden_soft.mp3` (léger, discret).
- **Sons** : `scatter.mp3`.
- **Graphiques** : Particules vertes/brunes.
- **Images** : Texture terre riche (plus foncée).
- **Animations** : Poussière qui retombe.
- **Couleurs** : Marron foncé.
- **Textes** : `TOOL_FERTILIZE` = "Engrais", `CASE_FERTILIZED` = "Sol fertilisé"
- **Formes** : Curseur rond (outil), surbrillance tuile.

View File

@@ -30,11 +30,27 @@ Case spécifique à la grille du zoo, pouvant accueillir les éléments de gesti
Hérite de `Case (Générique)`.
```json
{
"last_visit_time": "timestamp",
"quality_score": "float (0-100)"
"last_visit_time": "timestamp | null",
"visit_count_total": "integer",
"visit_count_day": "integer",
"heatmap_score": "float (0-100)",
"quality_score": "float (0-100)",
"pathing": {
"walkable": "boolean",
"movement_cost": "float (>= 1.0)",
"preferred": "boolean (true for path tiles)"
},
"zoo_specific_flags": [
"enum('premium_spot','near_entry','near_shop','near_enclosure','staff_only')"
]
}
```
### Contraintes (Invariants)
* **Walkable** : une case avec `content_type` bâtiment/animal est généralement `walkable=false` pour les visiteurs (sauf exceptions design).
* **last_visit_time** : mis à jour uniquement quand un visiteur “observe” réellement (pas juste traverse) si la mécanique de “visite” est distincte.
* **movement_cost** : > 1.0 sur herbe/boue, = 1.0 sur chemins, < 1.0 interdit (évite vitesse infinie).
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
@@ -43,6 +59,8 @@ Hérite de `Case (Générique)`.
### Scores Initiaux
**Passages** : 0 (Heatmap de fréquentation).
**Propreté** : 100 (aucun déchet).
**Coût de marche** : 1.2 (herbe) par défaut, 1.0 (chemin) si la case est convertie.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
@@ -114,6 +132,8 @@ function checkAnimalDisappearance(case):
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `CASE_DIRTY` | Info | "Une case est sale." |
| `PATH_BLOCKED` | Warning | "Chemin bloqué : les visiteurs recalculent leur trajet." |
| `ANIMAL_NOT_VISITED` | Warning | "Un animal n'a pas été observé depuis longtemps." |
# Annexes UX/UI

View File

@@ -15,10 +15,25 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
```json
{
"type": "path",
"material": "gravel",
"material": "enum('terre','gravier','paves','bois','tapis_rouge')",
"level": "integer (1-7)",
"x": 10,
"y": 12,
"connected_neighbors": ["N", "S", "E"],
"connected_neighbors": ["enum('N','S','E','W')"],
"movement": {
"visitor_speed_multiplier": "float (>= 1.0)",
"staff_speed_multiplier": "float (>= 1.0)",
"visitor_preference_weight": "integer (0-100)"
},
"economy": {
"build_cost": "integer (coins)",
"upkeep_cost_per_day": "integer (coins)",
"attractiveness_bonus": "integer"
},
"render": {
"auto_tile_key": "string",
"variant_seed": "integer (for random subtle variation)"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
@@ -28,6 +43,15 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
## 2. Règles Métier
* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling).
* **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins.
* Terre : visiteurs x1.15, staff x1.25
* Gravier : visiteurs x1.25, staff x1.35
* Pavés : visiteurs x1.35, staff x1.45
* Bois (pont / passerelle) : visiteurs x1.20, staff x1.30
* Tapis rouge (VIP) : visiteurs VIP x1.50 (sinon x1.10), bonus satisfaction +2/min sur la tuile
* **Attraction** : les visiteurs préfèrent rester sur les chemins quand ils se déplacent (`visitor_preference_weight`).
* **Construction** : une tuile chemin ne peut pas être posée si la case est occupée par un bâtiment/animal/enclos (sauf règle “chemin sous enclos” explicitement définie ailleurs).
* **Auto-tiling** : le `auto_tile_key` dépend de `connected_neighbors` et de `material` (ex. `paves_NSE`).
* **Cas limites** : conversion dun chemin sous un visiteur → appliquer au tick suivant, pas instantanément (évite téléportations).
# Annexes UX/UI
@@ -53,3 +77,5 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
## 1. Détails Spécifiques
* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases.
* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).
* **Lisibilité iso** : les bordures de chemin doivent rester visibles même sous locclusion partielle (contraste + outline discret).
* **Hitbox** : clic sur le losange (tuile) sélectionne la tuile chemin ; un clic sur une entité au-dessus a priorité (z-order + hit testing).

View File

@@ -62,7 +62,7 @@ function finalizeAuction(auction):
| :--- | :--- | :--- |
| `BID_PLACED` | Info | "Offre placée avec succès." |
| `OUTBID` | Alerte | "Vous avez été surenchéri !" |
| `AUCTION_WON` | Succès | "Vous avez remporté l'enchère ! Livraison en cours..." |
| `AUCTION_WON` | Succès | "Vous avez remporté l'enchère ! Livraison en cours." |
# Annexes UX/UI
@@ -85,11 +85,11 @@ function finalizeAuction(auction):
**Événements** : `HOVER_OFFER`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_market_hover.mp3` (jingle discret optionnel).
- **Sons** : `hover_soft.mp3`.
- **Graphiques** : Cadre Offre (Doré si rare).
- **Images** : Icône Animal.
- **Vidéos** : N/A
- **Vidéos** : `offer_hover_glow.webm` (0.6s loop, optionnel).
- **Animations** : Prix qui clignote si nouvelle enchère.
- **Couleurs** : Vert (Abordable), Rouge (Trop cher).
- **Textes** : "Lapin Rare - 500$".
@@ -104,15 +104,15 @@ function finalizeAuction(auction):
**Événements** : `PLACE_BID`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_market_bid.mp3` (jingle court).
- **Sons** : `bid_placed.mp3` (bruit de marteau).
- **Graphiques** : Icône Marteau.
- **Images** : Portrait Animal HD.
- **Vidéos** : N/A
- **Vidéos** : `bid_counter_up.webm` (0.8s loop, optionnel).
- **Animations** : Compteur prix qui monte.
- **Couleurs** : Bouton Vert.
- **Textes** : "Enchérir".
- **Formes** : N/A
- **Formes** : Boutons rapides (+10/+50/+100), champ numérique.
### Sablier de Validation (Attente)
**Description UX** : L'enchère est remportée, le transfert est en cours (10 min).
@@ -120,19 +120,19 @@ function finalizeAuction(auction):
**Notification Push** : "Enchère remportée ! Animal livré." à la fin du timer.
**Emplacement** : Carte Monde & HUD.
**Intégration** : Statut "En cours".
**Navigation** : N/A
**Navigation** : Clic sur sablier dans HUD → ouvre le détail transaction (temps restant, statut, destination).
**Événements** : `TIMER_START`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_timer_soft.mp3` (optionnel, très discret).
- **Sons** : `tick_tock.mp3` (ambiance très discrète si focus).
- **Graphiques** : Sablier animé.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `icon_hourglass.png`, `badge_pending.png`.
- **Vidéos** : `hourglass_flow.webm` (1s loop, optionnel).
- **Animations** : Sable qui coule.
- **Couleurs** : Orange.
- **Textes** : "Validation : MM:SS".
- **Formes** : N/A
- **Formes** : Badge rond (HUD), icône sur slot.
### Activité "Clic" (Gameplay)
**Description UX** : Pendant les 10 min, le joueur peut cliquer sur le sablier pour "accélérer" (symboliquement) ou gagner un petit bonus (XP/Pièce) pour patienter.
@@ -143,12 +143,12 @@ function finalizeAuction(auction):
**Événements** : `CLICK_HOURGLASS`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_click_reward.mp3` (jingle court).
- **Sons** : `sand_shake.mp3`. **Design ASMR** : Bruit de sable qui crisse ou petit choc mat.
- **Graphiques** : Particules de sable.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `sand_particle.png`.
- **Vidéos** : `hourglass_shake.webm` (0.5s non loop, optionnel).
- **Animations** : Secousse.
- **Couleurs** : Doré.
- **Textes** : "+1 XP".
- **Formes** : N/A
- **Formes** : Bouton rond (tap cible), badge sablier (HUD).

View File

@@ -14,9 +14,12 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
### Données (JSON)
```json
{
"enclosure_id": "enclosure_lions_01",
"animal_type": "lion",
"biome_type": "savanna",
"enclosure_id": "uuid",
"owner_zoo_id": "uuid",
"created_at": "timestamp",
"updated_at": "timestamp",
"animal_type": "string (ref inventaire_animaux)",
"biome_type": "enum('prairie','ocean','montagne','savane','toundra','desert','jungle','marais')",
"cells": [
{"x": 10, "y": 10},
{"x": 10, "y": 11},
@@ -29,6 +32,24 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
"cleanliness": 85,
"fence_health": 100,
"decoration_score": 15,
"perimeter_edges": "integer",
"fence_style_id": "string (skin/theme)",
"sign": {
"enabled": "boolean",
"sign_id": "uuid | null"
},
"render": {
"auto_tile_key": "string",
"fence_segments": [
{
"edge": "enum('N','S','E','W')",
"x": "integer",
"y": "integer",
"variant": "string",
"occluder": "boolean"
}
]
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
@@ -38,6 +59,14 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
### Règles Métier
* **Algorithme de Fusion :** À chaque placement/suppression de case enclos, recalculer les composants connectés (Connected Components) pour mettre à jour les murs.
* **Murs :** Les murs ne sont générés que sur les bords de la zone connectée qui ne touchent pas une autre case du même enclos.
* **Cohérence espèce** : un composant connecté ne peut contenir quun `animal_type` nominal. Si une case est convertie, elle déclenche un split/merge.
* **Capacité** : `capacity = floor(area * capacity_per_tile)``capacity_per_tile` dépend de lespèce (valeur par défaut 1.5).
* **Propreté** : décroît par présence animale et par visiteurs proches ; remonte via employé (soigneur/nourisseur selon design) et/ou nettoyage.
### Cas limites (Edge cases)
* **Split** : retirer une case centrale peut séparer lenclos en 2 composants → créer 2 enclos (nouveaux `enclosure_id`) et recalculer clôtures/affiches.
* **Pont/chemin** : une case chemin/pont adjacente ne fait pas partie de lenclos mais influence la pose de laffiche (priorité visibilité).
* **Occlusion** : si un segment de clôture masque lanimal (S/E), utiliser variante basse ou alpha réduit.
## 6. Annexes UX/UI
@@ -51,6 +80,7 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
### 0. Direction Artistique & Vue
* **Note** : ce bloc double un autre bloc similaire ; les deux sont conservés. Celui-ci précise les règles de grille/profondeur.
* **Vue** : Isométrique (2.5D).
* **Grille** : Les déplacements se font sur une grille losange.
* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
@@ -64,3 +94,8 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
* **Visuel Barrières :** Génération procédurale des barrières uniquement sur le pourtour (Auto-tiling). Fusion visuelle des barrières si adjacents.
* **Isométrique :** Les barrières au Sud et à l'Est doivent être semi-transparentes ou plus basses pour ne pas cacher les animaux.
* **Signalétique :** Affiche de l'animal visible sur la clôture.
### Interactions (sélection / inspection)
* **Sélection enclos** : clic sur une clôture ou sur une case enclos ouvre un panneau “Enclos”.
* **Panneau** : espèce, population/capacité, propreté, santé clôture, bonus déco, bouton “Améliorer clôture”, bouton “Déplacer affiche” (si optionnel).
* **Erreurs** : tentative dajouter un animal dune autre espèce dans un enclos fusionné → refus + message.

View File

@@ -69,17 +69,30 @@ Les états négatifs (Sale, Malade) repoussent les visiteurs.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Contexte | État | Effet vitesse | Condition | Notes |
|---|---|---:|---|---|
| Visiteurs | “Confort OK” | x1.0 | Température 530°C, sol non boueux | Vitesse nominale. |
| Visiteurs | “Stress” | x0.85 | Animal malade visible / zone sale | Les visiteurs ralentissent pour observer/éviter. |
| Animaux | “Faim” | x0.7 | `hunger > 70` | Animation lente, impact visuel. |
| Animaux | “Heureux” | x1.1 | Conditions idéales + visite récente | Sautillements, micro-boost. |
### Dépenses (Boutiques/Visiteurs)
N/A
| État | Coût | Unité | Déclencheur | Règle |
|---|---:|---|---|---|
| “Sale” | 10 | pièces / case / jour | Déchets non ramassés | Nettoyage automatique si employé dédié, sinon manuel. |
| “Malade” | 50 | pièces / animal | Maladie / mort proche | Frais vétérinaires ; si non payés, risque de mort augmente. |
| “T° critique” | 10 | pièces / degré / jour | Chauffage/Clim régule | Dépend de `temperature.md` (régulateurs). |
### Trajet Visiteurs
**Fuite** : Les visiteurs évitent les animaux avec l'état "Malade".
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `STATE_APPLIED` | Ajout dun flag visuel | Met à jour rendu | Instantané |
| `STATE_CLEARED` | Retour à la normale | Retire overlay/particules | Instantané |
| `STATE_CRITICAL` | Seuil critique franchi | Alerte + focus optionnel | Tant que critique |
## 7. Progression
### Tableau des Upgrades

View File

@@ -111,7 +111,9 @@ function getCollectionBonus(player):
count = countDistinctSpecies(player.animals)
if count >= 75: return 0.20
if count >= 50: return 0.10
// ...
if count >= 30: return 0.05
if count >= 15: return 0.02
if count >= 5: return 0.01
return 0
```

View File

@@ -32,7 +32,14 @@ Changement toutes les X heures ou jours.
## 3. Impacts Environnementaux
### Impact Température
Voir liste ci-dessus.
| Météo | Modificateur Température | Notes |
|---|---:|---|
| Ensoleillé | +1°C | Bonus attractivité. |
| Nuageux | 0°C | Neutre. |
| Pluvieux | 0°C | Humidité, pousse herbe. |
| Orage | 0°C | Stress animaux. |
| Neige | -5°C | Risque froid. |
| Canicule | +5°C | Risque chaud. |
### Impact Milieu (Biome)
**Réaction** : La pluie remplit les mares (visuel). La neige couvre le sol.
@@ -54,7 +61,14 @@ Voir liste ci-dessus.
**Pousse** : Pluie = Herbe pousse plus vite.
### Impact Attractivité (Visiteurs/Animaux)
Voir liste ci-dessus.
| Météo | Modificateur visiteurs | Notes |
|---|---:|---|
| Ensoleillé | +10% | Confort. |
| Nuageux | 0% | Neutre. |
| Pluvieux | -15% | Sans abris, départs plus rapides. |
| Orage | -30% | Peur, incidents. |
| Neige | -20% | Froid, sauf événements. |
| Canicule | -10% | Sauf glaces/ombre (boutiques). |
### Impact Valeur
**Ventes** : Parapluies vs Glaces.

View File

@@ -24,7 +24,23 @@
Table statique (Reference Data).
### Caractéristiques Initiales
Voir liste ci-dessus.
| Milieu | Couleur | T° base (°C) | Walkable | Notes |
|---|---|---:|---|---|
| Prairie Tendre | Vert clair | 20 | Oui | Biome neutre de départ. |
| Forêt Dense | Vert foncé | 18 | Oui | Bonus ombre (été). |
| Savane | Jaune/Ocre | 28 | Oui | Favorise espèces chaudes. |
| Désert | Sable | 38 | Oui | Coût eau élevé. |
| Plage | Beige | 30 | Oui | Transition océan. |
| Océan Surface | Bleu clair | 22 | Non (sans pont) | Aquatique. |
| Océan Profond | Bleu foncé | 10 | Non | Infranchissable, pont interdit si “profond”. |
| Récif | Corail | 24 | Non (sans pont) | Visuel riche, attractivité. |
| Montagne Basse | Gris vert | 12 | Oui | Ralentit camions. |
| Roche | Gris | 8 | Oui | Froid, peu fertile. |
| Sommet Enneigé | Blanc | -5 | Oui | Hiver permanent. |
| Volcanique | Noir/Rouge | 45 | Oui | Danger chaleur. |
| Marécage | Vert boue | 16 | Oui | Boue, maladies. |
| Toundra | Bleu gris | 0 | Oui | Froid, adapté polaire. |
| Jungle | Vert saturé | 32 | Oui | Humidité, croissance. |
### Scores Initiaux
**Surface** : 0 cases.

View File

@@ -2,7 +2,7 @@
## Liste des Incidents
1. **Soif** : "J'ai soif !" -> Nécessite un stand de boisson ou une boutique proche.
2. **Fatigue** : "J'ai mal aux pieds..." -> Nécessite un banc.
2. **Fatigue** : "J'ai mal aux pieds" -> Nécessite un banc.
3. **Saleté** : "C'est sale ici !" -> Nécessite un nettoyage (clic) ou une poubelle.
4. **Frustration** : "On ne voit rien !" -> Animal trop loin ou caché.
5. **Envie** : "Je veux une peluche !" -> Nécessite une boutique de souvenirs.

View File

@@ -69,7 +69,12 @@ Fin de durée saison.
## 3. Impacts Environnementaux
### Impact Température
Voir liste ci-dessus.
| Saison | Modificateur Global | Notes |
|---|---:|---|
| Printemps | +0°C | Référence neutre. |
| Été | +10°C | Peut déclencher canicule via météo. |
| Automne | -2°C | Accentue pluie/vent. |
| Hiver | -15°C | Peut déclencher neige/vague de froid via météo. |
### Impact Milieu (Biome)
**Adaptation** : Les biomes réagissent visuellement (Neige sur Montagne en Hiver).
@@ -82,16 +87,29 @@ Voir liste ci-dessus.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
Voir liste ci-dessus.
| Saison | Modificateur | Condition |
|---|---:|---|
| Printemps | +20% | Bonus général (sauf espèces “solitaires” si définies). |
| Été | +0% | Neutre. |
| Automne | +0% | Neutre. |
| Hiver | -50% | Sauf espèces adaptées au froid (cf. `inventaire_milieux.md`). |
### Impact Mort
Voir liste ci-dessus.
| Saison | Risque additionnel | Condition |
|---|---:|---|
| Été | +10% | Pour espèces froides si pas de régulation. |
| Hiver | +20% | Pour espèces tropicales si pas de régulation. |
### Impact Nourriture
**Disponibilité** : Fruits abondants en Été (Prix bas), rares en Hiver (Prix haut).
### Impact Attractivité (Visiteurs/Animaux)
Voir liste ci-dessus.
| Saison | Modificateur visiteurs | Notes |
|---|---:|---|
| Printemps | x1.0 | Standard. |
| Été | x1.5 | Vacances. |
| Automne | x0.8 | Pluie/vent. |
| Hiver | x0.6 | Froid, sauf événements spéciaux. |
### Impact Valeur
**Offre/Demande** : Prix des glaces x2 en Été.

View File

@@ -14,7 +14,7 @@ Interface de gestion permettant au joueur de visualiser, trier et équiper les
## 4. Interactions
* **Ouverture :** Depuis le menu profil ou la boutique.
* **Filtrage :** Par catégorie (Chapeaux, T-shirts, Zoo...), par thème (Jungle, Espace...) ou par rareté.
* **Filtrage :** Par catégorie (Chapeaux, T-shirts, Zoo), par thème (Jungle, Espace) ou par rareté.
* **Sélection :** Clic sur un item pour voir les détails et le bouton "Équiper".
## 5. Annexes Techniques

View File

@@ -92,10 +92,21 @@ Suppression compte.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Domaine | Paramètre | Valeur | Unité | Règle |
|---|---|---:|---|---|
| Camion | Actions/minute | 6 | actions | Limite anti-spam côté UI (évite double-clic achats/ventes). |
| Nurserie | Ouverture panel | 250 | ms | Transition UI (snappy) pour boucles fréquentes. |
| Accueil | Placement animal | 1 | interaction | Tap-to-select → Tap-to-place en 1 geste (accessibilité). |
| Recherche | Lancement projet | 1 | clic | 1 clic depuis menu achats → centre recherche → projet. |
| Labo | Achat offre rare | 1 | drag/drop | Alternatif : tap offre → tap camion (mobile). |
| Visite | Pan/zoom | 60 | FPS | Cible de fluidité sur la carte isométrique. |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition | Impact |
|---|---:|---|---|---|
| Parking | 05 | pièces / visite | Selon politique du joueur | Ajuste satisfaction visiteurs et revenus. |
| Marketing | 05000 | pièces / action | Campagne publicitaire | Augmente affluence temporaire. |
| Skins / thèmes | 02000 | pièces / item | Achat cosmétique | Aucun impact gameplay (sauf attractivité visuelle si spécifié ailleurs). |
### Trajet Visiteurs
**Design** : Le joueur trace les routes.
@@ -147,11 +158,11 @@ function playerAction(action):
**Événements** : `UI_CLICK`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_hud_ambience.mp3` (très léger, optionnel, volume 15%).
- **Sons** : `ui_click.mp3`.
- **Graphiques** : Style UI "Bois et Pierre" ou "Moderne Clean".
- **Images** : Icônes (Pièce, Fiole, Marteau, Carte).
- **Vidéos** : N/A
- **Vidéos** : `hud_counters_hint.webm` (micro-anim 1s, loop, optionnel sur tutoriel).
- **Animations** : Compteurs qui défilent quand gain/perte.
- **Couleurs** : Or, Bleu, Blanc.
- **Textes** : Chiffres, Labels menus.
@@ -166,12 +177,12 @@ function playerAction(action):
**Événements** : `SAVE_PROFILE`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_profile_open.mp3` (jingle court).
- **Sons** : `save_success.mp3`.
- **Graphiques** : Portraits de bots.
- **Images** : Avatars joueurs.
- **Vidéos** : N/A
- **Vidéos** : `profile_avatar_spin.webm` (aperçu rotation/pose, 2s, loop).
- **Animations** : Checkmark vert.
- **Couleurs** : Bleu UI.
- **Textes** : Description des bots ("Le Conservateur : Achète de la nourriture...").
- **Textes** : Description des bots ("Le Conservateur : Achète de la nourriture, évite les risques").
- **Formes** : Cartes de sélection.

View File

@@ -93,7 +93,7 @@ Microscope stylisé bleu néon sur fond sombre, évoquant la haute technologie.
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Fertilité Assistée | +20% | Si recherche "Fécondation In Vitro" débloquée |
| Clonage | N/A (Création artificielle) | Remplace la reproduction naturelle pour les espèces éteintes |
| Clonage | Reproduction Naturelle = 0%, Production par Synthèse = 100% | Si l'espèce est éteinte ou si loption \"Synthèse\" est utilisée au lieu dun cycle de reproduction |
#### Impact Mort
| Cause | Conséquence | Durée |

View File

@@ -7,7 +7,7 @@ Le milieu représente l'environnement écologique d'une case, défini par sa cou
- **Prairie** (Tiers Gauche)
- **Océan** (Tiers Milieu)
- **Montagne** (Tiers Droite)
- *Note : D'autres milieux (Forêt, Désert...) peuvent être définis par des couleurs intermédiaires.*
- *Note : D'autres milieux (Forêt, Désert, Savane, Jungle, Marécage, Toundra, Volcanique) peuvent être définis par des couleurs intermédiaires.*
## Impact
- **Survie** : Chaque animal a un milieu de prédilection. Un écart trop important entre la couleur de la case et la couleur idéale de l'animal entraîne stress, maladie et mort.

View File

@@ -144,7 +144,7 @@ function handleBabyDeath(baby):
- **Sons** : Bruit de tonnerre lointain.
- **Graphiques** : Crâne (icône).
- **Images** : Portrait du bébé avec ruban noir.
- **Vidéos** : N/A
- **Vidéos** : `death_alert_glitch.webm` (0.7s loop, optionnel), `black_ribbon_fade.webm` (1.2s non loop).
- **Animations** : Tremblement de la fenêtre.
- **Couleurs** : Noir #000000.
- **Textes** : Cause du décès.

View File

@@ -177,7 +177,7 @@ function updateNurserie(nurserie):
**Description UI** : Animation de l'œuf "volant" vers la nurserie (si visible) ou simple apparition dans le slot.
**Emplacement** : HUD -> Nurserie.
**Intégration** : Automatique.
**Navigation** : N/A
**Navigation** : Clic sur notif “Œuf ajouté” → ouvre la nurserie sur le slot concerné (deep-link) ; sinon aucun parcours requis.
**Événements** : `EGG_ADDED`.
#### Assets

View File

@@ -25,8 +25,28 @@
"name": "Arbre à Singe",
"compatible_animals": ["chimpanzee", "lemur"],
"cost": 150,
"durability": 100, // Peut s'user avec le temps
"bonus_happiness": 20
"created_at": "timestamp",
"updated_at": "timestamp",
"durability": 100,
"repair_cost": 30,
"bonus_happiness": 20,
"bonus_attractiveness": 10,
"cooldowns": {
"use_interval_seconds": 120,
"next_usable_at": "timestamp"
},
"placement": {
"enclosure_id": "uuid",
"grid": { "x": "integer", "y": "integer" },
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer",
"hitbox": "enum('tile','base_sprite','custom_polygon')"
},
"render": {
"sprite_id": "string",
"variant_seed": "integer"
}
}
```
@@ -34,11 +54,20 @@
* **Exclusivité :** Un objet conçu pour les lions ne fonctionnera pas (ou mal) pour les pingouins.
* **Espace :** Occupe de la place dans l'enclos (réduit la surface "libre" mais augmente la qualité).
* **Limite :** 1 objet spécial par X cases d'enclos pour éviter la surcharge.
* **Effet “mauvaise compatibilité”** : si un animal non compatible interagit, bonus réduit à 10% et risque de casse +5%.
* **Usure** : `durability` baisse à chaque utilisation (ex. -1) et par jour (ex. -2/jour). En dessous de 20 : animation “abîmé” + malus (bonus_happiness / 2).
* **Réparation** : action joueur ou employé (soigneur/agent selon design) ramène `durability` à 100 contre `repair_cost`.
* **Pathfinding** : lobjet est un obstacle interne à lenclos (visiteurs ne le traversent pas si lenclos est visitable ; animaux lutilisent comme target).
## 6. Annexes UX/UI
* **Visuel 3D/Iso :** Modèle détaillé correspondant au thème de l'animal.
* **Feedback :** Cœurs ou étoiles émanant de l'animal lorsqu'il utilise l'objet.
### États visuels
* **Neuf** : couleurs vives + petite animation idle.
* **Usé** (`durability < 50`) : texture éraflée, bruit plus sec.
* **Cassé** (`durability <= 0`) : sprite “cassé”, interaction désactivée jusquà réparation.
# Annexes UX/UI

View File

@@ -17,9 +17,13 @@ Classe abstraite ou interface commune.
```json
{
"id": "uuid",
"type": "string",
"type": "enum('player','bot','visitor','animal','staff')",
"created_at": "timestamp",
"updated_at": "timestamp",
"position": { "x": "int", "y": "int" },
"active": "boolean",
"status_flags": ["enum('selected','moving','interacting','hidden','dead','sleeping','busy')"],
"hitbox": "enum('tile','base_sprite','custom_polygon')",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
@@ -27,74 +31,134 @@ Classe abstraite ou interface commune.
```
### Caractéristiques Initiales
N/A (Spécifique aux sous-types)
| Caractéristique | Valeur Initiale | Type | Description |
|---|---|---|---|
| active | true | bool | Lentité est simulée/rendue si active. |
| hitbox | base_sprite | enum | Sélection via base sprite (isométrique). |
| status_flags | [] | enum[] | Liste vide au spawn, enrichie par le comportement. |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| visibilité | 100 | 0-100 | Probabilité dêtre rendu/affiché (ex. foule dense). |
| priorité interaction | 50 | 0-100 | Arbitre quel élément capte le clic en cas de chevauchement. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Spawn système | true | Est | Création de lentité (par règle métier). |
| Ressources dispo | selon type | >= | Autorise création (ex. staff payé). |
### Conditions de Disparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| active | false | Est | Retrait du rendu/simulation. |
| status_flags contient dead | true | Est | Retrait ou état “cadavre” selon design. |
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Classe dérivée | Champs spécifiques | 100% | Non |
| Skins | Palette/cosmétiques | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Plage Température | Effet sur lentité | Bonus/Malus |
|---|---|---|
| < 0°C | Animations “froid” (si entité sensible) | vitesse -10% (visiteurs) |
| > 30°C | Animations “chaud” | soif +20% (visiteurs) |
### Impact Milieu (Biome)
N/A
| Biome | Compatibilité | Bonus/Malus |
|---|---:|---|
| Chemin | 100% | coût de mouvement 1.0 |
| Herbe | 100% | coût de mouvement 1.2 |
| Boue | 60% | coût de mouvement 1.5 |
### Impact Saisons
N/A
| Saison | Effet | Modificateur |
|---|---|---|
| Été | foule + | visiteurs + |
| Hiver | foule - | visiteurs - |
### Impact Heure / Jour-Nuit
N/A
| Période | Activité | Visibilité |
|---|---|---|
| Jour | simulation normale | haute |
| Nuit | entités “dorment” selon type | moyenne/basse |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Proximité | augmente | si entité = animal |
### Impact Mort
N/A
| Cause | Conséquence | Durée |
|---|---|---|
| État critique | passage dead | selon règles type |
### Impact Nourriture
N/A
| Type Nourriture | Gain Santé | Coût | Préférence |
|---|---:|---:|---:|
| selon type | variable | variable | 15 |
### Impact Attractivité (Visiteurs/Animaux)
N/A
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| entité rare visible | + | 8 cases |
### Impact Valeur
N/A
| Facteur | Variation Prix | Condition |
|---|---:|---|
| rareté cosmétique | + | si skin rare |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Domaine | Paramètre | Valeur | Unité |
|---|---|---:|---|
| Déplacement | coût de mouvement | >= 1.0 | multiplicateur |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| maintenance entité | variable | /jour | si staff/bâtiment associé |
### Trajet Visiteurs
N/A
| Trajet | Règle | Priorité | Notes |
|---|---|---:|---|
| vers POI | A* pondéré | 50 | chemins préférés |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `ENTITY_SPAWN` | création | rendu + simulation | instant |
| `ENTITY_DESPAWN` | suppression | retrait | instant |
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | comportement de base |
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
```text
computeZIndex(x, y):
return y * 1000 + x
hitTest(click):
candidates = entities.sortedBy(z_index desc)
return first(entity where click inside entity.hitbox)
```
### Messages d'Infos / Alerte
N/A
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Entité sélectionnée." | clic valide | 2 |
| Warn | "Interaction impossible." | état busy/dead | 4 |
# Annexes UX/UI
@@ -117,12 +181,12 @@ N/A
**Événements** : `HOVER_CHARACTER`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Musiques** : `ui_hover_soft.mp3` (jingle court, optionnel).
- **Sons** : `ui_hover.mp3`, `ui_select.mp3`.
- **Graphiques** : Silhouettes archétypales.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Images** : `badge_player.png`, `badge_bot.png`, `badge_visitor.png`, `badge_animal.png`.
- **Vidéos** : `hover_glow.webm` (0.6s loop, optionnel).
- **Animations** : Glow pulse (hover), pop (select).
- **Couleurs** : Joueur (Bleu), Bot (Rouge/Gris), Visiteur (Multicolore), Animal (Naturel).
- **Textes** : Nom, Rôle.
- **Formes** : N/A
- **Formes** : Badge rond + tooltip rect arrondi.

View File

@@ -21,15 +21,26 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues
### Données (JSON)
```json
{
"bridge_id": "bridge_segment_15_15",
"type": "wooden_bridge",
"bridge_id": "uuid",
"owner_zoo_id": "uuid",
"type": "enum('wood_planks','stone_bridge','rope_bridge')",
"created_at": "timestamp",
"updated_at": "timestamp",
"coordinates": {"x": 15, "y": 15},
"water_underneath": true,
"connected_neighbors": ["enum('N','S','E','W')"],
"durability": "integer (0-100)",
"stats": {
"speed_modifier": 1.0,
"attractiveness_bonus": 5
},
"cost_per_tile": 50,
"repair_cost": 20,
"render": {
"auto_tile_key": "string",
"height_offset_px": "integer (>= 0)",
"occluder": "boolean"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
@@ -39,6 +50,9 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues
### Règles Métier
* **Support :** Doit commencer et finir sur la terre ferme (ou se connecter à un autre pont).
* **Hauteur :** En vue isométrique, le pont peut être légèrement surélevé par rapport à l'eau.
* **Auto-tiling** : se connecte aux ponts adjacents et (optionnellement) aux chemins si le bord touche la terre.
* **Usure** : `durability` baisse de 1/jour + 1 par X passages (ex. 50 passages). En dessous de 20, bruit de craquement + risque incident (arrêt temporaire) si non réparé.
* **Erreur construction** : interdite si la tuile deau est “profonde” et non pontable (flag terrain), ou si collision avec un bâtiment.
## 6. Annexes UX/UI
* **Visuel :** Planches de bois avec rambardes, piliers plongeant dans l'eau.
@@ -55,3 +69,10 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues
* **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. Interactions UI (construction / réparation)
* **Construction** : mode “peinture” possible (drag) pour poser plusieurs tuiles de pont daffilée, avec preview auto-tiling.
* **Réparation** : clic sur pont (durabilité < 100) → bouton “Réparer” (coût affiché) → animation marteau + retour à 100.
* **Messages** :
* `BRIDGE_BUILD_BLOCKED` : "Impossible de construire un pont ici."
* `BRIDGE_NEEDS_REPAIR` : "Pont endommagé : réparation recommandée."

View File

@@ -108,7 +108,7 @@ if checkConditions(parentA, parentB):
if random() < chance:
createBaby(parentA, parentB)
else:
emitEvent("REPRO_FAIL", "Pas d'alchimie...")
emitEvent("REPRO_FAIL", "Tentative échouée")
```
### Messages d'Infos / Alerte
@@ -145,7 +145,7 @@ if checkConditions(parentA, parentB):
- **Vidéos** : Effet de flou artistique (Bloom).
- **Animations** : Cœurs qui montent.
- **Couleurs** : Rose.
- **Textes** : "Love is in the air...".
- **Textes** : "Accouplement en cours".
- **Formes** : Cœur.
### Naissance (Événement)

View File

@@ -26,30 +26,50 @@ Propriété de `Zoo`.
| Réputation | 0 |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Prestige | 0 | 0-10000 | Sert de base au flux visiteurs (via attractivité ville → zoo). |
| Malus décès récent | 0 | 0-5000 | Décroît sur 24h ; pénalise flux visiteurs. |
| Bonus diversité | 0 | 0-2000 | Bonus si plusieurs espèces présentes. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Premier animal placé | 1 | >= | La réputation devient calculable (sinon 0). |
### Conditions de Disparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Zoo supprimé | true | Est | Score supprimé avec le zoo. |
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Soft reset / prestige | Bonus de départ | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Condition | Effet |
|---|---|
| Trop chaud / trop froid (global) | Réputation -10% temporaire si > X animaux en état critique |
### Impact Milieu (Biome)
N/A
| Biome | Effet |
|---|---|
| Enclos adaptés | + réputation via survie + satisfaction visiteurs |
### Impact Saisons
N/A
| Saison | Effet |
|---|---|
| Été | Réputation “visible” +5% (affluence) si incidents faibles |
| Hiver | Réputation “visible” -5% si gestion température mauvaise |
### Impact Heure / Jour-Nuit
N/A
| Période | Effet |
|---|---|
| Jour | Variation normale |
| Nuit | Pas de hausse via visiteurs (zoo fermé), seulement décroissance des malus |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
@@ -59,23 +79,33 @@ N/A
**Malus** : -50 pts par mort (décroissance sur 24h).
### Impact Nourriture
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Stock nourriture stable | +1% / jour | Aucun animal en faim critique |
### Impact Attractivité (Visiteurs/Animaux)
C'est la métrique de base de l'attractivité.
### Impact Valeur
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Réputation élevée | Prix de vente animaux +5% | si marché utilise réputation vendeur |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Domaine | Paramètre | Valeur | Unité | Effet |
|---|---|---:|---|---|
| Mise à jour score | Période | 60 | s | Recalcul périodique ou lazy update. |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Campagnes image | 10005000 | coins | Augmente temporairement la réputation visible |
### Trajet Visiteurs
N/A
| Mécanisme | Impact | Détail |
|---|---|---|
| Flux ville→zoo | Direct | Réputation est un facteur principal de flux |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
@@ -83,7 +113,10 @@ N/A
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Réputation visible + tooltips |
| 2 | 1000 | Boutique niv 2 | Affichage détaillé des composantes |
## 8. Logique et Interfaces
### Pseudo-code Impacts
@@ -92,7 +125,10 @@ score = sum(animal.rarity * 10) + (uniqueSpecies * 50) + buildingsValue - deathP
```
### Messages d'Infos / Alerte
N/A
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Réputation +{delta}" | hausse significative | 2 |
| Warn | "Réputation en baisse : trop de morts/incidents" | seuil franchi | 4 |
# Annexes UX/UI
@@ -115,11 +151,11 @@ N/A
**Événements** : `SCORE_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `level_up_jingle.mp3` (court), `ui_score_tick.mp3` (optionnel).
- **Sons** : `level_up_jingle.mp3`.
- **Graphiques** : Icône Couronne.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `icon_crown.png`, `reputation_star.png`.
- **Vidéos** : `crown_glint.webm` (0.8s non loop, optionnel).
- **Animations** : Brillance quand augmente.
- **Couleurs** : Or.
- **Textes** : "Niveau 5 (4500 pts)".

View File

@@ -25,17 +25,27 @@ Propriété de `Zoo`.
| Survie | 100% |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Survie globale | 100 | 0-100 | Conditionne reproduction, maladies, perception valeur animaux. |
| Risque maladie | 0% | 0-100% | Monte si survie < 60. |
| Malus mortalité | 0 | 0-100 | Monte si survie < 30, augmente probas décès. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Premier animal vivant | 1 | >= | Score calculable (sinon 100 par convention de vide). |
### Conditions de Disparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Zoo supprimé | true | Est | Score supprimé avec le zoo. |
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Soft reset | Bonus de départ (+10) | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
@@ -45,10 +55,15 @@ Moyenne des adéquations T°.
Moyenne des adéquations Biome.
### Impact Saisons
N/A
| Saison | Effet | Modificateur |
|---|---|---|
| Hiver | Températures plus dures | survie -5 si pas de régulation |
| Été | Canicule | survie -5 si pas dombre/eau |
### Impact Heure / Jour-Nuit
N/A
| Période | Effet | Modificateur |
|---|---|---|
| Nuit | Récupération | +1 survie/h si conditions OK |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
@@ -61,28 +76,47 @@ Seuil critique : < 20% (Risque épidémie).
Moyenne des Faims.
### Impact Attractivité (Visiteurs/Animaux)
N/A
| État | Effet | Condition |
|---|---|---|
| Survie > 90 | Visiteurs satisfaits | bonus attractivité local |
| Survie < 50 | Visiteurs inquiets | malus attractivité |
### Impact Valeur
N/A
| Facteur | Variation Prix | Condition |
|---|---:|---|
| Survie > 90 | +10% | animal en vente |
| Survie < 50 | -20% | animal en vente |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Domaine | Paramètre | Valeur | Unité | Effet |
|---|---|---:|---|---|
| Recalcul score | Période | 60 | s | Recalcul périodique ou lazy update. |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Soins vétérinaires | 50 | coins / animal | si état critique |
| Régulation T° | variable | coins / jour | selon `temperature.md` |
### Trajet Visiteurs
N/A
| Mécanisme | Effet | Détail |
|---|---|---|
| Évitement zones malades | détour | réduit densité autour animaux malades |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `SURVIVAL_DROP` | passage sous seuil | alerte | tant que < seuil |
| `DISEASE_OUTBREAK` | survie < 20 + RNG | maladie | 24h in-game |
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Monitoring basique |
| 2 | 2000 | centre recherche niv 2 | Détection précoce maladies |
## 8. Logique et Interfaces
### Pseudo-code Impacts
@@ -116,11 +150,11 @@ survivalScore = average(allAnimals.health)
**Événements** : `HEALTH_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_health_soft.mp3` (jingle discret), `ui_critical_pulse.mp3` (optionnel).
- **Sons** : `heartbeat.mp3` (si critique).
- **Graphiques** : Icône Cœur.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `icon_heart.png`, `icon_cross.png`.
- **Vidéos** : `heart_pulse.webm` (0.8s loop, optionnel).
- **Animations** : Battement (Pulsation).
- **Couleurs** : Vert -> Jaune -> Rouge.
- **Textes** : "98%".

View File

@@ -30,74 +30,122 @@ Un site est un lieu d'intérêt positionné sur la Carte du Monde.
```
### Caractéristiques Initiales
N/A
| Caractéristique | Valeur Initiale | Type | Description |
|---|---:|---|---|
| Visibilité | 100 | 0-100 | Probabilité dêtre visible/affichable selon fog-of-war et zoom. |
| Interactions activées | true | bool | Désactivable pour sites “décoratifs”. |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Popularité | 0 | 0-100 | Pour ville : influence flux ; pour zoo : reflète attractivité. |
| Danger | 0 | 0-100 | Pour labos/événements : risque dincident. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération procédurale ou création joueur.
### Conditions de Disparition
N/A
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Type “événement” | fin timer | >= | Site supprimé (si événement temporaire). |
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Monde | Découverte | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Condition | Effet |
|---|---|
| Tempête régionale | modifie les flux/visites | impact de contexte |
### Impact Milieu (Biome)
N/A
| Biome | Effet |
|---|---|
| Biome ville | type de visiteurs | modifie budget moyen |
### Impact Saisons
N/A
| Saison | Effet |
|---|---|
| Hiver | routes plus lentes | dist effective + |
### Impact Heure / Jour-Nuit
N/A
| Période | Effet |
|---|---|
| Nuit | lumières sites | rendu + |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Labo événement | boost génétique | si lab actif |
### Impact Mort
N/A
| Cause | Conséquence | Durée |
|---|---|---|
| Catastrophe sur site | fermeture | 24h |
### Impact Nourriture
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Ville agricole | stock nourriture + | économie |
### Impact Attractivité (Visiteurs/Animaux)
N/A
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| Zoo halo | + | visibilité monde |
### Impact Valeur
N/A
| Facteur | Variation | Condition |
|---|---|---|
| Emplacement premium | + | proche villes |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Domaine | Paramètre | Valeur | Unité | Notes |
|---|---|---:|---|---|
| Survol/tooltip | délai | 200 | ms | évite popups instantanés |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Taxe régionale | 1% | transaction | route commerciale |
### Trajet Visiteurs
N/A
| Trajet | Condition | Effet | Notes |
|---|---|---|---|
| Ville→Zoo | attraction | flux | cf. attractivité |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `SITE_HOVER` | survol | tooltip | tant que hover |
| `SITE_SELECTED` | clic | panneau détail | jusquà fermeture |
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Tooltips |
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
```text
onHoverSite(site):
showTooltip(site.name, site.type, site.keyMetric)
onClickSite(site):
openDetailPanel(site)
```
### Messages d'Infos / Alerte
N/A
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Site sélectionné." | clic | 2 |
| Warn | "Site indisponible." | fermé/lock | 4 |
# Annexes UX/UI
@@ -120,11 +168,11 @@ N/A
**Événements** : `HOVER_SITE`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_tooltip_soft.mp3` (jingle discret).
- **Sons** : `pop.mp3` léger.
- **Graphiques** : Fond noir semi-transparent.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `site_icon_zoo.png`, `site_icon_city.png`, `site_icon_lab.png`.
- **Vidéos** : `tooltip_fade.webm` (0.6s loop, optionnel).
- **Animations** : Fade in rapide.
- **Couleurs** : Blanc sur Noir.
- **Textes** : "Paris (1M hab.)".

View File

@@ -18,8 +18,10 @@
- **Optimisation** : Culling (ne pas rendre ce qui est hors écran).
### Infrastructure
- **Cache** : Redis (pour les sessions, les compteurs temps réel et les files d'attente de jobs).
- **Message Broker** : BullMQ (Redis) ou RabbitMQ pour les tâches asynchrones (morts, naissances, enchères).
- **Cache** : Interdit (aucun cache applicatif, aucune mémorisation). Les lectures doivent refléter létat courant calculé/stocké, sans couche de cache.
- **Queue / Jobs** : File de tâches sans cache.
- Option A : RabbitMQ (messages durables) pour les tâches asynchrones (morts, naissances, enchères).
- Option B : Jobs en base PostgreSQL (table `jobs` + workers) avec verrous transactionnels (SKIP LOCKED) pour éviter les doubles traitements.
---
@@ -44,9 +46,9 @@ CREATE TABLE animals (
zoo_id UUID REFERENCES zoos(id),
type VARCHAR(50),
birth_date TIMESTAMPTZ,
state JSONB, -- { health, hunger, stress, ... }
genetics JSONB, -- { color, rarity, parents... }
position JSONB -- { x, y }
state JSONB, -- { health, hunger, stress, happiness, lastFedAt, lastVisitedAt }
genetics JSONB, -- { color, rarity, parents, mutations, lineageId }
position JSONB -- { x, y, iso_x, iso_y, z_index }
);
```
@@ -73,7 +75,9 @@ Calculer l'état d'un zoo **uniquement quand c'est nécessaire** (lecture par le
### Exceptions (Workers)
Certains événements doivent arriver même si le joueur est hors ligne (ex: Enchères, Morts impactant le marché).
* Utiliser des **Cron Jobs** ou des **Delayed Jobs** (Redis) pour traiter ces événements spécifiques à leur heure d'échéance prévue.
* Utiliser des **Cron Jobs** ou des **Delayed Jobs** sans cache pour traiter ces événements à lheure déchéance prévue.
* Option A : messages planifiés via RabbitMQ (plugin de scheduling si utilisé).
* Option B : table PostgreSQL `jobs` (colonnes `run_at`, `locked_at`, `attempts`, `last_error`) + worker(s) avec `SELECT FOR UPDATE SKIP LOCKED`.
---
@@ -93,7 +97,7 @@ Certains événements doivent arriver même si le joueur est hors ligne (ex: Enc
### Système
- `POST /api/auth/login` : Authentification par clé.
- `GET /api/config` : Récupère les tables statiques (Animaux, Coûts, Saisons) pour le cache client.
- `GET /api/config` : Récupère les tables statiques (Animaux, Coûts, Saisons) pour initialiser le client, sans mécanisme de cache applicatif.
# Annexes UX/UI
@@ -112,19 +116,19 @@ Certains événements doivent arriver même si le joueur est hors ligne (ex: Enc
**Description UI** : Écran de chargement avec barre de progression ou animation (Animal qui marche).
**Emplacement** : Plein écran (Démarrage).
**Intégration** : Bloquant.
**Navigation** : N/A
**Navigation** : Aucune (écran dattente avant accès au jeu).
**Événements** : `APP_LOAD`.
#### Assets
- **Musiques** : Thème Principal.
- **Sons** : N/A
- **Sons** : `ui_loader_tick.mp3` (boucle courte et discrète), `ui_loaded_pop.mp3` (fin de chargement).
- **Graphiques** : Logo Jeu.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `loading_mascot.png` (mascotte), `loading_background.png` (fond).
- **Vidéos** : `loading_anim.webm` (animation courte, loop).
- **Animations** : Loader.
- **Couleurs** : Thème Jeu.
- **Textes** : "Calcul de la simulation...", "Rattrapage du temps...".
- **Formes** : N/A
- **Textes** : "Calcul de la simulation", "Rattrapage du temps".
- **Formes** : Cercle (spinner), barre (progress).
### Erreur Connexion (Feedback)
**Description UX** : Perte de connexion ou erreur API.
@@ -135,12 +139,12 @@ Certains événements doivent arriver même si le joueur est hors ligne (ex: Enc
**Événements** : `NETWORK_ERROR`.
#### Assets
- **Musiques** : N/A
- **Musiques** : Ducking du thème principal (-6 dB) pendant laffichage de lerreur.
- **Sons** : `error.mp3`.
- **Graphiques** : Icône Wifi barré.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `icon_wifi_off.png`, `modal_error_bg.png`.
- **Vidéos** : `network_error_glitch.webm` (optionnel, 0.8s loop).
- **Animations** : Secousse.
- **Couleurs** : Rouge.
- **Textes** : "Connexion perdue".
- **Formes** : N/A
- **Formes** : Rectangle arrondi (modal), toast (pill).

View File

@@ -38,7 +38,11 @@ Système Météo Global.
## 3. Impacts Environnementaux
### Impact Température
**Auto-référence** : La température influe sur... la température (inertie thermique).
| Paramètre | Valeur | Unité | Règle |
|---|---:|---|---|
| Inertie eau | 0.5 | facteur | Un changement global (saison/météo) affecte leau à 50% de lamplitude. |
| Inertie sol | 1.0 | facteur | Le sol suit lamplitude complète. |
| Lissage | 15 | min in-game | La variation sapplique progressivement sur la durée (évite “saut” visuel brutal). |
### Impact Milieu (Biome)
**Inertie** : L'eau change de T° moins vite que la terre (Tampon thermique).

View File

@@ -2,7 +2,7 @@
## Types de Ventes
- **Aux Enchères** : Vers d'autres joueurs (prix potentiellement élevé).
- **Libération (Vente rapide)** : Vente au "système" (prix bas fixe) pour faire de la place rapidement (si implémenté pour éviter la mort). *Note : Le cahier des charges privilégie le marché joueurs, la libération est une option de secours.*
- **Libération (Vente rapide)** : Vente au "système" (prix plancher fixe) pour libérer de la place rapidement (optionnelle selon design retenu). *Note : Le cahier des charges privilégie le marché joueurs ; la libération est un mode de vente alternatif.*
## Contraintes
- Un animal malade ou mourant ne peut pas être mis en vente.
@@ -12,7 +12,50 @@
## 1. Données et États
### Modèle de Données (JSON)
N/A
```json
{
"sale_id": "uuid",
"seller_zoo_id": "uuid",
"seller_player_id": "uuid | null (null si bot)",
"animal_id": "uuid",
"sale_type": "enum('auction_adult','auction_baby','release_system')",
"status": "enum('draft','in_transit','listed','pending_validation','completed','expired','cancelled')",
"created_at": "timestamp",
"updated_at": "timestamp",
"listing": {
"start_price": "integer",
"buy_now_price": "integer | null",
"currency": "enum('coins')",
"duration_seconds": "integer (3600|14400|86400)",
"end_at": "timestamp"
},
"bids": [
{
"bid_id": "uuid",
"bidder_zoo_id": "uuid",
"amount": "integer",
"created_at": "timestamp"
}
],
"validation": {
"accepted_bid_id": "uuid | null",
"pending_until": "timestamp | null (sablier 10 min)",
"finalized_at": "timestamp | null"
},
"transport": {
"truck_id": "uuid",
"from_site_id": "uuid",
"to_site_id": "uuid | null",
"climate_control": "boolean",
"insurance": "boolean",
"transport_started_at": "timestamp",
"transport_eta_at": "timestamp"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Total Vendu** : 0 animaux.
@@ -124,12 +167,12 @@ function sellAnimal(animal, price, mode):
**Événements** : `RELEASE_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_warning_soft.mp3` (jingle court à louverture de confirmation).
- **Sons** : `bird_fly_away.mp3` (bruit de nature positif).
- **Graphiques** : Icône Cage ouverte.
- **Images** : N/A
- **Vidéos** : N/A
- **Images** : `icon_release.png`, `modal_confirm.png`.
- **Vidéos** : `release_fade.webm` (1.2s non loop, optionnel).
- **Animations** : Animal s'estompe ou court hors de l'écran.
- **Couleurs** : Vert (Nature).
- **Textes** : "Libéré !".
- **Formes** : N/A
- **Formes** : Bouton danger (rouge) + modal arrondie.

View File

@@ -17,10 +17,17 @@ Identique à la vente de bébés, mais avec des tolérances plus grandes sur les
Identique à `vente_enchere_bebe.md`.
### Caractéristiques Initiales
N/A
| Caractéristique | Valeur | Notes |
|---|---|---|
| Durée Enchère | 4h - 24h | Les adultes tolèrent des durées plus longues que les bébés. |
| Délai Validation | 10 min | Identique au générique enchères (sablier). |
| Dégradation âge | Oui | Prix perçu diminue avec lâge (cf. `animal_generique.md`). |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Valeur perçue (âge) | 100 | 0-150 | Modifie la propension des bots à enchérir. |
| Résistance transport | 80 | 0-100 | Réduit les risques dincident pendant vente/transport. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
@@ -30,61 +37,114 @@ Action joueur.
Vente ou Expiration.
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Parents (si connus) | Arbre généalogique | 100% | Non |
| Vendeur | “Certificat dentretien” | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Plage Température | Effet sur l'entité | Bonus/Malus |
|---|---|---|
| < 0°C | Fatigue + | Risque incident +5% si pas de camion climatisé |
| 1525°C | Stable | 0 |
| > 35°C | Fatigue + | Risque incident +5% si pas de camion climatisé |
### Impact Milieu (Biome)
N/A
| Biome | Compatibilité | Bonus/Malus |
|---|---:|---|
| Marché (UI) | 100% | Aucun |
| Transport long | 90% | Légère fatigue (adultes résistent) |
### Impact Saisons
N/A
| Saison | Effet | Modificateur |
|---|---|---|
| Hiver | Demande espèces froides + | Bids +10% (espèces adaptées) |
| Été | Demande espèces chaudes + | Bids +10% (espèces adaptées) |
### Impact Heure / Jour-Nuit
N/A
| Période | Activité marché | Impact |
|---|---|---|
| 18h22h | Prime time | +10% bids |
| Nuit | Faible | -15% bids |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Adulte fertile vendu | Prix x2 | Si fertilité > seuil et pas en cooldown |
### Impact Mort
**Risque** : Si `status == expired` et non récupéré sous 24h -> Mort.
### Impact Nourriture
N/A
| Type Nourriture | Gain Santé | Coût | Préférence |
|---|---:|---:|---:|
| Rations transport | stable | inclus | 3 |
### Impact Attractivité (Visiteurs/Animaux)
N/A
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| Vente star (rare) | -10% attractivité zoo | Global (zoo vendeur) |
### Impact Valeur
N/A
| Facteur | Variation Prix | Condition |
|---|---:|---|
| Âge élevé | -20% | au-delà du seuil “senior” |
| Santé parfaite | +10% | survival élevé |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Paramètre | Valeur | Unité | Règle |
|---|---:|---|---|
| Fenêtre récupération invendu | 24 | h | sinon risque mort adulte (cf. spec) |
| Délai validation | 10 | min | après acceptation |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Taxe marché | 10% | du prix final | prélevée à finalisation |
| Assurance transport | 3% | du prix final | optionnel |
### Trajet Visiteurs
N/A
| Trajet | Condition | Effet | Notes |
|---|---|---|---|
| Consultation marché | ouverture UI | tri | pas de visiteurs physiques |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
| Event | Déclencheur | Effet | Durée |
|---|---|---|---|
| `AUCTION_CREATED_ADULT` | création enchère | listing visible | jusquà fin |
| `AUCTION_EXPIRED_ADULT` | end_time atteint | statut expired | jusquà récupération |
| `AUCTION_FINALIZED_ADULT` | validation finie | transfert | instant |
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Accès enchères adultes |
| 2 | 2000 | Réputation 300 | Taxe -1% |
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
```text
createAuctionAdult(animal, startPrice, duration):
assert animal.isAdult && animal.health > 50
moveToTransit(animal)
publishListing()
onExpire():
markExpired()
startReclaimTimer(24h)
```
### Messages d'Infos / Alerte
N/A
| Type | Message | Condition | Priorité |
|---|---|---|---:|
| Info | "Enchère créée." | listing publié | 2 |
| Warn | "Enchère expirée : récupérez lanimal." | status expired | 4 |
| Error | "Impossible de vendre : animal indisponible." | malade/mort proche | 5 |
# Annexes UX/UI
@@ -107,15 +167,15 @@ N/A
**Événements** : `CREATE_AUCTION_ADULT`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_market_open.mp3` (jingle court).
- **Sons** : `cash_register_open.mp3`.
- **Graphiques** : N/A
- **Graphiques** : Icône bourse + badge “adulte”.
- **Images** : Portrait Animal.
- **Vidéos** : N/A
- **Vidéos** : `auction_sheet_intro.webm` (0.8s non loop, optionnel).
- **Animations** : Animal disparaît de la grille (part en zone de vente).
- **Couleurs** : N/A
- **Couleurs** : Or/Gris (adulte), Ambre (pending validation).
- **Textes** : "Mise à prix".
- **Formes** : N/A
- **Formes** : Bottom sheet + cartes.
### Retour Invendu (Action)
**Description UX** : L'enchère est finie sans acheteur. Le joueur doit récupérer l'animal.
@@ -126,12 +186,12 @@ N/A
**Événements** : `RECLAIM_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_fail_soft.mp3` (jingle court).
- **Sons** : `sad_trombone.mp3` (échec).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Graphiques** : Icône retour (flèche).
- **Images** : `icon_reclaim.png`.
- **Vidéos** : `reclaim_return.webm` (1.2s non loop, optionnel).
- **Animations** : Retour visuel de l'animal.
- **Couleurs** : Gris (Désactivé).
- **Textes** : "Invendu".
- **Formes** : N/A
- **Formes** : Bouton primary “Récupérer”.

View File

@@ -43,7 +43,11 @@ Processus de vente spécifique pour les bébés animaux nés dans le zoo.
| Délai Validation | 10 min (fixe) |
### Scores Initiaux
N/A
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Visibilité Listing | 50 | 0-100 | Poids de tri côté marché. |
| Stress (vente) | 10 | 0-100 | Monte avec le temps ; au-delà de 70, accélère le risque de mort. |
| Confiance vendeur | 0 | -100 à +100 | Influence la participation des bots (anti-spam). |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
@@ -53,46 +57,79 @@ Action joueur.
Vente ou Expiration.
### Hérédité
N/A
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---:|---|
| Parents (réels) | Rareté/Couleur | cf. `reproduction.md` | Oui |
| Vendeur | “Certificat de soin” | 100% | Non |
## 3. Impacts Environnementaux
### Impact Température
N/A
| Plage Température | Effet sur l'entité | Bonus/Malus |
|---|---|---|
| < 5°C | Stress +2/min | Risque mort + (si durée > 10 min) |
| 20°C (Idéal) | Stress -1/min | Stabilise |
| > 30°C | Stress +2/min | Risque mort + (si durée > 10 min) |
### Impact Milieu (Biome)
N/A
| Biome / Contexte | Compatibilité | Bonus/Malus |
|---|---:|---|
| Marché (UI) | 100% | Aucun |
| Transport long | 80% | Fatigue + |
### Impact Saisons
N/A
| Saison | Effet | Modificateur |
|---|---|---|
| Printemps | Demande bébés + | Bids +10% |
| Été | Chaleur | Stress +10% |
| Automne | Neutre | 0% |
| Hiver | Froid | Stress +10% |
### Impact Heure / Jour-Nuit
N/A
| Période | Activité marché | Impact |
|---|---|---|
| 18h22h | Prime time | +15% bids |
| Nuit | Faible | -20% bids |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
| Facteur | Effet sur Taux | Condition |
|---|---|---|
| Bébé rare vendu | +10 réputation | Si `status` devient `sold` puis finalisé |
### Impact Mort
**Risque** : Si `status == expired` et non récupéré sous 1h -> Mort du bébé.
### Impact Nourriture
N/A
| Type Nourriture | Gain Santé | Coût | Préférence |
|---|---:|---:|---:|
| Lait / soin | Stabilise | inclus | 5 |
### Impact Attractivité (Visiteurs/Animaux)
N/A
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| Vente bébé rare conclue | +25 | Global |
| Bébé mort (invendu) | -50 | Global |
### Impact Valeur
**Dépréciation** : Aucune (c'est une enchère).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
| Paramètre | Valeur | Unité | Règle |
|---|---:|---|---|
| Délai validation | 10 | min | après acceptation |
| Fenêtre récupération invendu | 1 | h | sinon mort bébé |
### Dépenses (Boutiques/Visiteurs)
N/A
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Taxe marché | 10% | du prix final | prélevée à finalisation |
| Assurance transport | 5% | du prix final | optionnel |
### Trajet Visiteurs
N/A
| Trajet | Condition | Effet | Notes |
|---|---|---|---|
| Consultation acheteurs | ouverture marché | tri par visibilité | pas de visiteurs physiques |
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
@@ -102,11 +139,28 @@ N/A
## 7. Progression
### Tableau des Upgrades
N/A
| Niveau | Coût | Prérequis | Bonus Débloqué |
|---|---:|---|---|
| 1 | 0 | - | Accès enchères bébés |
| 2 | 1000 | Réputation 200 | Taxe -1% |
| 3 | 5000 | Réputation 1000 | Visibilité +10 |
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
```text
onAcceptBid(auction, bid):
auction.status = 'pending_validation'
auction.pending_until = now + 10min
onTick():
if auction.status == 'pending_validation' and now >= pending_until:
finalize(auction)
finalize(auction):
transferCoins(bidder, seller, amount - tax)
scheduleDelivery(truck, bidderZoo)
auction.status = 'sold'
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
@@ -135,12 +189,12 @@ N/A
**Événements** : `CREATE_AUCTION`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_market_open.mp3` (jingle court).
- **Sons** : `cash_register_open.mp3`.
- **Graphiques** : Icône Bourse/Pièce.
- **Images** : Portrait Bébé.
- **Vidéos** : N/A
- **Animations** : N/A
- **Vidéos** : `auction_sheet_intro.webm` (0.8s non loop, optionnel).
- **Animations** : Compteur “mise à prix” qui sincrémente, pulsation du bouton “Valider”.
- **Couleurs** : Or.
- **Textes** : "Prix de départ", "Durée".
- **Formes** : Champs de saisie.
@@ -154,12 +208,12 @@ N/A
**Événements** : `OPEN_MY_SALES`.
#### Assets
- **Musiques** : N/A
- **Musiques** : `ui_market_list.mp3` (jingle discret optionnel).
- **Sons** : `notification.mp3` (si offre reçue).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : N/A
- **Graphiques** : Icône cloche + badge compteur.
- **Images** : `icon_hourglass.png`, `icon_bid.png`.
- **Vidéos** : `bid_badge_pulse.webm` (0.6s loop, optionnel).
- **Animations** : Badge qui pulse sur nouvelle offre.
- **Couleurs** : Ambre (#F39C12) en attente validation, Vert (#2ECC71) vendu.
- **Textes** : "Meilleure offre : X".
- **Formes** : N/A
- **Formes** : Pills (badges), cartes liste.

View File

@@ -266,7 +266,7 @@ Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, E
#### Événements du Ville / Visiteur
| Event | Impact Affluence | Impact Budget |
|---|---|---|
| Festival Ville | -20% (Concurrence) | N/A |
| Festival Ville | -20% (Concurrence) | Dépense Moyenne -10% (les achats se déplacent en ville) |
| Bonus Économique | +10% | Dépense Moyenne +20% |
#### Événements du Visiteur
@@ -337,7 +337,7 @@ Style graphique inspiré de `IMG_20260303_170253.jpg` : Coloré, vivant, détail
| Élément | Type (Bouton/Panel) | Contenu | État par défaut |
|---|---|---|---|
| Bulle Pensée | Icône Flottante | Image (Burger, WC...) | Caché |
| Bulle Pensée | Icône Flottante | Image (Burger, WC, Eau, Appareil photo, Cadeau, Banc) | Caché |
| Jauge Satisfaction | Barre Progression | Vert -> Rouge | Visible (si sélectionné) |
#### Emplacement
@@ -390,7 +390,7 @@ Style graphique inspiré de `IMG_20260303_170253.jpg` : Coloré, vivant, détail
##### Vidéos
| Clip | Usage | Durée |
|---|---|---|
| N/A | N/A | N/A |
| `visitor_card_preview.webm` | Aperçu animé dans le panneau de détails dun visiteur sélectionné (HUD) | 1.5s (loop) |
##### Animations
| Nom | Cible | Durée | Type (CSS/JS) |

View File

@@ -51,7 +51,12 @@ Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
| Reproduction | 0 |
### Scores Initiaux
Voir ci-dessus.
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Attractivité | 0 | 0-100000 | Détermine le flux de visiteurs (via billeterie + attractivité ville→zoo). |
| Reproduction | 0 | 0-10000 | Modifie la chance de naissances et la qualité des bébés. |
| Réputation | 0 | 0-10000 | Modifie le rayonnement sur carte monde (ville→zoo). |
| Survie | 100 | 0-100 | Influence maladies, mortalité, et valeur des animaux. |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition