This commit is contained in:
2026-03-05 04:01:29 +01:00
parent dfecb09b7c
commit 6c8a710432
32 changed files with 8203 additions and 3 deletions

View File

@@ -184,3 +184,475 @@ function updateWorldMap(map, deltaTime):
- **Couleurs** : Blanc/Gris.
- **Textes** : "Zone Inexplorée".
- **Formes** : Zone non cliquable.
## Définition
| Champ | Valeur |
|---|---|
| Concept | “Carte du monde” : vue multijoueur/économie, affichant sites (zoos, villes, labos) et camions en transit. |
| Rôle | Permettre lachat/vente via transport, visualiser la dynamique (flux, météo, jour/nuit) et lexploration (brouillard). |
| Portée | Singleton logique (serveur), rendu client par zooms et marqueurs, sans pan manuel si règle active. |
| Contrainte | Pas de cache/mémorisation des flux : distances/choix calculés à la volée ; pas dalternative HTTP/analytics ; interaction zone masquée => blocage explicite. |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Ouvrir carte monde | bouton UI | player | écran monde | charge sites visibles | Event `OPEN_WORLD_MAP` |
| Résoudre visibilité | upgrade zoom | rayon | sites visibles | dépend upgrade carte | Event `WORLD_VISIBILITY_UPDATED` |
| Afficher sites | rendu | sites | markers | z_index stable | Event `WORLD_SITES_RENDERED` |
| Suivre camions | tick lazy | dt | pos camions | interpolation | Event `WORLD_TRUCKS_UPDATED` |
| Bloquer zone inexplorée | clic | coord | tooltip | pas de reveal gratuit | Event `FOG_CLICK_BLOCKED` |
| Délivrer cargo | camion arrive | cargo | dépôt zoo | adultes→accueil, œufs/bébés→nurserie | Event `DELIVERY_COMPLETE` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Globe + pins |
| Couleur dominante | Désaturé (fond) + accents (pins) |
| Variantes | `icon_world_map.png`, `icon_pin_site.png` |
| États | normal, fogged, event_weather |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Clic site | Consultation | visible | clic marker | panneau site | `ZONE_NOT_EXPLORED` |
| Achat offre | Action | fonds + camion idle | drag offre→camion | mission | `TRUCK_BUSY`, `NOT_ENOUGH_COINS` |
| Zoom-out | Navigation | upgrade ok | bouton/gesture | rayon ↑ | `UPGRADE_REQUIRED` |
## Personnages contextuels (événements & interaction)
La carte du monde affiche des personnages contextuels selon le type de site sélectionné et les événements globaux.
### Sites et personnages
- **Ville** : maire (`maire.md`) — événements de ville, flux visiteurs, relation/jumelage.
- **Laboratoire** : laborantin (`laborantin.md`) — offres rares, services, alertes.
- **Zoo joueur** : joueur/portrait (`joueur.md`, `avatar_joueur.md`) — identité, indicateurs, interactions sociales.
- **Zoo bot** : bot (`bot.md`) — profil de stratégie et indicateurs.
### Déclencheurs (exemples)
| Event / Action | Condition | Personnage | Effet UI |
|---|---|---|---|
| `OPEN_WORLD_MAP` | ouverture écran | (contexte) | personnage de contexte selon dernier site sélectionné |
| clic site `city` | sélection ville | maire | panneau ville + événements |
| clic site `lab` | sélection labo | laborantin | panneau labo + offres/services |
| clic site `zoo` (autre joueur) | sélection zoo | joueur | panneau identité + actions permises |
| `ZONE_NOT_EXPLORED` | fog | (contexte) | message explicite (gating) |
### Skins & thèmes
Les portraits/mascottes suivent `theme.md`. Les mini-avatars des joueurs suivent leurs skins (si le profil est accessible) via les règles de `avatar_joueur.md` et `inventaire_skins.md`.
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `id` | string | `world_map` | DB | singleton |
| `width` | int | 200 | DB | très grand |
| `height` | int | 200 | DB | - |
| `sites[].id` | uuid_v4 | `uuid_v4` | DB | - |
| `sites[].type` | enum | `city` | DB | `zoo/city/lab` |
| `sites[].pos.x` | int | 40 | DB | grid |
| `sites[].pos.y` | int | 70 | DB | grid |
| `trucks[].id` | uuid_v4 | `uuid_v4` | DB | - |
| `trucks[].owner_id` | uuid_v4 | `uuid_v4` | DB | - |
| `trucks[].pos.x` | float | 40.2 | calcul | monde |
| `trucks[].pos.y` | float | 69.8 | calcul | monde |
| `trucks[].target` | uuid_v4 | `uuid_v4` | DB | site |
| `fog.revealed_radius` | float | 500 | config | km simulé |
| `weather.global` | enum | `rain` | calcul | rendu |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Rayon visible | 500 | km | simulé |
| Nb villes | 10 | count | départ |
| Nb labos | 2 | count | départ |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Exploration | 0 | 0..100 | fog |
| Trafic camions | 0 | 0..∞ | routes visibles |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Création | serveur | seed | sites init | singleton |
| Exploration | upgrade | zoom | reveal | blocage zones |
| Événements | météo | saison | overlays | observables |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Démarrage | true | est | carte disponible |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| - | - | - | jamais |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Cartographie | Oui | zones découvertes persistent |
| Routes “usuelles” | Oui | visibles si trafic haut |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet | Notes |
|---|---|---|
| Météo globale | visuel + mod vitesse | pluie/neige |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| Montagne | coût traversée + | camions |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Notes |
|---|---|---|
| Hiver | teinte blanche | visuel |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Notes |
|---|---|---|
| Nuit | lumières villes/zoos | rendu |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Migration (décor) | 0 | purement visuel |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Easter egg | bonus | découverte |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| Villes produisent | stock + | marchés |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Halo zoo attractif | visuel | monde | signal |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| - | neutre | - |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Marché global | prix ± | offre/demande |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Embouteillage | vitesse - | event |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Offres bébés | compteur + | listings |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Offres animaux | compteur + | listings |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Zoom upgrade | visibilité + | agrandissement carte |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Refresh offers | TTL 24h | remplacement |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Flux ville→zoo | distance | calcul |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Péages | 1% cargaison | coins | routes |
#### 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 |
|---|---:|---|---|
| Voyage rapide | 100 | coins | si héliport |
#### 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 |
|---|---|---|---|
| Zoo | Enclos | visite | path |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Zoo | Boutique | besoins | achats |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Billeterie | Sortie | fin | despawn |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `OPEN_WORLD_MAP` | UI | - | écran |
| `MAP_EVENT` | météo | region | overlay |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `FOG_HOVER` | hover | tooltip |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `WORLD_TRUCKS_UPDATED` | tick | positions |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `CITY_FLOW_DISPATCHED` | calcul | flux |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `ZONE_NOT_EXPLORED` | clic | denied |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `WORLD_VISIBILITY_UPDATED` | upgrade | reveal |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 1000 | zoom + | rayon |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `updateWorldMap` | map, dt | map | move trucks |
| `canReveal` | upgrade | bool | fog |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `ZONE_NOT_EXPLORED` | Warning | "Zone non explorée." | fog |
| `UPGRADE_REQUIRED` | Warning | "Amélioration requise." | zoom |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Lire le marché | choisir offres | densité | compteurs + filtres |
| Acheter | déclencher camion | drag | drag direct vers camion |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Pins sites | zoo/city/lab | hover/selected |
| Fog mask | nuages | revealed/hidden |
| Compteurs | offres | live |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Plein écran | centre | carte monde |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `camion.md` | transport | missions |
| `ville.md` | flux | visiteurs |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir | bouton carte monde | écran |
| Retour | bouton zoo | ferme |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_WORLD_MAP` | clic | open |
| `FOG_CLICK_BLOCKED` | clic fog | tooltip |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `world_map_travel_loop.mp3` | carte monde | loop | aventure |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `fog_whoosh.mp3` | reveal | bas |
| `ui_denied.mp3` | blocked | moyen |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `world_pins_atlas.png` | pins | lisible |
| `fog_clouds.png` | fog | alpha |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `world_biomes_blur.png` | fond |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `clouds_shader.webm` | fond | loop |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| déplacement camions | tick | continu |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `world_desat` | #8A8A8A | fond |
| `world_pin_gold` | #D4AF37 | halo |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `world.fog` | Zone inexplorée | Unexplored zone |
| `world.back` | Retour zoo | Back to zoo |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Pin | goutte | site |