**Motivations:** - Make cosmetic/meta specs implementation-ready with the strict required template. **Root causes:** - Specs files were missing the mandatory exact headings/tables required by the new template. **Correctifs:** - Added the exact required headings and detailed tables without deleting existing sections. **Evolutions:** - Clarified VIP/pass/theme gating rules and UX/UI assets contracts. **Pages affectées:** - docs/specs/vip.md - docs/specs/passe_saisonnier.md - docs/specs/skin.md - docs/specs/theme.md
507 lines
15 KiB
Markdown
507 lines
15 KiB
Markdown
# VIP
|
||
|
||
## 1. Définition
|
||
Statut premium pour les joueurs, généralement obtenu par abonnement ou achat in-app. Le statut VIP confère des avantages de confort et de cosmétique, sans déséquilibrer le gameplay compétitif (Pay-to-Fast ou Pay-to-Cool, pas Pay-to-Win).
|
||
|
||
## 2. Fonctions
|
||
* **Conservation des Thèmes :** Avantage majeur permettant de garder définitivement les thèmes et skins des passes saisonniers, même après la fin de la saison.
|
||
* **Bonus Passifs :** Peut inclure des bonus légers d'XP ou de pièces.
|
||
* **Prestige :** Badge ou couleur de pseudo distinctif.
|
||
|
||
## 3. Icone
|
||
* **Représentation :** Couronne ou Diamant.
|
||
* **Couleur dominante :** Or scintillant ou Violet royal.
|
||
|
||
## 4. Interactions
|
||
* **Achat/Abonnement :** Via la boutique ou le menu profil.
|
||
* **Affichage :** Badge visible à côté de l'avatar et du pseudo.
|
||
|
||
## 5. Annexes Techniques
|
||
|
||
### Données (JSON)
|
||
```json
|
||
{
|
||
"status_id": "vip_subscription",
|
||
"is_active": true,
|
||
"expiry_date": "2026-12-31T23:59:59",
|
||
"benefits": {
|
||
"keep_seasonal_themes": true,
|
||
"xp_multiplier": 1.1,
|
||
"daily_coin_bonus": 50
|
||
}
|
||
}
|
||
```
|
||
|
||
### Règles Métier
|
||
* Si le statut VIP expire, le joueur perd l'accès aux thèmes saisonniers passés qu'il avait "sauvegardés", sauf s'il se réabonne (règle à définir : perte définitive ou suspension ? -> Suspension par défaut pour encourager le réabonnement).
|
||
* Le statut VIP s'applique à tout le compte joueur.
|
||
|
||
## 6. Annexes UX/UI
|
||
* **Badge VIP :** Petite icône couronne à côté du pseudo partout dans l'interface.
|
||
* **Interface Boutique :** Section dédiée "Devenir VIP" avec mise en avant des avantages (surtout la conservation des thèmes).
|
||
* **Feedback :** Effet visuel doré lors de la récupération de récompenses.
|
||
|
||
|
||
# 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 | Statut premium (VIP) lié au compte joueur. |
|
||
| Rôle | Déverrouiller des avantages de confort + cosmétiques, notamment la conservation des thèmes/passes tant que VIP actif. |
|
||
| Portée | Compte (tous zoos / toutes sessions). |
|
||
| Contrainte | Pas de mécanisme de cache/mémorisation côté app : l’état VIP est lu comme un état courant (source de vérité). |
|
||
|
||
## Fonctions (tableau détaillé)
|
||
|
||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||
|---|---|---|---|---|---|
|
||
| Activer VIP | achat/abonnement | moyen de paiement, plan | `is_active=true`, `expiry_date` | Activation atomique, idempotente sur transaction | Event `VIP_ACTIVATED` |
|
||
| Expirer VIP | temps | `expiry_date` | `is_active=false` | Expiration automatique au tick serveur / lazy update au login | Event `VIP_EXPIRED` |
|
||
| Conserver thèmes passés | check d’accès contenu | `keep_seasonal_themes` | autorisation | Règle retenue : **suspension** des accès si VIP inactif (pas de perte définitive). | Event `VIP_CONTENT_ACCESS_CHECKED` |
|
||
| Bonus passifs | tick journalier | plan | coins/xp | Bonus plafonnés (anti P2W), visibles dans UI | Event `VIP_DAILY_BONUS_GRANTED` |
|
||
| Badge prestige | render UI | `is_active` | badge | Affiché partout pseudo/avatar | Event `VIP_BADGE_RENDER` |
|
||
|
||
## Icone de base
|
||
|
||
| Élément | Spécification |
|
||
|---|---|
|
||
| Représentation | Couronne / diamant |
|
||
| Couleur dominante | Or / violet |
|
||
| Variantes | `icon_vip_crown.png`, `icon_vip_diamond.png` |
|
||
| États | Badge “actif” (or), “expiré” (gris), “renouvellement” (horloge) |
|
||
|
||
## Interactions (tableau détaillé)
|
||
|
||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||
|---|---|---|---|---|---|
|
||
| Voir offre VIP | Consultation | - | Boutique/Profil → VIP | page détail | - |
|
||
| Acheter VIP | Action | paiement ok | Clic “Devenir VIP” → confirmer | VIP actif | `PAYMENT_FAILED`, `NETWORK_ERROR` |
|
||
| Renouveler | Action | VIP actif ou expiré | “Renouveler” | `expiry_date` prolongée | `PAYMENT_FAILED` |
|
||
| Voir contenu conservé | Consultation | VIP actif | Profil → “Mes thèmes” | liste | `VIP_REQUIRED` |
|
||
| Réactiver après expiration | Action | VIP expiré | “Réactiver” | accès restauré (suspension levée) | `PAYMENT_FAILED` |
|
||
|
||
## Annexes Techniques
|
||
|
||
### 1. Données et États (tableau détaillé)
|
||
|
||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||
|---|---|---|---|---|
|
||
| `status_id` | string | `vip_subscription` | DB | constant |
|
||
| `is_active` | boolean | true | DB | dérivé de `expiry_date` |
|
||
| `expiry_date` | timestamp | `2026-12-31T23:59:59Z` | DB | UTC |
|
||
| `plan_id` | string | `vip_monthly` | DB | enum plans |
|
||
| `benefits.keep_seasonal_themes` | boolean | true | config | gating contenu |
|
||
| `benefits.xp_multiplier` | float | 1.1 | config | cap 1.2 |
|
||
| `benefits.daily_coin_bonus` | int | 50 | config | cap 200 |
|
||
| `timestamps.created_at` | timestamp | - | DB | audit |
|
||
| `timestamps.updated_at` | timestamp | - | DB | audit |
|
||
|
||
#### Caractéristiques Initiales (tableau détaillé)
|
||
|
||
| Caractéristique | Valeur initiale | Unité | Notes |
|
||
|---|---:|---|---|
|
||
| VIP actif | false | bool | par défaut |
|
||
| Multiplicateur XP | 1.0 | coef | sans VIP |
|
||
| Bonus coins/jour | 0 | coins | sans VIP |
|
||
| Conservation thèmes | false | bool | gating |
|
||
|
||
#### Scores Initiaux (tableau détaillé)
|
||
|
||
| Score | Valeur initiale | Plage | Impact |
|
||
|---|---:|---|---|
|
||
| Jours VIP cumulés | 0 | 0..∞ | UI historique (pas d’analytics) |
|
||
| Bonus total distribués | 0 | 0..∞ | transparence UI |
|
||
|
||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||
|
||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||
|---|---|---|---|---|
|
||
| Apparition | création compte | - | VIP inactif | - |
|
||
| Activation | achat | plan | VIP actif | atomicité |
|
||
| Renouvellement | achat | plan | expiry prolongée | monotone |
|
||
| Expiration | temps | date | VIP inactif | suspension contenu |
|
||
|
||
#### Conditions d'Apparition (tableau détaillé)
|
||
|
||
| Condition | Seuil | Opérateur | Résultat |
|
||
|---|---:|---|---|
|
||
| Compte créé | true | est | entrée VIP créée (inactive) |
|
||
|
||
#### Conditions de Disparition (tableau détaillé)
|
||
|
||
| Condition | Seuil | Opérateur | Résultat |
|
||
|---|---:|---|---|
|
||
| Compte supprimé | true | est | VIP supprimé |
|
||
|
||
#### Hérédité (tableau détaillé)
|
||
|
||
| Élément | Hérité | Règle |
|
||
|---|---|---|
|
||
| Historique VIP | Oui | persiste |
|
||
| Contenu “conservé” | Oui | reste possédé mais **gated** si VIP off |
|
||
|
||
### 3. Impacts Environnementaux
|
||
|
||
#### Impact Température (tableau détaillé)
|
||
|
||
| Condition | Effet VIP | Notes |
|
||
|---|---|---|
|
||
| - | aucun | statut méta |
|
||
|
||
#### Impact Milieu (Biome) (tableau détaillé)
|
||
|
||
| Biome | Effet VIP | Notes |
|
||
|---|---|---|
|
||
| - | aucun | - |
|
||
|
||
#### Impact Saisons (tableau détaillé)
|
||
|
||
| Saison | Effet VIP | Notes |
|
||
|---|---|---|
|
||
| Saison active | contenu pass dispo | lié au passe |
|
||
|
||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||
|
||
| Période | Effet VIP | Notes |
|
||
|---|---|---|
|
||
| Jour | bonus journalier | horaire fixe serveur |
|
||
|
||
### 4. Impacts Biologiques et Sociaux
|
||
|
||
#### Impact Reproduction (tableau détaillé)
|
||
|
||
| Facteur | Effet sur taux | Condition |
|
||
|---|---|---|
|
||
| - | aucun | VIP n’affecte pas reproduction |
|
||
|
||
#### 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 |
|
||
|---|---:|---:|---|
|
||
| Thèmes conservés | + (cosmétique) | zoo | impact via esthétique |
|
||
|
||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||
|
||
| Action/État | Effet animaux | Condition |
|
||
|---|---|---|
|
||
| - | aucun direct | - |
|
||
|
||
#### Impact Valeur (tableau détaillé)
|
||
|
||
| Facteur | Variation | Condition |
|
||
|---|---:|---|
|
||
| Prestige VIP | + | classement/présentation |
|
||
|
||
### 5. Impacts Logistiques et Économiques
|
||
|
||
#### Vitesse (Camion) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| - | aucun | - |
|
||
|
||
#### Vitesse (Nurserie) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| - | aucun | - |
|
||
|
||
#### Vitesse (Accueil) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| - | aucun | - |
|
||
|
||
#### Vitesse (Recherche) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| XP multiplier | xp × 1.1 | VIP actif |
|
||
|
||
#### Vitesse (Labo) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| - | aucun | - |
|
||
|
||
#### Vitesse (Visite) (tableau détaillé)
|
||
|
||
| Paramètre | Effet | Condition |
|
||
|---|---|---|
|
||
| Temps visite | + léger | confort (option) |
|
||
|
||
#### Dépenses (Billeterie) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| - | 0 | - | - |
|
||
|
||
#### Dépenses (Boutiques) (tableau détaillé)
|
||
|
||
| Poste | Coût | Unité | Condition |
|
||
|---|---:|---|---|
|
||
| Abonnement VIP | variable | coins/€ | boutique |
|
||
|
||
#### 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 |
|
||
|---|---|---|---|
|
||
| Ville | Zoo | réputation | VIP indirect (via thèmes/esthétique) |
|
||
|
||
##### 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 |
|
||
|---|---|---|---|
|
||
| `VIP_ACTIVATED` | paiement ok | plan_id | active |
|
||
| `VIP_EXPIRED` | date | - | suspend |
|
||
|
||
#### Événements du Carte (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `VIP_BADGE_RENDER` | UI | badge |
|
||
|
||
#### Événements du Zoo (tableau détaillé)
|
||
|
||
| Event | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `VIP_CONTENT_ACCESS_CHECKED` | apply theme | allow/deny |
|
||
|
||
#### É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 |
|
||
|---|---|---|
|
||
| `VIP_DAILY_BONUS_GRANTED` | reset journalier | coins/xp |
|
||
|
||
### 7. Progression
|
||
|
||
#### Tableau des Upgrades (tableau détaillé)
|
||
|
||
| Niveau | Coût | Effet | Débloque |
|
||
|---|---:|---|---|
|
||
| 1 | variable | VIP actif | badge + conservation gating |
|
||
|
||
### 8. Logique et Interfaces
|
||
|
||
#### Pseudo-code Impacts (tableau détaillé)
|
||
|
||
| Fonction | Entrées | Sorties | Notes |
|
||
|---|---|---|---|
|
||
| `isVipActive` | now, expiry_date | bool | source de vérité |
|
||
| `canUseTheme` | vip, theme | allow | suspension si VIP off |
|
||
|
||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||
|
||
| ID | Niveau | Message | Condition |
|
||
|---|---|---|---|
|
||
| `VIP_REQUIRED` | Warning | "VIP requis." | accès contenu gated |
|
||
| `VIP_EXPIRED` | Info | "VIP expiré." | expiration |
|
||
|
||
## Annexes UX/UI
|
||
|
||
### 1. Expérience Utilisateur (UX)
|
||
|
||
#### Description UX (tableau détaillé)
|
||
|
||
| Parcours | But | Friction | Réduction clics |
|
||
|---|---|---|---|
|
||
| Devenir VIP | conserver thèmes | paiement | bouton direct profil + boutique |
|
||
| Réactiver | restaurer accès | paiement | deep-link depuis contenu locké |
|
||
|
||
#### Description UI (tableau détaillé)
|
||
|
||
| Composant | Contenu | États |
|
||
|---|---|---|
|
||
| Page VIP | bénéfices, prix, CTA | active/expired |
|
||
| Badge VIP | couronne | visible partout |
|
||
|
||
#### Emplacement (tableau détaillé)
|
||
|
||
| Zone UI | Position | Notes |
|
||
|---|---|---|
|
||
| Profil | en-tête | badge |
|
||
| Boutique | section VIP | CTA |
|
||
|
||
#### Intégration (tableau détaillé)
|
||
|
||
| Intégration | Contrat | Notes |
|
||
|---|---|---|
|
||
| Skins/thèmes | gating | suspension |
|
||
| Passe saisonnier | conservation | VIP |
|
||
|
||
#### Navigation (tableau détaillé)
|
||
|
||
| Action | Chemin | Résultat |
|
||
|---|---|---|
|
||
| Ouvrir VIP | profil/boutique | page |
|
||
| Acheter | CTA | paiement |
|
||
|
||
#### Événements (tableau détaillé)
|
||
|
||
| Event UI | Déclencheur | Effet |
|
||
|---|---|---|
|
||
| `OPEN_VIP_PAGE` | clic | page |
|
||
| `CLICK_BUY_VIP` | CTA | paiement |
|
||
|
||
#### Assets Skinables
|
||
|
||
##### Musiques (tableau détaillé)
|
||
|
||
| Asset | Usage | Durée | Notes |
|
||
|---|---|---:|---|
|
||
| `vip_page_loop.mp3` | page VIP | loop | discret |
|
||
|
||
##### Sons (tableau détaillé)
|
||
|
||
| Asset | Usage | Volume |
|
||
|---|---|---|
|
||
| `ui_purchase_success.mp3` | achat ok | moyen |
|
||
| `ui_purchase_fail.mp3` | achat fail | moyen |
|
||
|
||
##### Graphiques (tableau détaillé)
|
||
|
||
| Asset | Usage | Contraintes |
|
||
|---|---|---|
|
||
| `vip_badge_crown.png` | badge | scalable |
|
||
| `vip_gold_glow.png` | FX | overlay |
|
||
|
||
##### Images (tableau détaillé)
|
||
|
||
| Asset | Usage |
|
||
|---|---|
|
||
| `vip_banner.png` | hero |
|
||
| `vip_benefit_cards.png` | cartes |
|
||
|
||
##### Vidéos (tableau détaillé)
|
||
|
||
| Asset | Usage | Durée |
|
||
|---|---|---:|
|
||
| `vip_glow.webm` | succès | 1.0s |
|
||
|
||
##### Animations (tableau détaillé)
|
||
|
||
| Animation | Déclencheur | Notes |
|
||
|---|---|---|
|
||
| glow doré | activation | 0.8s |
|
||
| badge pulse | reward | 0.6s |
|
||
|
||
##### Couleurs (tableau détaillé)
|
||
|
||
| Token | Valeur | Usage |
|
||
|---|---|---|
|
||
| `vip_gold` | #D4AF37 | UI |
|
||
| `vip_purple` | #6A1B9A | accent |
|
||
|
||
##### Textes (tableau détaillé)
|
||
|
||
| Clé | FR | EN |
|
||
|---|---|---|
|
||
| `vip.become` | Devenir VIP | Become VIP |
|
||
| `vip.renew` | Renouveler | Renew |
|
||
|
||
##### Formes (tableau détaillé)
|
||
|
||
| Élément | Forme | Notes |
|
||
|---|---|---|
|
||
| Cartes bénéfices | rectangles arrondis | lisibles |
|
||
| Badge | rond | constant |
|