**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
220 lines
7.3 KiB
Markdown
220 lines
7.3 KiB
Markdown
# Spécifications : Vente aux Enchères de Bébés
|
||
|
||
## Définition
|
||
Processus de vente spécifique pour les bébés animaux nés dans le zoo.
|
||
|
||
## Spécificités
|
||
- **Forte Valeur** : Les bébés ont souvent une valeur supérieure aux adultes car ils ont tout leur potentiel de vie et de reproduction devant eux.
|
||
- **Fragilité** : Un bébé mis en vente doit être vendu rapidement.
|
||
- **Risque** : Si l'enchère échoue ou dure trop longtemps sans acheteur, le bébé risque de mourir dans le camion ou la zone de vente (faim/froid).
|
||
|
||
## Processus
|
||
1. Sélection du bébé en Nurserie ou sur la grille.
|
||
2. Glisser-déposer vers la zone Camion.
|
||
3. Définition du prix de départ.
|
||
4. Apparition sur la Carte du Monde.
|
||
5. Si vendu : Transfert après délai de 10 min.
|
||
6. Si invendu : Retour nécessaire en Nurserie ou Mort.
|
||
|
||
# Annexes Techniques
|
||
|
||
## 1. Données et États
|
||
### Modèle de Données (JSON)
|
||
```json
|
||
{
|
||
"id": "uuid",
|
||
"seller_id": "uuid",
|
||
"animal_id": "uuid",
|
||
"start_price": "int",
|
||
"current_bid": "int",
|
||
"highest_bidder": "uuid | null",
|
||
"end_time": "timestamp",
|
||
"status": "active | sold | expired",
|
||
"iso_x": "integer",
|
||
"iso_y": "integer",
|
||
"z_index": "integer"
|
||
}
|
||
```
|
||
|
||
### Caractéristiques Initiales
|
||
| Caractéristique | Valeur |
|
||
| :--- | :--- |
|
||
| Durée Enchère | 1h - 24h (au choix) |
|
||
| Délai Validation | 10 min (fixe) |
|
||
|
||
### Scores Initiaux
|
||
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|
||
|---|---:|---|---|
|
||
| Visibilité Listing | 50 | 0-100 | Poids de tri côté marché. |
|
||
| Stress (vente) | 10 | 0-100 | Monte avec le temps ; au-delà de 70, accélère le risque de mort. |
|
||
| Confiance vendeur | 0 | -100 à +100 | Influence la participation des bots (anti-spam). |
|
||
|
||
## 2. Cycles de Vie et Apparition
|
||
### Conditions d'Apparition
|
||
Action joueur.
|
||
|
||
### Conditions de Disparition
|
||
Vente ou Expiration.
|
||
|
||
### Hérédité
|
||
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|
||
|---|---|---:|---|
|
||
| Parents (réels) | Rareté/Couleur | cf. `reproduction.md` | Oui |
|
||
| Vendeur | “Certificat de soin” | 100% | Non |
|
||
|
||
## 3. Impacts Environnementaux
|
||
### Impact Température
|
||
| Plage Température | Effet sur l'entité | Bonus/Malus |
|
||
|---|---|---|
|
||
| < 5°C | Stress +2/min | Risque mort + (si durée > 10 min) |
|
||
| 20°C (Idéal) | Stress -1/min | Stabilise |
|
||
| > 30°C | Stress +2/min | Risque mort + (si durée > 10 min) |
|
||
|
||
### Impact Milieu (Biome)
|
||
| Biome / Contexte | Compatibilité | Bonus/Malus |
|
||
|---|---:|---|
|
||
| Marché (UI) | 100% | Aucun |
|
||
| Transport long | 80% | Fatigue + |
|
||
|
||
### Impact Saisons
|
||
| Saison | Effet | Modificateur |
|
||
|---|---|---|
|
||
| Printemps | Demande bébés + | Bids +10% |
|
||
| Été | Chaleur | Stress +10% |
|
||
| Automne | Neutre | 0% |
|
||
| Hiver | Froid | Stress +10% |
|
||
|
||
### Impact Heure / Jour-Nuit
|
||
| Période | Activité marché | Impact |
|
||
|---|---|---|
|
||
| 18h–22h | Prime time | +15% bids |
|
||
| Nuit | Faible | -20% bids |
|
||
|
||
## 4. Impacts Biologiques et Sociaux
|
||
### Impact Reproduction
|
||
| Facteur | Effet sur Taux | Condition |
|
||
|---|---|---|
|
||
| Bébé rare vendu | +10 réputation | Si `status` devient `sold` puis finalisé |
|
||
|
||
### Impact Mort
|
||
**Risque** : Si `status == expired` et non récupéré sous 1h -> Mort du bébé.
|
||
|
||
### Impact Nourriture
|
||
| Type Nourriture | Gain Santé | Coût | Préférence |
|
||
|---|---:|---:|---:|
|
||
| Lait / soin | Stabilise | inclus | 5 |
|
||
|
||
### Impact Attractivité (Visiteurs/Animaux)
|
||
| Action/État | Gain Attractivité | Rayon d'action |
|
||
|---|---:|---:|
|
||
| Vente bébé rare conclue | +25 | Global |
|
||
| Bébé mort (invendu) | -50 | Global |
|
||
|
||
### Impact Valeur
|
||
**Dépréciation** : Aucune (c'est une enchère).
|
||
|
||
## 5. Impacts Logistiques et Économiques
|
||
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
|
||
| Paramètre | Valeur | Unité | Règle |
|
||
|---|---:|---|---|
|
||
| Délai validation | 10 | min | après acceptation |
|
||
| Fenêtre récupération invendu | 1 | h | sinon mort bébé |
|
||
|
||
### Dépenses (Boutiques/Visiteurs)
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| Taxe marché | 10% | du prix final | prélevée à finalisation |
|
||
| Assurance transport | 5% | du prix final | optionnel |
|
||
|
||
### Trajet Visiteurs
|
||
| Trajet | Condition | Effet | Notes |
|
||
|---|---|---|---|
|
||
| Consultation acheteurs | ouverture marché | tri par visibilité | pas de visiteurs physiques |
|
||
|
||
## 6. Événements
|
||
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
|
||
* **Nouvelle Enchère** : Notification.
|
||
* **Surenchère** : Notification vendeur.
|
||
* **Vente Terminée** : Notification.
|
||
|
||
## 7. Progression
|
||
### Tableau des Upgrades
|
||
| Niveau | Coût | Prérequis | Bonus Débloqué |
|
||
|---|---:|---|---|
|
||
| 1 | 0 | - | Accès enchères bébés |
|
||
| 2 | 1000 | Réputation 200 | Taxe -1% |
|
||
| 3 | 5000 | Réputation 1000 | Visibilité +10 |
|
||
|
||
## 8. Logique et Interfaces
|
||
### Pseudo-code Impacts
|
||
```text
|
||
onAcceptBid(auction, bid):
|
||
auction.status = 'pending_validation'
|
||
auction.pending_until = now + 10min
|
||
|
||
onTick():
|
||
if auction.status == 'pending_validation' and now >= pending_until:
|
||
finalize(auction)
|
||
|
||
finalize(auction):
|
||
transferCoins(bidder, seller, amount - tax)
|
||
scheduleDelivery(truck, bidderZoo)
|
||
auction.status = 'sold'
|
||
```
|
||
|
||
### Messages d'Infos / Alerte
|
||
| ID | Niveau | Message |
|
||
| :--- | :--- | :--- |
|
||
| `AUCTION_SOLD` | Succès | "Bébé vendu !" |
|
||
| `AUCTION_FAIL` | Alerte | "Enchère terminée sans acheteur. Récupérez le bébé !" |
|
||
|
||
# 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)
|
||
### Mise en Vente (Action)
|
||
**Description UX** : Le joueur glisse un bébé depuis la nurserie vers le camion.
|
||
**Description UI** : **Bottom Sheet** de configuration "Vendre ce bébé". Choix du prix de départ et de la durée.
|
||
**Emplacement** : Zoo -> Modal Vente.
|
||
**Intégration** : Formulaire.
|
||
**Navigation** : Drag -> Config -> Valider.
|
||
**Événements** : `CREATE_AUCTION`.
|
||
|
||
#### Assets
|
||
- **Musiques** : `ui_market_open.mp3` (jingle court).
|
||
- **Sons** : `cash_register_open.mp3`.
|
||
- **Graphiques** : Icône Bourse/Pièce.
|
||
- **Images** : Portrait Bébé.
|
||
- **Vidéos** : `auction_sheet_intro.webm` (0.8s non loop, optionnel).
|
||
- **Animations** : Compteur “mise à prix” qui s’incrémente, pulsation du bouton “Valider”.
|
||
- **Couleurs** : Or.
|
||
- **Textes** : "Prix de départ", "Durée".
|
||
- **Formes** : Champs de saisie.
|
||
|
||
### Suivi Vente (Passif)
|
||
**Description UX** : Le joueur voit son offre active sur son propre zoo (Carte Monde) ou dans son menu "Ventes".
|
||
**Description UI** : Liste "Mes Ventes". Compteur d'enchères reçues.
|
||
**Emplacement** : Menu Gestion -> Ventes.
|
||
**Intégration** : Liste.
|
||
**Navigation** : Menu -> Ventes.
|
||
**Événements** : `OPEN_MY_SALES`.
|
||
|
||
#### Assets
|
||
- **Musiques** : `ui_market_list.mp3` (jingle discret optionnel).
|
||
- **Sons** : `notification.mp3` (si offre reçue).
|
||
- **Graphiques** : Icône cloche + badge compteur.
|
||
- **Images** : `icon_hourglass.png`, `icon_bid.png`.
|
||
- **Vidéos** : `bid_badge_pulse.webm` (0.6s loop, optionnel).
|
||
- **Animations** : Badge qui pulse sur nouvelle offre.
|
||
- **Couleurs** : Ambre (#F39C12) en attente validation, Vert (#2ECC71) vendu.
|
||
- **Textes** : "Meilleure offre : X".
|
||
- **Formes** : Pills (badges), cartes liste.
|