Initial commit

**Motivations:**
- Initialisation du versionning git pour le projet

**Root causes:**
- N/A (Nouveau projet)

**Correctifs:**
- N/A

**Evolutions:**
- Structure initiale du projet
- Ajout du .gitignore

**Pages affectées:**
- Tous les fichiers
This commit is contained in:
2026-03-03 22:24:17 +01:00
commit e031c9a1d2
155 changed files with 22334 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
# Spécifications : Accueil des Animaux
## Définition
Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou transferts).
## Fonctionnalités
- **Acclimatation** : Période obligatoire avant de pouvoir placer l'animal sur la grille active.
- **Stockage temporaire** : Évite de devoir placer immédiatement un animal acheté si le terrain n'est pas prêt.
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Réduit le temps d'acclimatation. Améliore le potentiel reproducteur de l'animal entrant.
- **Ratio** : 1 unité couvre 1 animal en cours d'accueil.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "animal_reception",
"level": "integer (1-7)",
"slots": [
{ "animal_id": "uuid", "arrival_time": "timestamp", "ready_time": "timestamp" }
]
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Temps Acclimatation | 10 minutes |
| Capacité | 1 animal |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage.
### Conditions de Disparition
Indestructible.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Zone neutre (T° idéale simulée).
### Impact Milieu (Biome)
Zone neutre.
### Impact Saisons
Protégé.
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Bonus Repro** : Un animal passant par un accueil de haut niveau gagne un bonus temporaire de fertilité (+10% à +50%).
### Impact Mort
Pas de mort possible en zone d'accueil (Stase).
### Impact Nourriture
Nourri automatiquement.
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Réduction Temps Acclimatation** :
| Niveau | Temps Base |
| :--- | :--- |
| 1 | 10 min |
| 2 | 8 min |
| 3 | 6 min |
| 4 | 4 min |
| 5 | 2 min |
| 6 | 1 min |
| 7 | Instantané |
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Arrivée** : Animal livré par camion.
* **Prêt** : Animal prêt à être placé.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Capacité | Temps Acclimatation | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 1 | 10 min | 0s |
| 2 | 200 | 2 | 8 min | 0s |
| 3 | 400 | 3 | 6 min | 0s |
| 4 | 800 | 4 | 4 min | 0s |
| 5 | 1600 | 5 | 2 min | 0s |
| 6 | 3200 | 6 | 1 min | 0s |
| 7 | 6400 | 7 | 0 min | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateReception(center):
for slot in center.slots:
if currentTime >= slot.ready_time:
notifyPlayer("ANIMAL_READY", slot.animal_id)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" |
| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Arrivée Animal (Passif)
**Description UX** : Le camion décharge un animal. Il apparaît dans l'Accueil en mode "Attente".
**Description UI** : Notification "Livraison effectuée". L'icône de l'Accueil change (ex: porte fermée -> porte avec caisse devant).
**Notification Push** : "Votre [Animal] est arrivé à l'accueil !" envoyée si le joueur est hors ligne.
**Emplacement** : Case Accueil.
**Intégration** : Suite de l'action Camion.
**Navigation** : N/A
**Événements** : `DELIVERY_COMPLETE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `truck_door.mp3`, `crate_drop.mp3`.
- **Graphiques** : Sprite Caisse en bois.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Camion qui repart.
- **Couleurs** : Marron (Caisse).
- **Textes** : N/A
- **Formes** : N/A
### Consultation & Acclimatation (Consultation)
**Description UX** : Le joueur vérifie le temps restant avant de pouvoir placer l'animal.
**Description UI** : **Bottom Sheet** listant les animaux en transit. Barre de progression "Acclimatation" pour chacun.
**Emplacement** : Modal Accueil.
**Intégration** : Liste verticale.
**Navigation** : Clic Accueil -> Modal.
**Événements** : `OPEN_RECEPTION`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_open.mp3`
- **Graphiques** : Style "Quarantaine" ou "Étable propre".
- **Images** : Portrait animal.
- **Vidéos** : N/A
- **Animations** : Barre de progression qui avance.
- **Couleurs** : Orange (En cours), Vert (Prêt).
- **Textes** : "Prêt dans X min".
- **Formes** : Barres arrondies.
### Transfert vers Zoo (Action)
**Description UX** : L'animal est prêt. Le joueur le glisse vers le zoo.
**Description UI** : Bouton "Placer" ou Drag & Drop depuis la liste.
**Alternative** : Tap to Select -> Tap to Place.
**Emplacement** : Modal Accueil -> Carte Zoo.
**Intégration** : Mode placement (comme Nurserie).
**Navigation** : Drag -> Drop.
**Événements** : `PLACE_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Sons** : `animal_happy.mp3` (cri de l'animal).
- **Graphiques** : Sprite Animal.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Animal qui saute de joie au placement.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,40 @@
# Spécifications : Achat et Upgrade des Boutiques
## Construction
- Peut être construite sur n'importe quelle case vide.
## Upgrade (7 Niveaux)
- **Attrait** : Attire les visiteurs de plus loin sur la grille.
- **Revenu** : Augmente le montant dépensé par chaque visiteur qui passe sur la case.
- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément.
# Annexes Techniques
## 1. Données et États
Voir `boutique.md` pour le modèle de données complet.
## 7. Progression
### Tableau des Upgrades
Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau.
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Rénovation (Action)
**Description UX** : Améliorer la boutique change son apparence et ses stats.
**Description UI** : Le sprite du bâtiment change (devient plus grand/beau).
**Emplacement** : Case Boutique.
**Intégration** : Visuel immédiat.
**Navigation** : Upgrade -> Validation.
**Événements** : `UPGRADE_SHOP_VISUAL`.
#### Assets
- **Musiques** : N/A
- **Sons** : `construction_finish.mp3`.
- **Graphiques** : Sprites Boutiques Niv 1-7.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Effet de "pop" ou échafaudage rapide.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,62 @@
# Spécifications : Achat et Upgrade des Camions
## Achat
- Le joueur possède un camion par défaut.
- Possibilité d'acheter des camions supplémentaires (si le design autorise plusieurs flottes).
## Upgrade (7 Niveaux)
- **Niveau 1** : Camion standard.
- **Niveau 2-7** :
- **Vitesse** : Augmente la vitesse de déplacement sur la carte du monde.
- **Confort** : Réduit la perte de santé/stress des animaux transportés.
- **Capacité** : (Optionnel) Transport de plusieurs animaux ? *Actuellement 1 unité = 1 camion.*
# Annexes Techniques
## 1. Données et États
Voir `camion.md` pour le modèle de données complet.
## 7. Progression
### Tableau des Upgrades
Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau.
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Garage / Atelier (Consultation)
**Description UX** : Le joueur gère sa flotte de camions.
**Description UI** : Liste des camions avec stats (Vitesse, Confort). Bouton "Améliorer".
**Emplacement** : Bâtiment Garage (si existe) ou Menu Transport.
**Intégration** : Modal.
**Navigation** : Menu -> Transport.
**Événements** : `OPEN_GARAGE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `wrench.mp3` (bruit d'outil).
- **Graphiques** : Fond garage.
- **Images** : Sprites Camions évolutifs (Vieux tacot -> Camion futuriste).
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Gris, Métal.
- **Textes** : "Niveau X".
- **Formes** : N/A
### Customisation (Cosmétique)
**Description UX** : Changer la couleur du camion.
**Description UI** : Palette de couleurs.
**Emplacement** : Garage.
**Intégration** : Sélecteur.
**Navigation** : Clic Couleur -> Appliquer.
**Événements** : `PAINT_TRUCK`.
#### Assets
- **Musiques** : N/A
- **Sons** : `spray.mp3`.
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Camion change de couleur.
- **Couleurs** : Palette 16 couleurs.
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,56 @@
# Spécifications : Achat et Upgrade des Cases
## Construction
- Sur une case vide de type "Terrain", le joueur peut acheter un bâtiment.
- Le coût dépend du type de bâtiment.
## Types Constructibles
- Nurserie
- Boutique
- (Les autres bâtiments comme Billeterie/Recherche sont souvent uniques et upgradables, mais on peut imaginer en construire d'autres si le design le permet).
## Upgrade de Case (Terrain)
- **Changement de Milieu** : Payer pour changer la couleur (Biome) d'une case.
- **Changement de Température** : Payer pour installer un régulateur thermique sur une case.
# Annexes Techniques
## 1. Données et États
Voir `case_zoo.md` et `achat_upgrade_generique.md`.
## 7. Progression
### Tableau des Upgrades
**Changement de Milieu** :
| Niveau | Coût | Précision | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 500 | Changement vers biome adjacent | 0s |
| 7 | 5000 | Changement vers n'importe quel biome | 0s |
**Régulateur Thermique** :
| Niveau | Coût | Plage Réglage | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 200 | +/- 5°C | 0s |
| 7 | 2000 | +/- 50°C | 0s |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Modification Terrain (Action)
**Description UX** : Le joueur sélectionne une case et choisit "Modifier Biome" ou "Température".
**Description UI** : Palette de couleurs (Biomes) ou Slider (Température).
**Mode Peinture** : Permet de glisser le doigt pour appliquer le biome/température à plusieurs cases adjacentes rapidement.
**Emplacement** : Menu Contextuel Case.
**Intégration** : Outil pinceau ou slider.
**Navigation** : Clic Case -> Outil -> Appliquer.
**Événements** : `TERRAFORM_CASE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `digging.mp3` (Biome), `hissing_gas.mp3` (Température).
- **Graphiques** : Icône Pelle, Thermomètre.
- **Images** : Textures sol (Herbe, Sable, Neige).
- **Vidéos** : N/A
- **Animations** : Transition de couleur (Fade) sur la case.
- **Couleurs** : Vert, Jaune, Blanc.
- **Textes** : "Coût : X".
- **Formes** : N/A

View File

@@ -0,0 +1,44 @@
# Spécifications : Achat et Upgrade des Cases du Zoo (Agrandissement)
## Agrandissement du Zoo
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
- **Coût** : Très élevé, progressif selon la taille actuelle du zoo.
- **Contenu** : La nouvelle case arrive avec un biome par défaut (selon sa position géographique Prairie/Océan/Montagne) et vide.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Action sur l'objet `Zoo` (dimensions).
### Caractéristiques Initiales
N/A
## 7. Progression
### Tableau des Upgrades (Agrandissement)
| Extension | Coût (Pièces) | Gain |
| :--- | :--- | :--- |
| +1 Colonne | `1000 * (LargeurActuelle^2)` | +Hauteur cases |
| +1 Ligne | `1000 * (HauteurActuelle^2)` | +Largeur cases |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Achat Parcelle (Action)
**Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter.
**Description UI** : Zone grisée ou avec panneau "À Vendre". Au survol, prix affiché.
**Emplacement** : Bords de la Carte Zoo.
**Intégration** : Grille étendue.
**Navigation** : Clic Zone Grisée -> Confirmer Achat.
**Événements** : `EXPAND_ZOO`.
#### Assets
- **Musiques** : N/A
- **Sons** : `land_buy.mp3`.
- **Graphiques** : Panneau "For Sale".
- **Images** : Texture herbe (cachée par brouillard).
- **Vidéos** : N/A
- **Animations** : Brouillard se dissipe, herbe apparaît.
- **Couleurs** : Gris (Inaccessible) -> Vert (Accessible).
- **Textes** : "Acheter Terrain (X Pièces)".
- **Formes** : Carré.

View File

@@ -0,0 +1,36 @@
# Spécifications : Achat et Upgrade des Centres de Recherche
## Upgrade (7 Niveaux)
- **Production** : Augmente le nombre d'Unités de Recherche générées par heure.
- **Portée** : Augmente le rayon de visibilité sur les offres des autres zoos (voir les détails des animaux lointains).
# Annexes Techniques
## 1. Données et États
Voir `centre_recherche.md` pour le modèle de données complet.
## 7. Progression
### Tableau des Upgrades
Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par niveau.
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Arbre Technologique (Consultation)
**Description UX** : Visualiser les paliers de recherche.
**Description UI** : Arbre vertical ou liste de niveaux avec cadenas (verrouillé/déverrouillé).
**Emplacement** : Modal Recherche.
**Intégration** : Onglet "Améliorations".
**Navigation** : Clic Recherche -> Onglet Upgrade.
**Événements** : `VIEW_TECH_TREE`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Lignes de connexion.
- **Images** : Icônes Radar, Fiole.
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Bleu (Science).
- **Textes** : "Niveau Suivant : Portée +10km".
- **Formes** : N/A

View File

@@ -0,0 +1,127 @@
# Spécifications : Achat et Upgrade (Générique)
## Mécanique
- **Coût** : Payé en Pièces (ou Unités de Recherche pour la Carte du Monde).
- **Progression** : 7 Niveaux pour la plupart des éléments.
- **Formule de Coût** : `Coût_Niveau_N = Coût_Base * Multiplicateur^(N-1)`.
## Validation
- L'achat est instantané si les fonds sont disponibles.
- L'effet est immédiat (pas de temps de construction, sauf si spécifié autrement).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
N/A
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Interface d'Achat (Consultation)
**Description UX** : Le joueur ouvre le menu de construction ou d'upgrade.
**Description UI** : Grille d'éléments achetables. Prix affiché clairement. Grisé si trop cher.
**Emplacement** : HUD Bas.
**Intégration** : Menu déroulant ou fixe.
**Navigation** : Clic Catégorie -> Liste Objets.
**Événements** : `OPEN_SHOP_MENU`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_hover.mp3`.
- **Graphiques** : Icônes Bâtiments.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Fond sombre, Texte clair.
- **Textes** : Prix, Nom.
- **Formes** : Cartes carrées.
### Confirmation Achat (Action)
**Description UX** : Le joueur clique pour acheter.
**Description UI** : Feedback immédiat (son + animation pièces déduites).
**Emplacement** : HUD.
**Intégration** : Immédiat.
**Navigation** : Clic Achat.
**Événements** : `BUY_ITEM`.
#### Assets
- **Musiques** : N/A
- **Sons** : `buy_success.mp3`.
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Compteur pièces descend.
- **Couleurs** : Rouge (déduction).
- **Textes** : "-500".
- **Formes** : N/A

View File

@@ -0,0 +1,40 @@
# Spécifications : Achat et Upgrade des Nurseries
## Construction
- Nécessaire pour faire éclore plus d'œufs simultanément.
## Upgrade (7 Niveaux)
- **Incubation** : Réduit le temps d'éclosion.
- **Soins** : Augmente les chances de survie des bébés (réduit l'impact des écarts de température).
- **Génétique** : (Niveaux élevés) Augmente légèrement la probabilité d'obtenir une rareté supérieure.
# Annexes Techniques
## 1. Données et États
Voir `nurserie.md` pour le modèle de données complet.
## 7. Progression
### Tableau des Upgrades
Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau.
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Extension (Action)
**Description UX** : Ajouter des slots d'œufs.
**Description UI** : La grille de slots s'agrandit (nouvelles cases déverrouillées).
**Emplacement** : Modal Nurserie.
**Intégration** : UI Grid.
**Navigation** : N/A
**Événements** : `UNLOCK_SLOT`.
#### Assets
- **Musiques** : N/A
- **Sons** : `unlock.mp3`.
- **Graphiques** : Cadenas qui s'ouvre.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Slot qui s'illumine.
- **Couleurs** : N/A
- **Textes** : "Slot débloqué".
- **Formes** : N/A

View File

@@ -0,0 +1,55 @@
# Spécifications : Agrandissement de la Carte du Monde
## Concept
La carte du monde est vaste, mais le joueur ne voit initialement qu'une petite zone autour de son zoo.
## Mécanique
- **Coût** : Ne se paie pas en pièces, mais en **Unités de Recherche** produites par les Centres de Recherche.
- **Palier** : Chaque niveau d'agrandissement coûte plus cher.
- **Effet** : Dézoome la carte / Débloque le brouillard de guerre, révélant de nouveaux zoos, villes et laboratoires plus lointains.
- **Intérêt** : Accès à plus de marchés (achat/vente), plus de villes (visiteurs potentiels).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Propriété `view_radius` sur `Zoo` ou `Player`.
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Rayon Vue | 100 km |
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Points Recherche) | Rayon Vue |
| :--- | :--- | :--- |
| 1 | 0 | 100 km |
| 2 | 100 | 200 km |
| 3 | 250 | 350 km |
| 4 | 500 | 550 km |
| 5 | 1000 | 800 km |
| 6 | 2500 | 1200 km |
| 7 | 5000 | 2000 km |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Découverte (Passif/Action)
**Description UX** : En payant des points de recherche, le brouillard de guerre recule sur la carte du monde.
**Description UI** : Animation de nuages qui s'écartent. De nouvelles icônes (Villes, Zoos) apparaissent.
**Emplacement** : Carte Monde.
**Intégration** : Vue globale.
**Navigation** : Bouton "Explorer" (HUD) -> Animation.
**Événements** : `EXPLORE_WORLD`.
#### Assets
- **Musiques** : Jingle découverte (style Zelda/Civ).
- **Sons** : `wind_whoosh.mp3`.
- **Graphiques** : Nuages (Brouillard de guerre).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Fade out des nuages. Scale up de la vue (Dezoom).
- **Couleurs** : Blanc/Gris (Nuages).
- **Textes** : "Nouvelle zone découverte !".
- **Formes** : Cercle (Rayon de vue).

View File

@@ -0,0 +1,262 @@
# Spécifications : Animal (Générique)
## Définition
Entité biologique principale du jeu.
## Propriétés
- **Type/Espèce** : Défini par le loot (75 animaux possibles).
- **Génétique** :
- **Couleur** : 15 variations.
- **Rareté** : 5 niveaux (pondération Fibonacci).
- **État** : Faim, Température, Santé, Âge.
- **Cycle de vie** : Œuf -> Bébé -> Adulte -> Mort.
## Besoins
- **Nourriture** : Consommation périodique.
- **Environnement** : Adéquation Biome/Température.
- **Social** : Besoin de congénères (reproduction) ou de solitude (selon espèce).
## Mort
Causes possibles : Faim, Froid/Chaud, Solitude, Maladie, Vieillesse (si implémenté), Attaque (si implémenté).
Conséquence : Perte sèche, pénalité d'attractivité.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid_v4",
"type": "string (ex: 'rabbit')",
"rarity": "integer (1-5)",
"color_id": "integer (0-14)",
"name": "string",
"birth_date": "timestamp",
"state": {
"health": "float (0-100)",
"hunger": "float (0-100)",
"temperature_comfort": "float (-1.0 to 1.0)",
"stress": "float (0-100)"
},
"genetics": {
"parent_a_id": "uuid_v4 | null",
"parent_b_id": "uuid_v4 | null",
"mutation_factor": "float"
},
"position": { "x": "int", "y": "int" }
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Santé | 100.0 |
| Faim | 0.0 (Rassasié) |
| Stress | 0.0 |
| Âge | 0 (Bébé) |
### Scores Initiaux
| Score | Valeur |
| :--- | :--- |
| Valeur Vente (Base) | 10 * Fibonacci(Rareté) |
| Attractivité (Base) | 5 * Rareté |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
| Type | Condition |
| :--- | :--- |
| Œuf | Achat Carte Monde / Loot Labo |
| Bébé | Éclosion Œuf / Naissance (Reproduction) |
| Adulte | Fin croissance Bébé / Achat Carte Monde |
### Conditions de Disparition
| Cause | Seuil |
| :--- | :--- |
| Mort (Faim) | Faim >= 100 pendant 24h (in-game) |
| Mort (Santé) | Santé <= 0 |
| Vente | Transaction validée |
| Libération | Action joueur |
### Hérédité
| Paramètre | Formule / Logique |
| :--- | :--- |
| Rareté | `Moyenne(Parents) + Random(-1, +1)` (Pondéré par mutation) |
| Couleur | `Parent_A` (50%) ou `Parent_B` (50%) + Faible chance mutation |
## 3. Impacts Environnementaux
### Impact Température
| Delta T° (Idéal - Réel) | Effet sur Santé / Heure | Effet sur Stress / Heure |
| :--- | :--- | :--- |
| +/- 0 (Idéal) | 0 | -5 |
| +/- 1 (Supportable) | -1 | +2 |
| +/- 2 (Inconfort) | -5 | +10 |
| +/- 3 (Danger) | -20 | +25 |
| > +/- 3 (Mortel) | -50 | +50 |
### Impact Milieu (Biome)
| Compatibilité | Effet sur Santé / Heure | Effet sur Stress / Heure |
| :--- | :--- | :--- |
| Parfaite (Même couleur) | +1 (Régénération) | -5 |
| Adjacente (Cercle chromatique) | 0 | 0 |
| Opposée | -5 | +10 |
### Impact Saisons
| Saison | Modificateur Faim | Modificateur Santé |
| :--- | :--- | :--- |
| Printemps | Normal | Bonus Régénération |
| Été | +10% (Soif/Faim) | Malus si T° > Seuil |
| Automne | Normal | Normal |
| Hiver | +20% (Besoin énergie) | Malus si T° < Seuil |
### Impact Heure / Jour-Nuit
| Cycle | Modificateur Faim | Modificateur Stress |
| :--- | :--- | :--- |
| Jour | Normal | Normal |
| Nuit | -50% (Sommeil) | Récupération rapide (si calme) |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
| Condition | Bonus/Malus Score Repro |
| :--- | :--- |
| Santé > 80% | +10 |
| Faim < 20% | +10 |
| Stress < 10% | +20 |
| Partenaire compatible < 2 cases | Déclencheur |
### Impact Mort
| Événement | Effet |
| :--- | :--- |
| Mort d'un congénère (Rayon 5) | Stress +20 (Immédiat) |
| Mort isolée | N/A |
### Impact Nourriture
| État Faim | Effet Santé / Heure |
| :--- | :--- |
| 0-20% | +2 |
| 20-50% | 0 |
| 50-80% | -2 |
| 80-100% | -10 |
### Impact Attractivité (Visiteurs/Animaux)
| Rareté | Attractivité (Rayon d'action) |
| :--- | :--- |
| 1 (Commun) | 2 cases |
| 2 (Peu commun) | 3 cases |
| 3 (Rare) | 5 cases |
| 4 (Épique) | 8 cases |
| 5 (Légendaire) | 12 cases (Tout le zoo) |
### Impact Valeur
| Facteur | Multiplicateur Valeur |
| :--- | :--- |
| Santé 100% | x1.2 |
| Santé < 50% | x0.5 |
| Âge (Adulte jeune) | x1.5 |
| Âge (Vieux) | x0.8 |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A (Concerne les bâtiments)
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Maladie** : Si Santé < 20% et hygiène faible.
* **Naissance** : Si conditions reproduction réunies.
* **Mort** : Si Santé <= 0.
## 7. Progression
### Tableau des Upgrades
N/A (L'animal n'a pas d'upgrade, il a de l'expérience/âge)
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateAnimal(animal, context):
deltaTemp = abs(animal.idealTemp - context.tileTemp)
if deltaTemp > 0:
animal.health -= tableImpactTemp[deltaTemp]
animal.stress += tableImpactTemp[deltaTemp] * 0.5
if context.tileBiome != animal.idealBiome:
animal.stress += 5
if animal.hunger > 0:
animal.hunger += baseHungerRate * context.seasonMod
if animal.hunger >= 100:
animal.health -= 10
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `ANIMAL_HUNGRY` | Warning | "Un animal a faim !" |
| `ANIMAL_SICK` | Alerte | "Un animal est malade." |
| `ANIMAL_DEAD` | Critique | "Un animal est mort." |
| `ANIMAL_BORN` | Info | "Un bébé est né !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Vie Quotidienne (Passif)
**Description UX** : L'animal vit sa vie sur la grille. Il bouge, mange, dort.
**Description UI** : Sprite animé. Si problème (faim/froid), feedback visuel immédiat (changement couleur/tremblement).
**Emplacement** : Case Zoo.
**Intégration** : Grille principale.
**Navigation** : N/A
**Événements** : `ANIMAL_IDLE`, `ANIMAL_MOVE`.
#### Assets
- **Musiques** : Ambiance nature (oiseaux, vent).
- **Sons** : Cris d'animaux aléatoires (faible volume).
- **Graphiques** : Sprites Pixel Art (4 directions).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Idle, Walk, Eat, Sleep.
- **Couleurs** : Selon espèce + Teinte bleue (Froid) / Rouge (Chaud).
- **Textes** : Bulle "Zzz" (Sommeil), "!" (Alerte).
- **Formes** : N/A
### Consultation (Consultation)
**Description UX** : Le joueur clique sur l'animal pour voir ses détails (Santé, Faim, Génétique).
**Description UI** : **Bottom Sheet** (Mobile) ou Panneau Latéral (Desktop) pour ne pas masquer le jeu. Jauges colorées. Arbre généalogique simplifié.
**Emplacement** : Case Zoo.
**Intégration** : Focus caméra sur l'animal.
**Navigation** : Clic Animal -> Panneau.
**Événements** : `SELECT_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Sons** : Cri spécifique de l'animal sélectionné.
- **Graphiques** : Portrait HD de l'animal.
- **Images** : Icônes Santé (Cœur), Faim (Cuisse), Température (Thermomètre).
- **Vidéos** : N/A
- **Animations** : Jauges qui se remplissent.
- **Couleurs** : Vert (>70%), Orange (30-70%), Rouge (<30%).
- **Textes** : Nom, Espèce, Âge.
- **Formes** : Panneau arrondi.
### Interaction (Action)
**Description UX** : Le joueur peut nourrir, soigner ou déplacer l'animal.
**Description UI** : Boutons d'action dans le panneau de consultation.
**Emplacement** : Panneau Consultation.
**Intégration** : Actions contextuelles.
**Navigation** : Clic Action -> Résultat immédiat.
**Événements** : `FEED_ANIMAL`, `HEAL_ANIMAL`, `MOVE_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Sons** : `eat.mp3`, `heal.mp3`.
- **Graphiques** : Particules (Cœurs, Étoiles).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Animal saute de joie.
- **Couleurs** : N/A
- **Textes** : "+10 PV", "-20 Faim".
- **Formes** : N/A

View File

@@ -0,0 +1,126 @@
# Spécifications : Attractivité dans le Zoo sur les Visiteurs
## Définition
Comportement des visiteurs une fois qu'ils sont entrés dans l'enceinte du zoo.
## Mécanique de Déplacement
Les visiteurs ne se déplacent pas au hasard. Ils ont des "cibles" d'intérêt.
- **Cibles Prioritaires** : Animaux Rares > Animaux Communs > Boutiques.
- **Algorithme** : À chaque intersection ou fin d'action, le visiteur évalue l'attrait des cases environnantes.
## Facteurs de Rétention
- **Diversité** : Voir des animaux différents prolonge la visite.
- **Confort** : La présence de bancs, poubelles et boutiques augmente le temps de séjour.
- **Départ** : Si l'attrait local tombe sous un seuil (ennui) ou si la journée finit, le visiteur se dirige vers la sortie (Billeterie).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Propriétés de `Visiteur`.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
**Canicule/Grand Froid** : Réduit le temps de séjour (-30%).
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
Voir `visiteur.md` (Départ immédiat).
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
**Poids des Cibles** :
| Type Cible | Poids |
| :--- | :--- |
| Animal Rareté 1 | 10 |
| Animal Rareté 5 | 100 |
| Boutique | 50 |
| Banc (si fatigué) | 200 |
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
Algorithme de choix de cible pondéré.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function chooseNextTarget(visitor, zoo):
candidates = getAllPOIs(zoo)
scoredCandidates = candidates.map(c => {
score = c.attractiveness / distance(visitor, c)
return { target: c, score: score }
})
return weightedRandomSelect(scoredCandidates)
```
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Foule (Passif)
**Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants.
**Description UI** : Densité de sprites visiteurs plus élevée autour des cases "Stars".
**Emplacement** : Grille Zoo.
**Intégration** : Comportement IA.
**Navigation** : N/A
**Événements** : `CROWD_GATHER`.
#### Assets
- **Musiques** : N/A
- **Sons** : Rumeur de foule (volume variable selon densité).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Applaudissements, Photos.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,129 @@
# Spécifications : Attractivité des Zoos sur les Visiteurs des Villes
## Définition
Capacité d'un zoo à faire déplacer des visiteurs depuis une ville située sur la Carte du Monde.
## Formule d'Attraction
L'attraction est calculée pour chaque couple (Ville, Zoo).
`Attraction = (Score_Reputation_Zoo / Distance^2) * Facteur_Ville`
## Facteurs d'Influence
1. **Score de Réputation** : Plus le zoo est prestigieux, plus il attire de loin.
2. **Distance** : La proximité géographique sur la carte du monde est déterminante.
3. **Concurrence** : Les visiteurs se répartissent entre les zoos attractifs.
## Impact
- Détermine le flux entrant quotidien de visiteurs (le nombre de personnes qui passent la porte de la Billeterie).
- Si l'attraction est nulle, aucun visiteur ne vient.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Calculé à la volée ou mis en cache.
```json
{
"zoo_id": "uuid",
"city_id": "uuid",
"attraction_score": "float"
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
**Hiver** : Réduit la volonté de voyager (-20% rayon d'attraction).
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
Voir formule.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function calculateDailyVisitors(zoo, city):
dist = distance(zoo.pos, city.pos)
if dist > zoo.maxAttractionRange: return 0
baseFlow = city.population * (zoo.reputation / (dist * dist))
return baseFlow * seasonMod
```
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Visualisation Flux (Consultation)
**Description UX** : Le joueur regarde la carte du monde pour voir d'où viennent ses visiteurs.
**Description UI** : Lignes pointillées mouvantes reliant les villes au zoo. Épaisseur = Volume flux. **Particules** : Petits points ou voitures circulant sur les lignes pour donner une sensation de vie.
**Emplacement** : Carte Monde.
**Intégration** : Overlay.
**Navigation** : N/A
**Événements** : `VIEW_FLOW`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Lignes de flux.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Pointillés qui avancent (effet fourmis).
- **Couleurs** : Blanc ou Vert fluo.
- **Textes** : "150 visiteurs/jour".
- **Formes** : Courbes de Bézier.

196
docs/specs/bebe_animal.md Normal file
View File

@@ -0,0 +1,196 @@
# Spécifications : Bébé Animal
## Définition
Stade de développement entre l'éclosion de l'œuf et l'âge adulte.
## Spécificités
- **Lieu** : Doit grandir en Nurserie (recommandé) ou sur une case adaptée.
- **Fragilité** : Plus sensible aux écarts de température/faim que les adultes.
- **Vente** : Peut être vendu comme "Bébé" (souvent plus cher car potentiel reproducteur intact).
- **Évolution** : Devient "Bébé mature" en fin de nurserie, prêt à être placé sur la grille comme adulte.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Structure identique à `Animal` (voir `animal_generique.md`), avec un flag ou état spécifique :
```json
{
"is_baby": true,
"growth_progress": "float (0-100)",
"nurserie_id": "uuid_v4 | null"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Santé | 100.0 |
| Faim | 0.0 |
| Croissance | 0.0 |
### Scores Initiaux
| Score | Valeur |
| :--- | :--- |
| Valeur Vente | 1.5 * Valeur Adulte (Potentiel) |
| Attractivité | 2 * Attractivité Adulte (Effet "Mignon") |
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
| Type | Condition |
| :--- | :--- |
| Naissance | Reproduction réussie |
| Éclosion | Fin timer œuf en Nurserie |
### Conditions de Disparition
| Cause | Seuil |
| :--- | :--- |
| Croissance terminée | Croissance >= 100 (Devient Adulte) |
| Mort | Santé <= 0 (Plus fragile) |
### Hérédité
Voir `animal_generique.md`.
## 3. Impacts Environnementaux
### Impact Température
**Facteur de fragilité : x2** par rapport à l'adulte.
| Delta T° | Effet sur Santé / Heure |
| :--- | :--- |
| +/- 1 | -2 |
| +/- 2 | -10 |
| > +/- 2 | -40 (Mort rapide) |
### Impact Milieu (Biome)
| Compatibilité | Effet |
| :--- | :--- |
| Mauvais Biome | Stress x2 par rapport à l'adulte |
### Impact Saisons
Voir `animal_generique.md`.
### Impact Heure / Jour-Nuit
Voir `animal_generique.md`.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A (Un bébé ne se reproduit pas).
### Impact Mort
| Événement | Effet Satisfaction |
| :--- | :--- |
| Mort d'un bébé | Malus Réputation x2 (Tristesse visiteurs) |
### Impact Nourriture
**Métabolisme rapide :** Faim augmente 1.5x plus vite que l'adulte.
### Impact Attractivité (Visiteurs/Animaux)
| Rareté | Attractivité |
| :--- | :--- |
| Toutes | Bonus "Cuteness" (+50% rayon attraction) |
### Impact Valeur
| Facteur | Effet |
| :--- | :--- |
| Croissance 0-50% | Valeur max (Potentiel) |
| Croissance 50-99% | Valeur décroissante vers prix adulte |
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Croissance** : Passage à l'âge adulte (Notification).
* **Besoin Soin** : Alerte plus fréquente.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateBaby(baby, context):
# Fragilité accrue
damageMultiplier = 2.0
growthRate = baseGrowthRate * nurserieLevelBonus
baby.growth_progress += growthRate
if baby.growth_progress >= 100:
transformToAdult(baby)
# Reste de la logique héritée de Animal avec damageMultiplier
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `BABY_GROWN` | Info | "Un bébé est devenu adulte !" |
| `BABY_CRITICAL` | Critique | "Un bébé est en danger critique !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Croissance en Nurserie (Passif)
**Description UX** : Le bébé est visible dans son slot de nurserie. Il grandit visuellement (petite jauge).
**Description UI** : Sprite "Bébé" (tête disproportionnée, grands yeux). Jauge de croissance.
**Emplacement** : Modal Nurserie.
**Intégration** : Slot.
**Navigation** : N/A
**Événements** : `BABY_GROWING`.
#### Assets
- **Musiques** : N/A
- **Sons** : Petits bruits aigus.
- **Graphiques** : Sprite Bébé.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Respiration (Scale up/down léger).
- **Couleurs** : N/A
- **Textes** : "Bébé [Espèce]".
- **Formes** : N/A
### Sortie Prématurée (Action)
**Description UX** : Le joueur décide de placer le bébé dans le zoo avant l'âge adulte (risqué).
**Description UI** : Warning "Attention, ce bébé est fragile !".
**Emplacement** : Nurserie -> Zoo.
**Intégration** : Confirmation modale.
**Navigation** : Drag -> Confirm -> Drop.
**Événements** : `PLACE_BABY`.
#### Assets
- **Musiques** : N/A
- **Sons** : `warning_beep.mp3`.
- **Graphiques** : Icône Danger.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Rouge.
- **Textes** : "Risque de mort élevé !".
- **Formes** : N/A
### Passage Adulte (Événement)
**Description UX** : Le bébé atteint 100% de croissance. Il se transforme en adulte.
**Description UI** : Flash lumineux. Le sprite change. Notification "Adulte !".
**Emplacement** : Nurserie ou Zoo.
**Intégration** : Immédiat.
**Navigation** : N/A
**Événements** : `BECOME_ADULT`.
#### Assets
- **Musiques** : Jingle évolution.
- **Sons** : `level_up.mp3`.
- **Graphiques** : Particules brillantes.
- **Images** : Sprite Adulte.
- **Vidéos** : N/A
- **Animations** : Morphing ou Fade cross.
- **Couleurs** : Blanc/Or.
- **Textes** : "Adulte".
- **Formes** : N/A

191
docs/specs/billeterie.md Normal file
View File

@@ -0,0 +1,191 @@
# Spécifications : Billeterie
## Définition
Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
## Fonctionnalités
- **Entrée/Sortie** : Génère le flux de visiteurs.
- **Vente de tickets** : Génère des revenus par visiteur entrant.
- **Capacité** : Limite le nombre de visiteurs simultanés dans le zoo.
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Augmente le prix du ticket et la capacité maximale de visiteurs simultanés.
- **Ratio** : 1 unité couvre 20 visiteurs simultanés max.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "ticket_booth",
"level": "integer (1-7)",
"position": { "x": "int", "y": "int" },
"stats": {
"total_entries": "integer",
"daily_revenue": "integer"
}
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Prix Ticket | 10 pièces |
| Capacité Max | 20 visiteurs |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage (Unique).
### Conditions de Disparition
Indestructible.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
| Saison | Modificateur Prix Ticket |
| :--- | :--- |
| Été | +20% (Haute saison) |
| Hiver | -10% (Basse saison) |
### Impact Heure / Jour-Nuit
**Ouverture** : 08h00 - 20h00. Fermé la nuit (sauf événements).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
Point d'entrée unique. L'attractivité globale du zoo détermine le flux qui se présente à la billeterie.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Flux Entrée** : 1 visiteur / seconde max.
### Dépenses (Boutiques/Visiteurs)
Revenu principal (Ticket).
### Trajet Visiteurs
Point de départ (Spawn) et d'arrivée (Despawn).
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Entrée** : Gain pièces.
* **Refoulement** : Si Capacité Max atteinte.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 0 (Base) | 10 | 20 | 0s |
| 2 | 200 | 12 | 40 | 0s |
| 3 | 400 | 15 | 70 | 0s |
| 4 | 800 | 18 | 110 | 0s |
| 5 | 1600 | 22 | 160 | 0s |
| 6 | 3200 | 28 | 220 | 0s |
| 7 | 6400 | 35 | 300 | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function processEntry(zoo):
potentialVisitors = calculateAttractionFlow(zoo)
if zoo.currentVisitors >= zoo.billeterie.capacity:
emitEvent("ZOO_FULL")
return
actualVisitors = min(potentialVisitors, zoo.billeterie.capacity - zoo.currentVisitors)
for i in 0..actualVisitors:
spawnVisitor()
player.addCoins(zoo.billeterie.ticketPrice)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Consultation
**Description UX** : Le joueur clique sur la billeterie pour voir ses statistiques et son niveau.
**Description UI** : **Bottom Sheet** ou Panneau Latéral affichant le niveau actuel, la capacité, le prix du ticket et les revenus du jour.
**Emplacement** : Case Billeterie sur la grille du zoo.
**Intégration** : Bâtiment fixe (ne peut pas être déplacé ou supprimé).
**Navigation** : Clic -> Ouverture Panneau -> Fermeture (Croix ou clic extérieur).
**Événements** : `CLICK_BILLETERIE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_open.mp3`
- **Graphiques** : Pixel Art, style guichet.
- **Images** : `billeterie_lvl[1-7].png`
- **Vidéos** : N/A
- **Animations** : Légère surbrillance au survol.
- **Couleurs** : Palette UI standard.
- **Textes** : "Billeterie", "Niveau X", "Revenus : Y".
- **Formes** : Carré (case).
### Amélioration (Upgrade)
**Description UX** : Le joueur décide d'améliorer la billeterie pour augmenter la capacité et le prix du ticket.
**Description UI** : Bouton "Améliorer" dans le panneau de consultation, avec coût et prévisualisation des gains.
**Emplacement** : Panneau de consultation.
**Intégration** : Action immédiate si fonds suffisants.
**Navigation** : Clic "Améliorer" -> Confirmation (optionnelle) -> Mise à jour UI.
**Événements** : `UPGRADE_BILLETERIE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `upgrade_success.mp3` (caisse enregistreuse).
- **Graphiques** : Icône flèche vers le haut.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Particules de succès (confettis/étoiles) autour du bâtiment.
- **Couleurs** : Bouton Vert (si achetable), Gris (si fonds insuffisants).
- **Textes** : "Améliorer (X pièces)".
- **Formes** : Bouton rectangulaire arrondi.
### Flux Visiteurs (Passif)
**Description UX** : Le joueur observe les visiteurs entrer dans le zoo.
**Description UI** : Petits sprites de visiteurs apparaissant à la porte et se dispersant.
**Emplacement** : Devant la billeterie.
**Intégration** : Animation continue pendant les heures d'ouverture.
**Navigation** : N/A
**Événements** : `VISITOR_SPAWN`.
#### Assets
- **Musiques** : N/A
- **Sons** : `visitor_entry.mp3` (bruit de foule léger, pas à chaque spawn).
- **Graphiques** : Sprites visiteurs variés.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Marche (4 directions).
- **Couleurs** : Variées (vêtements).
- **Textes** : N/A
- **Formes** : N/A

162
docs/specs/bot.md Normal file
View File

@@ -0,0 +1,162 @@
# Spécifications : Bot (Profil d'Absence)
## Définition
Intelligence Artificielle qui gère un zoo. Peut être un concurrent permanent ou le remplaçant du joueur en cas d'absence.
## Profils d'Absence (50 Archétypes)
Le joueur choisit un profil pour gérer son zoo quand il est hors ligne.
Sélection hiérarchique : **Famille** > **Spécialisation**.
### Familles
1. **Les Conservateurs** : Priorité survie, achat nourriture, pas d'expansion.
2. **Les Éleveurs** : Priorité reproduction, optimisation placements.
3. **Les Commerçants** : Priorité achat/vente, spéculation.
4. **Les Expansionnistes** : Priorité agrandissement terrain/bâtiments.
5. **Les Scientifiques** : Priorité recherche et école.
## Fonctionnement
- **Cycle** : Agit à chaque tick serveur ou selon sa fréquence définie.
- **Ressources** : Utilise les ressources du zoo (pièces) selon les seuils du profil.
- **Indicateurs** : Visible sur la carte du monde (Pièces, Parcelle).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "integer",
"family": "enum",
"name": "string",
"logic": {
"buy_food_threshold": "float (0-1)",
"sell_animal_threshold": "float (price factor)",
"expand_map_priority": "int (0-10)",
"research_priority": "int (0-10)"
}
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Activation par joueur (déconnexion) ou Spawn serveur (Bot permanent).
### Conditions de Disparition
Connexion joueur.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Fréquence Action** : 1 action toutes les 5 à 60 minutes (selon profil).
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Action Bot** : Achat/Vente automatisé.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function runBotLogic(bot, zoo):
if zoo.foodStock < bot.logic.buy_food_threshold:
buyFood(zoo)
return
if bot.family == 'BREEDER':
optimizePairs(zoo)
if bot.family == 'TRADER':
checkMarketArbitrage(zoo)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `BOT_ACTIVE` | Info | "Le mode automatique est activé." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Sélection du Profil (Configuration)
**Description UX** : Le joueur choisit comment son zoo sera géré en son absence.
**Description UI** : Interface à deux niveaux. 1. Choix Famille (5 grosses cartes illustrées). 2. Choix Spécialisation (Liste déroulante ou grille de sous-profils).
**Emplacement** : Profil Joueur -> Onglet Absence.
**Intégration** : Modal dédiée.
**Navigation** : Clic Famille -> Clic Spécialisation -> Valider.
**Événements** : `SELECT_BOT_PROFILE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `card_flip.mp3`.
- **Graphiques** : Illustrations des familles (ex: Conservateur avec bouclier, Commerçant avec bourse).
- **Images** : Portraits Bots.
- **Vidéos** : N/A
- **Animations** : Flip de carte au choix.
- **Couleurs** : Code couleur par famille (Vert=Conservateur, Jaune=Commerçant, etc.).
- **Textes** : Titres et Descriptions courtes.
- **Formes** : Cartes rectangulaires.
### Feedback Activité (Passif)
**Description UX** : Le joueur revient et voit ce que le bot a fait.
**Description UI** : Rapport de connexion ("Pendant votre absence, le bot a : Vendu 2 lapins, Acheté 100 nourriture").
**Emplacement** : Écran de connexion (Popup).
**Intégration** : Bloquant au démarrage.
**Navigation** : Lire -> Fermer.
**Événements** : `SHOW_REPORT`.
#### Assets
- **Musiques** : N/A
- **Sons** : `notification.mp3`.
- **Graphiques** : Icône Robot.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Gris/Métal.
- **Textes** : Liste des actions.
- **Formes** : Liste à puces.

196
docs/specs/boutique.md Normal file
View File

@@ -0,0 +1,196 @@
# Spécifications : Boutique
## Définition
Bâtiment commercial générant des revenus passifs grâce aux visiteurs.
## Fonctionnalités
- **Vente** : Vend des produits (souvenirs, nourriture, boissons) aux visiteurs.
- **Attraction** : Attire les visiteurs sur sa case.
- **Rétention** : Augmente la durée de visite (satisfaction besoins).
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Augmente le revenu par visiteur et la capacité d'accueil simultanée.
- **Ratio** : 1 unité couvre 5 visiteurs simultanés max.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "shop",
"level": "integer (1-7)",
"position": { "x": "int", "y": "int" },
"stats": {
"revenue_total": "integer",
"visitors_served": "integer"
}
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Revenu / Visiteur | 15 pièces |
| Capacité | 5 visiteurs |
| Attractivité | 10 |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Construction par le joueur sur case vide.
### Conditions de Disparition
Destruction par le joueur (Remboursement partiel ?).
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
| Saison | Modificateur Ventes |
| :--- | :--- |
| Été | +20% (Boissons/Glaces) |
| Hiver | +10% (Chocolat chaud/Cadeaux) |
### Impact Heure / Jour-Nuit
| Heure | Fréquentation |
| :--- | :--- |
| 12h-14h | Pic (Repas) |
| 16h-18h | Pic (Souvenirs avant départ) |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
| Niveau | Rayon Attraction |
| :--- | :--- |
| 1 | 2 cases |
| 7 | 10 cases |
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Vitesse Service** : 1 visiteur / 5 secondes (Niv 1) -> 1 visiteur / 1 seconde (Niv 7).
### Dépenses (Boutiques/Visiteurs)
Génère du revenu, ne coûte rien (sauf achat/upgrade).
### Trajet Visiteurs
Point d'intérêt majeur pour le pathfinding (Poids 50).
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Vente** : Gain de pièces.
* **File d'attente** : Si Capacité atteinte, visiteurs frustrés.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Revenu/Visiteur | Capacité | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 15 | 5 | 0s |
| 2 | 150 | 20 | 8 | 0s |
| 3 | 225 | 25 | 12 | 0s |
| 4 | 340 | 35 | 18 | 0s |
| 5 | 510 | 50 | 25 | 0s |
| 6 | 765 | 70 | 35 | 0s |
| 7 | 1150 | 100 | 50 | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function processShop(shop, visitors):
queue = visitors.filter(v => v.target == shop)
served = min(queue.length, shop.capacity)
for i in 0..served:
revenue = shop.baseRevenue * seasonMod
player.addCoins(revenue)
visitors[i].satisfaction += 5
visitors[i].needs.thirst = 0
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `SHOP_FULL` | Warning | "Boutique pleine ! Des clients partent." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Vente (Passif)
**Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur.
**Description UI** : Animation de porte qui s'ouvre/ferme. Popups "+15" au-dessus du toit.
**Emplacement** : Case Boutique.
**Intégration** : Automatique.
**Navigation** : N/A
**Événements** : `SALE_MADE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `coin_jingle.mp3` (volume bas, pas trop répétitif).
- **Graphiques** : Sprite Boutique (différents skins selon type : Burger, Cadeaux).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Pièce dorée qui monte et disparaît.
- **Couleurs** : Or #FFD700.
- **Textes** : "+XX".
- **Formes** : N/A
### Consultation Stats (Consultation)
**Description UX** : Le joueur clique pour voir combien la boutique a rapporté.
**Description UI** : **Bottom Sheet** simple avec "Revenus totaux" et "Clients servis".
**Emplacement** : Case Boutique.
**Intégration** : Standard.
**Navigation** : Clic -> Modal.
**Événements** : `OPEN_SHOP`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_open.mp3`
- **Graphiques** : N/A
- **Images** : Icône Caisse.
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : N/A
- **Textes** : Chiffres clés.
- **Formes** : N/A
### Construction (Action)
**Description UX** : Le joueur choisit "Boutique" dans le menu construction et la place sur la grille.
**Description UI** : Fantôme du bâtiment vert/rouge selon validité.
**Alternative** : Tap to Select -> Tap to Place.
**Emplacement** : Menu Construction -> Grille.
**Intégration** : Mode construction global.
**Navigation** : Clic Menu -> Drag/Click Grille.
**Événements** : `BUILD_SHOP`.
#### Assets
- **Musiques** : N/A
- **Sons** : `construction_hammer.mp3`.
- **Graphiques** : Sprite Fantôme semi-transparent.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Petit effet de poussière à la pose.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

219
docs/specs/camion.md Normal file
View File

@@ -0,0 +1,219 @@
# Spécifications : Camion
## Définition
Véhicule de transport pour les achats et les ventes d'animaux/œufs.
## Fonctionnalités
- **Transport** : Effectue les trajets entre le zoo du joueur et les autres sites (zoos, labo) sur la Carte du Monde.
- **Vente** : Zone de dépôt sur la carte du zoo pour mettre un animal en vente.
- **Achat** : Zone de réception sur la carte du monde pour acheter une offre.
## Comportement
- **Trajet** : Aller-retour physique sur la carte du monde. La durée dépend de la distance et du niveau du camion.
- **Capacité** : Transporte un animal/œuf à la fois (par unité de camion).
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Augmente la vitesse de déplacement. Réduit la dégradation du score de reproduction due au transport (stress).
- **Ratio** : 1 unité couvre 1 camion actif.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"owner_id": "uuid",
"level": "integer (1-7)",
"status": "enum ('idle', 'moving_to_target', 'moving_home')",
"cargo": "animal_uuid | null",
"position": { "x": "float", "y": "float" },
"target_site_id": "uuid | null"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Vitesse | 50 km/h (simulé) |
| Confort | Basique (Stress normal) |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Démarrage jeu.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
**Hiver** : Vitesse réduite de 20% (Neige).
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Stress Transport** : Réduit temporairement la fertilité de l'animal transporté.
| Niveau Camion | Perte Fertilité / Heure Trajet |
| :--- | :--- |
| 1 | -10% |
| 7 | -1% |
### Impact Mort
Si trajet trop long (> 24h) sans confort, risque de mort (Faim/Stress).
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Vitesse Déplacement** :
| Niveau | Vitesse |
| :--- | :--- |
| 1 | 50 km/h |
| 2 | 70 km/h |
| 3 | 90 km/h |
| 4 | 110 km/h |
| 5 | 130 km/h |
| 6 | 150 km/h |
| 7 | 200 km/h (Avion/Hélico ?) |
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Départ** : Camion part.
* **Arrivée** : Camion revient avec marchandise.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Vitesse | Confort | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 50 | Bas | 0s |
| 2 | 200 | 70 | Moyen | 0s |
| 3 | 400 | 90 | Moyen | 0s |
| 4 | 800 | 110 | Bon | 0s |
| 5 | 1600 | 130 | Bon | 0s |
| 6 | 3200 | 150 | Excellent | 0s |
| 7 | 6400 | 200 | Parfait | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateTruck(truck, deltaTime):
if truck.status == 'moving':
distance = truck.speed * deltaTime
moveTowardsTarget(truck, distance)
if truck.cargo:
truck.cargo.stress += baseStress * (1.0 - truck.comfortFactor) * deltaTime
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `TRUCK_ARRIVED` | Info | "Le camion est revenu au zoo." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Envoi en Mission (Action)
**Description UX** : Le joueur achète un animal sur la carte du monde. Le camion part automatiquement le chercher.
**Description UI** : Le camion quitte sa case au zoo (animation départ) et apparaît sur la carte du monde, se déplaçant vers la cible.
**Emplacement** : Zoo -> Carte Monde.
**Intégration** : Transition fluide.
**Navigation** : Achat -> Vue Carte Monde (auto ou manuelle).
**Événements** : `TRUCK_DEPART`.
#### Assets
- **Musiques** : N/A
- **Sons** : `engine_start.mp3`, `horn.mp3`.
- **Graphiques** : Sprite Camion (Vue dessus et côté).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Roues qui tournent, fumée échappement.
- **Couleurs** : Jaune/Noir (Chantier) ou Blanc (Livraison).
- **Textes** : "En route vers [Destination]".
- **Formes** : N/A
### Suivi Trajet (Passif/Actif)
**Description UX** : Le joueur peut suivre le camion sur la carte du monde.
**Description UI** : Icône camion qui bouge sur la ligne de trajet. Timer estimé au survol.
**Emplacement** : Carte Monde.
**Intégration** : Overlay.
**Navigation** : Clic Camion -> Info Trajet.
**Événements** : `TRACK_TRUCK`.
#### Assets
- **Musiques** : N/A
- **Sons** : Bruit moteur continu (faible).
- **Graphiques** : Ligne pointillée (trajet).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Déplacement linéaire.
- **Couleurs** : Ligne Blanche.
- **Textes** : "Arrivée dans MM:SS".
- **Formes** : N/A
### Activité d'Attente (Gameplay)
**Description UX** : Pendant le trajet (temps mort), le joueur peut cliquer sur le camion pour le "booster" ou nettoyer le pare-brise (mini-jeu simple) pour gagner quelques secondes ou de l'XP.
**Description UI** : Zoom sur le camion. Taches apparaissent, clic pour nettoyer.
**Emplacement** : Modal Camion (en trajet).
**Intégration** : Mini-jeu optionnel.
**Navigation** : Clic Camion -> Mini-jeu.
**Événements** : `CLEAN_WINDSHIELD`.
#### Assets
- **Musiques** : Radio camion (musique lo-fi).
- **Sons** : `wipe.mp3` (essuie-glace). **Design ASMR** : Bruit d'éponge mouillée ou de raclette satisfaisant.
- **Graphiques** : Taches de boue/insectes.
- **Images** : Vue cockpit simplifiée.
- **Vidéos** : N/A
- **Animations** : Essuie-glace qui bouge.
- **Couleurs** : N/A
- **Textes** : "Boost !"
- **Formes** : N/A
### Arrivée (Passif)
**Description UX** : Le camion revient au zoo et se gare.
**Description UI** : Animation d'arrivée. Notification "Camion rentré".
**Notification Push** : "Le camion est de retour !" (si application fermée).
**Emplacement** : Case Camion.
**Intégration** : Fin cycle.
**Navigation** : N/A
**Événements** : `TRUCK_ARRIVE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `truck_stop.mp3`.
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Freinage.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,122 @@
# Spécifications : Carte (Générique)
## Définition
Une carte est une grille de cases représentant un espace de jeu ou de navigation.
## Propriétés
- **Dimensions** : Largeur et hauteur définies en nombre de cases.
- **Biomes** : Les cases ont une couleur de fond représentant leur biome (milieu).
- **Quadrillage** : Les cases sont disposées en grille orthogonale.
- **Cohérence** : Les transitions de couleurs (milieux) et de températures doivent être douces entre les cases adjacentes.
## Types de cartes
- Carte du Zoo (Espace de gestion du joueur)
- Carte du Monde (Espace de navigation multijoueur)
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "enum ('zoo', 'world')",
"width": "integer",
"height": "integer",
"grid": [
[ { "case_ref": "case_id" } ]
]
}
```
### Caractéristiques Initiales
N/A (Dépendant du type)
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création à l'initialisation du jeu/compte.
### Conditions de Disparition
Suppression du compte.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A (Porté par les cases)
### Impact Milieu (Biome)
N/A (Porté par les cases)
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Navigation (Action)
**Description UX** : Le joueur explore la carte.
**Description UI** : Drag & Drop (Pan) pour se déplacer. Zoom In/Out (Molette/Pinch).
**Emplacement** : Vue Principale.
**Intégration** : Plein écran.
**Navigation** : Pan/Zoom.
**Événements** : `MAP_MOVE`, `MAP_ZOOM`.
#### Assets
- **Musiques** : Ambiance calme (Zoo) / Aventure (Monde).
- **Sons** : Vent léger.
- **Graphiques** : Grille (Grid lines) subtile.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Inertie du mouvement.
- **Couleurs** : Fond neutre hors carte.
- **Textes** : Coordonnées (Debug).
- **Formes** : Rectangulaire.

162
docs/specs/carte_monde.md Normal file
View File

@@ -0,0 +1,162 @@
# Spécifications : Carte du Monde
## Définition
La carte du monde est l'espace multijoueur où sont situés les zoos des joueurs, des bots, les villes et les laboratoires.
## Structure
- **Grille** : Fixe, avec des positions définies pour chaque entité.
- **Fond** : Reprend les biomes de la carte du zoo (Prairie/Océan/Montagne) en fond.
- **Zoom** : Niveau de zoom dépendant de l'upgrade "Agrandir la carte". Pas de pan manuel.
## Contenu Initial (Lancement)
- 1 Case Agrandissement de la carte (Payable en unités de recherche)
- 1 Compteur de bébés à vendre
- 1 Compteur d'animaux à vendre
- 1 Compteur de laboratoires
- 1 Compteur de zoos
- 1 Compteur de villes
- 1 Case Accueil nouveaux animaux (Haut gauche)
- 1 Case Nourriture générale (Haut gauche)
- 1 Case Camion (Haut gauche)
- 24 Cases de terrain (3 couleurs différentes)
## Entités Visibles
- **Zoos Joueurs** : Nom, icône, indicateurs.
- **Zoos Bots** : Identiques aux joueurs.
- **Villes** : Sources de visiteurs.
- **Laboratoires** : Sources d'œufs/bébés rares.
- **Camions** : En transit entre les entités.
## Mécaniques
- **Navigation** : Vue d'ensemble du marché.
- **Interactions** : Achat d'œufs/animaux via le camion.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "world_map",
"width": "integer (très grand)",
"height": "integer",
"sites": [ { "id": "uuid", "type": "zoo|city|lab", "pos": { "x": "int", "y": "int" } } ],
"trucks": [ { "id": "uuid", "owner_id": "uuid", "pos": { "x": "float", "y": "float" }, "target": "uuid" } ]
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Rayon Visible | 500km (simulé) |
| Nb Villes | 10 (dans rayon départ) |
| Nb Labos | 2 (dans rayon départ) |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Unique (Singleton serveur).
### Conditions de Disparition
Jamais.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
Calcul des distances Ville -> Zoo pour l'attractivité.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Spawn Bot** : Apparition nouveau zoo bot.
* **Spawn Truck** : Camion visible.
## 7. Progression
### Tableau des Upgrades
Voir `agrandissement_carte.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Vue Globale (Passif)
**Description UX** : Le joueur voit les autres acteurs et les flux économiques.
**Description UI** : Carte style "Google Maps" simplifiée ou grille hexagonale. Icônes (Maisons, Gratte-ciels, Fioles). **Flux** : Petites particules (voitures/points) voyageant entre les villes et les zoos attractifs.
**Emplacement** : Écran Carte Monde.
**Intégration** : Plein écran.
**Navigation** : Bouton Retour Zoo.
**Événements** : `OPEN_WORLD_MAP`.
#### Assets
- **Musiques** : Thème Aventure/Voyage.
- **Sons** : Vent, Bruit lointain trafic.
- **Graphiques** : Fond carte (Biomes flous).
- **Images** : Icônes Sites.
- **Vidéos** : N/A
- **Animations** : Camions qui bougent.
- **Couleurs** : Desaturées (pour faire ressortir les icônes).
- **Textes** : Noms des villes/zoos.
- **Formes** : Pins/Marqueurs.
### Brouillard de Guerre (Passif)
**Description UX** : Les zones inexplorées sont cachées.
**Description UI** : Nuages ou zone sombre en périphérie.
**Emplacement** : Bords Carte.
**Intégration** : Mask.
**Navigation** : N/A
**Événements** : N/A
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Texture Nuages.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Nuages qui dérivent lentement.
- **Couleurs** : Blanc/Gris.
- **Textes** : "Zone Inexplorée".
- **Formes** : N/A

166
docs/specs/carte_zoo.md Normal file
View File

@@ -0,0 +1,166 @@
# Spécifications : Carte du Zoo
## Définition
La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux.
## Structure
- **Grille** : Composée de cases individuelles.
- **Biomes** : Divisée en tiers de largeur :
- Gauche : Prairie
- Milieu : Océan
- Droite : Montagne
- **Dégradés** : Couleurs et températures varient doucement au sein des biomes.
## Contenu Initial (Lancement)
- 1 Case Agrandissement du zoo (+1 case, payant)
- 1 Case Recherche (Coin haut gauche)
- 1 Case Billeterie (Coin haut gauche)
- 1 Case Nurserie (Coin haut gauche)
- 1 Case Accueil nouveaux animaux (Coin haut gauche)
- 1 Case Nourriture générale (Coin haut gauche)
- 1 Case Camion (Coin haut gauche)
- 24 Cases de terrain (3 couleurs différentes réparties selon les biomes)
## Mécaniques
- **Placement** : Le joueur peut placer des œufs, des animaux et des bâtiments sur les cases vides.
- **Déplacement** : Glisser-déposer pour réorganiser.
- **Visiteurs** : Les visiteurs se déplacent sur la grille.
- **Feedbacks** : L'état du terrain (herbe jaunie, givre) reflète l'adéquation avec les animaux.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"owner_id": "uuid",
"width": "integer (init 5)",
"height": "integer (init 6)",
"cases": [ ... ]
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Taille | 30 cases (5x6 approx) |
| Biomes | 3 (Tiers) |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création du compte joueur.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A (Géré par case)
### Impact Milieu (Biome)
N/A (Géré par case)
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
Support du pathfinding (A* sur la grille).
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Agrandissement** : Ajout d'une colonne/ligne ou case adjacente.
## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case_zoo.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function initZooMap():
width = 6
height = 5
for x in 0..width:
for y in 0..height:
biome = getBiomeByColumn(x, width)
createCase(x, y, biome)
```
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Interaction Grille (Action)
**Description UX** : Le joueur clique sur une case pour voir son contenu ou construire.
**Description UI** : Surbrillance de la case au survol. Clic ouvre un **Panneau Latéral (Bottom Sheet)** non bloquant (Info/Construire).
**Emplacement** : Grille.
**Intégration** : Curseur.
**Navigation** : Clic -> Menu.
**Événements** : `CLICK_CASE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `click_tile.mp3`.
- **Graphiques** : Cadre de sélection blanc/brillant.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Pulsation du cadre.
- **Couleurs** : Blanc.
- **Textes** : N/A
- **Formes** : Carré.
### Mode Construction (Action)
**Description UX** : Le joueur place un bâtiment ou modifie le terrain.
**Description UI** : Grille visible. Cases valides en vert, invalides en rouge.
**Mode Peinture** : Le joueur peut glisser son doigt (Drag) pour construire/modifier plusieurs cases d'affilée (ex: peindre un biome ou poser une route).
**Alternative Accessibilité** : Tap to Select (Bâtiment) -> Tap to Place (Case) pour éviter le Drag & Drop.
**Emplacement** : Grille.
**Intégration** : Overlay.
**Navigation** : Drag -> Drop.
**Événements** : `ENTER_BUILD_MODE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `grid_snap.mp3`.
- **Graphiques** : Grille semi-transparente.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Snap to grid.
- **Couleurs** : Vert/Rouge (Alpha 0.5).
- **Textes** : N/A
- **Formes** : Carrés.

View File

@@ -0,0 +1,122 @@
# Spécifications : Case (Générique)
## Définition
Une case est l'unité élémentaire de la grille (Zoo ou Monde).
## Propriétés
- **Coordonnées** : Position (x, y) dans la grille.
- **Couleur (Milieu)** : Définit le biome et l'environnement visuel.
- **Température** : Liée à la couleur/biome.
- **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre).
## Règles
- Les transitions de propriétés (couleur, température) entre cases adjacentes doivent être douces.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"x": "integer",
"y": "integer",
"biome_id": "integer",
"temperature_offset": "float",
"content_ref": "uuid | null",
"content_type": "string",
"state_flags": ["frozen", "dry", "dirty"]
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
`Température_Réelle = Température_Biome + Température_Offset + Saison_Mod`
### Impact Milieu (Biome)
Définit la couleur de fond.
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Feedback État (Passif)
**Description UX** : La case montre son état physique.
**Description UI** : Overlay de texture (Givre, Craquelures, Boue).
**Emplacement** : Case.
**Intégration** : Layer 1 (Au-dessus du fond, sous le contenu).
**Navigation** : N/A
**Événements** : `STATE_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Textures alpha (Givre blanc, Craquelures marron).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Apparition progressive (Fade).
- **Couleurs** : Blanc, Marron, Gris.
- **Textes** : N/A
- **Formes** : Carré.

112
docs/specs/case_monde.md Normal file
View File

@@ -0,0 +1,112 @@
# Spécifications : Case de Monde (Générique)
## Définition
Case spécifique à la grille du monde, servant de support aux sites et aux compteurs.
## Types de Contenu Possibles
- **Sites** : Zoo (Joueur/Bot), Ville, Laboratoire.
- **Compteurs** : Bébés à vendre, Animaux à vendre, Labos, Zoos, Villes.
- **Zones Fonctionnelles** : Agrandissement carte, Camion (zone de dépôt/vente).
## Propriétés Spécifiques
- **Fixité** : Le contenu des cases monde est généralement fixe (sites) ou fonctionnel (zones d'interface).
- **Navigation** : Les camions naviguent de case en case entre les sites.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Hérite de `Case (Générique)`.
Pas de propriétés supplémentaires spécifiques.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération monde.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Survol (Passif)
**Description UX** : Explorer la carte du monde.
**Description UI** : Curseur main. Tooltip au survol des sites.
**Emplacement** : Carte Monde.
**Intégration** : Standard.
**Navigation** : Mouse move.
**Événements** : `HOVER_WORLD_CASE`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

135
docs/specs/case_zoo.md Normal file
View File

@@ -0,0 +1,135 @@
# Spécifications : Case de Zoo (Générique)
## Définition
Case spécifique à la grille du zoo, pouvant accueillir les éléments de gestion.
## Types de Contenu Possibles
- **Bâtiments** : Billeterie, Nurserie, Boutique, Centre de Recherche, École, Accueil Animaux.
- **Animaux** : Bébés matures, Animaux adultes.
- **Éléments Mobiles** : Visiteurs, Camion (sur sa zone dédiée).
- **Vide** : Terrain libre pour construction ou placement.
## Propriétés Spécifiques
- **Occupation** : Une case ne peut contenir qu'un seul élément principal (bâtiment/animal) à la fois.
- **Visite** : Enregistre la date de dernier passage d'un visiteur (pour la règle de disparition).
- **Qualité** : Indicateur visuel d'adéquation avec l'animal posé dessus (Jaunissement, Givre).
## Liste des Cases Spéciales (cf. Carte Zoo)
- Agrandissement
- Recherche
- Billeterie
- Nurserie
- Accueil
- Nourriture
- Camion
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Hérite de `Case (Générique)`.
```json
{
"last_visit_time": "timestamp",
"quality_score": "float (0-100)"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Dernière Visite | Création du zoo |
| Qualité | 100 |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération zoo.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Voir `case_generique.md`.
### Impact Milieu (Biome)
Voir `case_generique.md`.
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Passage Visiteur** : Met à jour `last_visit_time`.
## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function checkAnimalDisappearance(case):
if currentTime - case.last_visit_time > MAX_TIME_WITHOUT_VISIT:
removeAnimal(case.content)
```
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Sélection (Action)
**Description UX** : Clic sur une case zoo.
**Description UI** : Highlight + Menu contextuel adapté au contenu (Animal -> Stats, Bâtiment -> Upgrade, Vide -> Construire).
**Emplacement** : Grille.
**Intégration** : Standard.
**Navigation** : Clic.
**Événements** : `SELECT_ZOO_CASE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `select_soft.mp3`.
- **Graphiques** : Cadre sélection.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Blanc.
- **Textes** : N/A
- **Formes** : Carré.

View File

@@ -0,0 +1,190 @@
# Spécifications : Centre de Recherche
## Définition
Bâtiment produisant des points de science/recherche.
## Fonctionnalités
- **Production** : Génère des unités de recherche périodiquement.
- **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).
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Augmente la production et le niveau de visibilité des offres externes.
- **Ratio** : 1 unité couvre la visibilité sur 10 zoos définis (par proximité).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "research_center",
"level": "integer (1-7)",
"stats": {
"points_generated": "integer",
"last_collection": "timestamp"
}
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Production | 10 pts / heure |
| Portée Radar | 10 zoos voisins |
| Rareté Visible | Niveau 1 (Commun) |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage.
### Conditions de Disparition
Indestructible (ou un seul obligatoire).
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
Production continue 24h/24.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Vitesse Recherche** :
| Niveau | Points / Heure |
| :--- | :--- |
| 1 | 10 |
| 2 | 20 |
| 3 | 40 |
| 4 | 80 |
| 5 | 150 |
| 6 | 300 |
| 7 | 600 |
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Découverte** : Déblocage d'une nouvelle zone carte monde.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Production | Portée (Zoos) | Rareté Visible | Temps Construction |
| :--- | :--- | :--- | :--- | :--- | :--- |
| 1 | 0 | 10 | 10 | 1 | 0s |
| 2 | 300 | 20 | 20 | 2 | 0s |
| 3 | 600 | 40 | 30 | 2 | 0s |
| 4 | 1200 | 80 | 50 | 3 | 0s |
| 5 | 2400 | 150 | 80 | 3 | 0s |
| 6 | 4800 | 300 | 120 | 4 | 0s |
| 7 | 9600 | 600 | Tout | 5 | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateResearch(center):
points = center.productionRate * deltaTime
player.addResearchPoints(points)
visibleRarity = center.maxRarityVisible
updateWorldMapVisibility(center.range, visibleRarity)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `RESEARCH_UNLOCK` | Info | "Nouvelle zone de carte découverte !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Collecte de Points (Action)
**Description UX** : Les points de recherche s'accumulent. Le joueur clique sur le bâtiment pour les récolter (ou collecte auto si implémenté).
**Description UI** : Une icône "Fiole" ou "Atome" flotte au-dessus du bâtiment quand des points sont disponibles. Au clic, les points volent vers le compteur global.
**Emplacement** : Case Centre Recherche.
**Intégration** : Overlay au-dessus du sprite.
**Navigation** : Clic Bâtiment -> Collecte.
**Événements** : `COLLECT_RESEARCH`.
#### Assets
- **Musiques** : N/A
- **Sons** : `bubble_pop.mp3` ou `sci_fi_bloop.mp3`. **Design ASMR** : "Bloop" liquide ou tintement cristallin.
- **Graphiques** : Icône Fiole bleue/violette.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Flottement (bobbing) de l'icône. Trajectoire courbe des points vers le HUD.
- **Couleurs** : Bleu Science #0088FF.
- **Textes** : "+10 RP".
- **Formes** : Cercle ou Fiole.
### Consultation & Arbre Techno (Consultation)
**Description UX** : Le joueur veut voir sa production et débloquer des zones.
**Description UI** : **Bottom Sheet** affichant "Production : X/h". Un bouton "Carte du Monde" pour voir l'effet du radar.
**Emplacement** : Modal Centre Recherche.
**Intégration** : Lien vers la Carte du Monde.
**Navigation** : Clic Bâtiment (si pas de collecte ou double clic) -> Modal.
**Événements** : `OPEN_RESEARCH`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_open.mp3`
- **Graphiques** : Style High-Tech / Labo.
- **Images** : `radar_icon.png`.
- **Vidéos** : N/A
- **Animations** : Radar qui balaie (décoratif).
- **Couleurs** : Blanc, Gris, Bleu néon.
- **Textes** : "Portée Radar : X km".
- **Formes** : Panneaux anguleux.
### Amélioration (Upgrade)
**Description UX** : Augmenter la production et la portée.
**Description UI** : Bouton standard d'upgrade avec comparaison "Actuel vs Suivant".
**Emplacement** : Modal Centre Recherche.
**Intégration** : Standard.
**Navigation** : Clic Upgrade.
**Événements** : `UPGRADE_RESEARCH`.
#### Assets
- **Musiques** : N/A
- **Sons** : `upgrade_tech.mp3` (son électronique).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Flash bleu sur le bâtiment.
- **Couleurs** : Bleu.
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,142 @@
# Spécifications : Enchère (Générique)
## Définition
Mécanisme de vente entre joueurs/bots sur la Carte du Monde.
## Fonctionnement
1. **Mise en vente** : Le vendeur place un animal/bébé sur la case Camion/Vente de son zoo. Définit un prix initial.
2. **Offre** : Visible sur la Carte du Monde (slot sous le zoo).
3. **Enchères** : Les acheteurs (joueurs/bots) proposent des prix.
4. **Validation** : Le vendeur accepte une offre ou laisse courir.
5. **Sécurisation** : Une fois l'offre acceptée/validée, un **délai de 10 minutes** (Sablier) s'enclenche.
6. **Finalisation** : À la fin du sablier, le transfert de propriété et de fonds est effectué (anti-race condition).
## Types
- Vente de Bébés
- Vente d'Animaux Adultes
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"seller_id": "uuid",
"animal_ref": "uuid",
"start_price": "integer",
"current_bid": "integer",
"highest_bidder_id": "uuid | null",
"end_time": "timestamp",
"status": "enum ('active', 'pending_validation', 'finalizing', 'completed', 'cancelled')",
"finalization_timer": "timestamp (end)"
}
```
### Caractéristiques Initiales
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function placeBid(auction, bidder, amount):
if amount <= auction.current_bid: return Error
if bidder.coins < amount: return Error
auction.current_bid = amount
auction.highest_bidder_id = bidder.id
function finalizeAuction(auction):
if now < auction.finalization_timer: return
transferCoins(auction.highest_bidder_id, auction.seller_id, auction.current_bid)
transferAnimal(auction.seller_id, auction.highest_bidder_id, auction.animal_ref)
auction.status = 'completed'
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `BID_PLACED` | Info | "Offre placée avec succès." |
| `OUTBID` | Alerte | "Vous avez été surenchéri !" |
| `AUCTION_WON` | Succès | "Vous avez remporté l'enchère ! Livraison en cours..." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Consultation des Offres (Consultation)
**Description UX** : Le joueur survole les zoos sur la carte du monde pour voir les offres.
**Description UI** : Tooltip ou Slot sous le zoo affichant l'icône de l'animal et le prix actuel.
**Emplacement** : Carte Monde.
**Intégration** : Overlay Zoo.
**Navigation** : Survol -> Info.
**Événements** : `HOVER_OFFER`.
#### Assets
- **Musiques** : N/A
- **Sons** : `hover_soft.mp3`.
- **Graphiques** : Cadre Offre (Doré si rare).
- **Images** : Icône Animal.
- **Vidéos** : N/A
- **Animations** : Prix qui clignote si nouvelle enchère.
- **Couleurs** : Vert (Abordable), Rouge (Trop cher).
- **Textes** : "Lapin Rare - 500$".
- **Formes** : Rectangle arrondi.
### Enchérir (Action)
**Description UX** : Le joueur clique sur une offre pour ouvrir le détail et placer une enchère.
**Description UI** : **Bottom Sheet** d'enchère. Infos complètes de l'animal. Champ de saisie "Votre offre" ou boutons rapides (+10, +50, +100).
**Emplacement** : Modal Enchère.
**Intégration** : Modal centrée.
**Navigation** : Clic Offre -> Modal -> Enchérir.
**Événements** : `PLACE_BID`.
#### Assets
- **Musiques** : N/A
- **Sons** : `bid_placed.mp3` (bruit de marteau).
- **Graphiques** : Icône Marteau.
- **Images** : Portrait Animal HD.
- **Vidéos** : N/A
- **Animations** : Compteur prix qui monte.
- **Couleurs** : Bouton Vert.
- **Textes** : "Enchérir".
- **Formes** : N/A
### Sablier de Validation (Attente)
**Description UX** : L'enchère est remportée, le transfert est en cours (10 min).
**Description UI** : Icône Sablier sur l'offre et dans le HUD de l'acheteur.
**Notification Push** : "Enchère remportée ! Animal livré." à la fin du timer.
**Emplacement** : Carte Monde & HUD.
**Intégration** : Statut "En cours".
**Navigation** : N/A
**Événements** : `TIMER_START`.
#### Assets
- **Musiques** : N/A
- **Sons** : `tick_tock.mp3` (ambiance très discrète si focus).
- **Graphiques** : Sablier animé.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Sable qui coule.
- **Couleurs** : Orange.
- **Textes** : "Validation : MM:SS".
- **Formes** : N/A
### Activité "Clic" (Gameplay)
**Description UX** : Pendant les 10 min, le joueur peut cliquer sur le sablier pour "accélérer" (symboliquement) ou gagner un petit bonus (XP/Pièce) pour patienter.
**Description UI** : Le sablier réagit au clic (secousse).
**Emplacement** : Modal Validation.
**Intégration** : Mini-jeu.
**Navigation** : Clic Sablier.
**Événements** : `CLICK_HOURGLASS`.
#### Assets
- **Musiques** : N/A
- **Sons** : `sand_shake.mp3`. **Design ASMR** : Bruit de sable qui crisse ou petit choc mat.
- **Graphiques** : Particules de sable.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Secousse.
- **Couleurs** : N/A
- **Textes** : "+1 XP".
- **Formes** : N/A

120
docs/specs/etat.md Normal file
View File

@@ -0,0 +1,120 @@
# Spécifications : États (Feedbacks Visuels)
## Définition
Indicateurs visuels permettant au joueur de comprendre l'état de ses animaux et de son terrain sans utiliser de jauges (UI).
## États des Animaux
- **Froid** : Teinte bleuâtre/pâle, givre visible sur le sprite.
- **Chaud** : Teinte rougeâtre, vapeur de chaleur visible.
- **Faim** : Déplacement lent, maigreur visible, cherche le sol, icône "faim" discrète.
- **Maladie / Mort proche** : Animal couché, couleurs ternes, mouches autour.
- **Heureux / Reproduction** : Cœurs, sautillements, couleurs vives.
## États du Terrain
- **Mauvais Biome** : Herbe jaunie, sol craquelé ou boueux (changement de teinte global).
- **Température Inadaptée** : Sol givré (froid) ou vapeurs (chaud).
- **Saleté** : Déchets sombres, poussière grise.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Liste d'enums ou flags dans l'objet `Animal` ou `Case`.
`visual_states: ["frozen", "hungry"]`
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Déclenchés par les seuils de stats (Santé, Faim, T°).
### Conditions de Disparition
Retour à la normale des stats.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Déclencheurs Froid/Chaud.
### Impact Milieu (Biome)
Déclencheurs Mauvais Biome.
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
Déclencheur Heureux.
### Impact Mort
Déclencheur Maladie/Mort.
### Impact Nourriture
Déclencheur Faim.
### Impact Attractivité (Visiteurs/Animaux)
Les états négatifs (Sale, Malade) repoussent les visiteurs.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
if animal.temp < animal.idealTemp - 10:
addVisualState("frozen")
elif animal.temp > animal.idealTemp + 10:
addVisualState("overheat")
```
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Lecture Immédiate (Passif)
**Description UX** : Le joueur comprend la situation d'un coup d'œil sans ouvrir de menu.
**Description UI** : Pas d'UI. Tout passe par le rendu graphique des entités.
**Emplacement** : Grille Zoo.
**Intégration** : Moteur de rendu.
**Navigation** : N/A
**Événements** : `STATE_CHANGE`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Shaders (Color Overlay), Systèmes de particules.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Animations spécifiques (Trembler, Boiter).
- **Couleurs** : Code universel (Bleu=Froid, Rouge=Chaud, Vert=OK, Jaune=Malade).
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,69 @@
# Spécifications : Impacts (Générique)
## Définition
Les impacts sont les conséquences des actions du joueur ou des événements du jeu sur les scores et l'état du zoo.
## Types d'Impacts
### Sur l'Attractivité
- **Positif** : Naissance, Achat d'animal rare, Résolution d'incident visiteur, Diversité élevée.
- **Négatif** : Mort d'animal, Incident visiteur ignoré, Zoo vide.
### Sur la Reproduction
- **Positif** : Animal bien nourri, Température idéale, Biome (couleur) idéal, Proximité partenaire compatible.
- **Négatif** : Faim, Température inadaptée, Mauvais biome, Stress (transport long), Morts dans le zoo.
### Sur les Revenus
- **Positif** : Visiteurs nombreux, Boutiques améliorées, Animaux rares (revenu passif), Ventes réussies.
- **Négatif** : Coûts d'entretien (nourriture), Achats onéreux.
### Sur la Survie
- **Positif** : Adéquation Biome/Animal, Nourriture suffisante.
- **Négatif** : Froid/Chaud extrême, Faim prolongée, Isolement.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Structure de configuration des impacts (Ruleset).
```json
{
"impact_rules": [
{ "trigger": "event_type", "target": "score_type", "value": "float", "duration": "int" }
]
}
```
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function applyImpact(target, impactType, value):
if impactType == 'ATTRACTIVENESS':
target.attractiveness += value
elif impactType == 'SURVIVAL':
target.survival_score += value
logEvent(target.id, impactType, value)
```
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Feedback Visuel d'Impact (Passif)
**Description UX** : Le joueur voit les conséquences de ses actions.
**Description UI** : Popups flottants ("Floating Text") au-dessus des entités concernées.
**Emplacement** : World Space.
**Intégration** : Temporaire (Fade out).
**Navigation** : N/A
**Événements** : `IMPACT_APPLIED`.
#### Assets
- **Musiques** : N/A
- **Sons** : `positive.mp3` (montant), `negative.mp3` (descendant).
- **Graphiques** : Flèches Vertes (Haut) / Rouges (Bas).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Texte qui monte et disparaît.
- **Couleurs** : Vert, Rouge.
- **Textes** : "+10 Attractivité", "-5 Santé".
- **Formes** : N/A

View File

@@ -0,0 +1,122 @@
# Spécifications : Inventaire des Animaux
## Structure
75 Animaux répartis sur les 15 Milieux (Couleurs) et 5 Niveaux de Rareté.
## Exemples (Extrait)
- **Prairie / Rareté 1** : Lapin
- **Prairie / Rareté 5** : Licorne
- **Océan / Rareté 1** : Poisson Clown
- **Océan / Rareté 5** : Kraken
- **Montagne / Rareté 1** : Chèvre
- **Montagne / Rareté 5** : Dragon
*(La liste complète des 75 animaux doit être définie dans un fichier de données ou une table de loot).*
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique `animal_types`.
```json
{
"id": "string (ex: 'rabbit')",
"name": "string",
"rarity": "int",
"ideal_biome": "int",
"ideal_temp": "float",
"base_value": "int"
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Bestiaire / Encyclopédie (Consultation)
**Description UX** : Le joueur consulte les animaux découverts/possédés.
**Description UI** : Livre ou Grille d'icônes. Les animaux non découverts sont des silhouettes noires.
**Emplacement** : Menu Principal -> Bestiaire.
**Intégration** : Modal Plein Écran.
**Navigation** : Filtres (Biome, Rareté) -> Clic Animal -> Détail.
**Événements** : `OPEN_BESTIARY`.
#### Assets
- **Musiques** : N/A
- **Sons** : `page_turn.mp3`.
- **Graphiques** : Fond Livre ancien.
- **Images** : 75 Icônes Animaux.
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Sépia/Papier.
- **Textes** : Lore/Description.
- **Formes** : N/A

View File

@@ -0,0 +1,104 @@
# Spécifications : Inventaire des Bébés Animaux
## Correspondance
Pour chaque animal adulte, il existe une version "Bébé".
- **Visuel** : Version "chibi" ou réduite du sprite adulte.
- **Nom** : "Bébé [Nom Animal]".
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Même table que `animal_types` avec flag `is_baby`.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Visualisation Bébé (Passif)
**Description UX** : Différencier les bébés des adultes.
**Description UI** : Sprite plus petit (50% taille), tête plus grosse, yeux plus grands.
**Emplacement** : Grille / Nurserie.
**Intégration** : Sprite.
**Navigation** : N/A
**Événements** : N/A
#### Assets
- **Musiques** : N/A
- **Sons** : Cris plus aigus.
- **Graphiques** : Sprites Chibi.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Démarche maladroite.
- **Couleurs** : Identiques Adulte.
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,105 @@
# Spécifications : Inventaire des Heures de la Journée
## Cycle Journalier
- **Aube** (06h-09h) : Arrivée des premiers visiteurs.
- **Jour** (09h-18h) : Pic d'activité, chaleur maximale.
- **Crépuscule** (18h-21h) : Départ des visiteurs.
- **Nuit** (21h-06h) : Zoo fermé (sauf événements nocturnes), Température baisse, Repos des animaux.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Cycle perpétuel.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Voir `temperature.md`.
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Aube/Crépuscule** : Changement luminosité globale.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Cycle Jour/Nuit (Passif)
**Description UX** : La luminosité change progressivement.
**Description UI** : Filtre global de couleur (Bleu nuit -> Orange aube -> Blanc jour -> Orange crépuscule).
**Emplacement** : Écran entier.
**Intégration** : Layer FX.
**Navigation** : N/A
**Événements** : `TIME_CHANGE`.
#### Assets
- **Musiques** : Thème Jour / Thème Nuit (plus calme).
- **Sons** : Coq (Matin), Hibou (Nuit).
- **Graphiques** : Ombres qui tournent (si 3D ou simulé).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Transition couleur.
- **Couleurs** : Palette Cycle.
- **Textes** : Horloge "14:00".
- **Formes** : N/A

View File

@@ -0,0 +1,109 @@
# Spécifications : Inventaire des Météos
## Types de Météo
1. **Ensoleillé** : Bonus attractivité, Température +1°C.
2. **Nuageux** : Neutre.
3. **Pluvieux** : Malus attractivité (visiteurs partent plus vite), Bonus biome "Marécage/Océan".
4. **Orage** : Stress animaux (bruit), Malus fort visiteurs.
5. **Neige** : Température -5°C, Bonus biome "Polaire/Montagne".
6. **Canicule** : Température +5°C, Risque surchauffe.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Probabilités selon Saison.
### Conditions de Disparition
Changement toutes les X heures ou jours.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Voir liste ci-dessus.
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
Voir liste ci-dessus.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Neige/Orage** : Ralentissement camions (-20%).
### Dépenses (Boutiques/Visiteurs)
**Pluie** : Augmente vente parapluies/abris.
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Changement Météo** : Notification.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `WEATHER_CHANGE` | Info | "La météo change : [Nouvelle Météo]" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Ambiance Météo (Passif)
**Description UX** : Le joueur ressent la météo actuelle.
**Description UI** : Overlay plein écran (Pluie, Neige, Rayons soleil). Nuages qui passent (ombres).
**Emplacement** : Écran entier.
**Intégration** : Layer FX.
**Navigation** : N/A
**Événements** : `WEATHER_FX`.
#### Assets
- **Musiques** : N/A
- **Sons** : Pluie, Vent, Tonnerre.
- **Graphiques** : Particules Pluie/Neige.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Chute particules.
- **Couleurs** : Teinte Bleue (Nuit/Pluie), Jaune (Soleil).
- **Textes** : N/A
- **Formes** : N/A

View File

@@ -0,0 +1,116 @@
# Spécifications : Inventaire des Milieux
## Liste des Milieux (Couleurs)
1. **Prairie Tendre** (Vert clair)
2. **Forêt Dense** (Vert foncé)
3. **Savane** (Jaune/Ocre)
4. **Désert** (Sable)
5. **Plage** (Beige)
6. **Océan Surface** (Bleu clair)
7. **Océan Profond** (Bleu foncé)
8. **Récif** (Corail/Multicolore)
9. **Montagne Basse** (Gris vert)
10. **Roche** (Gris)
11. **Sommet Enneigé** (Blanc)
12. **Volcanique** (Noir/Rouge)
13. **Marécage** (Vert boue)
14. **Toundra** (Bleu gris)
15. **Jungle** (Vert saturé)
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique (Reference Data).
### Caractéristiques Initiales
Voir liste ci-dessus.
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Chaque milieu a une T° par défaut.
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Palette Biome (Consultation)
**Description UX** : Le joueur consulte la liste des biomes disponibles pour terraformer.
**Description UI** : Grille de carrés colorés avec infobulle (Nom, T°).
**Emplacement** : Outil Terraformation.
**Intégration** : Sélecteur.
**Navigation** : Clic Couleur.
**Événements** : `SELECT_BIOME`.
#### Assets
- **Musiques** : N/A
- **Sons** : `select.mp3`.
- **Graphiques** : Carrés de texture.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Palette 15 couleurs.
- **Textes** : Noms des milieux.
- **Formes** : Carrés.

View File

@@ -0,0 +1,108 @@
# Spécifications : Inventaire des Problèmes et Exigences Visiteurs
## Liste des Incidents
1. **Soif** : "J'ai soif !" -> Nécessite un stand de boisson ou une boutique proche.
2. **Fatigue** : "J'ai mal aux pieds..." -> Nécessite un banc.
3. **Saleté** : "C'est sale ici !" -> Nécessite un nettoyage (clic) ou une poubelle.
4. **Frustration** : "On ne voit rien !" -> Animal trop loin ou caché.
5. **Envie** : "Je veux une peluche !" -> Nécessite une boutique de souvenirs.
6. **Photo** : "Quelle merveille !" -> Le visiteur veut prendre une photo (clic bonus).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Aléatoire sur Visiteur.
### Conditions de Disparition
Résolution ou Départ visiteur.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
**Canicule** : Augmente probabilité "Soif".
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Incident Apparu** : Bulle visible.
* **Incident Résolu** : Gain.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Bulles d'Incidents (Action)
**Description UX** : Voir `visiteur.md`.
**Description UI** : Icônes spécifiques pour chaque problème (Goutte, Zzz, Poubelle, Œil barré, Cadeau, Appareil photo).
**Emplacement** : Visiteur.
**Intégration** : Bulle.
**Navigation** : Clic.
**Événements** : `INCIDENT_ICON`.
#### Assets
- **Musiques** : N/A
- **Sons** : Variés selon incident (Bruit eau, Bâillement).
- **Graphiques** : Set d'icônes vectorielles.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Pop.
- **Couleurs** : Noir sur Blanc.
- **Textes** : N/A
- **Formes** : Bulle.

View File

@@ -0,0 +1,116 @@
# Spécifications : Inventaire des Quêtes
## Types d'Objectifs (Journaliers)
1. **Économique** : "Gagner 1000 pièces", "Vendre pour 500 pièces".
2. **Construction** : "Construire une boutique", "Améliorer la nurserie".
3. **Élevage** : "Faire naître un bébé", "Avoir 3 animaux de milieu Océan".
4. **Social** : "Avoir 50 visiteurs simultanés", "Résoudre 5 incidents".
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "quest",
"objective_type": "string",
"target_value": "int",
"reward_coins": "int",
"is_completed": "boolean"
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Reset quotidien (Minuit serveur).
### Conditions de Disparition
Complétion ou Reset.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Quête Complétée** : Gain récompense.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `QUEST_COMPLETE` | Succès | "Quête terminée ! Récompense reçue." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Suivi Quêtes (Permanent)
**Description UX** : Le joueur voit ses objectifs en cours.
**Description UI** : Liste compacte dans le HUD (ex: "Naissances : 2/5"). Coche verte quand fini.
**Emplacement** : HUD Droite.
**Intégration** : Widget rétractable.
**Navigation** : Clic -> Détail Quêtes.
**Événements** : `QUEST_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `quest_complete.mp3`.
- **Graphiques** : Icône Parchemin.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Flash vert à la complétion.
- **Couleurs** : Blanc (En cours), Vert (Fini).
- **Textes** : Titre Quête, Progression.
- **Formes** : Liste.

View File

@@ -0,0 +1,146 @@
# Spécifications : Inventaire des Saisons
## Cycle Annuel
Le jeu intègre un cycle de 4 saisons qui influence l'environnement et les animaux.
Chaque saison dure un nombre défini de jours de jeu (ex: 7 jours réels ou 30 jours in-game).
## Liste des Saisons
### 1. Printemps
- **Météo dominante** : Ensoleillé, Pluvieux.
- **Température** : Tempérée (+0°C).
- **Impact Général** :
- **Reproduction** : Bonus fort pour la plupart des animaux (+20% naissances).
- **Visiteurs** : Affluence moyenne.
- **Impact Spécifique** :
- Favorise les animaux de type "Prairie" et "Forêt".
### 2. Été
- **Météo dominante** : Ensoleillé, Canicule, Orage.
- **Température** : Chaude (+5°C à +10°C).
- **Impact Général** :
- **Survie** : Risque de surchauffe pour les animaux polaires/montagne.
- **Visiteurs** : Pic d'affluence (vacances), forte demande en boissons/glaces.
- **Impact Spécifique** :
- Favorise les animaux de type "Désert", "Savane", "Jungle".
- Pénalise les animaux de type "Toundra", "Polaire".
### 3. Automne
- **Météo dominante** : Pluvieux, Nuageux, Vent.
- **Température** : Fraîche (-2°C).
- **Impact Général** :
- **Reproduction** : Taux normal.
- **Maladie** : Légère augmentation des risques si les animaux sont mouillés/froids.
- **Impact Spécifique** :
- Favorise les animaux de type "Forêt", "Marécage".
### 4. Hiver
- **Météo dominante** : Neige, Nuageux, Froid.
- **Température** : Froide (-5°C à -15°C).
- **Impact Général** :
- **Survie** : Risque d'hypothermie pour les animaux tropicaux.
- **Reproduction** : Malus fort (sauf espèces adaptées).
- **Visiteurs** : Baisse d'affluence, sauf si événements spéciaux (Noël).
- **Impact Spécifique** :
- Favorise les animaux de type "Toundra", "Polaire", "Montagne".
- Pénalise fortement les animaux de type "Désert", "Jungle", "Récif".
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Cycle annuel fixe.
### Conditions de Disparition
Fin de durée saison.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Voir liste ci-dessus.
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
Voir liste ci-dessus.
### Impact Mort
Voir liste ci-dessus.
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
Voir liste ci-dessus.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Changement Saison** : Notification majeure.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `SEASON_CHANGE` | Info | "C'est le [Saison] !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Ambiance Saisonnière (Passif)
**Description UX** : Le décor change selon la saison.
**Description UI** : Tilesets modifiés (Herbe verte -> Herbe jaune -> Feuilles mortes -> Neige).
**Emplacement** : Grille Zoo.
**Intégration** : Assets graphiques.
**Navigation** : N/A
**Événements** : `SEASON_VISUAL_UPDATE`.
#### Assets
- **Musiques** : Thèmes saisonniers (Vivaldi remix ?).
- **Sons** : Vent hivernal, Oiseaux printemps.
- **Graphiques** : 4 variantes de chaque Tile.
- **Images** : Icône Saison HUD.
- **Vidéos** : N/A
- **Animations** : Feuilles qui tombent (Automne).
- **Couleurs** : Vert, Jaune, Orange, Blanc.
- **Textes** : "Printemps", "Été", etc.
- **Formes** : N/A

View File

@@ -0,0 +1,108 @@
# Spécifications : Inventaire des Températures
## Échelle de Température
1. **Polaire** (-30°C à -10°C) - Feedback : Givre intense
2. **Froid** (-10°C à 5°C) - Feedback : Givre léger
3. **Frais** (5°C à 15°C)
4. **Tempéré** (15°C à 25°C) - Idéal pour la plupart des animaux de base
5. **Chaud** (25°C à 35°C)
6. **Aride** (35°C à 50°C) - Feedback : Vapeur légère
7. **Brûlant** (> 50°C) - Feedback : Vapeur rouge/Feu
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Table statique.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Thermomètre (Consultation)
**Description UX** : Le joueur voit la température actuelle.
**Description UI** : Jauge verticale (Thermomètre) avec mercure rouge. Graduations colorées (Bleu bas, Rouge haut).
**Emplacement** : HUD ou Info Case.
**Intégration** : Widget.
**Navigation** : N/A
**Événements** : `UPDATE_TEMP`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Sprite Thermomètre.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Niveau qui monte/descend.
- **Couleurs** : Dégradé Bleu/Rouge.
- **Textes** : "20°C".
- **Formes** : N/A

158
docs/specs/joueur.md Normal file
View File

@@ -0,0 +1,158 @@
# Spécifications : Joueur
## Définition
L'utilisateur humain.
## Propriétés
- **Compte** : Authentifié par clé privée (pas de mot de passe).
- **Ressources** : Pièces, Unités de recherche.
- **Zoo** : Possède et gère un unique zoo.
- **Démarrage** : Commence avec 200 pièces et 3 couples reproducteurs basiques.
## Actions
- Achat/Vente.
- Placement/Déplacement.
- Upgrade bâtiments/carte.
- Gestion des incidents visiteurs.
- Configuration du profil d'absence (Bot).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"public_key": "string (ed25519)",
"username": "string",
"created_at": "timestamp",
"last_login": "timestamp",
"resources": {
"coins": "integer",
"research_points": "integer"
},
"settings": {
"music_enabled": "boolean",
"bot_profile_id": "integer"
}
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Pièces | 200 |
| Recherche | 0 |
| Animaux | 3 couples (6 animaux) |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Inscription.
### Conditions de Disparition
Suppression compte.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Démarrage autonome** : Le joueur reçoit 3 couples reproducteurs basiques (Lapins/Poules/Canards selon biome) pour garantir une reproduction immédiate et alimenter le marché bas prix.
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Connexion** : Chargement état.
* **Quête** : Validation.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `WELCOME` | Info | "Bienvenue dans votre nouveau zoo !" |
| `NO_MONEY` | Alerte | "Fonds insuffisants." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### HUD Principal (Permanent)
**Description UX** : Le joueur voit en permanence ses ressources et accès rapides.
**Description UI** : Barre supérieure avec Compteurs (Pièces, Recherche, Réputation). Barre inférieure ou latérale avec Menus (Construction, Carte Monde, Inventaire, Profil).
**Emplacement** : Écran (Overlay).
**Intégration** : Fixe.
**Navigation** : Clic Menu -> Ouverture Panneau.
**Événements** : `UI_CLICK`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_click.mp3`.
- **Graphiques** : Style UI "Bois et Pierre" ou "Moderne Clean".
- **Images** : Icônes (Pièce, Fiole, Marteau, Carte).
- **Vidéos** : N/A
- **Animations** : Compteurs qui défilent quand gain/perte.
- **Couleurs** : Or, Bleu, Blanc.
- **Textes** : Chiffres, Labels menus.
- **Formes** : Barres, Boutons ronds.
### Profil & Bot (Configuration)
**Description UX** : Le joueur configure son avatar et son bot d'absence.
**Description UI** : Modal Profil. Onglet "Gestion Absence" avec sélecteur de Bot (Famille > Spécialisation).
**Emplacement** : Menu Profil.
**Intégration** : Modal.
**Navigation** : Profil -> Bot -> Sauvegarder.
**Événements** : `SAVE_PROFILE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `save_success.mp3`.
- **Graphiques** : Portraits de bots.
- **Images** : Avatars joueurs.
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : N/A
- **Textes** : Description des bots ("Le Conservateur : Achète de la nourriture...").
- **Formes** : Cartes de sélection.

118
docs/specs/laboratoire.md Normal file
View File

@@ -0,0 +1,118 @@
# Spécifications : Laboratoire (Site)
## Définition
Un laboratoire est un point d'intérêt spécial sur la Carte du Monde (POI).
## Fonction
- **Offres Spéciales** : Propose périodiquement des œufs ou bébés animaux rares.
- **Prix Fixe** : Contrairement aux zoos, les ventes du laboratoire sont souvent à prix fixe, sans enchères (ou règles spécifiques).
- **Icône** : 🔬
## Interaction
- **Achat** : Glisser l'offre du laboratoire vers le camion du joueur.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "lab",
"current_offer": { "animal_type": "string", "rarity": "int", "price": "int", "expires_at": "timestamp" }
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Rotation Offres** : 1 offre toutes les 4h à 24h.
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Nouvelle Offre Rare** : Notification globale ou locale.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `LAB_OFFER` | Info | "Le laboratoire propose un spécimen rare !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Offre Rare (Passif)
**Description UX** : Le laboratoire a un stock spécial.
**Description UI** : Halo brillant autour du labo. Icône "!" ou "ADN".
**Emplacement** : Carte Monde.
**Intégration** : Effet visuel.
**Navigation** : N/A
**Événements** : `LAB_GLOW`.
#### Assets
- **Musiques** : N/A
- **Sons** : `sci_fi_hum.mp3`.
- **Graphiques** : Halo bleu néon.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Pulsation.
- **Couleurs** : Bleu électrique / Violet.
- **Textes** : N/A
- **Formes** : N/A

153
docs/specs/milieu.md Normal file
View File

@@ -0,0 +1,153 @@
# Spécifications : Milieu (Biome/Couleur)
## Définition
Le milieu représente l'environnement écologique d'une case, défini par sa couleur.
## Types de Milieux
- **Prairie** (Tiers Gauche)
- **Océan** (Tiers Milieu)
- **Montagne** (Tiers Droite)
- *Note : D'autres milieux (Forêt, Désert...) peuvent être définis par des couleurs intermédiaires.*
## Impact
- **Survie** : Chaque animal a un milieu de prédilection. Un écart trop important entre la couleur de la case et la couleur idéale de l'animal entraîne stress, maladie et mort.
- **Reproduction** : Un milieu idéal favorise la reproduction (bonus de score).
- **Visuel** : Le fond de la case affiche la couleur du milieu.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "integer (0-14)",
"name": "string",
"color_hex": "string (#RRGGBB)",
"default_temperature": "float",
"fertility_bonus": "float"
}
```
### Caractéristiques Initiales
| ID | Nom | Couleur | T° Base |
| :--- | :--- | :--- | :--- |
| 0 | Prairie Tendre | #90EE90 | 20°C |
| 5 | Océan Surface | #00BFFF | 15°C |
| 9 | Montagne Basse | #A9A9A9 | 5°C |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte (fixe).
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Le milieu définit la température de base de la case (avant modificateurs saison/upgrade).
### Impact Milieu (Biome)
Référence pour la compatibilité animale.
### Impact Saisons
| Milieu | Sensibilité Saisons |
| :--- | :--- |
| Océan | Faible (Inertie thermique) |
| Montagne | Forte (Neige en hiver) |
| Prairie | Moyenne |
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Bonus** : +10% fertilité si animal sur son biome exact.
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
**Esthétique** : Un zoo avec des biomes variés est plus attractif (+5% par biome différent utilisé).
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
**Changement de Milieu** :
| Niveau | Coût | Précision | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 500 | Changement vers biome adjacent | 0s |
| 7 | 5000 | Changement vers n'importe quel biome | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Identification Visuelle (Passif)
**Description UX** : Le joueur identifie le biome à la couleur du sol.
**Description UI** : Textures distinctes (Herbe, Sable, Roche, Eau). Transitions douces (dégradés) entre les cases adjacentes.
**Textures** : Motifs discrets (brins d'herbe, cailloux, craquelures) superposés à la couleur pour l'accessibilité (daltonisme).
**Emplacement** : Fond de Case.
**Intégration** : Layer 0 (Background).
**Navigation** : N/A
**Événements** : `MAP_RENDER`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Tilesets (15 variations de couleur/texture).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Eau qui ondule (Océan), Herbe qui bouge (Prairie).
- **Couleurs** : Palette 15 couleurs (Cercle chromatique).
- **Textes** : Tooltip "Biome : Prairie".
- **Formes** : Carré.
### Feedback Incompatibilité (Passif)
**Description UX** : Un animal est sur le mauvais biome.
**Description UI** : L'herbe sous l'animal jaunit ou devient boueuse. L'animal a une bulle "Beurk".
**Emplacement** : Case Zoo.
**Intégration** : Overlay Case.
**Navigation** : N/A
**Événements** : `BIOME_MISMATCH`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Overlay "Sol Mort".
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Transition lente vers le jaune/marron.
- **Couleurs** : Jaune paille, Marron.
- **Textes** : N/A
- **Formes** : N/A

130
docs/specs/mort_bebe.md Normal file
View File

@@ -0,0 +1,130 @@
# Spécifications : Mort des Bébés
## Causes Spécifiques
- **Nurserie Pleine** : Si un œuf éclot et qu'il n'y a pas de place en nurserie ni sur le terrain.
- **Vente Échouée** : Bébé resté trop longtemps en zone de vente (camion) sans acheteur et sans rapatriement.
- **Conditions Extrêmes** : Les bébés ont des tolérances de température plus faibles que les adultes.
## Conséquences
- Perte définitive de l'animal.
- Pénalité forte sur le Score de Réputation.
- Pas de récupération de ressources (pièces).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Événement loggé.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Voir Causes.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Voir `bebe_animal.md`.
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
**Malus** : -50 points de Réputation (temporaire 24h).
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Mort Bébé** : Notification critique.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `BABY_DIED` | Critique | "Un bébé est mort ! Les visiteurs sont choqués." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Drame (Événement)
**Description UX** : Le bébé meurt.
**Description UI** : Le sprite devient gris/fantôme puis disparaît (montée au ciel). Musique triste.
**Emplacement** : Case Zoo/Nurserie.
**Intégration** : Immédiat.
**Navigation** : N/A
**Événements** : `DEATH_ANIMATION`.
#### Assets
- **Musiques** : Jingle Triste (Violon).
- **Sons** : `gong.mp3` ou vent lugubre.
- **Graphiques** : Fantôme.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Opacité 100% -> 0%. Translation Y vers le haut.
- **Couleurs** : Gris, Noir.
- **Textes** : "RIP".
- **Formes** : N/A
### Notification (Alerte)
**Description UX** : Le joueur est informé de la perte.
**Description UI** : Popup Rouge/Noir. "Vous avez perdu un bébé [Cause]".
**Emplacement** : Centre Écran.
**Intégration** : Modal bloquante (Acknowledgment requis).
**Navigation** : Clic OK.
**Événements** : `DEATH_ACKNOWLEDGE`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Crâne (icône).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Noir #000000.
- **Textes** : Cause du décès.
- **Formes** : N/A

215
docs/specs/nurserie.md Normal file
View File

@@ -0,0 +1,215 @@
# Spécifications : Nurserie
## Définition
Bâtiment dédié à l'éclosion des œufs et à la croissance des bébés animaux.
## Fonctionnalités
- **Éclosion** : Lieu où les œufs achetés sont placés pour éclore.
- **Croissance** : Permet aux bébés de grandir en sécurité.
- **Stockage** : Zone tampon avant placement dans le zoo.
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Accélère le temps d'éclosion/croissance. Améliore la qualité des reproducteurs (bonus génétique).
- **Ratio** : 1 unité permet de faire grandir 1 bébé maximum à la fois.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "nurserie",
"level": "integer (1-7)",
"slots": [
{ "slot_id": 1, "content": "egg_uuid | baby_uuid | null", "timer_end": "timestamp" }
]
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Slots | 1 |
| Vitesse Éclosion | x1.0 |
| Protection T° | +/- 2°C tolérance |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Construction par joueur ou présent au début.
### Conditions de Disparition
Destruction par joueur (si vide).
### Hérédité
**Bonus Génétique** : Niveau 5+ donne +5% chance rareté supérieure à l'éclosion.
## 3. Impacts Environnementaux
### Impact Température
La nurserie régule la température interne.
| Niveau | Régulation |
| :--- | :--- |
| 1 | +/- 2°C |
| 7 | +/- 10°C (Climatisation parfaite) |
### Impact Milieu (Biome)
N/A
### Impact Saisons
Protège des effets négatifs des saisons (Hiver/Été).
### Impact Heure / Jour-Nuit
Fonctionne 24h/24.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A (Lieu de résultat de la reproduction).
### Impact Mort
Réduit drastiquement la mortalité infantile (Santé ne baisse pas sauf si Faim extrême).
### Impact Nourriture
Les bébés sont nourris automatiquement si stock nourriture global > 0.
### Impact Attractivité (Visiteurs/Animaux)
N/A (Les visiteurs ne voient pas l'intérieur).
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Vitesse Éclosion/Croissance** :
| Niveau | Multiplicateur Vitesse |
| :--- | :--- |
| 1 | x1.0 |
| 2 | x1.2 |
| 3 | x1.5 |
| 4 | x2.0 |
| 5 | x3.0 |
| 6 | x5.0 |
| 7 | x10.0 |
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Éclosion** : Œuf -> Bébé.
* **Maturité** : Bébé -> Adulte (prêt à sortir).
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Slots | Vitesse | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 1 | x1.0 | 0s |
| 2 | 200 | 2 | x1.2 | 0s |
| 3 | 400 | 3 | x1.5 | 0s |
| 4 | 800 | 4 | x2.0 | 0s |
| 5 | 1600 | 5 | x3.0 | 0s |
| 6 | 3200 | 6 | x5.0 | 0s |
| 7 | 6400 | 7 | x10.0 | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateNurserie(nurserie):
for slot in nurserie.slots:
if slot.content is Egg:
slot.timer -= baseTime * nurserie.speedMultiplier
if slot.timer <= 0:
hatchEgg(slot.content)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `EGG_HATCHED` | Info | "Un œuf a éclos en Nurserie !" |
| `NURSERIE_FULL` | Warning | "Nurserie pleine, impossible d'acheter/reproduire." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Gestion des Slots (Consultation)
**Description UX** : Le joueur clique sur la nurserie pour voir l'état de ses œufs et bébés.
**Description UI** : **Bottom Sheet** avec une grille de slots (1 à 7 selon niveau). Chaque slot affiche l'icône de l'œuf/bébé, une barre de progression (éclosion/croissance) et un timer restant.
**Emplacement** : Case Nurserie.
**Intégration** : Modal centrée.
**Navigation** : Clic Nurserie -> Modal -> Clic Slot (Action) ou Fermer.
**Événements** : `OPEN_NURSERIE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `ui_open.mp3`
- **Graphiques** : Style "Couveuse" ou "Nid douillet".
- **Images** : `egg_[rarity].png`, `baby_[species].png`.
- **Vidéos** : N/A
- **Animations** : Œuf qui tremble légèrement quand proche éclosion.
- **Couleurs** : Tons pastels (rose, bleu clair, jaune paille).
- **Textes** : "Slot X", "Temps restant : MM:SS".
- **Formes** : Cases de grille arrondies.
### Placement d'un Œuf
**Description UX** : Après achat ou reproduction, l'œuf va automatiquement dans un slot vide. Si plein, notification d'erreur.
**Description UI** : Animation de l'œuf "volant" vers la nurserie (si visible) ou simple apparition dans le slot.
**Emplacement** : HUD -> Nurserie.
**Intégration** : Automatique.
**Navigation** : N/A
**Événements** : `EGG_ADDED`.
#### Assets
- **Musiques** : N/A
- **Sons** : `pop_soft.mp3`
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Fade in + Scale up de l'œuf dans le slot.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A
### Éclosion (Action)
**Description UX** : Quand le timer est fini, l'œuf se fissure. Le joueur clique pour "ouvrir" l'œuf et découvrir le bébé.
**Description UI** : Le slot brille ou clignote. Au clic, animation d'éclosion et popup "Nouveau Bébé !" avec ses stats.
**Emplacement** : Modal Nurserie.
**Intégration** : Bloque le slot jusqu'à validation.
**Navigation** : Clic Œuf éclos -> Popup Récompense -> Retour Modal.
**Événements** : `HATCH_CLICK`.
#### Assets
- **Musiques** : Jingle court "Victoire/Naissance".
- **Sons** : `crack_egg.mp3`, `baby_cry.mp3`.
- **Graphiques** : Coquilles brisées.
- **Images** : Sprite bébé.
- **Vidéos** : N/A
- **Animations** : Séquence d'éclosion (3 frames).
- **Couleurs** : Rayons dorés/blancs.
- **Textes** : "C'est un [Espèce] [Rareté] !".
- **Formes** : Étoile ou Cercle rayonnant.
### Sortie de Nurserie (Placement)
**Description UX** : Le bébé est mature (ou le joueur veut le sortir). Drag & drop du slot vers une case du zoo.
**Description UI** : Le curseur devient le sprite du bébé/animal. Les cases valides s'illuminent en vert, invalides en rouge.
**Alternative** : Sélectionner le bébé -> Cliquer sur la case cible (Tap to Place).
**Emplacement** : Modal Nurserie -> Carte Zoo.
**Intégration** : Ferme la modal et passe en mode placement.
**Navigation** : Drag Slot -> Drop Carte.
**Événements** : `DRAG_START`, `DRAG_DROP`.
#### Assets
- **Musiques** : N/A
- **Sons** : `pickup.mp3`, `place_ok.mp3` / `place_error.mp3`.
- **Graphiques** : Grille de placement overlay.
- **Images** : Sprite fantôme (translucide) sous le curseur.
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Vert #00FF00 (OK), Rouge #FF0000 (KO).
- **Textes** : Tooltip "Placer ici".
- **Formes** : N/A

View File

@@ -0,0 +1,116 @@
# Spécifications : Personnage (Générique)
## Définition
Entité active dans le jeu, qu'elle soit contrôlée par un humain, une IA ou un script.
## Types
- **Joueur** : Utilisateur humain gérant son zoo.
- **Bot** : IA gérant un zoo concurrent.
- **Visiteur** : PNJ se promenant dans le zoo.
- **Animal** : Entité biologique gérée par le joueur.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Classe abstraite ou interface commune.
```json
{
"id": "uuid",
"type": "string",
"position": { "x": "int", "y": "int" },
"active": "boolean"
}
```
### Caractéristiques Initiales
N/A (Spécifique aux sous-types)
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Identification (Passif)
**Description UX** : Reconnaître le type de personnage au premier coup d'œil.
**Description UI** : Silhouette distincte, Code couleur, Badge/Nom au survol.
**Emplacement** : Grille.
**Intégration** : Tooltip.
**Navigation** : Survol souris / Tap.
**Événements** : `HOVER_CHARACTER`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Silhouettes archétypales.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Joueur (Bleu), Bot (Rouge/Gris), Visiteur (Multicolore), Animal (Naturel).
- **Textes** : Nom, Rôle.
- **Formes** : N/A

145
docs/specs/reproduction.md Normal file
View File

@@ -0,0 +1,145 @@
# Spécifications : Reproduction
## Conditions
- **Proximité** : Deux animaux compatibles (même espèce, sexe opposé si géré, ou juste compatibilité) proches l'un de l'autre.
- **Environnement** : Température et Biome idéaux.
- **Nourriture** : Animaux bien nourris.
- **Score de Reproduction** : Le zoo doit avoir un score suffisant pour favoriser les naissances.
## Résultat
- **Naissance** : Apparition d'un nouveau bébé.
- **Destination** : Va directement en Nurserie si place disponible, sinon doit être placé ou vendu immédiatement.
- **Hérédité** : Le bébé hérite des caractéristiques des parents avec une part de mutation (Rareté/Couleur).
## Bonus
- Les naissances augmentent l'attractivité du zoo.
- Les naissances favorisent l'apparition d'autres naissances (cercle vertueux).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Logique serveur.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
| Parent A | Parent B | Enfant (Probabilités) |
| :--- | :--- | :--- |
| Rareté N | Rareté N | N (80%), N+1 (15%), N-1 (5%) |
| Rareté N | Rareté N+1 | N (40%), N+1 (40%), N+2 (10%), N-1 (10%) |
## 3. Impacts Environnementaux
### Impact Température
**Condition** : T° doit être dans la plage "Idéale" (+/- 2°C).
### Impact Milieu (Biome)
**Condition** : Biome doit être "Parfait".
### Impact Saisons
**Printemps** : +20% chance réussite.
**Hiver** : -50% chance réussite (sauf animaux froids).
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
**Condition** : Faim < 20%.
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Accouplement** : Tentative.
* **Grossesse** : Délai avant naissance.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
if checkConditions(parentA, parentB):
chance = baseChance + seasonBonus + zooReproScoreBonus
if random() < chance:
createBaby(parentA, parentB)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `REPRO_SUCCESS` | Succès | "Un couple attend un heureux événement !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Amour (Passif)
**Description UX** : Deux animaux compatibles se rencontrent. Des cœurs apparaissent.
**Description UI** : Particules Cœurs au-dessus des animaux. Ils se rapprochent.
**Emplacement** : Case Zoo.
**Intégration** : Animation comportementale.
**Navigation** : N/A
**Événements** : `MATING_START`.
#### Assets
- **Musiques** : N/A
- **Sons** : `kiss.mp3` ou bruit doux.
- **Graphiques** : Cœurs roses.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Cœurs qui montent.
- **Couleurs** : Rose.
- **Textes** : N/A
- **Formes** : Cœur.
### Naissance (Événement)
**Description UX** : Un bébé apparaît (ou un œuf en nurserie). Notification joyeuse.
**Description UI** : Popup "Carnet Rose".
**Emplacement** : HUD.
**Intégration** : Notification Toast.
**Navigation** : Clic Notification -> Voir Bébé.
**Événements** : `BIRTH`.
#### Assets
- **Musiques** : Jingle Naissance.
- **Sons** : `tada.mp3`.
- **Graphiques** : Cigogne (icône).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Confettis.
- **Couleurs** : Rose/Bleu.
- **Textes** : "Bienvenue au nouveau [Espèce] !".
- **Formes** : N/A

View File

@@ -0,0 +1,117 @@
# Spécifications : Score de Réputation
## Définition
Indicateur global de la qualité et du prestige du zoo. C'est le moteur de l'économie (Visiteurs).
## Composantes
- **Valeur du Cheptel** : Somme des valeurs de rareté des animaux vivants.
- **Diversité** : Bonus pour chaque espèce différente présente.
- **Bien-être** : Bonus si le Score de Survie moyen est élevé.
- **Esthétique/Aménagement** : Bonus pour les bâtiments améliorés.
## Malus
- **Morts** : Chaque mort inflige une pénalité temporaire mais significative.
- **Insatisfaction** : Visiteurs repartant mécontents (incidents non résolus).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Propriété de `Zoo`.
`reputation_score: integer`
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Réputation | 0 |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Bonus** : +10 pts par naissance.
### Impact Mort
**Malus** : -50 pts par mort (décroissance sur 24h).
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
C'est la métrique de base de l'attractivité.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Passage Niveau** : Notification.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
score = sum(animal.rarity * 10) + (uniqueSpecies * 50) + buildingsValue - deathPenalty
```
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Affichage Score (Permanent)
**Description UX** : Le joueur connaît son niveau de prestige.
**Description UI** : Étoiles ou Couronne dans le HUD avec barre de progression vers le niveau suivant.
**Emplacement** : HUD Haut.
**Intégration** : Fixe.
**Navigation** : Survol -> Détail calcul.
**Événements** : `SCORE_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `level_up_jingle.mp3`.
- **Graphiques** : Icône Couronne.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Brillance quand augmente.
- **Couleurs** : Or.
- **Textes** : "Niveau 5 (4500 pts)".
- **Formes** : Étoile.

118
docs/specs/score_survie.md Normal file
View File

@@ -0,0 +1,118 @@
# Spécifications : Score de Survie
## Définition
Indicateur de la santé et de l'adaptation des animaux dans le zoo.
## Calcul
Moyenne des états de santé individuels de tous les animaux.
`Santé_Animal = f(Faim, Adéquation_Température, Adéquation_Biome, Stress)`
## Impact
- **Reproduction** : Un score de survie élevé est pré-requis pour la reproduction.
- **Maladie** : Un score faible déclenche l'apparition de maladies et augmente la mortalité.
- **Vente** : Influe sur la valeur perçue des animaux (un animal en bonne santé vaut plus cher).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Propriété de `Zoo`.
`survival_score: float (0-100)`
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Survie | 100% |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Moyenne des adéquations T°.
### Impact Milieu (Biome)
Moyenne des adéquations Biome.
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
Seuil mini : 80% pour reproduire.
### Impact Mort
Seuil critique : < 20% (Risque épidémie).
### Impact Nourriture
Moyenne des Faims.
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
survivalScore = average(allAnimals.health)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `SURVIVAL_LOW` | Alerte | "Attention ! Le score de survie est dangereusement bas." |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Monitoring Santé (Permanent)
**Description UX** : Le joueur surveille la santé globale de son zoo.
**Description UI** : Jauge Cœur ou Croix Verte. Rouge si critique.
**Emplacement** : HUD Haut.
**Intégration** : Fixe.
**Navigation** : Survol -> Liste animaux en danger.
**Événements** : `HEALTH_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `heartbeat.mp3` (si critique).
- **Graphiques** : Icône Cœur.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Battement (Pulsation).
- **Couleurs** : Vert -> Jaune -> Rouge.
- **Textes** : "98%".
- **Formes** : Cœur.

View File

@@ -0,0 +1,119 @@
# Spécifications : Site (Générique)
## Définition
Un site est un lieu d'intérêt positionné sur la Carte du Monde.
## Types de sites
1. **Zoo** : Espace de gestion d'un joueur ou d'un bot.
2. **Ville** : Zone résidentielle générant des visiteurs.
3. **Laboratoire** : Lieu de production d'animaux spéciaux/rares.
## Propriétés Communes
- **Position** : Coordonnées fixes (x, y) sur la grille du monde.
- **Nom** : Identifiant unique ou généré.
- **Représentation** : Icône spécifique + Informations contextuelles (Offres, stats).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "enum",
"name": "string",
"position": { "x": "int", "y": "int" }
}
```
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération procédurale ou création joueur.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Info-bulle (Consultation)
**Description UX** : Survoler un site donne ses détails.
**Description UI** : Tooltip avec Nom, Type, et Info clé (ex: Population pour Ville, Offre pour Zoo).
**Emplacement** : Carte Monde.
**Intégration** : Tooltip souris / Tap hold mobile.
**Navigation** : Survol.
**Événements** : `HOVER_SITE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `pop.mp3` léger.
- **Graphiques** : Fond noir semi-transparent.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Fade in rapide.
- **Couleurs** : Blanc sur Noir.
- **Textes** : "Paris (1M hab.)".
- **Formes** : Rectangle arrondi.

View File

@@ -0,0 +1,134 @@
# Spécifications Techniques : Architecture et Performance
## 1. Stack Technologique Recommandée
### Backend
- **Langage** : Node.js (TypeScript) ou Go (pour la performance brute des workers).
- **Framework** : NestJS (Node) ou Gin (Go).
- **Base de Données** : PostgreSQL.
- Utilisation intensive du type `JSONB` pour les données flexibles (états animaux, génétique).
- Indexation GIN sur les champs JSONB souvent requêtés.
### Frontend
- **Framework** : React ou Vue.js.
- **É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).
### Infrastructure
- **Cache** : Redis (pour les sessions, les compteurs temps réel et les files d'attente de jobs).
- **Message Broker** : BullMQ (Redis) ou RabbitMQ pour les tâches asynchrones (morts, naissances, enchères).
---
## 2. Modélisation des Données (Hybride Relationnel / Document)
L'approche hybride permet de garder l'intégrité référentielle sur les entités (Zoo, User) tout en gardant la souplesse sur les attributs de gameplay.
### Schéma SQL Simplifié
```sql
CREATE TABLE zoos (
id UUID PRIMARY KEY,
owner_id UUID NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
resources JSONB DEFAULT '{"coins": 200, "research": 0}',
stats JSONB DEFAULT '{"reputation": 0, "survival": 100}',
last_update TIMESTAMPTZ DEFAULT NOW() -- Clé pour le Lazy Update
);
CREATE TABLE animals (
id UUID PRIMARY KEY,
zoo_id UUID REFERENCES zoos(id),
type VARCHAR(50),
birth_date TIMESTAMPTZ,
state JSONB, -- { health, hunger, stress, ... }
genetics JSONB, -- { color, rarity, parents... }
position JSONB -- { x, y }
);
```
---
## 3. Stratégie de Performance : "Lazy Updates"
Le calcul temps réel pour 1000 joueurs * 50 animaux est impossible à scaler naïvement.
### Principe
Ne jamais mettre à jour la BDD à chaque seconde ("tick").
Calculer l'état d'un zoo **uniquement quand c'est nécessaire** (lecture par le joueur ou interaction).
### Algorithme de Mise à Jour Différée (Lazy Update)
1. **État Stocké** : Le zoo est sauvegardé à `T0` avec `Faim = 10`.
2. **Requête** : Le joueur se connecte à `T1` (2 heures plus tard).
3. **Calcul à la Volée** :
* `Delta_Temps = T1 - T0`.
* `Faim_Actuelle = Faim_Initiale + (Vitesse_Faim * Delta_Temps)`.
* Appliquer les seuils (si Faim > 100, déclencher Mort).
4. **Persistance** : Sauvegarder le nouvel état à `T1`.
5. **Réponse** : Envoyer l'état à jour au client.
### Exceptions (Workers)
Certains événements doivent arriver même si le joueur est hors ligne (ex: Enchères, Morts impactant le marché).
* Utiliser des **Cron Jobs** ou des **Delayed Jobs** (Redis) pour traiter ces événements spécifiques à leur heure d'échéance prévue.
---
## 4. API : Définition des Endpoints (REST)
### Core Loop (Jeu)
- `GET /api/zoo/me` : Récupère l'état complet du zoo (déclenche le Lazy Update).
- `POST /api/zoo/move` : Déplace un élément (Animal/Bâtiment).
- Body: `{ "entity_id": "uuid", "x": 10, "y": 5 }`
- `POST /api/zoo/feed` : Nourrit les animaux (Global ou Ciblé).
### Économie & Marché
- `GET /api/market/auctions` : Liste les enchères actives (Filtres: Type, Rareté).
- `POST /api/market/bid` : Placer une offre.
- Body: `{ "auction_id": "uuid", "amount": 500 }`
- `POST /api/market/sell` : Créer une enchère.
### Système
- `POST /api/auth/login` : Authentification par clé.
- `GET /api/config` : Récupère les tables statiques (Animaux, Coûts, Saisons) pour le cache client.
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Chargement (Feedback)
**Description UX** : Le joueur attend le calcul du Lazy Update à la connexion.
**Description UI** : Écran de chargement avec barre de progression ou animation (Animal qui marche).
**Emplacement** : Plein écran (Démarrage).
**Intégration** : Bloquant.
**Navigation** : N/A
**Événements** : `APP_LOAD`.
#### Assets
- **Musiques** : Thème Principal.
- **Sons** : N/A
- **Graphiques** : Logo Jeu.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Loader.
- **Couleurs** : Thème Jeu.
- **Textes** : "Calcul de la simulation...", "Rattrapage du temps...".
- **Formes** : N/A
### Erreur Connexion (Feedback)
**Description UX** : Perte de connexion ou erreur API.
**Description UI** : Toast ou Modal "Erreur Réseau". Bouton "Réessayer".
**Emplacement** : Overlay.
**Intégration** : Bloquant ou Non-bloquant.
**Navigation** : Clic Réessayer.
**Événements** : `NETWORK_ERROR`.
#### Assets
- **Musiques** : N/A
- **Sons** : `error.mp3`.
- **Graphiques** : Icône Wifi barré.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Secousse.
- **Couleurs** : Rouge.
- **Textes** : "Connexion perdue".
- **Formes** : N/A

149
docs/specs/temperature.md Normal file
View File

@@ -0,0 +1,149 @@
# Spécifications : Température
## Définition
Paramètre environnemental lié au milieu (couleur) de la case.
## Impact
- **Survie** : Chaque animal a une plage de température idéale.
- **Trop Froid** : L'animal gèle (feedback givre/bleu). Risque de mort.
- **Trop Chaud** : L'animal surchauffe (feedback vapeur/rouge). Risque de mort.
- **Reproduction** : Une température idéale est requise pour la reproduction optimale.
## Modification
- La température est intrinsèque à la case (liée au biome).
- **Upgrade** : L'achat d'un "Changement de milieu (température choisie)" permet d'ajuster la température d'une case spécifique pour l'adapter à un animal.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Propriété de `Case`.
`temperature: float`
### Caractéristiques Initiales
Définie par le biome (voir `milieu.md`).
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A (C'est la définition même).
### Impact Milieu (Biome)
N/A
### Impact Saisons
| Saison | Modificateur Global |
| :--- | :--- |
| Printemps | +0°C |
| Été | +10°C |
| Automne | -2°C |
| Hiver | -15°C |
### Impact Heure / Jour-Nuit
| Cycle | Modificateur |
| :--- | :--- |
| Jour | +5°C (Midi) |
| Nuit | -5°C (Minuit) |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Fenêtre Fertilité** : +/- 5°C autour de l'idéal de l'animal.
### Impact Mort
**Seuil Critique** : +/- 20°C autour de l'idéal = Dégâts massifs.
### Impact Nourriture
**Froid** : Augmente la consommation de nourriture (+20% par tranche de 5°C sous l'idéal).
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Canicule** : +10°C temporaire.
* **Vague de Froid** : -10°C temporaire.
## 7. Progression
### Tableau des Upgrades
**Régulateur Thermique (Case)** :
| Niveau | Coût | Plage Réglage | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 200 | +/- 5°C | 0s |
| 7 | 2000 | +/- 50°C | 0s |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
currentTemp = baseBiomeTemp + seasonMod + dayNightMod + caseRegulatorOffset
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `TEMP_CRITICAL` | Alerte | "Température critique sur une case !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Visualisation Thermique (Passif)
**Description UX** : Le joueur voit la température de chaque case.
**Description UI** : Mode "Vue Thermique" (Overlay). Cases froides = Bleu, Chaudes = Rouge.
**Emplacement** : Bouton HUD "Filtres".
**Intégration** : Overlay global.
**Navigation** : Toggle On/Off.
**Événements** : `TOGGLE_THERMAL_VIEW`.
#### Assets
- **Musiques** : N/A
- **Sons** : `switch.mp3`.
- **Graphiques** : Overlay dégradé Bleu/Rouge semi-transparent.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Fade In/Out de l'overlay.
- **Couleurs** : Bleu (#0000FF) -> Rouge (#FF0000).
- **Textes** : "25°C" (sur chaque case).
- **Formes** : N/A
### Feedback Critique (Alerte)
**Description UX** : Une case est mortelle pour son occupant.
**Description UI** : La case clignote ou a un bord rouge. L'animal tremble (froid) ou transpire (chaud).
**Emplacement** : Case.
**Intégration** : Immédiat.
**Navigation** : N/A
**Événements** : `TEMP_ALERT`.
#### Assets
- **Musiques** : N/A
- **Sons** : `shiver.mp3` (dents qui claquent) ou `pant.mp3`.
- **Graphiques** : Particules Givre ou Vapeur.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Tremblement sprite.
- **Couleurs** : Bleu Glace / Rouge Feu.
- **Textes** : N/A
- **Formes** : N/A

107
docs/specs/vente_animal.md Normal file
View File

@@ -0,0 +1,107 @@
# Spécifications : Ventes d'Animaux (Général)
## Types de Ventes
- **Aux Enchères** : Vers d'autres joueurs (prix potentiellement élevé).
- **Libération (Vente rapide)** : Vente au "système" (prix bas fixe) pour faire de la place rapidement (si implémenté pour éviter la mort). *Note : Le cahier des charges privilégie le marché joueurs, la libération est une option de secours.*
## Contraintes
- Un animal malade ou mourant ne peut pas être mis en vente.
- Le transport (Camion) immobilise l'animal pendant la durée de la vente.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
N/A
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
N/A
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
**Prix Libération** : 10% de la valeur théorique de l'animal.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Libération (Action)
**Description UX** : Le joueur relâche un animal (vente système).
**Description UI** : Bouton "Libérer" (souvent rouge ou discret pour éviter les erreurs). Confirmation "Êtes-vous sûr ? Vous gagnerez peu (X pièces)".
**Emplacement** : Panneau Animal.
**Intégration** : Option secondaire.
**Navigation** : Clic Libérer -> Confirmer.
**Événements** : `RELEASE_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Sons** : `bird_fly_away.mp3` (bruit de nature positif).
- **Graphiques** : Icône Cage ouverte.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Animal s'estompe ou court hors de l'écran.
- **Couleurs** : Vert (Nature).
- **Textes** : "Libéré !".
- **Formes** : N/A

View File

@@ -0,0 +1,128 @@
# Spécifications : Vente aux Enchères d'Animaux
## Définition
Processus de vente pour les animaux adultes.
## Spécificités
- **Valeur Variable** : Dépend de la rareté, mais aussi de l'âge et du "Score de Reproduction" restant. Un vieil animal vaut moins cher.
- **Résistance** : Les adultes supportent mieux la période de mise en vente que les bébés.
## Processus
Identique à la vente de bébés, mais avec des tolérances plus grandes sur les délais avant impact négatif sur la santé de l'animal.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Identique à `vente_enchere_bebe.md`.
### Caractéristiques Initiales
N/A
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Action joueur.
### Conditions de Disparition
Vente ou Expiration.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
**Risque** : Si `status == expired` et non récupéré sous 24h -> Mort.
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Mise en Vente (Action)
**Description UX** : Le joueur sélectionne un animal adulte sur la grille et choisit "Vendre".
**Description UI** : Bouton contextuel "Vendre" sur le panneau animal. Ouvre la **Bottom Sheet** de configuration (Prix, Durée).
**Emplacement** : Panneau Animal -> Modal Vente.
**Intégration** : Contextuel.
**Navigation** : Clic Animal -> Vendre -> Config -> Valider.
**Événements** : `CREATE_AUCTION_ADULT`.
#### Assets
- **Musiques** : N/A
- **Sons** : `cash_register_open.mp3`.
- **Graphiques** : N/A
- **Images** : Portrait Animal.
- **Vidéos** : N/A
- **Animations** : Animal disparaît de la grille (part en zone de vente).
- **Couleurs** : N/A
- **Textes** : "Mise à prix".
- **Formes** : N/A
### Retour Invendu (Action)
**Description UX** : L'enchère est finie sans acheteur. Le joueur doit récupérer l'animal.
**Description UI** : Notification "Vente expirée". Bouton "Récupérer" dans le menu Ventes.
**Emplacement** : Menu Ventes -> Accueil Animaux.
**Intégration** : Action requise.
**Navigation** : Clic Récupérer -> Choix Case (si Accueil plein).
**Événements** : `RECLAIM_ANIMAL`.
#### Assets
- **Musiques** : N/A
- **Sons** : `sad_trombone.mp3` (échec).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Retour visuel de l'animal.
- **Couleurs** : Gris (Désactivé).
- **Textes** : "Invendu".
- **Formes** : N/A

View File

@@ -0,0 +1,153 @@
# Spécifications : Vente aux Enchères de Bébés
## Définition
Processus de vente spécifique pour les bébés animaux nés dans le zoo.
## Spécificités
- **Forte Valeur** : Les bébés ont souvent une valeur supérieure aux adultes car ils ont tout leur potentiel de vie et de reproduction devant eux.
- **Fragilité** : Un bébé mis en vente doit être vendu rapidement.
- **Risque** : Si l'enchère échoue ou dure trop longtemps sans acheteur, le bébé risque de mourir dans le camion ou la zone de vente (faim/froid).
## Processus
1. Sélection du bébé en Nurserie ou sur la grille.
2. Glisser-déposer vers la zone Camion.
3. Définition du prix de départ.
4. Apparition sur la Carte du Monde.
5. Si vendu : Transfert après délai de 10 min.
6. Si invendu : Retour nécessaire en Nurserie ou Mort.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"seller_id": "uuid",
"animal_id": "uuid",
"start_price": "int",
"current_bid": "int",
"highest_bidder": "uuid | null",
"end_time": "timestamp",
"status": "active | sold | expired"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur |
| :--- | :--- |
| Durée Enchère | 1h - 24h (au choix) |
| Délai Validation | 10 min (fixe) |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Action joueur.
### Conditions de Disparition
Vente ou Expiration.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
**Risque** : Si `status == expired` et non récupéré sous 1h -> Mort du bébé.
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
N/A
### Impact Valeur
**Dépréciation** : Aucune (c'est une enchère).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Nouvelle Enchère** : Notification.
* **Surenchère** : Notification vendeur.
* **Vente Terminée** : Notification.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `AUCTION_SOLD` | Succès | "Bébé vendu !" |
| `AUCTION_FAIL` | Alerte | "Enchère terminée sans acheteur. Récupérez le bébé !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Mise en Vente (Action)
**Description UX** : Le joueur glisse un bébé depuis la nurserie vers le camion.
**Description UI** : **Bottom Sheet** de configuration "Vendre ce bébé". Choix du prix de départ et de la durée.
**Emplacement** : Zoo -> Modal Vente.
**Intégration** : Formulaire.
**Navigation** : Drag -> Config -> Valider.
**Événements** : `CREATE_AUCTION`.
#### Assets
- **Musiques** : N/A
- **Sons** : `cash_register_open.mp3`.
- **Graphiques** : Icône Bourse/Pièce.
- **Images** : Portrait Bébé.
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Or.
- **Textes** : "Prix de départ", "Durée".
- **Formes** : Champs de saisie.
### Suivi Vente (Passif)
**Description UX** : Le joueur voit son offre active sur son propre zoo (Carte Monde) ou dans son menu "Ventes".
**Description UI** : Liste "Mes Ventes". Compteur d'enchères reçues.
**Emplacement** : Menu Gestion -> Ventes.
**Intégration** : Liste.
**Navigation** : Menu -> Ventes.
**Événements** : `OPEN_MY_SALES`.
#### Assets
- **Musiques** : N/A
- **Sons** : `notification.mp3` (si offre reçue).
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : N/A
- **Textes** : "Meilleure offre : X".
- **Formes** : N/A

123
docs/specs/ville.md Normal file
View File

@@ -0,0 +1,123 @@
# Spécifications : Ville (Site)
## Définition
Une ville est une entité sur la Carte du Monde qui génère le flux de visiteurs vers les zoos.
## Propriétés
- **Nom** : Nom de la ville.
- **Population** : Nombre de visiteurs potentiels maximum.
- **Icône** : 🏙️
## Mécanique d'Attraction
- Les visiteurs partent de la ville pour aller vers les zoos.
- **Facteur de Distance** : Plus un zoo est proche d'une ville, plus il attire de visiteurs.
- **Facteur d'Attractivité** : La valeur et la diversité du zoo influencent le choix des visiteurs.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "city",
"name": "string",
"population": "integer",
"wealth_factor": "float (0.5 - 2.0)"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Moyenne |
| :--- | :--- |
| Population | 10,000 - 1,000,000 |
| Richesse | 1.0 |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte.
### Conditions de Disparition
N/A
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
Source du flux. `Flux = Pop * (AttractivitéZoo / Distance²)`.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
**Facteur Richesse** : Multiplie le budget des visiteurs issus de cette ville.
### Trajet Visiteurs
Point de départ.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
N/A
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Visualisation Taille (Passif)
**Description UX** : Distinguer les grandes villes des petites.
**Description UI** : Taille de l'icône proportionnelle à la population. Gratte-ciels vs Maisons.
**Emplacement** : Carte Monde.
**Intégration** : Sprite.
**Navigation** : N/A
**Événements** : N/A
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Sprites Ville (Petit, Moyen, Grand).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : Gris/Bleu.
- **Textes** : Nom Ville.
- **Formes** : N/A

228
docs/specs/visiteur.md Normal file
View File

@@ -0,0 +1,228 @@
# Spécifications : Visiteur
## Définition
Personnage non-joueur (PNJ) qui visite le zoo.
## Comportement
- **Apparition** : Arrive par la Billeterie (venant d'une Ville).
- **Déplacement** : Se promène sur la grille, attiré par les animaux et boutiques.
- **Durée** : Reste jusqu'à 1 journée (variable selon attractivité).
- **Dépense** : Paie l'entrée + achats en boutique.
## Incidents et Exigences
- **Besoins** : Soif, Repos (banc), Propreté (poubelle), Envie de photo.
- **Feedback** : Bulle d'icône au-dessus du visiteur.
- **Résolution** : Clic du joueur sur la bulle.
- **Conséquence** :
- Résolu : Gain de pièces + Attractivité.
- Ignoré : Perte d'attractivité, départ anticipé.
- **Contexte** : Apparaissent plus souvent pendant les temps d'attente (camion/enchère).
## Types
- **Standard**
- **Luxe** (8%) : Paie plus cher, plus exigeant.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid_v4",
"type": "enum ('standard', 'vip')",
"entry_time": "timestamp",
"max_duration": "integer (seconds)",
"budget": "integer",
"satisfaction": "float (0-100)",
"needs": {
"thirst": "float (0-100)",
"rest": "float (0-100)",
"toilet": "float (0-100)"
},
"current_target": { "x": "int", "y": "int" },
"position": { "x": "int", "y": "int" }
}
```
### Caractéristiques Initiales
| Caractéristique | Standard | Luxe (VIP) |
| :--- | :--- | :--- |
| Budget | 50 | 200 |
| Durée Max | 300s (5 min) | 600s (10 min) |
| Satisfaction | 50 | 50 |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
| Facteur | Taux |
| :--- | :--- |
| Attractivité Zoo | `log(Attractivité) * FacteurVille` |
| Heure | Pic à 14h, Nul à 22h |
### Conditions de Disparition
| Cause | Seuil |
| :--- | :--- |
| Temps écoulé | Durée > Max Duration |
| Insatisfaction | Satisfaction <= 0 |
| Budget épuisé | Budget <= 0 (Départ normal) |
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
| Météo | Effet |
| :--- | :--- |
| Canicule | Soif augmente 2x plus vite |
| Pluie | Satisfaction baisse plus vite (sauf si abri) |
### Impact Milieu (Biome)
N/A
### Impact Saisons
| Saison | Affluence (Multiplicateur) |
| :--- | :--- |
| Printemps | x1.0 |
| Été | x1.5 (Vacances) |
| Automne | x0.8 |
| Hiver | x0.6 |
### Impact Heure / Jour-Nuit
| Heure | Flux Entrant |
| :--- | :--- |
| 08h-10h | Faible |
| 10h-16h | Fort |
| 16h-18h | Décroissant |
| > 18h | Nul |
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
N/A
### Impact Mort
| Événement | Effet Satisfaction |
| :--- | :--- |
| Voir animal mort | -50 (Départ quasi immédiat) |
### Impact Nourriture
N/A (Concerne les animaux, ici c'est "Soif/Faim visiteur" -> Boutiques)
### Impact Attractivité (Visiteurs/Animaux)
| Cible | Poids Attraction |
| :--- | :--- |
| Animal Légendaire | 100 |
| Animal Commun | 10 |
| Boutique | 50 (si besoin > 50) |
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
| Paramètre | Valeur |
| :--- | :--- |
| Vitesse Marche | 1 case / 2 sec |
### Dépenses (Boutiques/Visiteurs)
| Action | Dépense |
| :--- | :--- |
| Ticket Entrée | 10 (Standard) / 50 (VIP) |
| Boutique Souvenir | 15-30 |
| Boisson | 5 |
### Trajet Visiteurs
**Algorithme** : `Weighted Random Walk` vers les points d'intérêt (POI) avec decay sur la distance.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Incident (Bulle)** : Apparition aléatoire (probabilité augmentée si attente joueur).
* **Achat** : Interaction avec boutique.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateVisitor(visitor):
visitor.satisfaction -= decayRate
visitor.needs.thirst += 1
if visitor.needs.thirst > 80:
target = findNearestShop()
if not target:
visitor.satisfaction -= 5 (Frustration)
spawnIncident("Soif")
if visitor.satisfaction <= 0:
leaveZoo(visitor)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `VISITOR_ANGRY` | Info | "Un visiteur est parti mécontent." |
| `VISITOR_HAPPY` | Info | "Un visiteur a adoré le zoo !" |
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Visite (Passif)
**Description UX** : Le visiteur entre, marche, regarde les animaux, achète, repart.
**Description UI** : Petit sprite humain. Vêtements colorés.
**Emplacement** : Grille Zoo.
**Intégration** : Foule.
**Navigation** : N/A
**Événements** : `VISITOR_WALK`.
#### Assets
- **Musiques** : N/A
- **Sons** : Pas sur l'herbe/béton.
- **Graphiques** : Sprites variés (H/F/Enfant).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Marche, Regarde (tourne la tête), Prend photo (flash).
- **Couleurs** : Aléatoires.
- **Textes** : N/A
- **Formes** : N/A
### Incident / Besoin (Action)
**Description UX** : Une bulle apparaît au-dessus d'un visiteur (ex: Soif, Perdu, Envie pipi). Le joueur clique pour résoudre (ex: Indiquer toilettes, Donner eau).
**Description UI** : Bulle blanche avec icône noire. Clignote si urgent.
**Emplacement** : Au-dessus du sprite visiteur.
**Intégration** : Overlay World Space.
**Navigation** : Clic Bulle -> Résolution (Animation + Gain).
**Événements** : `INCIDENT_SPAWN`, `INCIDENT_SOLVE`.
#### Assets
- **Musiques** : N/A
- **Sons** : `bubble_pop.mp3` (apparition), `coin_collect.mp3` (résolution). **Design ASMR** : Son satisfaisant et tactile ("Pop" organique).
- **Graphiques** : Icônes (Goutte d'eau, Point interrogation, Appareil photo).
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Bulle qui pop. Visiteur qui sourit après résolution.
- **Couleurs** : Bulle Blanche/Rouge (Urgent).
- **Textes** : "Merci !" (flottant).
- **Formes** : Bulle BD.
### Départ (Passif)
**Description UX** : Le visiteur quitte le zoo.
**Description UI** : Marche vers la sortie et disparaît (Fade out).
**Emplacement** : Billeterie.
**Intégration** : Fin cycle.
**Navigation** : N/A
**Événements** : `VISITOR_EXIT`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : N/A
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : Fade out.
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A

153
docs/specs/zoo.md Normal file
View File

@@ -0,0 +1,153 @@
# Spécifications : Zoo (Site)
## Définition
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
## Affichage
- **Nom du zoo**
- **Icône** : 🏠
- **Slot d'offre** :
- Pour les autres zoos : Affiche l'œuf/bébé/animal en vente (Type + Prix).
- Pour le zoo du joueur : Masqué (pas d'offre visible pour soi-même).
- **Indicateurs (Bots)** : Pièces disponibles, Niveau de parcelle.
## Indicateurs de Performance (Cases dédiées sous le zoo)
1. **Score d'Attractivité** : Influence la venue des visiteurs.
2. **Score de Reproduction** : Influence la qualité des naissances.
3. **Case de Vente** : Offre active visible par les autres joueurs.
## Interaction
- **Achat** : Glisser l'offre du zoo vers le camion du joueur.
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"id": "uuid",
"type": "zoo",
"owner_id": "uuid",
"scores": {
"attractiveness": "int",
"reproduction": "int"
},
"current_offer": { "animal_id": "uuid", "price": "int" }
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Attractivité | 0 |
| Reproduction | 0 |
### Scores Initiaux
Voir ci-dessus.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création compte.
### Conditions de Disparition
Suppression compte.
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
N/A
### Impact Milieu (Biome)
N/A
### Impact Saisons
N/A
### Impact Heure / Jour-Nuit
N/A
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
Score visible publiquement.
### Impact Mort
N/A
### Impact Nourriture
N/A
### Impact Attractivité (Visiteurs/Animaux)
Score visible publiquement.
### Impact Valeur
N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
N/A
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
Destination possible.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Nouvelle Offre** : Mise en vente.
* **Vente** : Offre achetée.
## 7. Progression
### Tableau des Upgrades
N/A
## 8. Logique et Interfaces
### Pseudo-code Impacts
N/A
### Messages d'Infos / Alerte
N/A
# Annexes UX/UI
## 1. Expérience Utilisateur (UX)
### Visualisation Offre (Passif)
**Description UX** : Voir ce que vend un autre joueur.
**Description UI** : Une "bulle" ou un "panneau" accroché sous l'icône du zoo. Affiche l'animal (sprite) et le prix.
**Emplacement** : Carte Monde.
**Intégration** : World Space UI.
**Navigation** : N/A
**Événements** : `OFFER_UPDATE`.
#### Assets
- **Musiques** : N/A
- **Sons** : N/A
- **Graphiques** : Cadre Offre.
- **Images** : Sprite Animal.
- **Vidéos** : N/A
- **Animations** : Prix qui clignote si bas.
- **Couleurs** : Or (Prix).
- **Textes** : "500".
- **Formes** : Bulle.
### Interaction Achat (Action)
**Description UX** : Acheter l'animal.
**Description UI** : Drag de l'offre vers le camion (en bas de l'écran ou sur la carte).
**Alternative** : Tap Offre -> Tap Camion.
**Emplacement** : Carte Monde.
**Intégration** : Drag & Drop.
**Navigation** : Drag -> Drop.
**Événements** : `DRAG_OFFER`.
#### Assets
- **Musiques** : N/A
- **Sons** : `pickup.mp3`.
- **Graphiques** : Fantôme offre sous curseur.
- **Images** : N/A
- **Vidéos** : N/A
- **Animations** : N/A
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A