Intégration des spécifications Leo : Isométrique, Staff, Cosmétiques
**Motivations:** - Intégrer les nouvelles fonctionnalités demandées par Leo (vue isométrique, gestion du personnel, personnalisation avatar/zoo). - Enrichir le gameplay avec des mécaniques de fusion d'enclos et de passes saisonniers. **Root causes:** - Demande d'évolution majeure du Game Design (fichier `docs/leo.md`). **Correctifs:** - N/A **Evolutions:** - Ajout de 19 nouveaux fichiers de spécifications (Staff, Skins, Enclos, Avatar, etc.). - Mise à jour de 5 fichiers existants pour supporter la vue isométrique et les nouvelles interactions. - Définition du système de passes temporaires et statut VIP. - Spécification des employés achetables avec pièces. **Pages affectées:** - docs/specs/*
This commit is contained in:
42
docs/specs/affiche_enclos.md
Normal file
42
docs/specs/affiche_enclos.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Affiche Enclos
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce animale qui y réside. Il apparaît automatiquement lorsqu'un enclos est créé et se positionne sur une section horizontale visible de la barrière.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Information :** Indique aux visiteurs (et au joueur) quel animal se trouve ici.
|
||||||
|
* **Éducation :** Augmente légèrement le score d'éducation du zoo.
|
||||||
|
* **Esthétique :** Habille les clôtures et rend le zoo plus réaliste.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Panneau rectangulaire avec une photo d'animal.
|
||||||
|
* **Couleur dominante :** Bois et Blanc.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Clic :** Ouvre la fiche encyclopédique de l'animal ("Zoopédia").
|
||||||
|
* **Personnalisation :** (Optionnel) Changer le style du cadre ou l'image.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"sign_id": "sign_lion_01",
|
||||||
|
"parent_enclosure_id": "enclosure_lions_01",
|
||||||
|
"position": {"x": 10, "y": 11, "face": "south"}, // Position sur la grille et orientation
|
||||||
|
"animal_info": {
|
||||||
|
"name": "Lion d'Afrique",
|
||||||
|
"scientific_name": "Panthera leo",
|
||||||
|
"conservation_status": "VU" // Vulnerable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Placement Auto :** Le jeu détermine la meilleure position (côté sud ou est généralement, face au chemin le plus proche).
|
||||||
|
* **Unicité :** Une seule affiche par enclos fusionné (ou une tous les X cases de périmètre).
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel :** Petit panneau en bois avec une image miniature de l'animal.
|
||||||
|
* **Lisibilité :** Doit être visible sans cacher les animaux derrière.
|
||||||
|
* **Zoom :** Devient plus détaillé ou affiche une bulle d'info au survol de la souris.
|
||||||
43
docs/specs/agent_securite.md
Normal file
43
docs/specs/agent_securite.md
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# Agent de Sécurité
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les visiteurs indisciplinés, prévient le vandalisme et peut intervenir en cas d'évasion d'animal (si fonctionnalité présente). Achetable avec des pièces.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Surveillance :** Patrouille dans les allées pour rassurer les visiteurs (+attractivité).
|
||||||
|
* **Intervention :** Expulse les visiteurs qui jettent des déchets ou embêtent les animaux.
|
||||||
|
* **Protection :** Capture les animaux échappés (avec filet ou tranquillisant).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Écusson ou Casquette de police.
|
||||||
|
* **Couleur dominante :** Bleu marine et Jaune.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
|
* **Ordre :** Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "security_05",
|
||||||
|
"type": "agent_securite",
|
||||||
|
"name": "Sgt. Pepper",
|
||||||
|
"salary": 40,
|
||||||
|
"hire_cost": 400,
|
||||||
|
"stats": {
|
||||||
|
"intimidation": 10, // Efficacité contre vandales
|
||||||
|
"speed": 1.1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* La présence d'agents réduit le taux de "mécontentement" des visiteurs dû à la foule ou aux déchets.
|
||||||
|
* Nécessaire pour débloquer certains animaux dangereux.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel Carte :** Personnage en uniforme bleu.
|
||||||
|
* **Animation :** Siffle ou fait des grands gestes.
|
||||||
|
* **Feedback :** Les visiteurs s'écartent sur son passage.
|
||||||
@@ -5,6 +5,7 @@ Entité biologique principale du jeu.
|
|||||||
|
|
||||||
## Propriétés
|
## Propriétés
|
||||||
- **Type/Espèce** : Défini par le loot (75 animaux possibles).
|
- **Type/Espèce** : Défini par le loot (75 animaux possibles).
|
||||||
|
- **Affichage** : Apparaît "en petit" dans l'enclos fusionné.
|
||||||
- **Génétique** :
|
- **Génétique** :
|
||||||
- **Couleur** : 15 variations.
|
- **Couleur** : 15 variations.
|
||||||
- **Rareté** : 5 niveaux (pondération Fibonacci).
|
- **Rareté** : 5 niveaux (pondération Fibonacci).
|
||||||
@@ -15,6 +16,7 @@ Entité biologique principale du jeu.
|
|||||||
- **Nourriture** : Consommation périodique.
|
- **Nourriture** : Consommation périodique.
|
||||||
- **Environnement** : Adéquation Biome/Température.
|
- **Environnement** : Adéquation Biome/Température.
|
||||||
- **Social** : Besoin de congénères (reproduction) ou de solitude (selon espèce).
|
- **Social** : Besoin de congénères (reproduction) ou de solitude (selon espèce).
|
||||||
|
- **Enrichissement** : Besoin d'un objet spécial dans l'enclos (ex: Arbre à singe).
|
||||||
|
|
||||||
## Mort
|
## Mort
|
||||||
Causes possibles : Faim, Froid/Chaud, Solitude, Maladie, Vieillesse (si implémenté), Attaque (si implémenté).
|
Causes possibles : Faim, Froid/Chaud, Solitude, Maladie, Vieillesse (si implémenté), Attaque (si implémenté).
|
||||||
|
|||||||
44
docs/specs/artiste.md
Normal file
44
docs/specs/artiste.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Artiste
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Employé dédié au divertissement des visiteurs. Il réalise des spectacles de rue, joue de la musique ou peint, augmentant ainsi le bonheur des visiteurs et leur temps de séjour dans le zoo. Achetable avec des pièces.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Divertissement :** Crée une zone d'attractivité temporaire autour de lui.
|
||||||
|
* **Bonheur :** Augmente la jauge de bonheur des visiteurs à proximité.
|
||||||
|
* **Dons :** Peut générer de petits revenus supplémentaires (pourboires).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Masque de théâtre ou Notes de musique.
|
||||||
|
* **Couleur dominante :** Rose et Violet.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
|
* **Placement :** Peut être assigné à une "scène" ou un point de passage stratégique.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "artist_03",
|
||||||
|
"type": "artiste",
|
||||||
|
"subtype": "musician", // "clown", "painter", "juggler"
|
||||||
|
"name": "Melody",
|
||||||
|
"salary": 45,
|
||||||
|
"hire_cost": 450,
|
||||||
|
"stats": {
|
||||||
|
"charisma": 15,
|
||||||
|
"radius": 3 // Rayon d'effet
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* L'efficacité diminue si l'artiste reste trop longtemps au même endroit (besoin de rotation ou de pause).
|
||||||
|
* Attire les foules, ce qui peut créer des bouchons (à gérer avec les chemins).
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel Carte :** Personnage coloré, jonglant ou jouant d'un instrument.
|
||||||
|
* **Effet :** Notes de musique ou étoiles flottant autour de lui.
|
||||||
|
* **Son :** Musique d'ambiance locale quand on zoome dessus.
|
||||||
49
docs/specs/avatar_joueur.md
Normal file
49
docs/specs/avatar_joueur.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
## 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").
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"avatar_id": "player_12345",
|
||||||
|
"gender": "female", // "male" | "female"
|
||||||
|
"equipped_skins": {
|
||||||
|
"head": "skin_hat_safari",
|
||||||
|
"body": "skin_shirt_ranger",
|
||||||
|
"accessory": "skin_glasses_sun"
|
||||||
|
},
|
||||||
|
"display_position": {
|
||||||
|
"x": 10,
|
||||||
|
"y": 10,
|
||||||
|
"anchor": "top-left"
|
||||||
|
},
|
||||||
|
"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).
|
||||||
39
docs/specs/banderole_accueil.md
Normal file
39
docs/specs/banderole_accueil.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Banderole Accueil
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Élément visuel marquant l'entrée principale du zoo. C'est une grande enseigne suspendue entre deux poteaux en bois (ou autre matériau selon le thème), affichant le nom du zoo choisi par le joueur.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Identité :** Affiche fièrement le nom du parc ("Zoo de Léo", "Safari Park", etc.).
|
||||||
|
* **Accueil :** Premier élément visible par les visiteurs (et le joueur).
|
||||||
|
* **Personnalisation :** Le texte est modifiable à tout moment (ou presque).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Arche avec un panneau.
|
||||||
|
* **Couleur dominante :** Bois et Texte coloré.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Création :** Lors de la première partie, une pop-up demande le nom du zoo.
|
||||||
|
* **Modification :** Clic sur la banderole pour ouvrir l'éditeur de nom (peut coûter des pièces ou être gratuit).
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"banner_id": "main_entrance_banner",
|
||||||
|
"text": "Mon Super Zoo",
|
||||||
|
"font_style": "default", // "comic", "serif", "safari"
|
||||||
|
"material": "wood", // "stone", "metal" (skins possibles)
|
||||||
|
"position": {"x": 15, "y": 0} // Entrée du zoo
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Longueur Max :** Le nom est limité en caractères (ex: 20 chars) pour tenir sur l'affichage.
|
||||||
|
* **Filtre :** Interdiction des mots offensants (profanity filter).
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel :** Modèle 3D/Iso d'une arche en bois rustique avec une planche suspendue par des cordes.
|
||||||
|
* **Animation :** La planche peut se balancer légèrement au vent.
|
||||||
|
* **Texte :** Police lisible et "fun", intégrée à la texture du panneau.
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
# Spécifications : Carte du Zoo
|
# Spécifications : Carte du Zoo
|
||||||
|
|
||||||
## Définition
|
## Définition
|
||||||
La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux.
|
La carte du zoo est l'espace principal de gestion du joueur. Elle prend tout l'espace de l'écran sous la barre supérieure (HUD) et permet de zoomer/dézoomer.
|
||||||
|
|
||||||
## Structure
|
## Structure
|
||||||
- **Grille** : Composée de cases individuelles.
|
- **Vue** : Isométrique (2.5D).
|
||||||
|
- **Grille** : Composée de cases individuelles fusionnables (pour les enclos).
|
||||||
- **Biomes** : Divisée en tiers de largeur :
|
- **Biomes** : Divisée en tiers de largeur :
|
||||||
- Gauche : Prairie
|
- Gauche : Prairie
|
||||||
- Milieu : Océan
|
- Milieu : Océan
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
Bâtiment produisant des points de science/recherche.
|
Bâtiment produisant des points de science/recherche.
|
||||||
|
|
||||||
## Fonctionnalités
|
## Fonctionnalités
|
||||||
- **Production** : Génère des unités de recherche périodiquement.
|
- **Production** : Génère des unités de recherche périodiquement grâce aux chercheurs assignés (Max 3).
|
||||||
|
- **Distinction** : Ne pas confondre avec le Laboratoire (qui gère la génétique et les bébés). Le Centre de Recherche produit du savoir (Science).
|
||||||
- **Déblocage** : Permet de payer l'agrandissement de la carte du monde.
|
- **Déblocage** : Permet de payer l'agrandissement de la carte du monde.
|
||||||
- **Visibilité** : Donne accès aux niveaux d'animaux/bébés supérieurs dans les autres zoos (débloque la vue sur les offres rares).
|
- **Visibilité** : Donne accès aux niveaux d'animaux/bébés supérieurs dans les autres zoos (débloque la vue sur les offres rares).
|
||||||
|
|
||||||
@@ -22,6 +23,7 @@ Bâtiment produisant des points de science/recherche.
|
|||||||
"id": "uuid",
|
"id": "uuid",
|
||||||
"type": "research_center",
|
"type": "research_center",
|
||||||
"level": "integer (1-7)",
|
"level": "integer (1-7)",
|
||||||
|
"assigned_researchers": ["uuid", "uuid", "uuid"], // Max 3
|
||||||
"stats": {
|
"stats": {
|
||||||
"points_generated": "integer",
|
"points_generated": "integer",
|
||||||
"last_collection": "timestamp"
|
"last_collection": "timestamp"
|
||||||
|
|||||||
48
docs/specs/chemin.md
Normal file
48
docs/specs/chemin.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Chemin
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Voie de circulation pour les visiteurs à l'intérieur du zoo. Les chemins relient l'entrée aux enclos et aux bâtiments de service. Ils sont améliorables (Terre -> Gravier -> Pavés -> Marbre, etc.), ce qui influence la vitesse de déplacement et l'attractivité du parc.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Circulation :** Guide le flux des visiteurs (pathfinding).
|
||||||
|
* **Vitesse :** Les visiteurs marchent plus vite sur des chemins de meilleure qualité.
|
||||||
|
* **Attractivité :** Un beau chemin (pavé, décoré) augmente la note globale du zoo.
|
||||||
|
* **Canalisation :** Les visiteurs préfèrent rester sur les chemins plutôt que de marcher dans l'herbe (si l'herbe est accessible).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Route sinueuse ou Pavé.
|
||||||
|
* **Couleur dominante :** Gris et Beige.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Construction :** Outil "Route" -> Sélection du type -> Tracer sur la grille.
|
||||||
|
* **Upgrade :** Clic sur une portion de chemin -> Bouton "Améliorer" (coût en pièces).
|
||||||
|
* **Destruction :** Outil Bulldozer.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"path_id": "path_segment_10_12",
|
||||||
|
"type": "gravel", // "dirt", "paved", "marble"
|
||||||
|
"coordinates": {"x": 10, "y": 12},
|
||||||
|
"stats": {
|
||||||
|
"speed_modifier": 1.2, // x1.2 vitesse de marche
|
||||||
|
"attractiveness_bonus": 2
|
||||||
|
},
|
||||||
|
"cost_per_tile": 10
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Connexion :** Les chemins adjacents se connectent visuellement (textures dynamiques).
|
||||||
|
* **Accessibilité :** Les bâtiments doivent être reliés à un chemin pour être fonctionnels.
|
||||||
|
* **Coût :** L'amélioration coûte des pièces par case.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Textures :**
|
||||||
|
* Terre : Marron, irrégulier, poussière.
|
||||||
|
* Gravier : Gris clair, petits cailloux, bruit de pas "crunchy".
|
||||||
|
* Pavés : Motif régulier, propre, bruit de pas "clac".
|
||||||
|
* Marbre/Luxe : Blanc, brillant, très rapide.
|
||||||
|
* **Feedback :** Les visiteurs ont une animation de marche plus rapide sur les bons chemins.
|
||||||
45
docs/specs/chercheur.md
Normal file
45
docs/specs/chercheur.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Chercheur
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Employé travaillant dans le Centre de Recherche pour générer des points de science (ou débloquer des technologies). Il est distinct du personnel de laboratoire (qui s'occupe de la génétique/bébés). Achetable avec des pièces.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Recherche :** Génère passivement des points de recherche.
|
||||||
|
* **Découverte :** Accélère le déblocage de nouveaux animaux, bâtiments ou améliorations.
|
||||||
|
* **Collaboration :** Travaille plus efficacement en équipe (bonus de synergie).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Microscope ou Atome.
|
||||||
|
* **Couleur dominante :** Bleu ciel et Blanc.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
|
* **Assignation :** Doit être assigné à un Centre de Recherche (max 3 par centre).
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "researcher_01",
|
||||||
|
"type": "chercheur",
|
||||||
|
"name": "Dr. Curie",
|
||||||
|
"salary": 60,
|
||||||
|
"hire_cost": 600,
|
||||||
|
"assigned_building": "research_center_01",
|
||||||
|
"stats": {
|
||||||
|
"intelligence": 10, // Points de recherche par cycle
|
||||||
|
"specialty": "genetics" // Bonus dans un domaine
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Limite :** Maximum 3 chercheurs par bâtiment "Centre de Recherche".
|
||||||
|
* Ne peut pas travailler sans bâtiment assigné.
|
||||||
|
* Le coût de salaire est élevé.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel Carte :** Visible à travers les fenêtres du Centre de Recherche ou entrant/sortant.
|
||||||
|
* **Interface Bâtiment :** Slots d'employés (0/3) dans le menu du Centre de Recherche.
|
||||||
|
* **Feedback :** Bulles de science (fioles, atomes) s'élevant du bâtiment quand ils travaillent.
|
||||||
51
docs/specs/enclos.md
Normal file
51
docs/specs/enclos.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Enclos
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'enclos est constitué de cases de terrain modifiées pour répondre aux besoins des animaux (biome, végétation, eau). Une caractéristique clé est la fusion automatique des cases adjacentes contenant le même animal pour former un grand enclos unique.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Hébergement :** Lieu de vie des animaux.
|
||||||
|
* **Fusion (Merge) :** Si deux cases "Enclos [Animal X]" sont posées côte à côte, les barrières internes disparaissent pour créer un espace commun.
|
||||||
|
* **Visibilité :** Permet aux visiteurs d'observer les animaux (augmente l'attractivité).
|
||||||
|
* **Sécurité :** Empêche les animaux de s'enfuir (si entretenu).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Barrière en bois ou Grillage.
|
||||||
|
* **Couleur dominante :** Marron et Vert.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Construction :** Outil "Enclos" -> Sélection de l'animal -> Clic sur la carte (glisser pour zone).
|
||||||
|
* **Gestion :** Clic sur n'importe quelle case de l'enclos fusionné ouvre le menu global de cet enclos.
|
||||||
|
* **Modification :** Ajouter/Retirer des cases, changer le type de barrière.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"enclosure_id": "enclosure_lions_01",
|
||||||
|
"animal_type": "lion",
|
||||||
|
"cells": [
|
||||||
|
{"x": 10, "y": 10},
|
||||||
|
{"x": 10, "y": 11},
|
||||||
|
{"x": 11, "y": 10},
|
||||||
|
{"x": 11, "y": 11}
|
||||||
|
],
|
||||||
|
"area": 4,
|
||||||
|
"capacity": 6, // Capacité totale calculée (ex: 1.5 animaux par case)
|
||||||
|
"current_population": 3,
|
||||||
|
"cleanliness": 85,
|
||||||
|
"fence_health": 100
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Adjacence :** La fusion se fait horizontalement et verticalement (pas en diagonale seule).
|
||||||
|
* **Cohérence :** Impossible de fusionner deux enclos d'espèces différentes (message d'erreur ou création de deux enclos séparés par une barrière).
|
||||||
|
* **Taille Minimum :** Certains animaux nécessitent un enclos de X cases minimum pour être heureux.
|
||||||
|
* **Affichage Animal :** Les animaux apparaissent "en petit" à l'intérieur de l'enclos, se déplaçant librement dans l'espace fusionné.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel Barrières :** Génération procédurale des barrières uniquement sur le pourtour de l'ensemble des cases fusionnées (algorithme de "blob" ou "marching squares").
|
||||||
|
* **Affiche :** Une affiche descriptive de l'animal est placée automatiquement sur une portion horizontale de la clôture (voir `affiche_enclos.md`).
|
||||||
|
* **Isométrique :** Les barrières doivent avoir une hauteur et une profondeur en vue isométrique.
|
||||||
50
docs/specs/inventaire_skins.md
Normal file
50
docs/specs/inventaire_skins.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# 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.
|
||||||
51
docs/specs/menu_achats.md
Normal file
51
docs/specs/menu_achats.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Menu Achats
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Interface centralisée dédiée aux transactions utilisant la monnaie premium (pièces du zoo) ou standard, regroupant les employés, la nourriture spéciale, les skins et les améliorations. C'est le "hub" économique du joueur.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Catalogue :** Présente tous les articles achetables de manière organisée.
|
||||||
|
* **Transaction :** Gère la validation des achats et le débit des ressources.
|
||||||
|
* **Offres :** Peut afficher des promotions ou des packs (bundles).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Caisse enregistreuse ou Panier d'achat.
|
||||||
|
* **Couleur dominante :** Vert (billet) et Or (pièce).
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Accès :** Bouton principal dans la barre d'interface (HUD).
|
||||||
|
* **Navigation :** Onglets par catégorie (Animaux, Enclos, Employés, Déco, Spécial).
|
||||||
|
* **Achat Rapide :** Possibilité d'acheter en quantité (x1, x10).
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"shop_categories": [
|
||||||
|
{
|
||||||
|
"id": "employees",
|
||||||
|
"label": "Personnel",
|
||||||
|
"items": ["healer_01", "feeder_01", "security_01"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "consumables",
|
||||||
|
"label": "Nourriture Spéciale",
|
||||||
|
"items": ["food_boost_lion", "food_boost_monkey"]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"currency_balance": {
|
||||||
|
"coins": 1500,
|
||||||
|
"gems": 50
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Déblocage :** Certains articles ne sont visibles qu'à partir d'un certain niveau de zoo.
|
||||||
|
* **Stock :** Certains items peuvent être en quantité limitée (ex: offres du jour).
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Design :** Fenêtre modale propre, avec de grandes icônes et des prix clairs.
|
||||||
|
* **Feedback Achat :** Animation de pièces qui volent vers le compteur total lors de la dépense.
|
||||||
|
* **Confirmation :** Pop-up de confirmation pour les achats coûteux (> 1000 pièces).
|
||||||
44
docs/specs/nourisseur.md
Normal file
44
docs/specs/nourisseur.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Nourisseur
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les mangeoires vides et s'assure que les animaux n'ont pas faim. Achetable avec des pièces.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Remplissage :** Détecte les mangeoires vides et va les remplir.
|
||||||
|
* **Qualité :** Peut (avec amélioration) fournir une nourriture de meilleure qualité (+santé).
|
||||||
|
* **Automatisation :** Évite au joueur de devoir cliquer manuellement pour nourrir (si mécanique manuelle existe).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Seau ou Sac de graines.
|
||||||
|
* **Couleur dominante :** Marron et Orange.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
|
* **Gestion :** Définir des priorités (ex: nourrir les bébés en premier).
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "feeder_02",
|
||||||
|
"type": "nourisseur",
|
||||||
|
"name": "Bob",
|
||||||
|
"salary": 30,
|
||||||
|
"hire_cost": 300,
|
||||||
|
"stats": {
|
||||||
|
"capacity": 50, // Quantité de nourriture transportable
|
||||||
|
"speed": 1.2
|
||||||
|
},
|
||||||
|
"current_task": "moving_to_enclosure_12"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Les animaux affamés perdent de la santé et du bonheur.
|
||||||
|
* Le nourisseur doit retourner au stock (bâtiment de service) pour se ravitailler.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel Carte :** Personnage avec une brouette ou un sac sur le dos.
|
||||||
|
* **Animation :** Verse de la nourriture dans l'auge.
|
||||||
|
* **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé.
|
||||||
45
docs/specs/nourriture_speciale.md
Normal file
45
docs/specs/nourriture_speciale.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Nourriture Spéciale
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Consommable premium achetable avec des pièces, offrant un boost temporaire aux statistiques d'un animal ou d'un groupe d'animaux. Contrairement à la nourriture de base (foin, viande standard), celle-ci est une friandise ou un complément alimentaire de haute qualité. Chaque animal a une nourriture préférée.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Boost :** Augmente temporairement la santé, le bonheur ou la fertilité (reproduction).
|
||||||
|
* **Soin rapide :** Peut aider à rétablir un animal affaibli plus vite.
|
||||||
|
* **Affinité :** Renforce le lien avec le joueur (si mécanique de "tamagotchi" existe).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Steak doré, Pomme brillante ou Poisson argenté.
|
||||||
|
* **Couleur dominante :** Or et Rouge.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Achat :** Menu contextuel de l'animal ou boutique.
|
||||||
|
* **Utilisation :** Drag & drop sur l'animal ou sélection dans le menu de nourriture.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"food_id": "special_meat_premium",
|
||||||
|
"name": "Steak de Kobe",
|
||||||
|
"target_animal": "lion", // ou catégorie "carnivore"
|
||||||
|
"cost": 50, // Pièces
|
||||||
|
"duration_seconds": 3600, // 1 heure
|
||||||
|
"effects": {
|
||||||
|
"happiness_boost": 50,
|
||||||
|
"health_regen": 5,
|
||||||
|
"reproduction_chance": 1.5 // x1.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Préférence :** Donner la "mauvaise" nourriture spéciale (ex: salade à un lion) est impossible ou sans effet (gaspillage).
|
||||||
|
* **Durée Limitée :** L'effet est un buff temporaire visible par une icône de statut.
|
||||||
|
* **Cooldown :** Impossible de gaver l'animal (temps d'attente entre deux friandises).
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Particules :** Effet scintillant autour de l'animal pendant la durée du boost.
|
||||||
|
* **Icône de Buff :** Petite icône (éclair, cœur) à côté de la barre de vie de l'animal.
|
||||||
|
* **Son :** Bruit de mastication joyeux.
|
||||||
40
docs/specs/objet_enclos.md
Normal file
40
docs/specs/objet_enclos.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Objet Enclos
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Élément d'enrichissement spécifique à chaque espèce animale, placé à l'intérieur de l'enclos pour améliorer le bien-être et stimuler les comportements naturels. Chaque animal possède son objet unique (ex: Arbre à singe, Grattoir à ours, Rocher chauffant pour lézards).
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Bien-être :** Augmente significativement le bonheur des animaux.
|
||||||
|
* **Animation :** Déclenche des animations uniques (le singe grimpe, l'ours se frotte, etc.).
|
||||||
|
* **Attractivité :** Les visiteurs adorent voir les animaux interagir avec ces objets.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Ballon de jeu ou Tronc d'arbre.
|
||||||
|
* **Couleur dominante :** Variable selon l'objet.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Achat/Placement :** Via le menu de l'enclos ou la boutique (onglet "Enrichissement").
|
||||||
|
* **Interaction Animal :** L'animal s'y rend périodiquement pour jouer ou se reposer.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"object_id": "enrichment_monkey_tree",
|
||||||
|
"name": "Arbre à Singe",
|
||||||
|
"compatible_animals": ["chimpanzee", "lemur"],
|
||||||
|
"cost": 150,
|
||||||
|
"durability": 100, // Peut s'user avec le temps
|
||||||
|
"bonus_happiness": 20
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Exclusivité :** Un objet conçu pour les lions ne fonctionnera pas (ou mal) pour les pingouins.
|
||||||
|
* **Espace :** Occupe de la place dans l'enclos (réduit la surface "libre" mais augmente la qualité).
|
||||||
|
* **Limite :** 1 objet spécial par X cases d'enclos pour éviter la surcharge.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel 3D/Iso :** Modèle détaillé correspondant au thème de l'animal.
|
||||||
|
* **Feedback :** Cœurs ou étoiles émanant de l'animal lorsqu'il utilise l'objet.
|
||||||
55
docs/specs/passe_saisonnier.md
Normal file
55
docs/specs/passe_saisonnier.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Passe Saisonnier
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Système de progression temporaire (durée typique : 1 mois) offrant des récompenses exclusives (skins, thèmes, monnaie) aux joueurs qui accomplissent des tâches ou jouent régulièrement. Chaque passe est centré sur une thématique spécifique (Jungle, Tigre, Ours, Lapin, Lion, Chat, Dinosaure, Panthère, Jaguar, Crocodile 3D, etc.).
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Engagement :** Incite à jouer quotidiennement pour progresser dans le passe.
|
||||||
|
* **Monétisation :** Peut comporter une voie gratuite et une voie payante (Premium) offrant plus de récompenses.
|
||||||
|
* **Distribution de Contenu :** Moyen principal d'obtenir les nouveaux thèmes et skins.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Ticket doré ou Calendrier avec une étoile.
|
||||||
|
* **Couleur dominante :** Or et Rouge.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Consultation :** Bouton dédié sur l'écran principal affichant la barre de progression du passe.
|
||||||
|
* **Réclamation :** Clic sur les paliers débloqués pour récupérer les récompenses.
|
||||||
|
* **Achat :** Bouton pour acheter la version Premium du passe.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"pass_id": "pass_season_05",
|
||||||
|
"theme_name": "Tigre",
|
||||||
|
"duration_days": 30,
|
||||||
|
"start_date": "2026-05-01",
|
||||||
|
"end_date": "2026-05-31",
|
||||||
|
"levels": [
|
||||||
|
{
|
||||||
|
"level": 1,
|
||||||
|
"xp_required": 100,
|
||||||
|
"reward_free": "coins_100",
|
||||||
|
"reward_premium": "skin_tiger_hat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"level": 30,
|
||||||
|
"xp_required": 3000,
|
||||||
|
"reward_free": "skin_tiger_statue",
|
||||||
|
"reward_premium": "theme_tiger_full"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Les récompenses cosmétiques (thèmes) sont temporaires pour les joueurs non-VIP (liées à la durée du passe).
|
||||||
|
* Les joueurs VIP débloquent la conservation permanente des thèmes acquis via le passe.
|
||||||
|
* La progression se fait via l'XP gagnée en jeu ou des quêtes spécifiques au passe.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Barre de Progression :** Visuel clair de l'avancement (jauge remplie).
|
||||||
|
* **Paliers :** Icônes des récompenses cliquables pour détails.
|
||||||
|
* **Mise en avant :** Pop-up à la connexion annonçant le nouveau passe ou les récompenses non réclamées.
|
||||||
43
docs/specs/pont.md
Normal file
43
docs/specs/pont.md
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# Pont
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Structure permettant aux visiteurs (et au personnel) de traverser les étendues d'eau. Il fonctionne techniquement comme un chemin mais peut être construit sur les cases de type "Eau".
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Traversée :** Rend accessible des zones isolées par des rivières ou des lacs.
|
||||||
|
* **Esthétique :** Ajoute du relief et de la variété au paysage du zoo.
|
||||||
|
* **Observation :** Peut servir de point de vue pour observer des animaux aquatiques (si enclos aquatique en dessous).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Pont en arc ou Planches sur l'eau.
|
||||||
|
* **Couleur dominante :** Bois et Bleu.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Construction :** Outil "Pont" (ou outil "Chemin" détectant l'eau automatiquement).
|
||||||
|
* **Coût :** Plus cher qu'un chemin standard de même niveau.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"bridge_id": "bridge_segment_15_15",
|
||||||
|
"type": "wooden_bridge",
|
||||||
|
"coordinates": {"x": 15, "y": 15},
|
||||||
|
"water_underneath": true,
|
||||||
|
"stats": {
|
||||||
|
"speed_modifier": 1.0,
|
||||||
|
"attractiveness_bonus": 5
|
||||||
|
},
|
||||||
|
"cost_per_tile": 50
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* **Support :** Doit commencer et finir sur la terre ferme (ou se connecter à un autre pont).
|
||||||
|
* **Hauteur :** En vue isométrique, le pont peut être légèrement surélevé par rapport à l'eau.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel :** Planches de bois avec rambardes, piliers plongeant dans l'eau.
|
||||||
|
* **Son :** Bruit de pas sur le bois (creux).
|
||||||
|
* **Reflet :** Reflet du pont dans l'eau (si moteur graphique le permet).
|
||||||
45
docs/specs/skin.md
Normal file
45
docs/specs/skin.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Skin
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Élément cosmétique permettant de modifier l'apparence de l'avatar du joueur ou de certains éléments du zoo (bâtiments, animaux). Les skins sont purement esthétiques et n'influencent pas les statistiques de gameplay (sauf mention contraire rare). Ils s'obtiennent via la boutique, les passes saisonniers ou des événements spéciaux.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Personnalisation :** Permet au joueur de se différencier.
|
||||||
|
* **Collection :** Incite à la progression et à l'achat (monétisation).
|
||||||
|
* **Thématisation :** Renforce l'immersion lors des saisons (ex: skin Noël, Halloween).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** T-shirt plié ou Masque de carnaval.
|
||||||
|
* **Couleur dominante :** Violet (souvent associé à la cosmétique/rare).
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Achat :** Via le menu boutique ou menu skins.
|
||||||
|
* **Équipement :** Via l'inventaire de skins (drag & drop ou clic).
|
||||||
|
* **Visualisation :** Prévisualisation sur l'avatar ou l'objet avant validation.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"skin_id": "skin_hat_pirate",
|
||||||
|
"name": "Chapeau de Pirate",
|
||||||
|
"type": "avatar_head", // "avatar_body", "zoo_building", "animal_texture"
|
||||||
|
"rarity": "rare",
|
||||||
|
"source": "shop", // "pass", "event", "achievement"
|
||||||
|
"price": {
|
||||||
|
"amount": 500,
|
||||||
|
"currency": "coins"
|
||||||
|
},
|
||||||
|
"asset_path": "assets/skins/avatar/head/pirate_hat.png"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Un skin acheté est acquis définitivement (sauf skins liés à un passe temporaire expiré pour les non-VIP).
|
||||||
|
* Certains skins sont exclusifs à un genre d'avatar ou un type de bâtiment.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Inventaire :** Grille d'icônes représentant les skins possédés.
|
||||||
|
* **Rareté :** Bordure de couleur autour de l'icône (Gris=Commun, Vert=Atypique, Bleu=Rare, Violet=Épique, Or=Légendaire).
|
||||||
|
* **Notification :** "Nouveau skin débloqué !" avec animation de coffre ou d'éclat.
|
||||||
47
docs/specs/soigneur.md
Normal file
47
docs/specs/soigneur.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Soigneur
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Employé spécialisé dans la santé des animaux. Il intervient pour prévenir les maladies, soigner les animaux malades et s'assurer de leur bien-être général. Il est achetable avec des pièces du zoo.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Prévention :** Réduit la probabilité d'apparition de maladies dans les enclos assignés ou proches.
|
||||||
|
* **Soin :** Intervient automatiquement sur les animaux malades pour les guérir (durée d'action).
|
||||||
|
* **Bien-être :** Augmente légèrement le score de bien-être des animaux.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Croix verte ou Trousse de secours.
|
||||||
|
* **Couleur dominante :** Blanc et Vert.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Recrutement :** Via le menu "Employés" contre des pièces.
|
||||||
|
* **Assignation :** Peut être assigné à une zone ou un enclos spécifique (drag & drop ou menu contextuel).
|
||||||
|
* **Amélioration :** (Optionnel) Formation pour augmenter l'efficacité.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "healer_01",
|
||||||
|
"type": "soigneur",
|
||||||
|
"name": "Dr. Doolittle",
|
||||||
|
"salary": 50, // Coût par cycle (jour/mois)
|
||||||
|
"hire_cost": 500, // Coût d'achat en pièces
|
||||||
|
"stats": {
|
||||||
|
"speed": 1.0,
|
||||||
|
"efficiency": 0.8,
|
||||||
|
"range": 5 // Rayon d'action en cases
|
||||||
|
},
|
||||||
|
"assigned_zone": null // null = tout le zoo, ou ID de zone
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Un animal malade non soigné peut mourir ou contaminer les autres.
|
||||||
|
* Le soigneur doit se déplacer physiquement (ou virtuellement avec délai) jusqu'à l'enclos.
|
||||||
|
* Le coût de recrutement augmente avec le nombre de soigneurs déjà possédés.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Visuel Carte :** Personnage en blouse blanche avec une mallette.
|
||||||
|
* **Feedback :** Icône de croix verte au-dessus de l'animal soigné.
|
||||||
|
* **Notification :** "Un animal est malade !" (si pas de soigneur dispo) ou "Animal soigné par [Nom]".
|
||||||
@@ -12,7 +12,10 @@
|
|||||||
### Frontend
|
### Frontend
|
||||||
- **Framework** : React ou Vue.js.
|
- **Framework** : React ou Vue.js.
|
||||||
- **État** : Zustand ou Pinia (léger et performant).
|
- **État** : Zustand ou Pinia (léger et performant).
|
||||||
- **Rendu Grille** : Canvas API (via PixiJS ou Konva) si > 100 éléments animés, sinon DOM optimisé (CSS Grid + Transforms).
|
- **Rendu Grille** : Canvas API (via PixiJS ou Konva) pour la **Vue Isométrique**.
|
||||||
|
- Gestion de la profondeur (z-index) pour les bâtiments et animaux.
|
||||||
|
- Système de tuiles (Tilemap) isométriques.
|
||||||
|
- **Optimisation** : Culling (ne pas rendre ce qui est hors écran).
|
||||||
|
|
||||||
### Infrastructure
|
### Infrastructure
|
||||||
- **Cache** : Redis (pour les sessions, les compteurs temps réel et les files d'attente de jobs).
|
- **Cache** : Redis (pour les sessions, les compteurs temps réel et les files d'attente de jobs).
|
||||||
|
|||||||
47
docs/specs/theme.md
Normal file
47
docs/specs/theme.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Thème
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Ensemble cohérent de skins et d'éléments visuels transformant l'ambiance générale du zoo ou de l'interface. Un thème peut inclure des skins pour l'avatar, des textures pour les chemins, des apparences pour les bâtiments et une musique de fond spécifique. Les thèmes sont souvent liés aux passes saisonniers (ex: Jungle, Tigre, Ours, Dinosaures).
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Immersion :** Change l'atmosphère du jeu.
|
||||||
|
* **Récompense :** Objectif principal des passes saisonniers.
|
||||||
|
* **Fidélisation :** Renouvellement visuel régulier pour éviter la lassitude.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Pinceau et palette ou Paysage stylisé.
|
||||||
|
* **Couleur dominante :** Arc-en-ciel ou Variable selon le thème.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Activation :** Via le menu des paramètres ou le menu de personnalisation du zoo.
|
||||||
|
* **Aperçu :** Possibilité de voir le rendu du thème avant de l'appliquer.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"theme_id": "theme_jungle_2026",
|
||||||
|
"name": "Saison de la Jungle",
|
||||||
|
"associated_pass_id": "pass_jungle",
|
||||||
|
"assets": {
|
||||||
|
"background_music": "music_jungle_loop.mp3",
|
||||||
|
"ui_style": "jungle_skin",
|
||||||
|
"default_path_texture": "texture_path_mossy",
|
||||||
|
"zoo_entrance_skin": "entrance_temple"
|
||||||
|
},
|
||||||
|
"active_period": {
|
||||||
|
"start": "2026-06-01",
|
||||||
|
"end": "2026-06-30"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* L'accès à un thème est temporaire (durée du passe, ex: 1 mois) pour les joueurs standards.
|
||||||
|
* **Exception VIP :** Les joueurs VIP conservent l'accès aux thèmes débloqués de manière permanente tant qu'ils conservent leur statut VIP.
|
||||||
|
* Un thème s'applique globalement mais peut être désactivé par le joueur.
|
||||||
|
|
||||||
|
## 6. Annexes UX/UI
|
||||||
|
* **Sélecteur de Thème :** Carrousel ou liste déroulante dans les options graphiques.
|
||||||
|
* **Transition :** Fondu au noir ou effet de "rideau" lors du changement de thème.
|
||||||
42
docs/specs/vip.md
Normal file
42
docs/specs/vip.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# 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.
|
||||||
@@ -4,7 +4,10 @@
|
|||||||
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
|
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
|
||||||
|
|
||||||
## Affichage
|
## Affichage
|
||||||
- **Nom du zoo**
|
- **Nom du zoo** : Sur une banderole d'accueil personnalisable.
|
||||||
|
- **Avatar Joueur** : Visible à côté du nom ou sur la carte du monde.
|
||||||
|
- **Vue** : Isométrique (2.5D).
|
||||||
|
- **Skins** : Le zoo peut avoir des thèmes visuels (Skins de Zoo).
|
||||||
- **Icône** : 🏠
|
- **Icône** : 🏠
|
||||||
- **Slot d'offre** :
|
- **Slot d'offre** :
|
||||||
- Pour les autres zoos : Affiche l'œuf/bébé/animal en vente (Type + Prix).
|
- Pour les autres zoos : Affiche l'œuf/bébé/animal en vente (Type + Prix).
|
||||||
@@ -32,7 +35,12 @@ Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
|
|||||||
"attractiveness": "int",
|
"attractiveness": "int",
|
||||||
"reproduction": "int"
|
"reproduction": "int"
|
||||||
},
|
},
|
||||||
"current_offer": { "animal_id": "uuid", "price": "int" }
|
"current_offer": { "animal_id": "uuid", "price": "int" },
|
||||||
|
"customization": {
|
||||||
|
"banner_text": "Mon Zoo",
|
||||||
|
"active_skin_id": "skin_default",
|
||||||
|
"avatar_visible": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user