**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/*
166 lines
5.3 KiB
Markdown
166 lines
5.3 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).
|
|
- **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).
|