Files
builazoo/docs/specs/avatar_joueur.md
2026-03-05 03:39:33 +01:00

521 lines
15 KiB
Markdown
Raw Permalink 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.
# Avatar Joueur
## 1. Définition
Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personnalisable (genre, apparence, vêtements) et s'affiche en permanence dans un coin de l'écran (généralement en haut à gauche ou à droite, à définir selon l'UI). Il sert d'identité visuelle pour le profil du joueur et est visible par les autres joueurs lors des visites ou classements.
## 2. Fonctions
* **Personnalisation :** Permet au joueur de choisir le genre (Homme/Femme) et d'équiper des skins (chapeaux, vêtements, accessoires).
* **Identité :** Associé au pseudonyme du joueur et à son niveau.
* **Feedback Visuel :** Peut réagir aux événements du zoo (sourire si tout va bien, inquiet si problème).
* **Social :** S'affiche sur la carte du monde à côté du zoo du joueur.
* **NPC Directeur :** Une version miniature de l'avatar se promène physiquement dans le zoo pour inspecter les enclos.
## 3. Icone
* **Représentation :** Tête de l'avatar actuel dans un cadre circulaire ou carré.
* **Couleur dominante :** Dépend des skins équipés.
## 4. Interactions
* **Click :** Ouvre le menu de profil du joueur et l'inventaire de skins.
* **Survol :** Affiche le niveau actuel et le titre du joueur (ex: "Directeur Débutant").
* **Level Up :** Animation spéciale lorsque le joueur gagne un niveau.
## 5. Annexes Techniques
### Données (JSON)
```json
{
"avatar_id": "player_12345",
"gender": "female", // "male" | "female"
"level": 12,
"experience": 4500,
"next_level_xp": 5000,
"title": "Expert Zoologist",
"equipped_skins": {
"head": "skin_hat_safari",
"body": "skin_shirt_ranger",
"accessory": "skin_glasses_sun"
},
"unlocked_titles": ["Beginner", "Novice", "Expert"],
"mood_state": "happy" // "happy" | "neutral" | "worried"
}
```
### Règles Métier
* Le choix du genre est gratuit et modifiable.
* Les skins doivent être débloqués ou achetés avant d'être équipés.
* L'avatar est persistant entre les sessions.
## 6. Annexes UX/UI
* **Emplacement :** Coin supérieur (gauche ou droite) de l'interface principale (HUD).
* **Style :** Cartoon / Isométrique cohérent avec le reste du jeu.
* **Feedback :** Animation légère (clignement des yeux, mouvement de tête).
* **Vue Isométrique :** Le "Directeur" (NPC) a un pathfinding aléatoire mais priorise les zones à problèmes (animaux malades, déchets).
# 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 |
|---|---|
| Entité | Avatar du joueur (HUD) + “Directeur” (NPC miniature) |
| Rôle | Identité visuelle (pseudo/niveau/titre), personnalisation par skins, feedback détat global du zoo. |
| Visibilité | Toujours visible dans le HUD ; visible sur carte monde et potentiellement en visite/classements. |
| Vue | Isométrique 2.5D (NPC), sprite 4 directions, hitbox base-sprite pour sélection NPC. |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Personnaliser | Action joueur | inventaire skins, genre | `equipped_skins` | Équiper uniquement skins possédés ; genre modifiable | Event `AVATAR_EQUIP`, `AVATAR_GENDER_SET` |
| Afficher identité | HUD render | pseudo, level, title | UI avatar | Toujours présent ; tooltip au hover | Event `HUD_AVATAR_RENDER` |
| Réagir état zoo | Tick / événements | incidents, survie, réputation | `mood_state` + anim | Mapping déterministe (pas de “best effort”) | Event `AVATAR_MOOD_CHANGED` |
| Level-up | XP gain | xp, seuil | level+1 | Animation + textes | Event `PLAYER_LEVEL_UP` |
| NPC Directeur | Tick IA | heatmap incidents | déplacement | Priorise zones critiques, respecte chemins | Event `DIRECTOR_NPC_MOVE` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Portrait tête (cadre rond/carré) |
| Couleur dominante | Dépend skins équipés |
| Variantes | `avatar_frame_round.png`, `avatar_frame_square.png` |
| États | Badge niveau, badge humeur (🙂/😟) via icônes, pas demoji dans UI final (icônes). |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Ouvrir profil | Action | - | Clic avatar HUD | ouvre panneau profil | - |
| Ouvrir inventaire skins | Action | - | Profil → onglet Skins | liste + preview | `NO_SKIN_OWNED` (info) |
| Équiper skin | Action | skin possédé | Clic skin → “Équiper” | update `equipped_skins` | `SKIN_LOCKED` |
| Changer genre | Action | - | Profil → genre | update `gender` | - |
| Inspecter NPC | Consultation | NPC visible | Clic base sprite NPC | mini panel | - |
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `avatar_id` | string/uuid | `player_12345` | DB | unique |
| `gender` | enum | `male|female` | DB | modifiable |
| `level` | int | 12 | DB | monotone |
| `experience` | int | 4500 | DB | 0..∞ |
| `next_level_xp` | int | 5000 | config | recalcul |
| `title` | string | `Expert Zoologist` | DB | liste débloquée |
| `equipped_skins.head/body/accessory` | string | `skin_hat_safari` | DB | doit être possédé |
| `unlocked_titles` | string[] | - | DB | append-only |
| `mood_state` | enum | `happy|neutral|worried` | runtime | mapping événements |
| `director_npc` | object | - | runtime | si feature active |
| `grid` | object | `{x,y}` | runtime | NPC |
| `iso_x/iso_y` | int | - | rendu | NPC |
| `z_index` | int | - | rendu | NPC |
| `hitbox` | enum | `base_sprite` | rendu | NPC |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Genre | male/female | enum | choix initial |
| Niveau | 1 | level | départ |
| Mood | neutral | enum | départ |
| Slots skins | 3 | slots | head/body/accessory |
| NPC directeur | actif | bool | si feature |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| XP | 0 | 0..∞ | progression |
| Prestige (titre) | 0 | 0..∞ | cosmétiques |
| Incidents vus (NPC) | 0 | 0..∞ | debug IA |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Création | création compte | pseudo | avatar | persisté |
| Session | login | state | render | HUD constant |
| Level-up | XP seuil | xp | level+1 | animation |
| Disparition | suppression compte | - | supprimé | - |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Compte créé | true | est | avatar créé |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Compte supprimé | true | est | supprimé |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Skins équipés | Oui | persiste |
| Titres | Oui | persiste |
| Mood | Non | recalcul à louverture session |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet | Notes |
|---|---|---|
| Canicule | mood plus “worried” | si incidents chaleur |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| Chemins | NPC préfère | pathing |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Notes |
|---|---|---|
| Hiver | tenue “hiver” (si skin) | visuel option |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Notes |
|---|---|---|
| Nuit | NPC plus lent / rentre | zoo fermé |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet | Condition |
|---|---|---|
| Mood “happy” | aucun direct | UI seulement |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Mort animal | mood worried | événement mort |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| - | aucun | avatar ne consomme pas |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Effet | Condition |
|---|---|---|
| Avatar soigné (skins VIP) | perception + | cosmétique |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| NPC inspecte | stress +/- | si sapproche |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Skins rares | valeur compte + | cosmétique |
### 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 |
|---|---|---|
| - | aucun | - |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Achat skins | 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 | avatar indirect |
##### 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 |
|---|---|---|---|
| `PLAYER_LEVEL_UP` | xp seuil | level | anim |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `DIRECTOR_NPC_MOVE` | tick | déplacement |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `AVATAR_MOOD_CHANGED` | incidents | expression |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `SHOW_PLAYER_AVATAR` | visite/classement | portrait |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|---|
| `VISITOR_SEE_OWNER` | proximité NPC | réaction |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|---|
| `AVATAR_EQUIP` | equip | update |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 0 | avatar base | 3 slots |
| 2 | 0 | titres | badges |
| 3 | 1000 | emotes | mood FX |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `computeMoodState` | incidents/survie | mood_state | mapping |
| `renderAvatarHud` | avatar | DOM | - |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `SKIN_LOCKED` | Warning | "Skin non débloqué." | equip fail |
| `PLAYER_LEVEL_UP` | Info | "Niveau supérieur !" | level up |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Accéder skins | personnaliser | navigation | clic avatar → onglet skins direct |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| HUD avatar | portrait + badge | hover |
| Panel skins | grille + preview | equip |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| HUD | coin sup | fixe |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| Inventaire skins | items | cf. `inventaire_skins.md` |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir profil | clic | panel |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_PROFILE` | clic avatar | panel |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `ui_profile_loop.mp3` | panel | loop | discret |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `ui_open.mp3` | open | faible |
| `equip_click.mp3` | equip | faible |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `avatar_portrait.png` | HUD | - |
| `director_sprite_[dir].png` | NPC | 4 dirs |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `icon_gender_male.png` | switch |
| `icon_gender_female.png` | switch |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `level_up.webm` | level up | 1.0s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| blink | idle | loop |
| smile/frown | mood change | 0.6s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `avatar_frame` | #FFFFFF | cadre |
| `avatar_badge` | #FFD700 | niveau |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `profile.open` | Profil | Profile |
| `skins.open` | Skins | Skins |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Avatar HUD | cercle | accessible |
| Boutons onglets | pills | lisible |