# 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 lorsqu’un é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 |