Files
builazoo/docs/specs/carte_generique.md
2026-03-05 04:01:29 +01:00

602 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Spécifications : Carte (Générique)
## Définition
Une carte est une grille de cases représentant un espace de jeu ou de navigation.
## Propriétés
- **Dimensions** : Largeur et hauteur définies en nombre de cases.
- **Biomes** : Les cases ont une couleur de fond représentant leur biome (milieu).
- **Quadrillage** : Les cases sont disposées en grille orthogonale.
- **Cohérence** : Les transitions de couleurs (milieux) et de températures doivent être douces entre les cases adjacentes.
## Types de cartes
- Carte du Zoo (Espace de gestion du joueur)
- Carte du Monde (Espace de navigation multijoueur)
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "enum ('zoo', 'world')",
"width": "integer",
"height": "integer",
"grid": [
[ { "case_ref": "case_id" } ]
],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Taille** : Définie à la création.
### Scores Initiaux
**Densité** : 0% occupée.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création à l'initialisation du jeu/compte.
### Conditions de Disparition
Suppression du compte.
### Hérédité
**Configuration** : La disposition des biomes peut être conservée ou régénérée.
## 3. Impacts Environnementaux
### Impact Température
**Globale** : La carte porte la météo globale qui affecte toutes les cases.
### Impact Milieu (Biome)
**Distribution** : La carte gère la répartition des biomes (Génération procédurale ou fixe).
### Impact Saisons
**Cycle** : La carte orchestre le changement de saison pour toutes les entités.
### Impact Heure / Jour-Nuit
**Cycle** : La carte gère l'horloge mondiale.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Population** : La carte suit le nombre total d'animaux pour les limites globales.
### Impact Mort
**Cimetière** : La carte peut garder une trace des morts (statistiques).
### Impact Nourriture
**Ressources** : La carte gère les stocks globaux si centralisés.
### Impact Attractivité (Visiteurs/Animaux)
**Score Global** : Somme des attractivités locales.
### Impact Valeur
**Valorisation** : Valeur totale du terrain.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Temps** : La carte gère le `deltaTime` global.
### Dépenses (Boutiques/Visiteurs)
**Économie** : La carte centralise les flux financiers (optionnel).
### Trajet Visiteurs
**Réseau** : La carte définit le graphe de navigation global.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Tick** : Mise à jour périodique de toutes les entités.
## 7. Progression
### Tableau des Upgrades
Voir `agrandissement_carte.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function updateMap(map):
foreach entity in map.entities:
entity.update()
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `MAP_LOADED` | Info | "Carte chargée avec succès." |
# 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)
### Navigation (Action)
**Description UX** : Le joueur explore la carte.
**Description UI** : Drag & Drop (Pan) pour se déplacer. Zoom In/Out (Molette/Pinch).
**Emplacement** : Vue Principale.
**Intégration** : Plein écran.
**Navigation** : Pan/Zoom.
**Événements** : `MAP_MOVE`, `MAP_ZOOM`.
#### Assets
- **Musiques** : Ambiance calme (Zoo) / Aventure (Monde).
- **Sons** : Vent léger.
- **Graphiques** : Grille (Grid lines) subtile.
- **Images** : Fond d'écran (Skybox).
- **Vidéos** : Nuages qui passent (Overlay).
- **Animations** : Inertie du mouvement.
- **Couleurs** : Fond neutre hors carte.
- **Textes** : Coordonnées (Debug).
- **Formes** : Rectangulaire.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Abstraction “carte” : structure de grille + règles de navigation + horloge, déclinée en carte zoo et carte monde. |
| Rôle | Offrir un contrat commun de coordonnées, rendu isométrique, événements de déplacement/zoom, et cycle temps (jour/nuit, saisons). |
| Portée | Base pour `carte_zoo.md` et `carte_monde.md`, et pour les types `case_*`. |
| Contrainte | Aucun cache/mémorisation obligatoire : la carte fournit des fonctions de calcul à la volée (variants, z_index, routes). |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Initialiser carte | création | type, seed | grid | dimensions fixées | Event `MAP_INIT` |
| Résoudre case | lookup | x,y | case | unicité coord | Event `MAP_CASE_RESOLVED` |
| Convertir coord → iso | rendu | x,y | iso_x/iso_y | formule iso stable | Event `MAP_COORD_CONVERTED` |
| Calculer z_index | rendu | x,y | int | priorité y puis x | Event `MAP_ZINDEX_COMPUTED` |
| Déclencher tick | loop | deltaTime | events | mise à jour entités | Event `MAP_TICK` |
| Déplacement caméra | input | pan/zoom | camera state | clamp | Event `MAP_MOVE` / `MAP_ZOOM` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Grille + boussole |
| Couleur dominante | Neutre |
| Variantes | `icon_map_generic.png`, `icon_compass.png` |
| États | normal, loading, locked |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Pan | Navigation | carte autorise pan | drag | caméra bouge | - |
| Zoom | Navigation | - | pinch/wheel | caméra zoom | - |
| Sélection case | Consultation | case interactive | clic | panneau | `CASE_LOCKED` |
## Personnage contextuel (événements & interaction)
Les cartes peuvent afficher un personnage contextuel quand un module de carte est actionné ou lorsquun événement impacte la navigation.
### Références
- **Carte du zoo** : avatar du joueur actif comme contexte principal (`avatar_joueur.md`), plus visiteurs/staff selon événements (`carte_zoo.md`).
- **Carte du monde** : maire pour les événements de ville (`maire.md`, `ville.md`), joueurs/bots pour les interactions sociales (`joueur.md`, `bot.md`), visiteurs comme flux (`visiteur.md`).
### Déclencheurs (génériques)
| Event / Action | Condition | Effet UI personnage |
|---|---|---|
| `MAP_LOADED` | carte prête | portrait/mascotte de contexte (selon type) |
| `MAP_MOVE` / `MAP_ZOOM` | navigation | feedback passif (pas de spam) |
| `CASE_LOCKED` | gating | message explicite (raison + action) |
### Skins & thèmes
Le personnage contextuel suit `theme.md`. Les portraits/mini-avatars peuvent utiliser les skins via `inventaire_skins.md` si la mécanique est activée.
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `id` | uuid_v4 | `uuid_v4` | DB | unique |
| `type` | enum | `zoo` | DB | `zoo/world` |
| `width` | int | 6 | DB | >0 |
| `height` | int | 5 | DB | >0 |
| `grid[x][y].case_ref` | uuid_v4 | `uuid_v4` | DB | référence |
| `time.day_phase` | enum | `day` | calcul | jour/nuit |
| `time.season` | enum | `spring` | calcul | saisons |
| `iso_x` | int | 0 | calcul | origine |
| `iso_y` | int | 0 | calcul | origine |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Densité occupée | 0 | % | init |
| DeltaTime | 1 | tick | logique |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Exploration | 0 | 0..100 | carte monde |
| Aménagement | 0 | 0..100 | carte zoo |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Création | init jeu | seed | carte | stable |
| Utilisation | session | input | camera | clamp |
| Destruction | suppression compte | - | supprimée | - |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Initialisation | true | est | carte créée |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Compte supprimé | true | est | carte supprimée |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Configuration seed | Oui | rejouable |
| Variants render | Non | recalcul |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet carte | Notes |
|---|---|---|
| Météo globale | mod cases | propagée |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet carte | Notes |
|---|---|---|
| Répartition | gen/procédural | cohérence |
#### Impact Saisons (tableau détaillé)
| Saison | Effet carte | Notes |
|---|---|---|
| Cycle | mod visuel | global |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet carte | Notes |
|---|---|---|
| Nuit | assombrissement | global |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Population globale | caps | simulation |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Traces | journal | option |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| Stocks | centralisation | option |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Score global | agrégation | monde | carte monde |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| - | neutre | base |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Terrain | + | cases |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| deltaTime | avance mission | tick |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| timers | progress | tick |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| timers | progress | tick |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| projets | durations | tick |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| refresh offres | 24h | tick |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| pathfinding | recalcul | obstacles |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Affichage UI | 1 | coins | lore |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Section dupliquée | 1 | coins | conservée |
#### Dépenses (Nurseries) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Ville | Zoo | attractivité | flux |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Entrée | Enclos | curiosité | route |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Enclos | Boutique | besoin | route |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Zoo | Sortie | fermeture | despawn |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `MAP_TICK` | loop | dt | update |
| `MAP_LOADED` | init | type | ready |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_MOVE` | input | camera |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_INIT` | create | grid |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_ZOOM` | input | camera |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_CASE_RESOLVED` | lookup | case |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_COORD_CONVERTED` | render | iso |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 100 | zoom + | map |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `updateMap` | map, dt | map | tick |
| `toIso` | x,y | iso | projection |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `MAP_LOADED` | Info | "Carte chargée." | init |
| `CASE_LOCKED` | Warning | "Zone verrouillée." | gating |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Explorer | comprendre espace | navigation | pan/zoom |
| Centrer | retrouver point | perte | bouton recentrer |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| HUD carte | boutons | visible |
| Tooltip | coord/site | hover |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Plein écran | centre | carte |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `carte_zoo.md` | usage | build |
| `carte_monde.md` | usage | navigation |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Pan | drag | move |
| Zoom | pinch | scale |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `MAP_MOVE` | drag | camera |
| `MAP_ZOOM` | pinch | camera |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `map_generic_loop.mp3` | carte | loop | neutre |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `hover_soft.mp3` | hover | bas |
| `ui_zoom.mp3` | zoom | bas |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `grid_lines.png` | overlay | subtil |
| `tooltip_bg.png` | tooltip | lisible |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `skybox.png` | fond |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `clouds_overlay.webm` | fond | loop |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| inertie pan | move | 0.2s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `map_bg` | #202020 | hors carte |
| `map_highlight` | #FFFFFF | hover |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `map.coords` | Coordonnées | Coordinates |
| `map.loaded` | Carte chargée | Map loaded |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Tooltip | rectangle arrondi | lisible |