**Motivations:** - Harmoniser la documentation technique pour faciliter le développement. - Garantir l'exhaustivité des données de Game Design pour chaque entité. **Root causes:** - Documentation hétérogène et incomplète. **Correctifs:** - N/A **Evolutions:** - Réécriture complète de 53 fichiers de spécifications selon un modèle strict. - Ajout de données de Game Design (prix, durées, impacts) pour combler les manques. - Ajout systématique des annexes UX/UI. **Pages affectées:** - docs/specs/*
4.8 KiB
Spécifications : Enchère (Générique)
Définition
Mécanisme de vente entre joueurs/bots sur la Carte du Monde.
Fonctionnement
- Mise en vente : Le vendeur place un animal/bébé sur la case Camion/Vente de son zoo. Définit un prix initial.
- Offre : Visible sur la Carte du Monde (slot sous le zoo).
- Enchères : Les acheteurs (joueurs/bots) proposent des prix.
- Validation : Le vendeur accepte une offre ou laisse courir.
- Sécurisation : Une fois l'offre acceptée/validée, un délai de 10 minutes (Sablier) s'enclenche.
- 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)"
}
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
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 : N/A
- Sons :
hover_soft.mp3. - Graphiques : Cadre Offre (Doré si rare).
- Images : Icône Animal.
- Vidéos : N/A
- 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 : N/A
- Sons :
bid_placed.mp3(bruit de marteau). - Graphiques : Icône Marteau.
- Images : Portrait Animal HD.
- Vidéos : N/A
- Animations : Compteur prix qui monte.
- Couleurs : Bouton Vert.
- Textes : "Enchérir".
- Formes : N/A
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 : N/A
Événements : TIMER_START.
Assets
- Musiques : N/A
- Sons :
tick_tock.mp3(ambiance très discrète si focus). - Graphiques : Sablier animé.
- Images : N/A
- Vidéos : N/A
- Animations : Sable qui coule.
- Couleurs : Orange.
- Textes : "Validation : MM:SS".
- Formes : N/A
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 : N/A
- Sons :
sand_shake.mp3. Design ASMR : Bruit de sable qui crisse ou petit choc mat. - Graphiques : Particules de sable.
- Images : N/A
- Vidéos : N/A
- Animations : Secousse.
- Couleurs : Doré.
- Textes : "+1 XP".
- Formes : N/A