528 lines
16 KiB
Markdown
528 lines
16 KiB
Markdown
# Spécifications : Chemin
|
||
|
||
## Définition
|
||
Les chemins sont des cases aménagées permettant aux visiteurs et au staff de se déplacer efficacement à travers le zoo. Ils connectent les différentes infrastructures (Enclos, Boutiques, Services).
|
||
|
||
## Fonctions
|
||
* **Circulation :** Permet le déplacement des entités (Visiteurs, Staff).
|
||
* **Connexion :** Relie les bâtiments entre eux pour former un réseau accessible.
|
||
* **Esthétique :** Améliore l'aspect visuel du zoo.
|
||
|
||
# Annexes Techniques
|
||
|
||
## 1. Données et États
|
||
### Modèle de Données (JSON)
|
||
```json
|
||
{
|
||
"type": "path",
|
||
"material": "gravel",
|
||
"x": 10,
|
||
"y": 12,
|
||
"connected_neighbors": ["N", "S", "E"],
|
||
"iso_x": "integer",
|
||
"iso_y": "integer",
|
||
"z_index": "integer"
|
||
}
|
||
```
|
||
|
||
## 2. Règles Métier
|
||
* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling).
|
||
* **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins.
|
||
|
||
# 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.
|
||
|
||
## 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. Détails Spécifiques
|
||
* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases.
|
||
* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).
|
||
|
||
## Définition
|
||
|
||
| Champ | Valeur |
|
||
|---|---|
|
||
| Concept | Case “chemin” : tuile de circulation sur grille isométrique, auto-connectée (auto-tiling) pour former un réseau. |
|
||
| Rôle | Supporter le pathfinding visiteurs/staff, améliorer la vitesse, et garantir la connectivité entre points d’intérêt. |
|
||
| Portée | Tuile placée sur `case_zoo`, utilisée par `visiteur` et employés. |
|
||
| Contrainte | Pas de cache/mémorisation des routes : chemins calculés à la volée (A*/Dijkstra) ; pas de fallback silencieux si réseau cassé (message + log). |
|
||
|
||
## Fonctions (tableau détaillé)
|
||
|
||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||
|---|---|---|---|---|---|
|
||
| Placer chemin | action build | coord, material | tuile chemin | interdit sur case occupée | Event `PATH_PLACED` |
|
||
| Supprimer chemin | action delete | coord | tuile vide | interdit si bloque sortie (option) | Event `PATH_REMOVED` |
|
||
| Auto-tiling | placement/suppression | voisins N/E/S/W | sprite variant | recalcul local (voisinage) | Event `PATH_AUTOTILE_UPDATED` |
|
||
| Bonus vitesse | déplacement entité | type entité | speed multiplier | appliqué uniquement sur chemin | Event `PATH_SPEED_APPLIED` |
|
||
| Connectivité | navigation | graph chemins | route | route recalculée à la volée | Event `PATH_ROUTE_COMPUTED` |
|
||
| Esthétique | rendu | material + neighbors | sprite | variations (terre/gravier/pavés) | - |
|
||
|
||
## Icone de base
|
||
|
||
| Élément | Spécification |
|
||
|---|---|
|
||
| Représentation | Icône pavés / empreintes |
|
||
| Couleur dominante | Beige/gris selon matériau |
|
||
| Variantes | `icon_path_pavers.png`, `icon_path_footprints.png` |
|
||
| États | normal, hover, invalid (rouge) |
|
||
|
||
## Interactions (tableau détaillé)
|
||
|
||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||
|---|---|---|---|---|---|
|
||
| Construire chemin | Action | mode build | sélectionner chemin → cliquer cases | chemins posés | `CELL_OCCUPIED` |
|
||
| Choisir matériau | Action | build | dropdown | material appliqué | - |
|
||
| Supprimer | Action | mode delete | clic chemin | supprimé | `CANNOT_REMOVE_BLOCKING` |
|
||
| Prévisualiser auto-tiling | Consultation | build | survol | ghost variant | - |
|
||
|
||
## Personnage contextuel (événements & interaction)
|
||
Le module “Chemin” affiche prioritairement un **visiteur** (homme/femme) comme personnage contextuel (voir `visiteur.md`) afin de rendre visibles les conséquences de connectivité, de blocage et de flux.
|
||
|
||
### Affichage
|
||
Le visiteur s’affiche lorsque :
|
||
- le module est **actionné** (entrée en mode build chemins, pose/suppression, sélection matériau) ;
|
||
- un **événement** lié à la connectivité survient (route recalculée, blocage d’accès, saturation locale).
|
||
|
||
### Déclencheurs (exemples)
|
||
| Event / Message | Condition | Effet UI personnage |
|
||
|---|---|---|
|
||
| `ENTER_PATH_BUILD_MODE` | activation build | portrait visiteur + rappel “connectivité” |
|
||
| `CELL_OCCUPIED` | pose invalide | bulle : cause (case occupée) |
|
||
| `CANNOT_REMOVE_BLOCKING` | suppression bloquante | bulle : cause (accès bloqué) + CTA annuler |
|
||
| `PATH_ROUTE_COMPUTED` | route recalculée | bulle : “Itinéraire mis à jour” (info) |
|
||
|
||
### Interactions utilisateur
|
||
- Clic sur le personnage : ouvre le panneau “connectivité”/aide du mode chemin (si présent) ou met en surbrillance les zones impactées (entrée, POI).
|
||
|
||
### Skins & thèmes
|
||
Le visiteur suit `theme.md`. Les variantes homme/femme sont des skins/variantes de visiteurs (voir `visiteur.md` + `inventaire_skins.md` si les visiteurs sont skinnables).
|
||
|
||
## Annexes Techniques
|
||
|
||
### 1. Données et États (tableau détaillé)
|
||
|
||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||
|---|---|---|---|---|
|
||
| `type` | string | `path` | DB | constant |
|
||
| `material` | string | `gravel` | DB/config | enum |
|
||
| `grid.x` | int | 10 | DB | coord |
|
||
| `grid.y` | int | 12 | DB | coord |
|
||
| `connected_neighbors` | string[] | `["N","S","E"]` | calcul | à la volée |
|
||
| `iso_x` | int | 120 | calcul/DB | rendu |
|
||
| `iso_y` | int | 88 | calcul/DB | rendu |
|
||
| `z_index` | int | 12088 | calcul | profondeur |
|
||
|
||
#### Caractéristiques Initiales (tableau détaillé)
|
||
|
||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||
|---|---:|---|---|
|
||
| Bonus vitesse visiteurs | 1.15 | coef | sur chemin |
|
||
| Bonus vitesse staff | 1.25 | coef | sur chemin |
|
||
| Coût pose | 1 | coins | par tuile (exemple) |
|
||
|
||
#### Scores Initiaux (tableau détaillé)
|
||
|
||
| Score | Valeur initiale | Plage | Impact |
|
||
|---|---:|---|---|
|
||
| Connectivité | 0 | 0..100 | accessibilité |
|
||
| Chemins posés | 0 | 0..∞ | progression build |
|
||
|
||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||
|
||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||
|---|---|---|---|---|
|
||
| Apparition | build | coord | path | autotile local |
|
||
| Mise à jour | voisin change | voisins | sprite | cohérence |
|
||
| Disparition | delete | coord | vide | graph maj |
|
||
|
||
#### Conditions d'Apparition (tableau détaillé)
|
||
|
||
| Condition | Seuil | Opérateur | Résultat |
|
||
|---|---:|---|---|
|
||
| Achat/placement | true | est | chemin créé |
|
||
|
||
#### Conditions de Disparition (tableau détaillé)
|
||
|
||
| Condition | Seuil | Opérateur | Résultat |
|
||
|---|---:|---|---|
|
||
| Suppression | true | est | chemin retiré |
|
||
|
||
#### Hérédité (tableau détaillé)
|
||
|
||
| Élément | Hérité | Règle |
|
||
|---|---|---|
|
||
| Matériau | Oui | persiste sur tuile |
|
||
| Connectivité | Non | recalcul à la volée |
|
||
|
||
### 3. Impacts Environnementaux
|
||
|
||
#### Impact Température (tableau détaillé)
|
||
|
||
| Condition | Effet chemin | Notes |
|
||
|---|---|---|
|
||
| Neige | visuel + glissant léger | option saisonnière |
|
||
|
||
#### Impact Milieu (Biome) (tableau détaillé)
|
||
|
||
| Biome | Effet chemin | Notes |
|
||
|---|---|---|
|
||
| Boue | vitesse - si pas pavés | material “terre” |
|
||
|
||
#### Impact Saisons (tableau détaillé)
|
||
|
||
| Saison | Effet chemin | Notes |
|
||
|---|---|---|
|
||
| Hiver | variante sprite | neige |
|
||
|
||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||
|
||
| Période | Effet chemin | Notes |
|
||
|---|---|---|
|
||
| Nuit | éclairage lampadaires | via objets |
|
||
|
||
### 4. Impacts Biologiques et Sociaux
|
||
|
||
#### Impact Reproduction (tableau détaillé)
|
||
|
||
| Facteur | Effet sur taux | Condition |
|
||
|---|---|---|
|
||
| - | aucun | - |
|
||
|
||
#### Impact Mort (tableau détaillé)
|
||
|
||
| Cas | Effet | Condition |
|
||
|---|---|---|
|
||
| Embouteillage | risque incidents | trop dense |
|
||
|
||
#### Impact Nourriture (tableau détaillé)
|
||
|
||
| Ressource | Effet | Condition |
|
||
|---|---|---|
|
||
| Accès boutiques | consommation ↑ | chemin connecte |
|
||
|
||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||
|
||
| Action/État | Gain | Rayon | Notes |
|
||
|---|---:|---:|---|
|
||
| Chemins propres | + | zoo | esthétique |
|
||
|
||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||
|
||
| Action/État | Effet animaux | Condition |
|
||
|---|---|---|
|
||
| Passage trop proche | stress + | enclos sans barrière |
|
||
|
||
#### Impact Valeur (tableau détaillé)
|
||
|
||
| Facteur | Variation | Condition |
|
||
|---|---:|---|
|
||
| Pavés premium | + | cosmétique |
|
||
|
||
### 5. Impacts Logistiques et Économiques
|
||
|
||
#### Vitesse (Camion) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| Itinéraire camion | préfère chemins | si autorisé |
|
||
|
||
#### Vitesse (Nurserie) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| Accès nurserie | temps staff - | chemin connecté |
|
||
|
||
#### Vitesse (Accueil) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| File visiteurs | plus fluide | chemin large |
|
||
|
||
#### Vitesse (Recherche) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| Staff | déplacement + | chemin |
|
||
|
||
#### Vitesse (Labo) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| - | - | - |
|
||
|
||
#### Vitesse (Visite) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| Visiteurs | vitesse + | chemin |
|
||
|
||
#### Dépenses (Billeterie) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Dépenses (Boutiques) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| Maintenance | 1 | coins / tuile / jour | option |
|
||
|
||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Dépenses (Employés) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| Temps déplacement | - | min | chemins |
|
||
|
||
#### Dépenses (Boutiques) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| Section dupliquée | 0 | - | conservée |
|
||
|
||
#### Dépenses (Nurseries) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Dépenses (Nourriture) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Dépenses (Camion) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Trajet Visiteurs
|
||
|
||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||
|
||
| Source | Destination | Déclencheur | Effet |
|
||
|---|---|---|---|
|
||
| Ville | Zoo | ouverture | route |
|
||
|
||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||
|
||
| Source | Destination | Déclencheur | Effet |
|
||
|---|---|---|---|
|
||
| Allé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 |
|
||
|---|---|---|---|
|
||
| Billetterie | Allées | entrée | flux |
|
||
|
||
### 6. Événements
|
||
|
||
#### Événements du Jeu (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Payload | Effet |
|
||
|---|---|---|---|
|
||
| `PATH_PLACED` | build | coord, material | tuile |
|
||
| `PATH_REMOVED` | delete | coord | tuile |
|
||
| `PATH_AUTOTILE_UPDATED` | voisin | coord | sprite |
|
||
|
||
#### Événements du Carte (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| - | - | - |
|
||
|
||
#### Événements du Zoo (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `PATH_ROUTE_COMPUTED` | visite | route | navigation |
|
||
|
||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| - | - | - |
|
||
|
||
#### Événements du Visiteur (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `VISITOR_MOVES` | tick | speed bonus |
|
||
|
||
#### Événements du Joueur (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `PLAYER_BUILDS_PATH` | build | réseau |
|
||
|
||
### 7. Progression
|
||
|
||
#### Tableau des Upgrades (tableau détaillé)
|
||
|
||
| Niveau | Coût | Effet | Débloque |
|
||
|---|---:|---|---|
|
||
| Terre | 0 | base | - |
|
||
| Gravier | 100 | vitesse + | matériau |
|
||
| Pavés | 250 | vitesse ++ | matériau |
|
||
|
||
### 8. Logique et Interfaces
|
||
|
||
#### Pseudo-code Impacts (tableau détaillé)
|
||
|
||
| Fonction | Entrées | Sorties | Notes |
|
||
|---|---|---|---|
|
||
| `computeNeighborsMask` | grid, coord | mask | N/E/S/W |
|
||
| `selectAutotileVariant` | material, mask | sprite_id | atlas |
|
||
| `computeSpeedMultiplier` | entity, tile | float | sur chemin |
|
||
|
||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||
|
||
| ID | Niveau | Message | Condition |
|
||
|---|---|---|---|
|
||
| `CELL_OCCUPIED` | Warning | "Case occupée." | placement |
|
||
| `CANNOT_REMOVE_BLOCKING` | Warning | "Suppression impossible : bloque un accès." | option |
|
||
|
||
## Annexes UX/UI
|
||
|
||
### 1. Expérience Utilisateur (UX)
|
||
|
||
#### Description UX (tableau détaillé)
|
||
|
||
| Parcours | But | Friction | Réduction clics |
|
||
|---|---|---|---|
|
||
| Tracer une allée | connecter zones | répétition | drag paint “pinceau” |
|
||
| Changer matériau | esthétique | navigation | quick switch |
|
||
|
||
#### Description UI (tableau détaillé)
|
||
|
||
| Composant | Contenu | États |
|
||
|---|---|---|
|
||
| Palette matériaux | terre/gravier/pavés | actif |
|
||
| Curseur pinceau | taille 1..3 | preview |
|
||
| Ghost tile | variant | valid/invalid |
|
||
|
||
#### Emplacement (tableau détaillé)
|
||
|
||
| Zone UI | Position | Notes |
|
||
|---|---|---|
|
||
| Mode build | barre | accès direct |
|
||
|
||
#### Intégration (tableau détaillé)
|
||
|
||
| Intégration | Contrat | Notes |
|
||
|---|---|---|
|
||
| `visiteur.md` | pathfinding | routes |
|
||
| `zoo.md` | grille | coords |
|
||
|
||
#### Navigation (tableau détaillé)
|
||
|
||
| Action | Chemin | Résultat |
|
||
|---|---|---|
|
||
| Construire | build → chemin | pinceau |
|
||
| Supprimer | build → delete | gomme |
|
||
|
||
#### Événements (tableau détaillé)
|
||
|
||
| Event UI | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `ENTER_PATH_BUILD_MODE` | clic | palette |
|
||
| `PAINT_PATH` | drag | pose |
|
||
|
||
#### Assets Skinables
|
||
|
||
##### Musiques (tableau détaillé)
|
||
|
||
| Asset | Usage | Durée | Notes |
|
||
|---|---|---:|---|
|
||
| `build_mode_loop.mp3` | build | loop | discret |
|
||
|
||
##### Sons (tableau détaillé)
|
||
|
||
| Asset | Usage | Volume |
|
||
|---|---|---|
|
||
| `path_place.mp3` | pose | bas |
|
||
| `path_remove.mp3` | retrait | bas |
|
||
|
||
##### Graphiques (tableau détaillé)
|
||
|
||
| Asset | Usage | Contraintes |
|
||
|---|---|---|
|
||
| `path_autotile_atlas.png` | sprites | atlas |
|
||
| `path_preview_overlay.png` | ghost | alpha |
|
||
|
||
##### Images (tableau détaillé)
|
||
|
||
| Asset | Usage |
|
||
|---|---|
|
||
| `path_material_icon_set.png` | palette |
|
||
|
||
##### Vidéos (tableau détaillé)
|
||
|
||
| Asset | Usage | Durée |
|
||
|---|---|---:|
|
||
| `path_paint.webm` | tuto | 2.0s |
|
||
|
||
##### Animations (tableau détaillé)
|
||
|
||
| Animation | Déclencheur | Notes |
|
||
|---|---|---|
|
||
| sparkle pavés | hover | subtil |
|
||
|
||
##### Couleurs (tableau détaillé)
|
||
|
||
| Token | Valeur | Usage |
|
||
|---|---|---|
|
||
| `path_beige` | #D7C7A4 | terre |
|
||
| `path_gray` | #9E9E9E | pavés |
|
||
|
||
##### Textes (tableau détaillé)
|
||
|
||
| Clé | FR | EN |
|
||
|---|---|---|
|
||
| `path.title` | Chemin | Path |
|
||
| `path.material` | Matériau | Material |
|
||
|
||
##### Formes (tableau détaillé)
|
||
|
||
| Élément | Forme | Notes |
|
||
|---|---|---|
|
||
| Palette | rectangles | clairs |
|