# 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). - **Affichage** : Apparaît "en petit" dans l'enclos fusionné. - **Génétique** : - **Couleur** : 15 variations. - **Rareté** : 5 niveaux (pondération Fibonacci). - **Traits** : Caractéristiques spéciales (ex: "Gourmand", "Agile"). - **État** : Faim, Température, Santé, Âge, Stress. - **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). - **Enrichissement** : Besoin d'un objet spécial dans l'enclos (ex: Arbre à singe). # 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)", "energy": "float (0-100)" }, "genetics": { "parent_a_id": "uuid_v4 | null", "parent_b_id": "uuid_v4 | null", "mutation_factor": "float", "traits": ["glutton", "nocturnal"] }, "position": { "x": "float", "y": "float", "z": "float" }, "orientation": "enum (N, S, E, W)", "iso_x": "integer", "iso_y": "integer", "z_index": "integer" } ``` ### Caractéristiques Initiales | Caractéristique | Valeur Initiale | | :--- | :--- | | Santé | 100.0 | | Faim | 0.0 (Rassasié) | | Stress | 0.0 | | Âge | 0 (Bébé) | ## 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 | ## 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 | ## 8. Logique et Interfaces ### Pseudo-code Impacts ```javascript function updateAnimal(animal, context): # Gestion Température deltaTemp = abs(animal.idealTemp - context.tileTemp) if deltaTemp > 0: animal.health -= tableImpactTemp[deltaTemp] animal.stress += tableImpactTemp[deltaTemp] * 0.5 # Gestion Biome if context.tileBiome != animal.idealBiome: animal.stress += 5 # Gestion Faim if animal.hunger < 100: animal.hunger += baseHungerRate * context.seasonMod else: animal.health -= 10 # Famine # Gestion Reproduction if canReproduce(animal): mate = findMate(animal) if mate: startReproduction(animal, mate) ``` ### 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 ## 0. Direction Artistique & Vue * **Vue** : Isométrique (2.5D). * **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg). * **Sprites** : 4 directions. * **Interactions** : * **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris. ## 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** : Clic Animal (Focus). **É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** : Portraits HD pour les dialogues. - **Vidéos** : Mini-cinématique d'introduction de l'espèce (découverte). - **Animations** : Idle, Walk, Eat, Sleep. - **Couleurs** : Selon espèce + Teinte bleue (Froid) / Rouge (Chaud). - **Textes** : Bulle "Zzz" (Sommeil), "!" (Alerte). - **Formes** : Ombre portée ovale sous l'animal. ### Vue Isométrique - **Sprites** : 4 directions (N, S, E, W) minimum. Idéalement 8 pour fluidité. - **Occlusion** : L'animal doit être caché par les murs sud/est de son enclos, mais visible par-dessus les murs nord/ouest. - **Comportement** : L'animal ne doit jamais traverser les murs (collision box stricte).