**Motivations:** - Aligner toute la documentation technique avec la nouvelle direction artistique isométrique (Réf IMG_20260303_170253). - Faciliter l'implémentation en ajoutant les contraintes techniques liées à la 2.5D (Z-index, Sprites 4 directions). **Root causes:** - Besoin de cohérence visuelle et technique sur l'ensemble du projet. **Correctifs:** - N/A **Evolutions:** - Ajout systématique de la section "Direction Artistique & Vue" dans `Annexes UX/UI` de tous les fichiers. - Enrichissement des modèles JSON avec coordonnées isométriques (`iso_x`, `iso_y`, `z_index`). - Précision des interactions (clic, survol) adaptées à la grille losange. - Conservation stricte de la structure existante (aucun titre supprimé). **Pages affectées:** - docs/specs/*
189 lines
6.6 KiB
Markdown
189 lines
6.6 KiB
Markdown
# Spécifications : Achat et Upgrade (Générique)
|
|
|
|
## Mécanique
|
|
- **Coût** : Payé en Pièces (ou Unités de Recherche pour la Carte du Monde).
|
|
- **Progression** : 7 Niveaux pour la plupart des éléments.
|
|
- **Formule de Coût** : `Coût_Niveau_N = Coût_Base * Multiplicateur^(N-1)`.
|
|
|
|
## Validation
|
|
- L'achat est instantané si les fonds sont disponibles.
|
|
- L'effet est immédiat (pas de temps de construction, sauf si spécifié autrement).
|
|
|
|
# Annexes Techniques
|
|
|
|
## 1. Données et États
|
|
### Modèle de Données (JSON)
|
|
**Transaction** :
|
|
```json
|
|
{
|
|
"id": "uuid",
|
|
"type": "BUY/UPGRADE",
|
|
"item_type": "string",
|
|
"item_id": "uuid",
|
|
"cost": "int",
|
|
"currency": "coins",
|
|
"status": "enum (SUCCESS, FAILED)",
|
|
"failure_reason": "string (optional)",
|
|
"timestamp": "date",
|
|
"iso_x": "integer",
|
|
"iso_y": "integer",
|
|
"z_index": "integer"
|
|
}
|
|
```
|
|
|
|
### Caractéristiques Initiales
|
|
**Solde Joueur** : Voir `joueur.md`.
|
|
|
|
### Scores Initiaux
|
|
**Dépenses Totales** : 0.
|
|
|
|
## 2. Cycles de Vie et Apparition
|
|
### Conditions d'Apparition
|
|
**Menu Achat** : Accessible via le HUD.
|
|
|
|
### Conditions de Disparition
|
|
**Fermeture Menu**.
|
|
|
|
### Hérédité
|
|
**Historique** : Les transactions sont loggées pour les stats.
|
|
|
|
## 3. Impacts Environnementaux
|
|
### Impact Température
|
|
**Isolation** : Les bâtiments de haut niveau résistent mieux aux coûts énergétiques (Chauffage/Clim -10% par niveau).
|
|
|
|
### Impact Milieu (Biome)
|
|
**Adaptation** : Construire sur un biome "difficile" (Toundra, Désert) coûte +20% à l'achat initial (frais de fondations).
|
|
|
|
### Impact Saisons
|
|
**Soldes** : Certains items moins chers en Hiver (-15% sur les chauffages).
|
|
**Surcharge** : En Été, les stands de glaces coûtent +10% à l'achat (demande forte).
|
|
|
|
### Impact Heure / Jour-Nuit
|
|
**Tarif de Nuit** : Les travaux (Upgrades) lancés la nuit (22h-06h) sont 5% moins chers (main d'œuvre nocturne).
|
|
|
|
## 4. Impacts Biologiques et Sociaux
|
|
### Impact Reproduction
|
|
**Couveuses** : L'achat d'upgrades "Confort" pour les enclos augmente la fertilité de +2%.
|
|
|
|
### Impact Mort
|
|
**Sécurité** : Les clôtures de haut niveau réduisent le risque de fuite et d'accident mortel de 99%.
|
|
|
|
### Impact Nourriture
|
|
**Stockage** : Les upgrades de "Réserve" permettent d'acheter la nourriture en gros (-5% prix unitaire).
|
|
|
|
### Impact Attractivité (Visiteurs/Animaux)
|
|
**Nouveauté** : Chaque nouvel achat génère un boost temporaire d'attractivité ("C'est tout neuf !" +10% pendant 2 jours).
|
|
|
|
### Impact Valeur
|
|
**Inflation** : Les prix augmentent légèrement si le joueur est très riche (équilibrage dynamique).
|
|
**Revente** : Un bâtiment peut être revendu pour 50% de son coût total (base + upgrades).
|
|
|
|
## 5. Impacts Logistiques et Économiques
|
|
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
|
|
**Livraison** : Instantanée pour les bâtiments, temps de trajet pour les animaux.
|
|
**Construction** : Les gros bâtiments (Laboratoire, Centre Recherche) prennent 24h in-game à être opérationnels.
|
|
|
|
### Dépenses (Boutiques/Visiteurs)
|
|
**Investissement** : Dépense principale du joueur.
|
|
**Maintenance** : Chaque niveau d'upgrade augmente les frais d'entretien quotidiens de +5%.
|
|
|
|
### Trajet Visiteurs
|
|
**Obstacle** : Un bâtiment en construction bloque le passage, forçant les visiteurs à faire un détour.
|
|
|
|
## 6. Événements
|
|
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
|
|
* **Promo** : Offre limitée dans le temps (-20%).
|
|
|
|
## 7. Progression
|
|
### Tableau des Upgrades
|
|
| Niveau | Multiplicateur Coût | Effet Général | Apparence |
|
|
| :--- | :--- | :--- | :--- |
|
|
| 1 | x1.0 | Fonctionnalité de base | Standard |
|
|
| 2 | x1.5 | +10% Efficacité | +Détails |
|
|
| 3 | x2.2 | +25% Efficacité | +Couleurs |
|
|
| 4 | x3.3 | +45% Efficacité | +Éclairage |
|
|
| 5 | x5.0 | +70% Efficacité | +Enseigne |
|
|
| 6 | x7.5 | +100% Efficacité | +Moderne |
|
|
| 7 | x11.0 | +150% Efficacité | Futuriste (Or/Platine) |
|
|
|
|
## 8. Logique et Interfaces
|
|
### Pseudo-code Impacts
|
|
```javascript
|
|
function processPurchase(player, item):
|
|
# Vérification pré-requis (ex: niveau joueur)
|
|
if player.level < item.required_level:
|
|
emitEvent("BUY_FAIL", "Niveau joueur insuffisant")
|
|
return
|
|
|
|
# Vérification espace (si applicable)
|
|
if item.is_physical and not map.hasSpace(item.size):
|
|
emitEvent("BUY_FAIL", "Pas de place")
|
|
return
|
|
|
|
if player.coins >= item.cost:
|
|
player.coins -= item.cost
|
|
player.inventory.add(item)
|
|
emitEvent("BUY_SUCCESS")
|
|
logTransaction(player, item, "SUCCESS")
|
|
else:
|
|
emitEvent("BUY_FAIL", "Fonds insuffisants")
|
|
logTransaction(player, item, "FAILED")
|
|
```
|
|
|
|
### Messages d'Infos / Alerte
|
|
| ID | Niveau | Message |
|
|
| :--- | :--- | :--- |
|
|
| `FUNDS_LOW` | Alerte | "Pas assez de pièces !" |
|
|
| `LEVEL_LOW` | Alerte | "Niveau X requis pour acheter ceci." |
|
|
| `NO_SPACE` | Alerte | "Impossible de construire ici." |
|
|
|
|
# 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)
|
|
### Interface d'Achat (Consultation)
|
|
**Description UX** : Le joueur ouvre le menu de construction ou d'upgrade.
|
|
**Description UI** : Grille d'éléments achetables. Prix affiché clairement. Grisé si trop cher.
|
|
**Emplacement** : HUD Bas.
|
|
**Intégration** : Menu déroulant ou fixe.
|
|
**Navigation** : Clic Catégorie -> Liste Objets.
|
|
**Événements** : `OPEN_SHOP_MENU`.
|
|
|
|
#### Assets
|
|
- **Musiques** : Jingle "Caisse Enregistreuse" (court).
|
|
- **Sons** : `ui_hover.mp3`.
|
|
- **Graphiques** : Icônes Bâtiments.
|
|
- **Images** : Sprites des bâtiments dans le menu (2D isométrique).
|
|
- **Vidéos** : Mini-clip "Construction en cours" (optionnel).
|
|
- **Animations** : Bouton rebondit au survol.
|
|
- **Couleurs** : Fond sombre, Texte clair.
|
|
- **Textes** : Prix, Nom.
|
|
- **Formes** : Cartes carrées avec coins arrondis.
|
|
|
|
### Confirmation Achat (Action)
|
|
**Description UX** : Le joueur clique pour acheter.
|
|
**Description UI** : Feedback immédiat (son + animation pièces déduites).
|
|
**Emplacement** : HUD.
|
|
**Intégration** : Immédiat.
|
|
**Navigation** : Clic Achat.
|
|
**Événements** : `BUY_ITEM`.
|
|
|
|
#### Assets
|
|
- **Musiques** : Jingle "Succès" (trompettes légères).
|
|
- **Sons** : `buy_success.mp3`.
|
|
- **Graphiques** : Particules de pièces d'or.
|
|
- **Images** : Icône "Vendu" tamponnée.
|
|
- **Vidéos** : Transition de fermeture de menu (wipe).
|
|
- **Animations** : Compteur pièces descend.
|
|
- **Couleurs** : Rouge (déduction).
|
|
- **Textes** : "-500".
|
|
- **Formes** : Effet d'onde de choc circulaire au clic.
|