Files
builazoo/docs/specs/inventaire_skins.md
2026-03-05 04:01:29 +01:00

532 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Inventaire Skins
## 1. Définition
Interface de gestion permettant au joueur de visualiser, trier et équiper les éléments cosmétiques (skins) acquis pour son avatar ou son zoo. Il gère les pièces de skins unitairement.
## 2. Fonctions
* **Stockage :** Centralise tous les skins (têtes, corps, accessoires, décors).
* **Équipement :** Permet d'appliquer un skin à l'avatar ou de sélectionner un skin par défaut pour les bâtiments.
* **Visualisation :** Affiche les items possédés et ceux manquants (grisés).
## 3. Icone
* **Représentation :** Coffre ouvert ou Cintre.
* **Couleur dominante :** Marron (cuir) et Or.
## 4. Interactions
* **Ouverture :** Depuis le menu profil ou la boutique.
* **Filtrage :** Par catégorie (Chapeaux, T-shirts, Zoo), par thème (Jungle, Espace) ou par rareté.
* **Sélection :** Clic sur un item pour voir les détails et le bouton "Équiper".
## 5. Annexes Techniques
### Données (JSON)
```json
{
"inventory_id": "inv_skins_player_123",
"items": [
{
"item_id": "skin_hat_01",
"acquired_date": "2026-03-01",
"is_equipped": true
},
{
"item_id": "skin_shirt_05",
"acquired_date": "2026-03-02",
"is_equipped": false
}
],
"capacity": "unlimited" // Ou valeur numérique si limite
}
```
### Règles Métier
* L'inventaire sépare les skins d'avatar des skins de zoo.
* Impossible de vendre ou supprimer un skin (sauf si fonctionnalité de recyclage prévue).
* Mise à jour en temps réel lors d'un achat ou d'un gain.
## 6. Annexes UX/UI
* **Grille :** Affichage des items sous forme de grille scrollable.
* **Paper Doll :** Prévisualisation de l'avatar au centre ou sur le côté avec les équipements actuels.
* **Drag & Drop :** (Optionnel) Glisser un item sur la prévisualisation pour l'équiper.
# 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.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Inventaire “Skins” : vue de possession + équipement de cosmétiques (avatar et zoo). |
| Rôle | Donner un accès rapide à léquipement, au filtrage, et à la prévisualisation sans étapes inutiles. |
| Portée | UI profil/boutique ; impact avatar, bâtiments, décorations. |
| Contrainte | Pas de cache/mémorisation : état “équipé” lu comme source de vérité ; pas danalytics ; aucune suppression/vente implicite. |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Ouvrir inventaire | menu | `player_id` | page/grille | affiche items possédés + grisés | Event `OPEN_SKIN_INVENTORY` |
| Filtrer | UI | catégorie/thème/rareté | liste filtrée | filtres combinables | Event `FILTER_SKINS` |
| Trier | UI | critère | liste triée | stable | Event `SORT_SKINS` |
| Prévisualiser | clic item | `item_id` | preview | paper doll / rendu zoo | Event `PREVIEW_SKIN` |
| Équiper | clic “Équiper” | `item_id`, slot | `is_equipped=true` | un item équipé par slot | Event `EQUIP_SKIN` |
| Déséquiper | clic “Retirer” | slot | `is_equipped=false` | revient au skin de base explicite | Event `UNEQUIP_SKIN` |
| Synchroniser après achat | achat | receipt | inventaire maj | immédiat, sans cache | Event `SKIN_ACQUIRED` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Cintre / coffre |
| Couleur dominante | Marron + or |
| Variantes | `icon_skin_hanger.png`, `icon_skin_chest.png` |
| États | normal, selected, disabled (non possédé) |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Ouvrir | Navigation | - | profil → skins | grille | - |
| Équiper item | Action | possédé | clic item → équiper | appliqué | `SKIN_NOT_OWNED` |
| Prévisualiser | Consultation | - | clic item | preview | - |
| Filtrer | Consultation | - | toggles | liste | - |
| Drag & drop | Action | option active | drag → drop | équipe | `DROP_INVALID` |
## Personnage contextuel (événements & interaction)
Le module “Inventaire Skins” affiche le **joueur actif** via son avatar (voir `avatar_joueur.md`) comme personnage contextuel.
### Affichage
Lavatar saffiche lorsque :
- le module est **actionné** (ouverture inventaire, sélection dun item, équipement/déséquipement) ;
- un **événement** lié aux skins survient (acquisition, équipement réussi/échoué).
### Déclencheurs (exemples)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `OPEN_SKIN_INVENTORY` | ouverture | avatar/paper doll visible, cohérent avec léquipement courant |
| `PREVIEW_SKIN` | clic item | lavatar adopte la prévisualisation (paper doll) |
| `EQUIP_SKIN` / `UNEQUIP_SKIN` | action | feedback visuel sur lavatar + message |
| `SKIN_ACQUIRED` | achat/gain | bulle “Nouveau skin” + CTA “Équiper” |
### Skins & thèmes
Le module applique `theme.md` et léquipement de `inventaire_skins.md` sur lavatar, sans inférer silencieusement un skin “par défaut”.
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `inventory_id` | string | `inv_skins_<player_id>` | DB | stable |
| `items[].item_id` | string | `skin_hat_01` | DB | id unique |
| `items[].acquired_at` | timestamp | - | DB | UTC |
| `items[].is_equipped` | boolean | true | DB | par slot |
| `items[].slot` | string | `HAT` | DB | enum |
| `items[].theme` | string | `JUNGLE` | config | enum |
| `items[].rarity` | string | `RARE` | config | enum |
| `capacity` | string \| int | `unlimited` | config | pas de limite par défaut |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Capacité | illimitée | - | règle existante |
| Slots avatar | 6 | count | ex: hat, top, bottom, shoes, accessory, back |
| Slots zoo | 8 | count | ex: sol, clôture, portes, UI, etc. |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Skins possédés | 0 | 0..∞ | collection |
| Skins équipés | 0 | 0..slots | rendu |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Acquisition | achat/gain | item_id | inventaire +1 | pas de doublon |
| Équipement | action | slot | is_equipped | exclusivité slot |
| Déséquipement | action | slot | base | base explicite |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Achat skin | true | est | item ajouté |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| - | - | - | pas de suppression |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Inventaire | Oui | persiste compte |
| Équipement | Oui | persiste par profil |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet | Notes |
|---|---|---|
| - | aucun | cosmétique |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| - | aucun | - |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Notes |
|---|---|---|
| Saison active | skins saisonniers visibles | gating |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Notes |
|---|---|---|
| - | aucun | - |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| - | aucun | - |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Skins zoo | + | zoo | esthétique |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| - | - | - |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Collection | + | complétude |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Section dupliquée | 0 | - | conservée |
#### Dépenses (Nurseries) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `OPEN_SKIN_INVENTORY` | menu | - | UI |
| `EQUIP_SKIN` | clic | item_id, slot | équipé |
| `UNEQUIP_SKIN` | clic | slot | base |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `FILTER_SKINS` | toggle | UI |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 0 | inventaire dispo | - |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `equipSkin` | item, slot | state | exclusif slot |
| `filterSkins` | list, filters | list | combinable |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `SKIN_NOT_OWNED` | Warning | "Skin non possédé." | équiper |
| `SKIN_EQUIPPED` | Info | "Skin équipé." | succès |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Équiper avatar | personnaliser | navigation | paper doll + bouton direct |
| Équiper zoo | thème | sélection | filtres |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Grille | items | owned/missing |
| Paper doll | preview | slot highlight |
| Bouton équiper | CTA | enabled/disabled |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Profil | onglet skins | - |
| Boutique | lien | - |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `skin.md` | definition item | ids cohérents |
| `avatar_joueur.md` | rendu avatar | slots |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir | profil → skins | grille |
| Équiper | item → CTA | appliqué |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_SKIN_INVENTORY` | menu | UI |
| `CLICK_EQUIP` | CTA | équipe |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `skins_inventory_loop.mp3` | inventaire | loop | neutre |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `ui_equip.mp3` | équiper | bas |
| `ui_unequip.mp3` | retirer | bas |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `paper_doll_frame.png` | preview | scalable |
| `skin_item_tile.png` | tuile | grille |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `skin_missing_overlay.png` | grisé |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `equip_fx.webm` | feedback | 0.6s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| glow item | hover | 0.2s |
| bounce CTA | success | 0.3s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `skins_gold` | #D4AF37 | rareté |
| `skins_brown` | #6D4C41 | fond |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `skins.title` | Skins | Skins |
| `skins.equip` | Équiper | Equip |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Tuiles | rectangles arrondis | lisibles |