Files
builazoo/docs/specs/enchere_generique.md
Nicolas Cantu 5143a79890 docs: enrich docs/specs and remove placeholders
**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
2026-03-05 03:08:15 +01:00

5.9 KiB

Spécifications : Enchère (Générique)

Définition

Mécanisme de vente entre joueurs/bots sur la Carte du Monde.

Fonctionnement

  1. Mise en vente : Le vendeur place un animal/bébé sur la case Camion/Vente de son zoo. Définit un prix initial.
  2. Offre : Visible sur la Carte du Monde (slot sous le zoo).
  3. Enchères : Les acheteurs (joueurs/bots) proposent des prix.
  4. Validation : Le vendeur accepte une offre ou laisse courir.
  5. Sécurisation : Une fois l'offre acceptée/validée, un délai de 10 minutes (Sablier) s'enclenche.
  6. Finalisation : À la fin du sablier, le transfert de propriété et de fonds est effectué (anti-race condition).

Types

  • Vente de Bébés
  • Vente d'Animaux Adultes

Annexes Techniques

1. Données et États

Modèle de Données (JSON)

{
  "id": "uuid",
  "seller_id": "uuid",
  "animal_ref": "uuid",
  "start_price": "integer",
  "current_bid": "integer",
  "highest_bidder_id": "uuid | null",
  "end_time": "timestamp",
  "status": "enum ('active', 'pending_validation', 'finalizing', 'completed', 'cancelled')",
  "finalization_timer": "timestamp (end)",
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}

Caractéristiques Initiales

Durée par défaut : 24h.

8. Logique et Interfaces

Pseudo-code Impacts

function placeBid(auction, bidder, amount):
  if amount <= auction.current_bid: return Error
  if bidder.coins < amount: return Error

  auction.current_bid = amount
  auction.highest_bidder_id = bidder.id

function finalizeAuction(auction):
  if now < auction.finalization_timer: return

  transferCoins(auction.highest_bidder_id, auction.seller_id, auction.current_bid)
  transferAnimal(auction.seller_id, auction.highest_bidder_id, auction.animal_ref)
  auction.status = 'completed'

Messages d'Infos / Alerte

ID Niveau Message
BID_PLACED Info "Offre placée avec succès."
OUTBID Alerte "Vous avez été surenchéri !"
AUCTION_WON Succès "Vous avez remporté l'enchère ! Livraison en cours."

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)

Consultation des Offres (Consultation)

Description UX : Le joueur survole les zoos sur la carte du monde pour voir les offres. Description UI : Tooltip ou Slot sous le zoo affichant l'icône de l'animal et le prix actuel. Emplacement : Carte Monde. Intégration : Overlay Zoo. Navigation : Survol -> Info. Événements : HOVER_OFFER.

Assets

  • Musiques : ui_market_hover.mp3 (jingle discret optionnel).
  • Sons : hover_soft.mp3.
  • Graphiques : Cadre Offre (Doré si rare).
  • Images : Icône Animal.
  • Vidéos : offer_hover_glow.webm (0.6s loop, optionnel).
  • Animations : Prix qui clignote si nouvelle enchère.
  • Couleurs : Vert (Abordable), Rouge (Trop cher).
  • Textes : "Lapin Rare - 500$".
  • Formes : Rectangle arrondi.

Enchérir (Action)

Description UX : Le joueur clique sur une offre pour ouvrir le détail et placer une enchère. Description UI : Bottom Sheet d'enchère. Infos complètes de l'animal. Champ de saisie "Votre offre" ou boutons rapides (+10, +50, +100). Emplacement : Modal Enchère. Intégration : Modal centrée. Navigation : Clic Offre -> Modal -> Enchérir. Événements : PLACE_BID.

Assets

  • Musiques : ui_market_bid.mp3 (jingle court).
  • Sons : bid_placed.mp3 (bruit de marteau).
  • Graphiques : Icône Marteau.
  • Images : Portrait Animal HD.
  • Vidéos : bid_counter_up.webm (0.8s loop, optionnel).
  • Animations : Compteur prix qui monte.
  • Couleurs : Bouton Vert.
  • Textes : "Enchérir".
  • Formes : Boutons rapides (+10/+50/+100), champ numérique.

Sablier de Validation (Attente)

Description UX : L'enchère est remportée, le transfert est en cours (10 min). Description UI : Icône Sablier sur l'offre et dans le HUD de l'acheteur. Notification Push : "Enchère remportée ! Animal livré." à la fin du timer. Emplacement : Carte Monde & HUD. Intégration : Statut "En cours". Navigation : Clic sur sablier dans HUD → ouvre le détail transaction (temps restant, statut, destination). Événements : TIMER_START.

Assets

  • Musiques : ui_timer_soft.mp3 (optionnel, très discret).
  • Sons : tick_tock.mp3 (ambiance très discrète si focus).
  • Graphiques : Sablier animé.
  • Images : icon_hourglass.png, badge_pending.png.
  • Vidéos : hourglass_flow.webm (1s loop, optionnel).
  • Animations : Sable qui coule.
  • Couleurs : Orange.
  • Textes : "Validation : MM:SS".
  • Formes : Badge rond (HUD), icône sur slot.

Activité "Clic" (Gameplay)

Description UX : Pendant les 10 min, le joueur peut cliquer sur le sablier pour "accélérer" (symboliquement) ou gagner un petit bonus (XP/Pièce) pour patienter. Description UI : Le sablier réagit au clic (secousse). Emplacement : Modal Validation. Intégration : Mini-jeu. Navigation : Clic Sablier. Événements : CLICK_HOURGLASS.

Assets

  • Musiques : ui_click_reward.mp3 (jingle court).
  • Sons : sand_shake.mp3. Design ASMR : Bruit de sable qui crisse ou petit choc mat.
  • Graphiques : Particules de sable.
  • Images : sand_particle.png.
  • Vidéos : hourglass_shake.webm (0.5s non loop, optionnel).
  • Animations : Secousse.
  • Couleurs : Doré.
  • Textes : "+1 XP".
  • Formes : Bouton rond (tap cible), badge sablier (HUD).