Files
builazoo/docs/specs/animal_generique.md
Nicolas Cantu e92c1355d0 Enrichissement exhaustif des specs : Vue Isométrique et Design
**Motivations:**
- Aligner toute la documentation technique avec la nouvelle direction artistique isométrique (Réf IMG_20260303_170253).
- Faciliter l'implémentation en ajoutant les contraintes techniques liées à la 2.5D (Z-index, Sprites 4 directions).

**Root causes:**
- Besoin de cohérence visuelle et technique sur l'ensemble du projet.

**Correctifs:**
- N/A

**Evolutions:**
- Ajout systématique de la section "Direction Artistique & Vue" dans `Annexes UX/UI` de tous les fichiers.
- Enrichissement des modèles JSON avec coordonnées isométriques (`iso_x`, `iso_y`, `z_index`).
- Précision des interactions (clic, survol) adaptées à la grille losange.
- Conservation stricte de la structure existante (aucun titre supprimé).

**Pages affectées:**
- docs/specs/*
2026-03-05 02:10:32 +01:00

5.3 KiB

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)

{
  "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

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).