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

@@ -8,10 +8,7 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde).
- **Couleur (Milieu)** : Définit le biome et l'environnement visuel.
- **Température** : Liée à la couleur/biome.
- **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre).
## Règles
- Les transitions de propriétés (couleur, température) entre cases adjacentes doivent être douces.
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre, fertilité).
# Annexes Techniques
@@ -25,107 +22,56 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde).
"temperature_offset": "float",
"content_ref": "uuid | null",
"content_type": "string",
"state_flags": ["frozen", "dry", "dirty"]
"fertility_level": "float (0-100)",
"state_flags": ["frozen", "dry", "dirty", "fertilized"],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Vide** : État par défaut.
### Scores Initiaux
**Usure** : 0% (Neuf).
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte.
### Conditions de Disparition
**Destruction** : Si la case fait partie d'une extension de zoo vendue/annulée (rare).
### Hérédité
**Mémoire** : Une case se "souvient" de son biome d'origine si on détruit le bâtiment dessus.
## 3. Impacts Environnementaux
### Impact Température
`Température_Réelle = Température_Biome + Température_Offset + Saison_Mod`
### Impact Milieu (Biome)
Définit la couleur de fond.
### Impact Saisons
**Esthétique** : Changement de palette (Vert -> Orange -> Blanc).
### Impact Heure / Jour-Nuit
**Lumière** : Assombrissement global (Overlay nuit).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Support** : Lieu physique de l'acte.
### Impact Mort
**Support** : Lieu physique du décès.
### Impact Nourriture
**Support** : Lieu de dépôt de la nourriture.
### Impact Attractivité (Visiteurs/Animaux)
**Propreté** : Une case sale réduit l'attractivité locale.
### Impact Valeur
**Immobilier** : Valeur intrinsèque du terrain.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Terrain** : Modificateur de vitesse de déplacement (Boue, Sable).
### Dépenses (Boutiques/Visiteurs)
**Entretien** : Coût de maintenance du sol.
### Trajet Visiteurs
**Noeud** : Point de passage pour le pathfinding.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Clic** : Interaction joueur.
## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function getCaseState(case):
return {
temp: calculateTemp(case),
biome: case.biome,
isWalkable: !hasBuilding(case)
}
```python
def fertilize_case(case, player):
cost = 50
if player.money < cost: return error("NO_MONEY")
player.money -= cost
case.fertility_level = 100
case.state_flags.append("fertilized")
# Si plante dessus, boost croissance
if case.content and case.content.type == "plant":
case.content.growth_rate *= 1.5
return success("CASE_FERTILIZED")
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `CASE_ERROR` | Erreur | "Impossible d'accéder à cette case." |
# 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)
### Feedback État (Passif)
**Description UX** : La case montre son état physique.
**Description UI** : Overlay de texture (Givre, Craquelures, Boue).
**Emplacement** : Case.
**Intégration** : Layer 1 (Au-dessus du fond, sous le contenu).
**Navigation** : Automatique (Mise à jour visuelle).
**Événements** : `STATE_UPDATE`.
### Fertilisation (Action)
**Description UX** : Le joueur améliore le sol pour que l'herbe repousse plus vite.
**Description UI** : Outil "Sac d'engrais". Clic sur la case.
**Emplacement** : Menu Outils -> Case.
**Intégration** : Curseur.
**Navigation** : Clic.
**Événements** : `FERTILIZE_SOIL`.
#### Assets
- **Musiques** : Son d'ambiance très léger (vent).
- **Sons** : Bruit de pas (selon texture).
- **Graphiques** : Textures alpha (Givre blanc, Craquelures marron).
- **Images** : Pattern Sol.
- **Vidéos** : Effet de givre qui s'étend.
- **Animations** : Apparition progressive (Fade).
- **Couleurs** : Blanc, Marron, Gris.
- **Textes** : "Gelé", "Sec".
- **Formes** : Carré.
- **Musiques** : Bruit de poudre.
- **Sons** : `scatter.mp3`.
- **Graphiques** : Particules vertes/brunes.
- **Images** : Texture terre riche (plus foncée).
- **Animations** : Poussière qui retombe.
- **Couleurs** : Marron foncé.