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

18 KiB
Raw Permalink Blame History

Agent de Sécurité

1. Définition

Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les visiteurs indisciplinés, prévient le vandalisme et peut intervenir en cas d'évasion d'animal (si fonctionnalité présente). Achetable avec des pièces.

2. Fonctions

  • Surveillance : Patrouille dans les allées pour rassurer les visiteurs (+attractivité).
  • Intervention : Expulse les visiteurs qui jettent des déchets ou embêtent les animaux.
  • Protection : Capture les animaux échappés (avec filet ou tranquillisant).
  • Dissuasion : Sa simple présence réduit la probabilité d'actes de vandalisme dans un rayon donné.

3. Icone

  • Représentation : Écusson ou Casquette de police.
  • Couleur dominante : Bleu marine et Jaune.

4. Interactions

  • Recrutement : Menu "Employés", coût en pièces.
  • Ordre : Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité.
  • Licenciement : Possible via le menu employé.

5. Annexes Techniques

Données (JSON)

{
  "employee_id": "security_05",
  "type": "agent_securite",
  "name": "Sgt. Pepper",
  "created_at": "timestamp",
  "salary": 40,
  "hire_cost": 400,
  "state": "enum (PATROL, CHASE, REST, INTERACT)",
  "position": { "x": 12.5, "y": 14.0 },
  "target_position": { "x": 20, "y": 10 },
  "stats": {
    "intimidation": 10,
    "speed": 1.1,
    "stamina": 100
  },
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}

Règles Métier

  • Rayon d'action : 5 cases autour de lui.
  • Fatigue : Doit se reposer au Staff Room toutes les 4h in-game.
  • Priorité : Animal échappé > Vandalism > Déchets > Patrouille.

Algorithme de Comportement (FSM)

def update_security_agent(agent, world):
    if agent.state == "REST":
        agent.stamina += 5
        if agent.stamina >= 100:
            agent.state = "PATROL"
        return

    # Scan des menaces
    threat = scan_for_threats(agent.position, radius=10)
    
    if threat:
        agent.state = "CHASE"
        agent.target = threat.position
        move_towards(agent, threat.position, agent.speed * 1.5) # Course
        if distance(agent, threat) < 1:
            neutralize(threat)
    else:
        agent.state = "PATROL"
        patrol_randomly(agent)

6. Annexes UX/UI

  • Visuel Carte : Personnage en uniforme bleu.
  • Animation :
    • Marche : Calme, mains dans le dos.
    • Course : Rapide, sifflet à la bouche.
    • Action : Sort un carnet (amende) ou un filet (animal).
  • Feedback : Les visiteurs s'écartent sur son passage.
  • Vue Isométrique : Sprite 8 directions pour des déplacements fluides.

Affichage contextuel (modules)

Lagent de sécurité sert de personnage contextuel lors des incidents dordre/sécurité.

Déclencheurs (exemples)

Event Condition Effet UI personnage
VANDALISM_ALERT / VANDALISM_DETECTED menace détectée bulle “Incident” + CTA “Envoyer sécurité”
ESCAPE_ALERT / ESCAPE_DETECTED évasion détectée bulle “Évasion” + CTA focus zone
ZONE_BLOCKED zone bloquée message explicite + explication détour

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é “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
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