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

540 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Nourisseur
## 1. Définition
Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les mangeoires vides et s'assure que les animaux n'ont pas faim. Achetable avec des pièces.
## 2. Fonctions
* **Remplissage :** Détecte les mangeoires vides et va les remplir.
* **Qualité :** Peut (avec amélioration) fournir une nourriture de meilleure qualité (+santé).
* **Automatisation :** Évite au joueur de devoir cliquer manuellement pour nourrir (si mécanique manuelle existe).
## 3. Icone
* **Représentation :** Seau ou Sac de graines.
* **Couleur dominante :** Marron et Orange.
## 4. Interactions
* **Recrutement :** Menu "Employés", coût en pièces.
* **Gestion :** Définir des priorités (ex: nourrir les bébés en premier).
## 5. Annexes Techniques
### Données (JSON)
```json
{
"employee_id": "feeder_02",
"type": "nourisseur",
"name": "Bob",
"salary": 30,
"hire_cost": 300,
"stats": {
"capacity": 50, // Quantité de nourriture transportable
"speed": 1.2
},
"current_task": "moving_to_enclosure_12",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* Les animaux affamés perdent de la santé et du bonheur.
* Le nourisseur doit retourner au stock (bâtiment de service) pour se ravitailler.
## 6. Annexes UX/UI
* **Visuel Carte :** Personnage avec une brouette ou un sac sur le dos.
* **Animation :** Verse de la nourriture dans l'auge.
* **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé.
## Affichage contextuel (modules)
Le nourisseur sert de personnage contextuel lorsque des événements de nourriture surviennent sur la carte du zoo.
### Déclencheurs (exemples)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `FEED_LOW` | auge < seuil | bulle “Mangeoire vide” + CTA “Voir enclos” |
| `FOOD_STOCK_EMPTY` | stock global = 0 | bulle “Stock vide” + deep-link `menu_achats.md` |
| `FEEDER_OVERLOADED` | trop de tâches | bulle “Débordé” + CTA recruter/ajuster priorité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.
## Définition
| Champ | Valeur |
|---|---|
| Entité | Employé “Nourisseur” |
| Rôle | Approvisionner les mangeoires, éviter la faim, appliquer (si présent) la nourriture spéciale ciblée. |
| Logistique | Transport capacité `stats.capacity`, ravitaillement depuis stock. |
| Vue | Isométrique 2.5D, sprite 4 directions, sélection base-sprite. |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Détection auge vide | Tick nourisseur | enclos, jauges auge | liste tâches | Priorité bébés > adultes | Event `FEEDER_SCAN` |
| Remplissage | Arrivée en enclos | stock, capacity | auge + | Consomme stock global, clamp max auge | Event `FEEDER_FILL_START/END` |
| Ravitaillement stock | capacity=0 | stock bâtiment | capacity reset | Retour “service stock” obligatoire | Event `FEEDER_RESTOCK` |
| Qualité nourriture | upgrade | niveau/skill | santé + | Bonus si nourriture premium active | Event `FEEDER_PREMIUM_APPLIED` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Seau / sac de graines |
| Couleur dominante | Marron / orange |
| Variantes | `icon_feeder_bucket.png`, `icon_feeder_bag.png` |
| États | Badge “en route” (flèche), “débordé” (rouge), “capacity vide” (0) |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Nourisseur → Confirmer | entité créée | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
| Définir priorités | Action | - | panel nourisseur → priorités | ordre tâches | - |
| Assigner zone/enclos | Action | cible valide | “Assigner” → clic | couverture | `INVALID_TARGET` |
| Forcer nourrir | Action | enclos sélectionné | bouton “Nourrir maintenant” | tâche top priorité | `NO_FEEDER_AVAILABLE`, `OUT_OF_FOOD_STOCK` |
| Inspecter stock | Consultation | - | panel stock | quantités | - |
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `employee_id` | string | `feeder_02` | DB | unique |
| `type` | enum | `nourisseur` | DB | constante |
| `salary` | int | 30 | config | coins/jour |
| `hire_cost` | int | 300 | config | one-shot |
| `stats.capacity` | int | 50 | DB | [10..200] |
| `stats.speed` | float | 1.2 | DB | déplacement |
| `current_task` | string | `moving_to_enclosure_12` | runtime | debug |
| `state` | enum | `IDLE|MOVING|FILLING|RESTOCK|BREAK` | runtime | FSM |
| `carried_food` | int | 0..capacity | runtime | décrémente |
| `assigned_zone` | uuid/null | null | runtime | null=global |
| `grid` | object | `{x,y}` | runtime | position |
| `iso_x/iso_y` | int | - | rendu | projection |
| `z_index` | int | - | rendu | profondeur |
| `hitbox` | enum | `base_sprite` | rendu | click base |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Capacité | 50 | unités | transport |
| Vitesse | 1.2 | coef | marche |
| Temps remplissage | 1 | min in-game | par auge |
| Temps restock | 2 | min in-game | au stock |
| Seuil faim critique | 80 | % | déclenche urgence |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Auges remplies/jour | 0 | 0..∞ | faim - |
| Ruptures évitées | 0 | 0..∞ | survie + |
| Coût nourrissage/jour | 30 | 0..∞ | dépenses employés |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Apparition | embauche | coins | entité | `IDLE` |
| Action | auge vide | stock | auge + | pas si stock=0 |
| Restock | capacity=0 | stock bâtiment | capacity reset | chemin valide |
| Disparition | licenciement (si prévu) | - | suppression | stop tâches |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Achat | coins ≥ `hire_cost` | vrai | création |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Licenciement | action joueur | vrai | suppression |
| Zoo supprimé | - | vrai | suppression |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Stats | Oui | persistées |
| Carried food | Non | remis à 0 au reset |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Température | Effet | Condition |
|---|---|---|
| Extrême | consommation + | animaux mangent plus selon règles |
| Tempérée | neutre | - |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| Chemins | déplacement + | visiteurs attirés aux chemins |
| Sable/neige | déplacement - | ralentissement |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Modificateur |
|---|---|---|
| Hiver | ration + | +10% conso |
| Été | eau/boisson + | incidents soif visiteurs + |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Règle |
|---|---|---|
| Matin | repas 1 | tâche batch |
| Soir | repas 2 | tâche batch |
| Nuit | urgence | uniquement si faim critique |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Faim basse | + | si animaux bien nourris |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Stock 0 | risque mort + | faim extrême prolongée |
#### Impact Nourriture (tableau détaillé)
| Type | Effet | Condition |
|---|---|---|
| Standard | neutre | base |
| Spéciale | buff | selon `nourriture_speciale.md` |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| État | Effet | Condition |
|---|---|---|
| Animaux actifs (pas affamés) | satisfaction + | enclos proches |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action | Effet animaux | Condition |
|---|---|---|
| Nourrir | stress - | faim résolue |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Animal bien nourri | +5% | vente animal |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Livraison nourriture | +stock | via camion/achat |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Priorité bébés | + | si règle activée |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Tech nutrition | + | réduit conso ou augmente qualité |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Temps séjour | + | animaux visibles actifs |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Vente nourriture visiteurs | revenu + | coins | canicule |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Plainte faim | remboursement | coins | si incidents |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Salaire | 30 | coins/jour | actif |
#### 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 |
|---|---:|---|---|
| Lait/bébés | +conso | stock | si bébés présents |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Achat nourriture | variable | coins | menu achats |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Ration arrivée | 5 | coins | accueil |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Transport nourriture | 10 | coins | livraison |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Ville | Zoo | réputation | nourisseur indirect |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Nourisseur | Enclos | auge vide | déplacement sur chemins |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Visiteur | Boutique | faim/soif | achat |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Visiteur mécontent | sortie | incidents | départ |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `FEED_LOW` | auge < seuil | enclosure_id | warning |
| `FEED_FILLED` | fin remplissage | enclosure_id | info |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `FEEDER_MOVING` | tâche | rendu déplacement |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `FOOD_STOCK_EMPTY` | stock=0 | alerte |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_BUY_FOOD` | faim/soif | revenu |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|---|
| `VISITOR_COMPLAINT_HUNGER` | faim | satisfaction - |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `PLAYER_FORCE_FEED` | bouton | tâche urgente |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 0 | remplissage base | - |
| 2 | 1000 | capacity +20 | moins restocks |
| 3 | 2500 | speed +0.1 | réactivité |
| 4 | 5000 | qualité + | premium |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `scan_empty_troughs` | enclos | list | priorités |
| `fill_trough` | stock, carried | trough | clamp |
| `restock` | stock building | carried reset | - |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `OUT_OF_FOOD_STOCK` | Alerte | "Stock de nourriture vide." | stock=0 |
| `FEEDER_OVERLOADED` | Warning | "Nourisseur débordé." | trop tâches |
| `FEED_FILLED` | Info | "Mangeoire remplie." | fin |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Automatiser nourrissage | éviter morts | manque stock | deep-link menu achats |
| Prioriser bébés | survie | réglages | preset “bébés dabord” |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Panel nourisseur | capacity, tâches | moving/filling |
| Badge faim | icône rouge | clignote |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| HUD | menu employés | - |
| Enclos | jauge auge | overlay |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| Stock nourriture | global | pas de cache |
| Nourriture spéciale | ciblée | cf. spec |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir panel | clic nourisseur | panel |
| Forcer nourrir | clic enclos | tâche |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_FEEDER_PANEL` | clic | panel |
| `CLICK_FORCE_FEED` | bouton | urgence |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `feeder_loop.mp3` | ambiance | loop | discret |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `pour_food.mp3` | verse | faible |
| `ui_food_empty.mp3` | stock 0 | moyen |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `feeder_sprite_[dir].png` | sprite | 4 dirs |
| `fx_grains.png` | FX | overlay |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `icon_feeder_bag.png` | icône |
| `portrait_feeder.png` | panel |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `feed_success.webm` | popup | 0.8s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| grains qui tombent | filling | loop |
| jauge auge + | fin | 0.4s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `feeder_primary` | #E67E22 | UI |
| `feeder_alert` | #E74C3C | faim |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `feeder.force` | Nourrir maintenant | Feed now |
| `food.empty` | Stock vide | Empty stock |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Jauge auge | barre | lisible |
| Badge faim | rond | clignote |