ok
This commit is contained in:
@@ -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 l’achat/vente via transport, visualiser la dynamique (flux, météo, jour/nuit) et l’exploration (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 d’alternative 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 |
|
||||
|
||||
Reference in New Issue
Block a user