Files
builazoo/docs/specs/animal_generique.md
Nicolas Cantu e031c9a1d2 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
2026-03-03 22:24:17 +01:00

263 lines
7.8 KiB
Markdown

# 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