Enrichissement exhaustif des specs : Vue Isométrique et Design

**Motivations:**
- Aligner toute la documentation technique avec la nouvelle direction artistique isométrique (Réf IMG_20260303_170253).
- Faciliter l'implémentation en ajoutant les contraintes techniques liées à la 2.5D (Z-index, Sprites 4 directions).

**Root causes:**
- Besoin de cohérence visuelle et technique sur l'ensemble du projet.

**Correctifs:**
- N/A

**Evolutions:**
- Ajout systématique de la section "Direction Artistique & Vue" dans `Annexes UX/UI` de tous les fichiers.
- Enrichissement des modèles JSON avec coordonnées isométriques (`iso_x`, `iso_y`, `z_index`).
- Précision des interactions (clic, survol) adaptées à la grille losange.
- Conservation stricte de la structure existante (aucun titre supprimé).

**Pages affectées:**
- docs/specs/*
This commit is contained in:
2026-03-05 02:10:32 +01:00
parent 1d3352455e
commit e92c1355d0
74 changed files with 1519 additions and 550 deletions

View File

@@ -25,8 +25,15 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
"position": { "x": "int", "y": "int" },
"stats": {
"total_entries": "integer",
"daily_revenue": "integer"
}
"daily_revenue": "integer",
"current_queue_length": "integer"
},
"entry_log": [
{ "timestamp": "...", "visitor_count": 5, "revenue": 50 }
],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -36,71 +43,6 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
| Prix Ticket | 10 pièces |
| Capacité Max | 20 visiteurs |
### Scores Initiaux
**File d'attente** : 0 personnes.
**Revenus cumulés** : 0.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage (Unique).
### Conditions de Disparition
Indestructible.
### Hérédité
**Renommée** : Un vieux zoo (reset) garde 10% de son flux initial grâce à sa réputation passée.
## 3. Impacts Environnementaux
### Impact Température
**Pluie** : Vente automatique de parapluies à l'entrée (+5 pièces/visiteur).
**Canicule** : Distribution d'éventails (Coût 1 pièce, mais +Satisfaction).
### Impact Milieu (Biome)
**Décoration** : Si le biome de l'entrée correspond au biome majoritaire du zoo, +5% Attractivité (Cohérence thématique).
### Impact Saisons
| Saison | Modificateur Prix Ticket |
| :--- | :--- |
| Été | +20% (Haute saison) |
| Hiver | -10% (Basse saison, promo "Hiver Sauvage") |
| Automne | -5% (Rentrée) |
| Printemps | +10% (Vacances Pâques) |
### Impact Heure / Jour-Nuit
**Ouverture** : 08h00 - 20h00. Fermé la nuit (sauf événements "Nocturne" débloqués au Niv 5).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Mascotte** : Si un bébé rare est né < 24h, affiche "Venez voir le bébé !" -> +10% Ventes Tickets.
### Impact Mort
**Scandale** : Si une mort est visible depuis l'entrée, -50% entrées pendant 24h.
### Impact Nourriture
**Odeur Snack** : Si un stand de nourriture est proche (< 5 cases), +5% faim des visiteurs dès l'entrée (Mise en appétit).
### Impact Attractivité (Visiteurs/Animaux)
Point d'entrée unique. L'attractivité globale du zoo détermine le flux qui se présente à la billeterie.
### Impact Valeur
**Valeur Bâtiment** : 50% du coût de construction/upgrade récupérable si destruction (impossible ici, mais pour info comptable).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Flux Entrée** : 1 visiteur / seconde max (Niv 1) -> 5 visiteurs / seconde (Niv 7 - Portiques auto).
### Dépenses (Boutiques/Visiteurs)
Revenu principal (Ticket). Pas de dépense sauf maintenance (10/jour).
### Trajet Visiteurs
Point de départ (Spawn) et d'arrivée (Despawn). Les visiteurs mécontents courent vers la sortie.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Entrée** : Gain pièces.
* **Refoulement** : Si Capacité Max atteinte.
* **VIP** : Arrivée d'un bus de touristes (Flux x2 pendant 1h).
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction |
@@ -115,19 +57,27 @@ Point de départ (Spawn) et d'arrivée (Despawn). Les visiteurs mécontents cour
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function processEntry(zoo):
potentialVisitors = calculateAttractionFlow(zoo)
if zoo.currentVisitors >= zoo.billeterie.capacity:
emitEvent("ZOO_FULL")
return
```python
def process_entry(zoo):
potential_visitors = calculate_attraction_flow(zoo)
actualVisitors = min(potentialVisitors, zoo.billeterie.capacity - zoo.currentVisitors)
for i in 0..actualVisitors:
spawnVisitor()
player.addCoins(zoo.billeterie.ticketPrice)
# Gestion de la file d'attente
zoo.billeterie.current_queue_length += potential_visitors
# Traitement des entrées (limité par la vitesse du guichet)
entries_per_tick = get_entry_speed(zoo.billeterie.level)
actual_entries = min(zoo.billeterie.current_queue_length, entries_per_tick)
# Vérification capacité zoo
if zoo.current_visitors + actual_entries > zoo.billeterie.capacity:
actual_entries = zoo.billeterie.capacity - zoo.current_visitors
emit_event("ZOO_FULL")
zoo.billeterie.current_queue_length -= actual_entries
for _ in range(actual_entries):
spawn_visitor()
player.add_coins(zoo.billeterie.ticket_price)
```
### Messages d'Infos / Alerte
@@ -135,16 +85,26 @@ function processEntry(zoo):
| :--- | :--- | :--- |
| `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." |
| `VIP_BUS` | Info | "Un bus de touristes arrive !" |
| `QUEUE_LONG` | Warning | "La file d'attente est trop longue, des visiteurs partent !" |
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
* **Sprites** : 4 directions.
* **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## 1. Expérience Utilisateur (UX)
### Consultation
**Description UX** : Le joueur clique sur la billeterie pour voir ses statistiques et son niveau.
**Description UI** : **Bottom Sheet** ou Panneau Latéral affichant le niveau actuel, la capacité, le prix du ticket et les revenus du jour.
**Emplacement** : Case Billeterie sur la grille du zoo.
**Intégration** : Bâtiment fixe (ne peut pas être déplacé ou supprimé).
**Navigation** : Clic -> Ouverture Panneau -> Fermeture (Croix ou clic extérieur).
**Intégration** : Bâtiment fixe.
**Navigation** : Clic -> Ouverture Panneau -> Fermeture.
**Événements** : `CLICK_BILLETERIE`.
#### Assets
@@ -158,40 +118,6 @@ function processEntry(zoo):
- **Textes** : "Billeterie", "Niveau X", "Revenus : Y".
- **Formes** : Carré (case).
### Amélioration (Upgrade)
**Description UX** : Le joueur décide d'améliorer la billeterie pour augmenter la capacité et le prix du ticket.
**Description UI** : Bouton "Améliorer" dans le panneau de consultation, avec coût et prévisualisation des gains.
**Emplacement** : Panneau de consultation.
**Intégration** : Action immédiate si fonds suffisants.
**Navigation** : Clic "Améliorer" -> Confirmation (optionnelle) -> Mise à jour UI.
**Événements** : `UPGRADE_BILLETERIE`.
#### Assets
- **Musiques** : Fanfare courte "Level Up".
- **Sons** : `upgrade_success.mp3` (caisse enregistreuse).
- **Graphiques** : Icône flèche vers le haut.
- **Images** : Confettis (Sprite).
- **Vidéos** : Effet de lumière "Rayon divin".
- **Animations** : Particules de succès (confettis/étoiles) autour du bâtiment.
- **Couleurs** : Bouton Vert (si achetable), Gris (si fonds insuffisants).
- **Textes** : "Améliorer (X pièces)".
- **Formes** : Bouton rectangulaire arrondi.
### Flux Visiteurs (Passif)
**Description UX** : Le joueur observe les visiteurs entrer dans le zoo.
**Description UI** : Petits sprites de visiteurs apparaissant à la porte et se dispersant.
**Emplacement** : Devant la billeterie.
**Intégration** : Animation continue pendant les heures d'ouverture.
**Navigation** : Automatique (Flux continu).
**Événements** : `VISITOR_SPAWN`.
#### Assets
- **Musiques** : Bruit de foule (loop).
- **Sons** : `visitor_entry.mp3` (bruit de foule léger, pas à chaque spawn).
- **Graphiques** : Sprites visiteurs variés.
- **Images** : Silhouettes de foule en arrière-plan.
- **Vidéos** : Effet de foule floue en mouvement.
- **Animations** : Marche (4 directions).
- **Couleurs** : Variées (vêtements).
- **Textes** : Bulles de discussion aléatoires.
- **Formes** : Points mouvants (sur la minimap).
### Vue Isométrique
- **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet.
- **Portiques** : Animation d'ouverture/fermeture des barrières.