Files
builazoo/docs/specs/animal_generique.md
Nicolas Cantu f0219559c5 Standardisation exhaustive des spécifications techniques
**Motivations:**
- Harmoniser la documentation technique pour faciliter le développement.
- Garantir l'exhaustivité des données de Game Design pour chaque entité.

**Root causes:**
- Documentation hétérogène et incomplète.

**Correctifs:**
- N/A

**Evolutions:**
- Réécriture complète de 53 fichiers de spécifications selon un modèle strict.
- Ajout de données de Game Design (prix, durées, impacts) pour combler les manques.
- Ajout systématique des annexes UX/UI.

**Pages affectées:**
- docs/specs/*
2026-03-04 18:07:31 +01:00

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

{
  "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 Stress +5 (Ennui)

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)

Vitesse Déplacement : Varie selon l'espèce.

  • Lent (Tortue) : 0.5 case/sec.
  • Moyen (Zèbre) : 1 case/sec.
  • Rapide (Guépard) : 2 cases/sec.

Dépenses (Boutiques/Visiteurs)

Coût Nourriture :

  • Petit : 1 unité/jour.
  • Moyen : 2 unités/jour.
  • Grand : 5 unités/jour.

Trajet Visiteurs

Point d'Intérêt : Les visiteurs s'arrêtent 5 à 10 secondes devant l'enclos pour observer l'animal (si visible).

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.
  • Évasion : Si clôture cassée (Probabilité faible).

7. Progression

Tableau des Upgrades

Note : L'animal gagne de l'expérience en vieillissant.

Niveau Expérience Nom Bonus Valeur Bonus Attractivité
1 (Jeune) Novice +0% +0%
2 (Adulte) Mature +10% +10%
3 (Vétéran) Star +20% +30%
4 (Doyen) Légende +50% +100%

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

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 : Thème "Consultation" (calme, analytique).
  • 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 : Boucle vidéo de l'animal en gros plan (arrière-plan panneau).
  • 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 : Son "Action Réussie" (positif).
  • Sons : eat.mp3, heal.mp3.
  • Graphiques : Particules (Cœurs, Étoiles).
  • Images : Icône Nourriture (Pomme), Seringue.
  • Vidéos : Effet visuel de soin (aura verte).
  • Animations : Animal saute de joie.
  • Couleurs : Vert (Soin), Marron (Nourriture).
  • Textes : "+10 PV", "-20 Faim".
  • Formes : Cercle de sélection au sol.