**Motivations:** - Make docs/specs implementation-ready without empty sections or placeholders. **Root causes:** - Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording. **Correctifs:** - Replace placeholders with explicit tables, structures, and typed examples. - Align “no cache / no memorization” statements where relevant. **Evolutions:** - Add a features doc entry to track the documentation enrichment effort. **Pages affectées:** - docs/specs/* - docs/features/docs-specs-enrichment.md - docs/leo.md - docs/plan-enrich-docs-specs.md
211 lines
7.2 KiB
Markdown
211 lines
7.2 KiB
Markdown
# Spécifications : Bot (Profil d'Absence)
|
||
|
||
## Définition
|
||
Intelligence Artificielle qui gère un zoo. Peut être un concurrent permanent ou le remplaçant du joueur en cas d'absence.
|
||
|
||
## Profils d'Absence (50 Archétypes)
|
||
Le joueur choisit un profil pour gérer son zoo quand il est hors ligne.
|
||
Sélection hiérarchique : **Famille** > **Spécialisation**.
|
||
|
||
### Familles
|
||
1. **Les Conservateurs** : Priorité survie, achat nourriture, pas d'expansion.
|
||
2. **Les Éleveurs** : Priorité reproduction, optimisation placements.
|
||
3. **Les Commerçants** : Priorité achat/vente, spéculation.
|
||
4. **Les Expansionnistes** : Priorité agrandissement terrain/bâtiments.
|
||
5. **Les Scientifiques** : Priorité recherche et école.
|
||
|
||
## Fonctionnement
|
||
- **Cycle** : Agit à chaque tick serveur ou selon sa fréquence définie.
|
||
- **Ressources** : Utilise les ressources du zoo (pièces) selon les seuils du profil.
|
||
- **Indicateurs** : Visible sur la carte du monde (Pièces, Parcelle).
|
||
|
||
# Annexes Techniques
|
||
|
||
## 1. Données et États
|
||
### Modèle de Données (JSON)
|
||
```json
|
||
{
|
||
"id": "integer",
|
||
"family": "enum",
|
||
"name": "string",
|
||
"logic": {
|
||
"buy_food_threshold": "float (0-1)",
|
||
"sell_animal_threshold": "float (price factor)",
|
||
"expand_map_priority": "int (0-10)",
|
||
"research_priority": "int (0-10)"
|
||
},
|
||
"iso_x": "integer",
|
||
"iso_y": "integer",
|
||
"z_index": "integer"
|
||
}
|
||
```
|
||
|
||
### Caractéristiques Initiales
|
||
| Caractéristique | Valeur Initiale | Type | Description |
|
||
|---|---:|---|---|
|
||
| Fréquence min | 5 | minutes | Intervalle minimal entre actions. |
|
||
| Fréquence max | 60 | minutes | Intervalle maximal (profil lent). |
|
||
| Budget action | 10% | % coins | Part des coins max utilisable par action (plafond anti-ruine). |
|
||
|
||
### Scores Initiaux
|
||
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|
||
|---|---:|---|---|
|
||
| Agressivité marché | 50 | 0-100 | Propension à acheter/vendre. |
|
||
| Prudence survie | 50 | 0-100 | Propension à acheter nourriture/soins. |
|
||
| Priorité expansion | 20 | 0-100 | Propension à agrandir carte/améliorer bâtiments. |
|
||
|
||
## 2. Cycles de Vie et Apparition
|
||
### Conditions d'Apparition
|
||
Activation par joueur (déconnexion) ou Spawn serveur (Bot permanent).
|
||
|
||
### Conditions de Disparition
|
||
Connexion joueur.
|
||
|
||
### Hérédité
|
||
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|
||
|---|---|---:|---|
|
||
| Profil choisi | Paramètres logique | 100% | Non |
|
||
|
||
## 3. Impacts Environnementaux
|
||
### Impact Température
|
||
| Condition | Effet |
|
||
|---|---|
|
||
| Froid/Chaud extrême | Augmente achats régulation/biome | priorité survie + |
|
||
|
||
### Impact Milieu (Biome)
|
||
| Biome | Effet |
|
||
|---|---|
|
||
| Biome défavorable à la majorité | Achats “changement milieu” | priorité survie + |
|
||
|
||
### Impact Saisons
|
||
| Saison | Effet | Modificateur |
|
||
|---|---|---|
|
||
| Printemps | Focus reproduction | priorité éleveur + |
|
||
| Hiver | Focus survie | priorité conservateur + |
|
||
|
||
### Impact Heure / Jour-Nuit
|
||
| Période | Effet |
|
||
|---|---|
|
||
| Nuit | Actions limitées | fréquence + lente |
|
||
|
||
## 4. Impacts Biologiques et Sociaux
|
||
### Impact Reproduction
|
||
| Facteur | Effet sur Taux | Condition |
|
||
|---|---|---|
|
||
| Score survie élevé | Bot tente reproduction | profil éleveur |
|
||
|
||
### Impact Mort
|
||
| Cause | Conséquence | Durée |
|
||
|---|---|---|
|
||
| Série de morts | Bot achète nourriture/soins | 24h |
|
||
|
||
### Impact Nourriture
|
||
| Facteur | Variation | Condition |
|
||
|---|---|---|
|
||
| Stock bas | Achat immédiat | seuil profil |
|
||
|
||
### Impact Attractivité (Visiteurs/Animaux)
|
||
| Action/État | Gain Attractivité | Rayon d'action |
|
||
|---|---:|---:|
|
||
| Placements optimisés | + | zoo du bot |
|
||
|
||
### Impact Valeur
|
||
| Facteur | Variation | Condition |
|
||
|---|---|---|
|
||
| Profil commerçant | Valeur cash + | ventes fréquentes |
|
||
|
||
## 5. Impacts Logistiques et Économiques
|
||
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
|
||
**Fréquence Action** : 1 action toutes les 5 à 60 minutes (selon profil).
|
||
|
||
### Dépenses (Boutiques/Visiteurs)
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| Achats auto nourriture | variable | coins | selon seuil |
|
||
| Achat upgrades | variable | coins | selon priorité |
|
||
|
||
### Trajet Visiteurs
|
||
| Trajet | Règle | Notes |
|
||
|---|---|---|
|
||
| Rapport d’absence → décisions | Script profilé | Le bot ne “se déplace” pas : il calcule des actions sur l’état du zoo et sur le marché. |
|
||
|
||
## 6. Événements
|
||
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
|
||
* **Action Bot** : Achat/Vente automatisé.
|
||
|
||
## 7. Progression
|
||
### Tableau des Upgrades
|
||
| Niveau | Coût | Prérequis | Bonus Débloqué |
|
||
|---|---:|---|---|
|
||
| 1 | 0 | - | Profil basique |
|
||
| 2 | 5000 | Réputation 300 | Stratégies avancées (arbitrage) |
|
||
|
||
## 8. Logique et Interfaces
|
||
### Pseudo-code Impacts
|
||
```
|
||
function runBotLogic(bot, zoo):
|
||
if zoo.foodStock < bot.logic.buy_food_threshold:
|
||
buyFood(zoo)
|
||
return
|
||
|
||
if bot.family == 'BREEDER':
|
||
optimizePairs(zoo)
|
||
|
||
if bot.family == 'TRADER':
|
||
checkMarketArbitrage(zoo)
|
||
```
|
||
|
||
### Messages d'Infos / Alerte
|
||
| ID | Niveau | Message |
|
||
| :--- | :--- | :--- |
|
||
| `BOT_ACTIVE` | Info | "Le mode automatique est activé." |
|
||
|
||
# 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.
|
||
|
||
|
||
## 1. Expérience Utilisateur (UX)
|
||
### Sélection du Profil (Configuration)
|
||
**Description UX** : Le joueur choisit comment son zoo sera géré en son absence.
|
||
**Description UI** : Interface à deux niveaux. 1. Choix Famille (5 grosses cartes illustrées). 2. Choix Spécialisation (Liste déroulante ou grille de sous-profils).
|
||
**Emplacement** : Profil Joueur -> Onglet Absence.
|
||
**Intégration** : Modal dédiée.
|
||
**Navigation** : Clic Famille -> Clic Spécialisation -> Valider.
|
||
**Événements** : `SELECT_BOT_PROFILE`.
|
||
|
||
#### Assets
|
||
- **Musiques** : `ui_bot_family_pick.mp3` (jingle court).
|
||
- **Sons** : `card_flip.mp3`.
|
||
- **Graphiques** : Illustrations des familles (ex: Conservateur avec bouclier, Commerçant avec bourse).
|
||
- **Images** : Portraits Bots.
|
||
- **Vidéos** : `bot_family_cards.webm` (1s loop, optionnel).
|
||
- **Animations** : Flip de carte au choix.
|
||
- **Couleurs** : Code couleur par famille (Vert=Conservateur, Jaune=Commerçant, etc.).
|
||
- **Textes** : Titres et Descriptions courtes.
|
||
- **Formes** : Cartes rectangulaires.
|
||
|
||
### Feedback Activité (Passif)
|
||
**Description UX** : Le joueur revient et voit ce que le bot a fait.
|
||
**Description UI** : Rapport de connexion ("Pendant votre absence, le bot a : Vendu 2 lapins, Acheté 100 nourriture").
|
||
**Emplacement** : Écran de connexion (Popup).
|
||
**Intégration** : Bloquant au démarrage.
|
||
**Navigation** : Lire -> Fermer.
|
||
**Événements** : `SHOW_REPORT`.
|
||
#### Assets
|
||
- **Musiques** : `ui_report_open.mp3` (jingle court).
|
||
- **Sons** : `notification.mp3`.
|
||
- **Graphiques** : Icône Robot.
|
||
- **Images** : `icon_robot.png`, `report_bg.png`.
|
||
- **Vidéos** : `report_scroll.webm` (0.8s loop, optionnel).
|
||
- **Animations** : Apparition slide-in + highlight des lignes importantes.
|
||
- **Couleurs** : Gris/Métal.
|
||
- **Textes** : Liste des actions.
|
||
- **Formes** : Liste à puces.
|