This commit is contained in:
2026-03-05 03:39:33 +01:00
parent 349f3b8ac3
commit dfecb09b7c
14 changed files with 10081 additions and 28 deletions

View File

@@ -90,3 +90,477 @@ def update_security_agent(agent, world):
* **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é “Agent de sécurité” |
| Rôle | Maintenir lordre, réduire vandalisme/incidents, gérer visiteurs indisciplinés, intervenir (si feature) sur évasions. |
| IA | FSM/priority queue : Évasion > Vandalisme > Déchets > Patrouille. |
| Vue | Isométrique 2.5D, sprite 4 directions (le bloc “8 directions” existant est conservé comme option danimation), hitbox base-sprite. |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Patrouille | Tick agent | routes, densité | présence | Choisit chemins (visiteurs attirés chemins) | Event `SECURITY_PATROL_TICK` |
| Dissuasion vandalisme | proximité incident | `intimidation`, rayon | proba vandalisme - | Effet plafonné ; dépend densité | Event `SECURITY_DETERRENCE_APPLIED` |
| Intervention visiteur | visiteur “indiscipliné” | target | expulsion/stop | Temps action ; cooldown | Event `SECURITY_INTERACT_START/END` |
| Gestion évasion (option) | animal `ESCAPED` | animal pos | capture | Nécessite équipement (filet) ou tranquillisant | Event `SECURITY_CAPTURE` |
| Gestion fatigue | temps actif | stamina | REST | Repos staff room obligatoire | Event `SECURITY_REST_START/END` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Écusson / casquette |
| Couleur dominante | Bleu marine / jaune |
| Variantes | `icon_security_badge.png`, `icon_security_cap.png` |
| États | Badge “alerte” (rouge), “patrouille” (pas), “recherche” (loupe) |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Sécurité → Confirmer | agent créé | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
| Envoyer en priorité | Action | zone/cible valide | clic carte → “Envoyer sécurité” | target prioritaire | `NO_SECURITY_AVAILABLE`, `INVALID_TARGET` |
| Licencier | Action | pas en capture verrouillée | panel agent → “Licencier” | suppression | `ACTION_BLOCKED` |
| Inspecter incidents | Consultation | - | panel → incidents | liste + ETA | - |
| Activer mode “strict” | Configuration | upgrade / coût | toggle | intervention + mais visiteurs stress + | `LOCKED_FEATURE` |
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `employee_id` | string | `security_05` | DB | unique |
| `type` | enum | `agent_securite` | DB | constante |
| `created_at` | timestamp | - | DB | - |
| `salary` | int | 40 | config | coins/jour |
| `hire_cost` | int | 400 | config | one-shot |
| `state` | enum | `PATROL|CHASE|REST|INTERACT` | runtime | FSM |
| `position` | object | `{x,y}` | runtime | monde |
| `target_position` | object | `{x,y}` | runtime | chase |
| `stats.intimidation` | int | 10 | DB | [1..100] |
| `stats.speed` | float | 1.1 | DB | déplacement |
| `stats.stamina` | int | 100 | runtime | 0..100 |
| `radius` | int | 5 | config | action |
| `grid` | object | `{x,y}` | runtime | position grille zoo |
| `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 |
|---|---:|---|---|
| Rayon action | 5 | cases | règle existante |
| Vitesse | 1.1 | coef | - |
| Stamina max | 100 | points | - |
| Temps repos | 15 | min in-game | par cycle repos |
| Priorité | 4 niveaux | - | évasion > vandalisme > déchets > patrouille |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Incidents résolus/jour | 0 | 0..∞ | satisfaction + |
| Vandalisme évité | 0 | 0..∞ | réputation + |
| Temps réponse moyen | 0 | 0..∞ | performance |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Apparition | embauche | coins | entité | `PATROL` |
| Chase | menace détectée | target | déplacement | sprint consomme stamina |
| Interact | contact menace | menace | neutralisée | cooldown |
| Rest | stamina bas | temps | stamina + | staff room |
| Disparition | licenciement | - | suppression | stop chase |
#### 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 |
| Stamina | Non | reset quotidien |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Température | Effet | Condition |
|---|---|---|
| Extrême | patrouille - | fatigue + |
| Tempérée | neutre | - |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| Chemins | déplacement + | patrouille efficace |
| Pont étroit | congestion | éviter chase sur pont |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Modificateur |
|---|---|---|
| Été | foule + | incidents + |
| Hiver | affluence - | incidents - |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Règle |
|---|---|---|
| Jour | patrouille | - |
| Nuit | sécurité renforcée | incidents peur + si pas déclairage |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Bruit intervention | - | près enclos |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Évasion non gérée | risque mort + | collisions/ville |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| - | aucun | agent nalimente pas |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| État | Effet | Condition |
|---|---|---|
| Présence sécurité | confort + | rayon action |
| Interventions fréquentes | confort - | stress visiteurs |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action | Effet animaux | Condition |
|---|---|---|
| Capture évasion | stress + puis - | fin incident |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Zoo sûr | + | réputation/flux visiteurs |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Livraison équipements | + | si feature |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Gestion sortie | + | si foule panique |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Tech caméras | incidents - | si débloqué |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Déplacement visiteurs | - | si zones bloquées |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Vente souvenirs “police” | revenu + | coins | option |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Remboursement peur | -coins | coins | incidents peur |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Salaire | 40 | 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 |
|---|---:|---|---|
| - | 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 |
|---|---:|---|---|
| dégâts évasion | 100 | coins | réparation |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| capture matériel | 50 | coins | filet |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Ville | Zoo | réputation | sécurité augmente confiance |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Incident | Enclos | évasion | zone bloquée |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Visiteurs | Boutique | after incident | achats - |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Panique | sortie | peur | départ massif |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `VANDALISM_DETECTED` | scan | pos | chase |
| `ESCAPE_DETECTED` | animal escaped | animal_id | chase |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `SECURITY_CHASE` | menace | animation course |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `ZONE_BLOCKED` | intervention | pathing détour |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_CALMED` | sécurité proche | satisfaction + |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_EXPELLED` | interaction | sortie immédiate |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `PLAYER_SEND_SECURITY` | clic zone | priorité chase |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 0 | patrouille base | - |
| 2 | 1500 | intimidation +2 | dissuasion |
| 3 | 3000 | speed +0.1 | réponse |
| 4 | 6000 | équipement capture | gestion évasion |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `scan_for_threats` | position, radius | threat | existant |
| `neutralize` | threat | resolved | expulsion/capture |
| `apply_deterrence` | intimidation | proba- | clamp |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `SECURITY_BUSY` | Warning | "Agent occupé." | chase/interact |
| `ESCAPE_ALERT` | Alerte | "Évasion détectée !" | animal escaped |
| `VANDALISM_ALERT` | Warning | "Vandalisme !" | incident |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Envoyer agent | résoudre incident | localisation | action contextuelle sur incident |
| Voir sécurité | confiance | info | badges sur carte |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Panel agent | stamina, état, target | patrol/chase/rest |
| Badge incident | type | priorité |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Carte | sprite agent | sélection base |
| Incidents | bulles | clic direct |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| Pathfinding | zones bloquées | pas de fallback |
| Incidents visiteurs | expulsion | - |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir panel | clic agent | panel |
| Envoyer | clic incident | target |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_SECURITY_PANEL` | clic | panel |
| `CLICK_SEND_SECURITY` | clic zone | send |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `security_loop.mp3` | ambiance | loop | discret |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `whistle.mp3` | chase | moyen |
| `ui_alert.mp3` | alerte | moyen |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `security_sprite_[dir].png` | sprite | 4 dirs |
| `fx_alert_ring.png` | FX | overlay |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `icon_security_badge.png` | icône |
| `portrait_security.png` | panel |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `security_alert.webm` | popup | 0.9s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| ring alerte | incident | loop |
| dash | chase | burst |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `security_primary` | #1B3B6F | UI |
| `security_accent` | #F1C40F | badge |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `security.send` | Envoyer | Send |
| `security.busy` | Occupé | Busy |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Badge alerte | triangle arrondi | lisible |
| Panel | bottom sheet | standard |