**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/*
276 lines
8.8 KiB
Markdown
276 lines
8.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 | 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
|
|
```javascript
|
|
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.
|