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

23 KiB
Raw Blame History

Spécifications : Carte du Zoo

Définition

La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux.

Structure

  • Vue : Isométrique (2.5D).
  • Affichage : Plein écran sous la barre du haut, dézoom possible.
  • Grille : Composée de cases individuelles.
  • Biomes : Divisée en tiers de largeur :
    • Gauche : Prairie
    • Milieu : Océan
    • Droite : Montagne
  • Dégradés : Couleurs et températures varient doucement au sein des biomes.

Contenu Initial (Lancement)

  • 1 Case Agrandissement du zoo (+1 case, payant)
  • 1 Case Recherche (Coin haut gauche)
  • 1 Case Billeterie (Coin haut gauche)
  • 1 Case Nurserie (Coin haut gauche)
  • 1 Case Accueil nouveaux animaux (Coin haut gauche)
  • 1 Case Nourriture générale (Coin haut gauche)
  • 1 Case Camion (Coin haut gauche)
  • 24 Cases de terrain (3 couleurs différentes réparties selon les biomes)

Mécaniques

  • Placement : Le joueur peut placer des œufs, des animaux et des bâtiments sur les cases vides.
  • Déplacement : Glisser-déposer pour réorganiser.
  • Visiteurs : Les visiteurs se déplacent sur la grille.
  • Feedbacks : L'état du terrain (herbe jaunie, givre) reflète l'adéquation avec les animaux.

Annexes Techniques

1. Données et États

Modèle de Données (JSON)

{
  "id": "uuid",
  "owner_id": "uuid",
  "width": "integer (init 5)",
  "height": "integer (init 6)",
  "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"
      }
    }
  ]
}

Caractéristiques Initiales

Caractéristique Valeur Initiale
Taille 30 cases (5x6 approx)
Biomes 3 (Tiers)

Scores Initiaux

Score Aménagement : 0/100 (Utilisation de l'espace).

2. Cycles de Vie et Apparition

Conditions d'Apparition

Création du compte joueur.

Conditions de Disparition

Reset Joueur : Suppression du compte ou Faillite totale.

Hérédité

Fondations : Les extensions de terrain achetées sont conservées en cas de "Soft Reset" (Prestige).

3. Impacts Environnementaux

Impact Température

Micro-climats : Les cases adjacentes à l'Océan sont plus fraîches (-2°C). Celles en Montagne sont plus froides (-5°C).

Impact Milieu (Biome)

Bonus Synergie : Placer 4 cases de même biome en carré crée un "Super Biome" (+10% efficacité).

Impact Saisons

Décor : Les arbres (décoration) changent de couleur (Vert -> Orange -> Blanc -> Bourgeons).

Impact Heure / Jour-Nuit

Lumières : Les lampadaires et bâtiments s'allument la nuit (Ambiance).

4. Impacts Biologiques et Sociaux

Impact Reproduction

Intimité : Les buissons (décoration) placés autour d'un enclos augmentent la fertilité (+5%).

Impact Mort

Compost : Un animal mort fertilise le sol. L'herbe devient plus verte sur cette case après disparition du corps.

Impact Nourriture

Pousse : L'herbe (nourriture gratuite) repousse lentement sur les cases Prairie vides.

Impact Attractivité (Visiteurs/Animaux)

Beauté : +1 Attractivité par élément de décoration (Arbre, Banc, Fontaine).

Impact Valeur

Foncier : Chaque case achetée augmente la valeur théorique du zoo.

5. Impacts Logistiques et Économiques

Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)

Chemins : Augmentent la vitesse de déplacement des visiteurs (+50%).

Dépenses (Boutiques/Visiteurs)

Entretien Espaces Verts : Coût hebdomadaire pour garder le zoo propre (1 pièce/case).

Trajet Visiteurs

Support du pathfinding (A* sur la grille). Les visiteurs évitent les obstacles (Rochers, Eau profonde).

6. Événements

Événements du Jeu / Carte / Zoo / Ville / Visiteur

  • Agrandissement : Ajout d'une colonne/ligne ou case adjacente.
  • Catastrophe : Inondation (Océan déborde) ou Éboulement (Montagne).

7. Progression

Tableau des Upgrades

Voir achat_upgrade_case_zoo.md.

8. Logique et Interfaces

Pseudo-code Impacts

function initZooMap():
  width = 6
  height = 5
  for x in 0..width:
    for y in 0..height:
      biome = getBiomeByColumn(x, width)
      createCase(x, y, biome)

Messages d'Infos / Alerte

ID Niveau Message
MAP_EXPAND Succès "Le zoo s'agrandit ! Nouvelles terres disponibles."

Annexes UX/UI

0. Direction Artistique & Vue

  • 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).
  • Profondeur : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
  • Style Visuel : Inspiré de IMG_20260303_170253.jpg.
    • Coloré, vivant, détails foisonnants.
    • Aspect "dessiné à la main" ou "cartoon soigné".
    • Couleurs vives et contours nets.

1. Expérience Utilisateur (UX)

Interaction Grille (Action)

Description UX : Le joueur clique sur une case pour voir son contenu ou construire. Description UI : Surbrillance de la case au survol. Clic ouvre un Panneau Latéral (Bottom Sheet) non bloquant (Info/Construire). Emplacement : Grille. Intégration : Curseur. Navigation : Clic -> Menu. Événements : CLICK_CASE.

Assets

  • Musiques : Son "Pop" discret.
  • Sons : click_tile.mp3.
  • Graphiques : Cadre de sélection blanc/brillant.
  • Vidéos : Effet de "Pop" au clic.
  • Animations : Pulsation du cadre.
  • Couleurs : Blanc.
  • Textes : Nom de l'objet sélectionné.
  • Formes : Carré.

Mode Construction (Action)

Description UX : Le joueur place un bâtiment ou modifie le terrain. Description UI : Grille visible. Cases valides en vert, invalides en rouge. Mode Peinture : Le joueur peut glisser son doigt (Drag) pour construire/modifier plusieurs cases d'affilée (ex: peindre un biome ou poser une route). Alternative Accessibilité : Tap to Select (Bâtiment) -> Tap to Place (Case) pour éviter le Drag & Drop. Emplacement : Grille. Intégration : Overlay. Navigation : Drag -> Drop. Événements : ENTER_BUILD_MODE.

Assets

  • Musiques : Musique "Mode Édition" (calme, boucle).
  • Sons : grid_snap.mp3.
  • Graphiques : Grille semi-transparente.
  • Vidéos : Effet de grille holographique.
  • Animations : Snap to grid.
  • Couleurs : Vert/Rouge (Alpha 0.5).
  • Textes : "Placer ici".
  • Formes : Carrés.

Définition

Champ Valeur
Concept “Carte du zoo” : grille isométrique principale de gestion (construction, placement animaux/bâtiments, chemins, déplacements visiteurs).
Rôle Centraliser lédition (build/paint), le rendu isométrique (tri z-index, occlusion), et la simulation locale (pathfinding, signaux terrain).
Portée Une map par zoo (owner_id), composée de cases[] et dentités rendues (bâtiments, animaux, visiteurs, décorations).
Contrainte Pas de cache/mémorisation : états dérivés (z_index, variants auto-tiling, heatmap) calculés à la volée ; aucune interaction silencieuse (placement invalide => erreur + message).

Fonctions (tableau détaillé)

Fonction Déclencheur Entrées Sorties Règles Observabilité
Rendre grille iso frame render cases visibles draw list tri par z_index + occlusion Event ZOO_MAP_RENDERED
Sélectionner une case clic/tap coord panneau contexte contenu dépend occupancy Event CLICK_CASE
Entrer mode build bouton UI type item overlay indique cases valides Event ENTER_BUILD_MODE
Placer entité drop/tap place entity, coord occupancy update invariants case/biome/enclos Event PLACE_ENTITY
Paint multi-case drag brush, path batch placements pas de “continue” silencieux : stop sur case invalide + message Event PAINT_APPLIED
Auto-tiling terrain/chemins placement voisins variant keys recalcul local voisinage Event AUTOTILE_UPDATED
Calculer pathfinding visiteurs besoin/objectif graph route A* à la volée, coûts par tuile Event VISITOR_ROUTE_COMPUTED
Mettre à jour signaux terrain tick lazy env flags givre/jaunissement selon compatibilité Event TERRAIN_SIGNAL_UPDATED
Gérer zoom input zoom level camera scale clamp + snap Event ZOO_MAP_ZOOM

Icone de base

Élément Spécification
Représentation Icône carte pliée / grille losange
Couleur dominante Vert (prairie), bleu (océan), gris (montagne)
Variantes icon_zoo_map.png, icon_grid_iso.png
États normal, build_mode, placement_invalid

Interactions (tableau détaillé)

Interaction Type Préconditions Étapes UI Résultat Erreurs / Messages
Clic case Consultation - clic panneau -
Construire bâtiment Action item choisi build → place entité posée CELL_OCCUPIED, PLACEMENT_INVALID
Placer animal Action animal prêt drag → drop animal enclos BIOME_INCOMPATIBLE
Déplacer (réaménager) Action feature active drag entité relocalisation MOVE_BLOCKED
Zoom Navigation - pinch/wheel vue ajustée -

Personnages contextuels (événements & interaction)

La carte du zoo est un module transversal : plusieurs personnages peuvent servir de contexte selon lévénement.

Personnage principal

  • Joueur actif (avatar) : voir avatar_joueur.md. Visible en HUD et utilisé comme personnage contextuel des actions de construction/gestion.

Personnages secondaires (selon événement)

  • Visiteurs homme/femme : voir visiteur.md (flux, pathfinding, congestion).
  • Staff : nourisseur.md, soigneur.md, agent_securite.md, personnel_accueil.md, nurse.md (déplacements et actions visibles sur la carte).

Déclencheurs (exemples)

Event / Action Condition Personnage Effet UI
CLICK_CASE clic case avatar panneau contexte + action principale
ENTER_BUILD_MODE build activé avatar rappel des invariants (cases valides)
PLACEMENT_INVALID / CELL_OCCUPIED placement refusé avatar message explicite + surbrillance cause
VISITOR_ROUTE_COMPUTED recalcul route visiteur bulle info si congestion/obstacle
DELIVERY_COMPLETE arrivée camion accueil/nurse bulle livraison + deep-link module

Skins & thèmes

Rendu des personnages : theme.md + équipements inventaire_skins.md (avatar + uniformes + variantes visiteurs si activées).

Annexes Techniques

1. Données et États (tableau détaillé)

Donnée / État Type Exemple Source Contraintes
id uuid_v4 uuid_v4 DB -
owner_id uuid_v4 uuid_v4 DB -
width int 5 DB init
height int 6 DB init
cases[].id uuid_v4 uuid_v4 DB unique
cases[].grid.x int 2 DB 0..width-1
cases[].grid.y int 4 DB 0..height-1
cases[].iso.iso_x int 120 calcul rendu
cases[].iso.iso_y int 88 calcul rendu
cases[].z_index int 12088 calcul tri
cases[].biome enum prairie DB tiers
cases[].terrain.ground_type enum herbe DB -
cases[].terrain.path_type enum gravier DB auto-tiling
cases[].occupancy.type enum building DB un principal
cases[].occupancy.entity_id uuid_v4 | null uuid_v4 DB null si vide
cases[].render.tile_variant string path_gravel_T calcul key
cases[].render.occluder boolean true config -
cases[].render.click_hitbox enum base_sprite config accessibilité clic
timestamps.updated_at timestamp - DB UTC

Caractéristiques Initiales (tableau détaillé)

Caractéristique Valeur initiale Unité Notes
Taille 30 cases ~5x6
Biomes 3 count tiers
Zoom min/max 0.7 / 1.6 scale clamp
Coût marche herbe 1.2 coef pathfinding

Scores Initiaux (tableau détaillé)

Score Valeur initiale Plage Impact
Score aménagement 0 0..100 utilisation espace
Propreté globale 100 0..100 satisfaction

2. Cycles de Vie et Apparition (tableau détaillé)

Phase Déclencheur Entrées Sorties Invariants
Création compte seed cases init contenu initial
Expansion achat case coord width/height adjacency
Réaménagement action entité nouvelle position pas de collision
Catastrophes event saison flags case observable

Conditions d'Apparition (tableau détaillé)

Condition Seuil Opérateur Résultat
Compte joueur true est map créée

Conditions de Disparition (tableau détaillé)

Condition Seuil Opérateur Résultat
Suppression compte true est map supprimée

Hérédité (tableau détaillé)

Élément Hérité Règle
Extensions achetées Oui conservées en prestige (soft reset)
Variants render Non recalcul à la volée

3. Impacts Environnementaux

Impact Température (tableau détaillé)

Condition Effet Notes
Proche océan -2°C micro-climat
Montagne -5°C micro-climat

Impact Milieu (Biome) (tableau détaillé)

Biome Effet Notes
Prairie herbe repousse nourriture passive
Océan humidité + froid adjacent
Montagne givre + froid

Impact Saisons (tableau détaillé)

Saison Effet Notes
Hiver neige/givre décor + path cost
Automne teintes orange visuel

Impact Heure / Jour-Nuit (tableau détaillé)

Période Effet Notes
Nuit lumières lampadaires/bâtiments

4. Impacts Biologiques et Sociaux

Impact Reproduction (tableau détaillé)

Facteur Effet sur taux Condition
Buissons “intimité” +5% autour enclos

Impact Mort (tableau détaillé)

Cas Effet Condition
Animal mort sur case fertilité sol + case verdit après TTL

Impact Nourriture (tableau détaillé)

Ressource Effet Condition
Herbe prairie vide repousse tick lent

Impact Attractivité(Visiteurs (tableau détaillé)

Action/État Gain Rayon Notes
Décoration +1 3 cases beauté

Impact Attractivité Animaux) (tableau détaillé)

Action/État Effet animaux Condition
Foule proche stress + densité élevée

Impact Valeur (tableau détaillé)

Facteur Variation Condition
Case achetée + foncier

5. Impacts Logistiques et Économiques

Vitesse (Camion) (tableau détaillé)

Paramètre Effet Condition
Accès camion chemin connecté case camion

Vitesse (Nurserie) (tableau détaillé)

Paramètre Effet Condition
Overlay placement valid/invalid mode sortie

Vitesse (Accueil) (tableau détaillé)

Paramètre Effet Condition
Mode placement overlay READY

Vitesse (Recherche) (tableau détaillé)

Paramètre Effet Condition
- - -

Vitesse (Labo) (tableau détaillé)

Paramètre Effet Condition
- - -

Vitesse (Visite) (tableau détaillé)

Paramètre Effet Condition
Chemins +50% vitesse path tiles

Dépenses (Billeterie) (tableau détaillé)

Poste Coût Unité Condition
Entretien espaces verts 1 coins/case/semaine propreté

Dépenses (Boutiques) (tableau détaillé)

Poste Coût Unité Condition
Maintenance routes 1 coins/tuile/semaine option

Dépenses (Visiteurs) (tableau détaillé)

Poste Coût Unité Condition
Saleté temps staff min déchets

Dépenses (Employés) (tableau détaillé)

Poste Coût Unité Condition
Soigneur déplacement temps min chemins

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 visuel couplé

Dépenses (Nourriture) (tableau détaillé)

Poste Coût Unité Condition
Stock global variable coins achats

Dépenses (Acceuil des animaux) (tableau détaillé)

Poste Coût Unité Condition
Quarantaine variable coins incidents

Dépenses (Camion) (tableau détaillé)

Poste Coût Unité Condition
Carburant variable coins distance

Trajet Visiteurs

Trajet Visiteurs vers/depuis la ville (tableau détaillé)
Source Destination Déclencheur Effet
Billeterie Ville sortie despawn
Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
Source Destination Déclencheur Effet
Billeterie Enclos plan visite route
Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
Source Destination Déclencheur Effet
Enclos Boutique besoin détour
Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
Source Destination Déclencheur Effet
Enclos Billeterie fin visite sortie

6. Événements

Événements du Jeu (tableau détaillé)

Event Déclencheur Payload Effet
MAP_EXPAND achat coord size +
AUTOTILE_UPDATED terrain coord variants

Événements du Carte (tableau détaillé)

Event Déclencheur Effet
ZOO_MAP_ZOOM input camera

Événements du Zoo (tableau détaillé)

Event Déclencheur Effet
PLACE_ENTITY placement occupancy

Événements du Ville / Visiteur (tableau détaillé)

Event Déclencheur Effet
VISITOR_ROUTE_COMPUTED besoin route

Événements du Visiteur (tableau détaillé)

Event Déclencheur Effet
VISITOR_REROUTE obstacle route

Événements du Joueur (tableau détaillé)

Event Déclencheur Effet
ENTER_BUILD_MODE UI overlay

7. Progression

Tableau des Upgrades (tableau détaillé)

Niveau Coût Effet Débloque
1 100 +1 case extension

8. Logique et Interfaces

Pseudo-code Impacts (tableau détaillé)

Fonction Entrées Sorties Notes
getBiomeByColumn x, width biome tiers
computeZIndex x,y int tri iso
isPlacementValid entity, coord bool invariants

Messages d'Infos / Alerte (tableau détaillé)

ID Niveau Message Condition
MAP_EXPAND Info "Le zoo s'agrandit." achat
PLACEMENT_INVALID Warning "Placement invalide." validation
CELL_OCCUPIED Warning "Case occupée." collision

Annexes UX/UI

1. Expérience Utilisateur (UX)

Description UX (tableau détaillé)

Parcours But Friction Réduction clics
Construire façonner zoo erreurs placement overlay OK/KO
Inspecter case comprendre contenu navigation panneau contextuel

Description UI (tableau détaillé)

Composant Contenu États
Highlight case outline hover/selected
Bottom sheet infos/actions open/closed
Overlay build vert/rouge valid/invalid

Emplacement (tableau détaillé)

Zone UI Position Notes
Canvas monde plein écran caméra
HUD build barre outils

Intégration (tableau détaillé)

Intégration Contrat Notes
case_zoo.md unité case occupancy
chemin.md auto-tiling path

Navigation (tableau détaillé)

Action Chemin Résultat
Sélection clic case panneau
Build bouton build overlay

Événements (tableau détaillé)

Event UI Déclencheur Effet
CLICK_CASE clic panneau
ENTER_BUILD_MODE clic overlay

Assets Skinables

Musiques (tableau détaillé)
Asset Usage Durée Notes
zoo_map_ambience_loop.mp3 carte zoo loop discret
Sons (tableau détaillé)
Asset Usage Volume
click_tile.mp3 sélection bas
grid_snap.mp3 placement bas
Graphiques (tableau détaillé)
Asset Usage Contraintes
tile_highlight.png hover overlay
build_overlay.png build alpha
Images (tableau détaillé)
Asset Usage
biome_prairie_tiles.png sol
biome_mountain_tiles.png sol
Vidéos (tableau détaillé)
Asset Usage Durée
grid_holo.webm build 1.0s
Animations (tableau détaillé)
Animation Déclencheur Notes
pulsation highlight hover 0.4s
snap placement 0.2s
Couleurs (tableau détaillé)
Token Valeur Usage
build_ok_green #00FF00 valid
build_ko_red #FF0000 invalid
Textes (tableau détaillé)
Clé FR EN
zoo_map.place_here Placer ici Place here
zoo_map.invalid Placement invalide Invalid placement
Formes (tableau détaillé)
Élément Forme Notes
Case losange iso
Panneau rectangle arrondi lisible