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/*
This commit is contained in:
2026-03-05 02:10:32 +01:00
parent 1d3352455e
commit e92c1355d0
74 changed files with 1519 additions and 550 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

View File

@@ -1,11 +1,12 @@
# Spécifications : Accueil des Animaux
## Définition
Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou transferts).
Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou transferts). C'est le point d'entrée unique pour tout animal avant son placement en enclos.
## Fonctionnalités
- **Acclimatation** : Période obligatoire avant de pouvoir placer l'animal sur la grille active.
- **Stockage temporaire** : Évite de devoir placer immédiatement un animal acheté si le terrain n'est pas prêt.
- **Inspection** : Permet au joueur de voir les stats de l'animal avant placement.
## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
@@ -19,58 +20,74 @@ Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou tr
```json
{
"id": "uuid",
"type": "animal_reception",
"type": "building_reception",
"created_at": "timestamp",
"updated_at": "timestamp",
"level": "integer (1-7)",
"position": { "x": "integer", "y": "integer" },
"slots": [
{ "animal_id": "uuid", "arrival_time": "timestamp", "ready_time": "timestamp" }
]
{
"slot_id": "integer (0-index)",
"animal_id": "uuid (nullable)",
"status": "enum (EMPTY, OCCUPIED, READY)",
"arrival_time": "timestamp",
"acclimatization_end_time": "timestamp",
"bonus_applied": "boolean"
}
],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Temps Acclimatation | 10 minutes |
| Capacité | 1 animal |
| Caractéristique | Valeur Initiale (Niv 1) | Valeur Max (Niv 7) |
| :--- | :--- | :--- |
| Temps Acclimatation | 600 secondes (10 min) | 0 secondes (Instantané) |
| Capacité | 1 animal | 7 animaux |
### Scores Initiaux
N/A
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage.
Présent au démarrage du jeu (Tutorial ou Nouvelle Partie). Position fixe généralement près de l'entrée.
### Conditions de Disparition
Indestructible.
Indestructible. Ne peut pas être vendu ni déplacé (sauf si feature de réaménagement global).
### Hérédité
N/A
## 3. Impacts Environnementaux
### Impact Température
Zone neutre (T° idéale simulée).
Zone neutre (T° idéale simulée). Les animaux ne subissent pas de dégâts de température ici.
### Impact Milieu (Biome)
Zone neutre.
Zone neutre. Compatible avec tous les biomes d'animaux.
### Impact Saisons
Protégé.
Protégé des intempéries.
### Impact Heure / Jour-Nuit
N/A
Fonctionne 24/7. Pas de pénalité la nuit.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Bonus Repro** : Un animal passant par un accueil de haut niveau gagne un bonus temporaire de fertilité (+10% à +50%).
**Bonus Repro** : Un animal passant par un accueil de haut niveau gagne un bonus temporaire de fertilité.
- Niv 1-3 : +0%
- Niv 4-6 : +10% fertilité (durée 2 jours in-game)
- Niv 7 : +25% fertilité (durée 5 jours in-game)
### Impact Mort
Pas de mort possible en zone d'accueil (Stase).
Pas de mort possible en zone d'accueil (Stase). Les jauges de faim/soif/santé sont gelées.
### Impact Nourriture
Nourri automatiquement.
Nourri automatiquement (coût nul ou inclus dans les frais de gestion globaux).
### Impact Attractivité (Visiteurs/Animaux)
N/A
N/A - Les visiteurs ne voient pas l'intérieur de l'accueil.
### Impact Valeur
N/A
@@ -78,56 +95,91 @@ N/A
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Réduction Temps Acclimatation** :
| Niveau | Temps Base |
| :--- | :--- |
| 1 | 10 min |
| 2 | 8 min |
| 3 | 6 min |
| 4 | 4 min |
| 5 | 2 min |
| 6 | 1 min |
| 7 | Instantané |
| Niveau | Temps Base | Réduction % |
| :--- | :--- | :--- |
| 1 | 10 min | 0% |
| 2 | 8 min | 20% |
| 3 | 6 min | 40% |
| 4 | 4 min | 60% |
| 5 | 2 min | 80% |
| 6 | 1 min | 90% |
| 7 | Instantané | 100% |
### Dépenses (Boutiques/Visiteurs)
N/A
### Trajet Visiteurs
N/A
N/A - Bâtiment administratif.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Arrivée** : Animal livré par camion.
* **Prêt** : Animal prêt à être placé.
* **Arrivée (`ANIMAL_ARRIVAL`)** : Animal livré par camion, entre dans un slot libre.
* **Prêt (`ANIMAL_READY`)** : Le temps d'acclimatation est écoulé.
* **Placement (`ANIMAL_PLACED`)** : Le joueur sort l'animal de l'accueil vers un enclos.
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Capacité | Temps Acclimatation | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 1 | 10 min | 0s |
| 2 | 200 | 2 | 8 min | 0s |
| 3 | 400 | 3 | 6 min | 0s |
| 4 | 800 | 4 | 4 min | 0s |
| 5 | 1600 | 5 | 2 min | 0s |
| 6 | 3200 | 6 | 1 min | 0s |
| 7 | 6400 | 7 | 0 min | 0s |
| 2 | 200 | 2 | 8 min | 10s |
| 3 | 400 | 3 | 6 min | 30s |
| 4 | 800 | 4 | 4 min | 1m |
| 5 | 1600 | 5 | 2 min | 2m |
| 6 | 3200 | 6 | 1 min | 5m |
| 7 | 6400 | 7 | 0 min | 10m |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function updateReception(center):
for slot in center.slots:
if currentTime >= slot.ready_time:
notifyPlayer("ANIMAL_READY", slot.animal_id)
```python
def update_reception(reception_center, current_time):
# Vérification de l'intégrité
if not reception_center or not reception_center.slots:
return error("Invalid reception center")
for slot in reception_center.slots:
if slot.status == "OCCUPIED":
# Vérifier si le temps est écoulé
if current_time >= slot.acclimatization_end_time:
slot.status = "READY"
trigger_event("ANIMAL_READY", {"animal_id": slot.animal_id})
def add_animal_to_reception(reception_center, animal):
# Trouver un slot vide
empty_slot = find_first_empty_slot(reception_center.slots)
if not empty_slot:
return error("RECEPTION_FULL")
# Calcul du temps selon le niveau
duration = get_acclimatization_duration(reception_center.level)
empty_slot.animal_id = animal.id
empty_slot.arrival_time = now()
empty_slot.acclimatization_end_time = now() + duration
empty_slot.status = "OCCUPIED"
return success()
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" |
| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." |
| ID | Niveau | Message | Condition |
| :--- | :--- | :--- | :--- |
| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" | `slot.status` passe à `READY` |
| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." | Tentative d'achat sans slot libre |
| `PLACEMENT_ERROR` | Error | "Impossible de placer ici (Enclos plein / Biome incompatible)." | Drag & Drop invalide |
# 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)
### Arrivée Animal (Passif)
**Description UX** : Le camion décharge un animal. Il apparaît dans l'Accueil en mode "Attente".
@@ -187,3 +239,9 @@ function updateReception(center):
- **Couleurs** : N/A
- **Textes** : N/A
- **Formes** : N/A
### Vue Isométrique
- **Sprite Bâtiment** : 4 directions (Nord, Sud, Est, Ouest) pour s'aligner avec la route.
- **Occlusion** : Le bâtiment doit être semi-transparent si le joueur passe la souris derrière (pour voir les objets cachés).
- **Indicateur d'état** : Une icône flottante (bulle) au-dessus du bâtiment indique si un animal est prêt (point d'exclamation vert) ou en cours (sablier).
- **Z-Index** : Doit être trié correctement par rapport aux visiteurs passant devant.

View File

@@ -1,24 +1,79 @@
# Spécifications : Achat et Upgrade des Boutiques
## Construction
- Peut être construite sur n'importe quelle case vide.
- Peut être construite sur n'importe quelle case vide de type "Terrain".
- Nécessite une connexion à un chemin pour être accessible aux visiteurs.
## Upgrade (7 Niveaux)
- **Attrait** : Attire les visiteurs de plus loin sur la grille.
- **Revenu** : Augmente le montant dépensé par chaque visiteur qui passe sur la case.
- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément.
- **Attrait** : Attire les visiteurs de plus loin sur la grille (Rayon d'action).
- **Revenu** : Augmente le montant dépensé par chaque visiteur qui passe sur la case (Multiplicateur de prix).
- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément (File d'attente).
# Annexes Techniques
## 1. Données et États
Voir `boutique.md` pour le modèle de données complet.
### Modèle de Données (Transaction Upgrade)
```json
{
"transaction_id": "uuid",
"building_id": "uuid",
"building_type": "shop",
"current_level": "integer",
"target_level": "integer",
"cost": "float",
"currency": "coins",
"status": "enum (PENDING, COMPLETED, FAILED)",
"timestamp": "timestamp"
}
```
*Voir `boutique.md` pour le modèle de données de l'entité Boutique.*
## 7. Progression
### Tableau des Upgrades
Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau.
*Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau.*
## 8. Logique et Interfaces
### Pseudo-code Interaction
```python
def upgrade_shop(shop, player_wallet):
# Vérification niveau max
if shop.level >= MAX_LEVEL:
return error("MAX_LEVEL_REACHED")
next_level_config = get_shop_config(shop.type, shop.level + 1)
cost = next_level_config.cost
# Vérification fonds
if player_wallet.coins < cost:
return error("INSUFFICIENT_FUNDS")
# Transaction
player_wallet.debit(cost)
shop.level += 1
shop.stats = next_level_config.stats
shop.visual_state = "UPGRADING" # Déclenche anim
start_upgrade_timer(shop, next_level_config.build_time)
return success("UPGRADE_STARTED")
```
### Cas Limites
- **Fonds insuffisants** : Bouton grisé + Tooltip rouge.
- **Upgrade en cours** : Impossible de lancer un autre upgrade tant que le précédent n'est pas fini.
- **Boutique utilisée** : L'upgrade n'éjecte pas les visiteurs actuels, mais bloque l'entrée de nouveaux pendant les travaux (si temps > 0).
# 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)
### Rénovation (Action)
**Description UX** : Améliorer la boutique change son apparence et ses stats.
@@ -38,3 +93,8 @@ Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau.
- **Couleurs** : Doré (pour les niveaux élevés).
- **Textes** : "Niveau Supérieur !".
- **Formes** : Particules Étoiles.
### Vue Isométrique
- **Travaux** : Si l'upgrade prend du temps, afficher un sprite "En travaux" (bâche, échafaudage) par-dessus la boutique.
- **Particules** : Lors de la complétion, explosion de confettis/étoiles en 3D isométrique au-dessus du toit.
- **Feedback** : Le bâtiment peut faire un petit saut (scale up/down) pour signifier l'upgrade.

View File

@@ -3,25 +3,68 @@
## Achat
- Le joueur possède un camion par défaut.
- Possibilité d'acheter des camions supplémentaires (si le design autorise plusieurs flottes).
- **Limite** : Nombre de camions limité par le niveau du Garage (si existant) ou du QG.
## Upgrade (7 Niveaux)
- **Niveau 1** : Camion standard.
- **Niveau 2-7** :
- **Vitesse** : Augmente la vitesse de déplacement sur la carte du monde.
- **Vitesse** : Augmente la vitesse de déplacement sur la carte du monde (réduit le temps de mission).
- **Confort** : Réduit la perte de santé/stress des animaux transportés.
- **Capacité** : (Optionnel) Transport de plusieurs animaux ? *Actuellement 1 unité = 1 camion.*
- **Fiabilité** : Réduit les chances de panne (événement aléatoire "Retard").
# Annexes Techniques
## 1. Données et États
Voir `camion.md` pour le modèle de données complet.
### Modèle de Données (Action)
```json
{
"action": "upgrade_truck",
"truck_id": "uuid",
"current_stats": { "speed": 50, "comfort": 10 },
"next_stats": { "speed": 60, "comfort": 20 },
"cost": 500
}
```
*Voir `camion.md` pour le modèle de données complet.*
## 7. Progression
### Tableau des Upgrades
Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau.
*Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau.*
## 8. Logique et Interfaces
### Pseudo-code
```python
def upgrade_truck(truck, player):
if truck.is_on_mission:
return error("TRUCK_BUSY", "Impossible d'améliorer un camion en mission.")
cost = get_upgrade_cost(truck.level + 1)
if player.money < cost:
return error("NO_MONEY")
player.money -= cost
truck.level += 1
truck.update_stats()
return success("TRUCK_UPGRADED")
```
### Cas Limites
- **Camion en mission** : Bouton upgrade désactivé avec message "En mission".
- **Niveau Max** : Afficher "Max" à la place du prix.
# 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)
### Garage / Atelier (Consultation)
**Description UX** : Le joueur gère sa flotte de camions.
@@ -60,3 +103,7 @@ Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau.
- **Couleurs** : Palette 16 couleurs.
- **Textes** : "Peinture fraîche !".
- **Formes** : Taches de peinture au sol.
### Vue Isométrique
- **Garage** : Si le garage est un bâtiment sur la carte, l'animation d'upgrade se joue dessus.
- **Carte Monde** : Le sprite du camion sur la carte du monde change pour refléter son niveau (ex: plus de fumée, design plus aérodynamique).

View File

@@ -3,6 +3,7 @@
## Construction
- Sur une case vide de type "Terrain", le joueur peut acheter un bâtiment.
- Le coût dépend du type de bâtiment.
- **Pré-requis** : Certaines cases peuvent nécessiter un déblayage (rochers, arbres) avant construction.
## Types Constructibles
- Nurserie
@@ -10,12 +11,22 @@
- (Les autres bâtiments comme Billeterie/Recherche sont souvent uniques et upgradables, mais on peut imaginer en construire d'autres si le design le permet).
## Upgrade de Case (Terrain)
- **Changement de Milieu** : Payer pour changer la couleur (Biome) d'une case.
- **Changement de Température** : Payer pour installer un régulateur thermique sur une case.
- **Changement de Milieu (Terraforming)** : Payer pour changer la couleur (Biome) d'une case.
- **Changement de Température** : Payer pour installer un régulateur thermique sur une case (invisible ou petit objet technique).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (Modification Case)
```json
{
"tile_id": "x_y_coords",
"action": "terraform",
"target_biome": "savanna",
"cost": 500,
"duration_ms": 2000
}
```
Voir `case_zoo.md` et `achat_upgrade_generique.md`.
## 7. Progression
@@ -23,8 +34,8 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`.
**Changement de Milieu** :
| Niveau | Coût | Précision | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 500 | Changement vers biome adjacent | 0s |
| 7 | 5000 | Changement vers n'importe quel biome | 0s |
| 1 | 500 | Changement vers biome adjacent uniquement | 5s |
| 7 | 5000 | Changement vers n'importe quel biome (Terraformation avancée) | 2s |
**Régulateur Thermique** :
| Niveau | Coût | Plage Réglage | Temps |
@@ -32,8 +43,38 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`.
| 1 | 200 | +/- 5°C | 0s |
| 7 | 2000 | +/- 50°C | 0s |
## 8. Logique et Interfaces
### Algorithme de Terraformation
```python
def terraform_tile(tile, target_biome, player):
# Vérifier adjacence (si niveau bas)
if player.terraform_level < 7:
neighbors = get_neighbors(tile)
if target_biome not in [n.biome for n in neighbors]:
return error("BIOME_NOT_ADJACENT", "Vous devez étendre un biome existant.")
if player.money < get_terraform_cost(target_biome):
return error("NO_MONEY")
player.money -= get_terraform_cost(target_biome)
tile.biome = target_biome
update_visuals(tile)
check_animal_compatibility(tile) # Alerte si un animal est dessus
return success()
```
# 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)
### Modification Terrain (Action)
**Description UX** : Le joueur sélectionne une case et choisit "Modifier Biome" ou "Température".
@@ -54,3 +95,8 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`.
- **Couleurs** : Vert, Jaune, Blanc.
- **Textes** : "Coût : X".
- **Formes** : Curseur Pinceau.
### Vue Isométrique
- **Grid Overlay** : Lors de l'édition, afficher la grille en surbrillance pour bien délimiter les cases.
- **Feedback Visuel** : La case "saute" légèrement ou émet de la poussière lors du changement de biome.
- **Bords** : Gérer les transitions douces (blends) entre deux cases de biomes différents pour éviter l'effet damier trop strict (sauf si style voxel strict).

View File

@@ -4,12 +4,23 @@
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
- **Coût** : Très élevé, progressif selon la taille actuelle du zoo.
- **Contenu** : La nouvelle case arrive avec un biome par défaut (selon sa position géographique Prairie/Océan/Montagne) et vide.
- **Contraintes** : Limité par la taille de la carte globale ("Monde" ou "Région").
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Action sur l'objet `Zoo` (dimensions).
```json
{
"zoo_id": "uuid",
"dimensions": { "width": 5, "height": 6 },
"expansion_history": [
{ "direction": "EAST", "cost": 1000, "timestamp": "..." }
],
"max_dimensions": { "width": 20, "height": 20 }
}
```
### Caractéristiques Initiales
**Taille Initiale** : 5x6 cases (30 cases).
@@ -25,8 +36,39 @@ Action sur l'objet `Zoo` (dimensions).
| +1 Colonne (Est 2) | 5000 | +Hauteur cases |
| +1 Ligne (Sud 2) | 5000 | +Largeur cases |
## 8. Logique et Interfaces
### Algorithme d'Expansion
```python
def expand_zoo(zoo, direction, player):
cost = calculate_expansion_cost(zoo, direction)
if player.money < cost:
return error("INSUFFICIENT_FUNDS")
if reaches_world_limit(zoo, direction):
return error("WORLD_LIMIT_REACHED")
player.money -= cost
# Mise à jour de la grille
new_cells = generate_new_strip(direction, zoo.dimensions)
zoo.grid.merge(new_cells)
zoo.update_dimensions(direction)
return success("ZOO_EXPANDED")
```
# 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)
### Achat Parcelle (Action)
**Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter.
@@ -46,3 +88,8 @@ Action sur l'objet `Zoo` (dimensions).
- **Couleurs** : Gris (Inaccessible) -> Vert (Accessible).
- **Textes** : "Acheter Terrain (X Pièces)".
- **Formes** : Carré.
### Vue Isométrique
- **Brouillard de Guerre** : Les zones non achetées sont couvertes par des nuages ou un brouillard semi-transparent.
- **Dévoilement** : Lors de l'achat, les nuages se dissipent (fade out + scale up) pour révéler le nouveau terrain.
- **Clôtures** : Les clôtures délimitant le zoo se déplacent automatiquement vers la nouvelle limite.

View File

@@ -3,18 +3,64 @@
## Upgrade (7 Niveaux)
- **Production** : Augmente le nombre d'Unités de Recherche générées par heure.
- **Portée** : Augmente le rayon de visibilité sur les offres des autres zoos (voir les détails des animaux lointains).
- **Vitesse** : Réduit le temps nécessaire pour compléter une recherche technologique.
# Annexes Techniques
## 1. Données et États
Voir `centre_recherche.md` pour le modèle de données complet.
### Modèle de Données (Transaction)
```json
{
"action": "upgrade_research_center",
"building_id": "uuid",
"current_level": 2,
"cost": 1500,
"currency": "coins",
"timestamp": "timestamp"
}
```
*Voir `centre_recherche.md` pour le modèle de données complet.*
## 7. Progression
### Tableau des Upgrades
Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par niveau.
*Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par niveau.*
## 8. Logique et Interfaces
### Pseudo-code Interaction
```python
def upgrade_research_center(center, player):
# Vérifier si une recherche est en cours (bloquant ?)
if center.current_research_project:
return error("RESEARCH_BUSY", "Attendez la fin du projet en cours.")
cost = get_upgrade_cost("research_center", center.level + 1)
if player.money < cost:
return error("INSUFFICIENT_FUNDS")
player.money -= cost
center.level += 1
center.production_rate *= 1.2 # +20% par niveau
center.range += 1 # +1 case de rayon
return success("UPGRADE_COMPLETE")
```
### Cas Limites
- **Recherche Active** : L'upgrade ne doit pas annuler la recherche en cours, mais peut la mettre en pause ou simplement s'appliquer après. (Choix : S'applique immédiatement sur le taux de production restant).
- **Max Level** : Désactiver le bouton.
# 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)
### Arbre Technologique (Consultation)
**Description UX** : Visualiser les paliers de recherche.
@@ -34,3 +80,8 @@ Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par n
- **Couleurs** : Bleu (Science).
- **Textes** : "Niveau Suivant : Portée +10km".
- **Formes** : Hexagones.
### Vue Isométrique
- **Antennes** : À chaque niveau, des antennes paraboliques ou des équipements s'ajoutent sur le toit.
- **Lumières** : Les lumières du bâtiment changent (plus intenses, clignotantes) pour montrer l'activité accrue.
- **Animation** : Les antennes tournent en boucle.

View File

@@ -13,7 +13,23 @@
## 1. Données et États
### Modèle de Données (JSON)
**Transaction** : `{ "id": "uuid", "type": "BUY/UPGRADE", "item": "string", "cost": "int", "timestamp": "date" }`.
**Transaction** :
```json
{
"id": "uuid",
"type": "BUY/UPGRADE",
"item_type": "string",
"item_id": "uuid",
"cost": "int",
"currency": "coins",
"status": "enum (SUCCESS, FAILED)",
"failure_reason": "string (optional)",
"timestamp": "date",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Solde Joueur** : Voir `joueur.md`.
@@ -36,7 +52,7 @@
**Isolation** : Les bâtiments de haut niveau résistent mieux aux coûts énergétiques (Chauffage/Clim -10% par niveau).
### Impact Milieu (Biome)
**Adaptation** : Construire sur un biome "difficile" (Toundra, Désert) coûte +20% à l'achat initial.
**Adaptation** : Construire sur un biome "difficile" (Toundra, Désert) coûte +20% à l'achat initial (frais de fondations).
### Impact Saisons
**Soldes** : Certains items moins chers en Hiver (-15% sur les chauffages).
@@ -94,21 +110,44 @@
### Pseudo-code Impacts
```javascript
function processPurchase(player, item):
# Vérification pré-requis (ex: niveau joueur)
if player.level < item.required_level:
emitEvent("BUY_FAIL", "Niveau joueur insuffisant")
return
# Vérification espace (si applicable)
if item.is_physical and not map.hasSpace(item.size):
emitEvent("BUY_FAIL", "Pas de place")
return
if player.coins >= item.cost:
player.coins -= item.cost
player.inventory.add(item)
emitEvent("BUY_SUCCESS")
logTransaction(player, item, "SUCCESS")
else:
emitEvent("BUY_FAIL", "Fonds insuffisants")
logTransaction(player, item, "FAILED")
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `FUNDS_LOW` | Alerte | "Pas assez de pièces !" |
| `LEVEL_LOW` | Alerte | "Niveau X requis pour acheter ceci." |
| `NO_SPACE` | Alerte | "Impossible de construire ici." |
# 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)
### Interface d'Achat (Consultation)
**Description UX** : Le joueur ouvre le menu de construction ou d'upgrade.

View File

@@ -2,23 +2,66 @@
## Construction
- Nécessaire pour faire éclore plus d'œufs simultanément.
- Peut être construite sur une case vide.
## Upgrade (7 Niveaux)
- **Incubation** : Réduit le temps d'éclosion.
- **Soins** : Augmente les chances de survie des bébés (réduit l'impact des écarts de température).
- **Génétique** : (Niveaux élevés) Augmente légèrement la probabilité d'obtenir une rareté supérieure.
- **Génétique** : (Niveaux élevés) Augmente légèrement la probabilité d'obtenir une rareté supérieure (Shiny/Albinos).
- **Capacité** : Débloque des slots d'incubation supplémentaires.
# Annexes Techniques
## 1. Données et États
Voir `nurserie.md` pour le modèle de données complet.
### Modèle de Données (Action)
```json
{
"action": "upgrade_nursery",
"building_id": "uuid",
"unlocked_slots": 3,
"incubation_speed_bonus": 0.2
}
```
*Voir `nurserie.md` pour le modèle de données complet.*
## 7. Progression
### Tableau des Upgrades
Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau.
*Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau.*
## 8. Logique et Interfaces
### Pseudo-code
```python
def upgrade_nursery(nursery, player):
cost = get_upgrade_cost("nursery", nursery.level + 1)
if player.money < cost:
return error("NO_MONEY")
player.money -= cost
nursery.level += 1
# Déblocage de slots tous les 2 niveaux
if nursery.level % 2 == 0:
nursery.slots.append(create_empty_slot())
return success("NURSERY_UPGRADED")
```
### Cas Limites
- **Incubateurs pleins** : L'upgrade n'affecte pas les œufs en cours (ou réduit leur temps restant proportionnellement).
- **Max Slots** : Limité à 6 ou 8 slots max pour l'UI.
# 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)
### Extension (Action)
**Description UX** : Ajouter des slots d'œufs.
@@ -38,3 +81,7 @@ Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau.
- **Couleurs** : Rose pastel et Bleu ciel.
- **Textes** : "Slot débloqué".
- **Formes** : Cercles doux (œufs).
### Vue Isométrique
- **Taille** : Le bâtiment peut s'agrandir visuellement (ajouter une aile) aux niveaux 3 et 5.
- **Fenêtres** : On peut voir la lumière chaude à travers les fenêtres la nuit (incubateurs).

View File

@@ -5,7 +5,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
## 2. Fonctions
* **Information :** Indique aux visiteurs (et au joueur) quel animal se trouve ici.
* **Éducation :** Augmente légèrement le score d'éducation du zoo.
* **Éducation :** Augmente légèrement le score d'éducation du zoo (les visiteurs s'arrêtent pour lire).
* **Esthétique :** Habille les clôtures et rend le zoo plus réaliste.
## 3. Icone
@@ -15,6 +15,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
## 4. Interactions
* **Clic :** Ouvre la fiche encyclopédique de l'animal ("Zoopédia").
* **Personnalisation :** (Optionnel) Changer le style du cadre ou l'image.
* **Maintenance :** Peut être vandalisé (tagué) ou cassé, nécessitant une réparation par un agent d'entretien.
## 5. Annexes Techniques
@@ -23,20 +24,61 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
{
"sign_id": "sign_lion_01",
"parent_enclosure_id": "enclosure_lions_01",
"position": {"x": 10, "y": 11, "face": "south"}, // Position sur la grille et orientation
"created_at": "timestamp",
"updated_at": "timestamp",
"position": {
"x": 10,
"y": 11,
"face": "enum (NORTH, SOUTH, EAST, WEST)"
},
"style_id": "wood_basic",
"status": "enum (OK, BROKEN, TAGGED)",
"animal_info": {
"name": "Lion d'Afrique",
"scientific_name": "Panthera leo",
"conservation_status": "VU" // Vulnerable
}
"conservation_status": "VU"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* **Placement Auto :** Le jeu détermine la meilleure position (côté sud ou est généralement, face au chemin le plus proche).
* **Unicité :** Une seule affiche par enclos fusionné (ou une tous les X cases de périmètre).
* **Mise à jour :** Si l'animal change (enclos vidé puis rempli avec autre chose), l'affiche se met à jour automatiquement.
### Algorithme de Placement
```python
def place_sign(enclosure):
# Trouver les murs adjacents à un chemin
valid_walls = []
for wall in enclosure.walls:
if is_path(wall.neighbor):
valid_walls.append(wall)
# Priorité : Sud > Est > Ouest > Nord (pour visibilité isométrique)
best_wall = select_best_wall(valid_walls)
create_sign(best_wall.position, best_wall.orientation)
```
## 6. Annexes UX/UI
* **Visuel :** Petit panneau en bois avec une image miniature de l'animal.
* **Lisibilité :** Doit être visible sans cacher les animaux derrière.
* **Zoom :** Devient plus détaillé ou affiche une bulle d'info au survol de la souris.
* **Vue Isométrique :**
* **Orientation :** Le sprite doit correspondre à l'orientation du mur (4 sprites différents).
* **Z-Index :** Doit être dessiné *après* la clôture mais *avant* les visiteurs passant devant.
# 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.

View File

@@ -7,6 +7,7 @@ Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les vi
* **Surveillance :** Patrouille dans les allées pour rassurer les visiteurs (+attractivité).
* **Intervention :** Expulse les visiteurs qui jettent des déchets ou embêtent les animaux.
* **Protection :** Capture les animaux échappés (avec filet ou tranquillisant).
* **Dissuasion :** Sa simple présence réduit la probabilité d'actes de vandalisme dans un rayon donné.
## 3. Icone
* **Représentation :** Écusson ou Casquette de police.
@@ -15,6 +16,7 @@ Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les vi
## 4. Interactions
* **Recrutement :** Menu "Employés", coût en pièces.
* **Ordre :** Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité.
* **Licenciement :** Possible via le menu employé.
## 5. Annexes Techniques
@@ -24,20 +26,67 @@ Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les vi
"employee_id": "security_05",
"type": "agent_securite",
"name": "Sgt. Pepper",
"created_at": "timestamp",
"salary": 40,
"hire_cost": 400,
"state": "enum (PATROL, CHASE, REST, INTERACT)",
"position": { "x": 12.5, "y": 14.0 },
"target_position": { "x": 20, "y": 10 },
"stats": {
"intimidation": 10, // Efficacité contre vandales
"speed": 1.1
}
"intimidation": 10,
"speed": 1.1,
"stamina": 100
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* La présence d'agents réduit le taux de "mécontentement" des visiteurs dû à la foule ou aux déchets.
* Nécessaire pour débloquer certains animaux dangereux.
* **Rayon d'action :** 5 cases autour de lui.
* **Fatigue :** Doit se reposer au Staff Room toutes les 4h in-game.
* **Priorité :** Animal échappé > Vandalism > Déchets > Patrouille.
### Algorithme de Comportement (FSM)
```python
def update_security_agent(agent, world):
if agent.state == "REST":
agent.stamina += 5
if agent.stamina >= 100:
agent.state = "PATROL"
return
# Scan des menaces
threat = scan_for_threats(agent.position, radius=10)
if threat:
agent.state = "CHASE"
agent.target = threat.position
move_towards(agent, threat.position, agent.speed * 1.5) # Course
if distance(agent, threat) < 1:
neutralize(threat)
else:
agent.state = "PATROL"
patrol_randomly(agent)
```
## 6. Annexes UX/UI
* **Visuel Carte :** Personnage en uniforme bleu.
* **Animation :** Siffle ou fait des grands gestes.
* **Animation :**
* **Marche :** Calme, mains dans le dos.
* **Course :** Rapide, sifflet à la bouche.
* **Action :** Sort un carnet (amende) ou un filet (animal).
* **Feedback :** Les visiteurs s'écartent sur son passage.
* **Vue Isométrique :** Sprite 8 directions pour des déplacements fluides.
# 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.

View File

@@ -14,6 +14,16 @@ La carte du monde est vaste, mais le joueur ne voit initialement qu'une petite z
## 1. Données et États
### Modèle de Données (JSON)
Propriété `view_radius` sur `Zoo` ou `Player`.
```json
{
"player_id": "uuid",
"world_map_state": {
"view_radius_km": 100,
"unlocked_zones": ["zone_0_0", "zone_0_1"],
"fog_of_war_mask": "bitmask_string"
}
}
```
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
@@ -32,8 +42,38 @@ Propriété `view_radius` sur `Zoo` ou `Player`.
| 6 | 2500 | 1200 km |
| 7 | 5000 | 2000 km |
## 8. Logique et Interfaces
### Algorithme d'Exploration
```python
def explore_world(player):
next_level = get_next_exploration_level(player.exploration_level)
cost = next_level.cost
if player.research_points < cost:
return error("NOT_ENOUGH_RP", "Points de recherche insuffisants.")
player.research_points -= cost
player.exploration_level += 1
player.view_radius = next_level.radius
# Révéler les POI dans le nouveau rayon
new_pois = find_pois_in_radius(player.zoo_location, player.view_radius)
notify_discovery(new_pois)
return success("EXPLORATION_SUCCESS")
```
# 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)
### Découverte (Passif/Action)
**Description UX** : En payant des points de recherche, le brouillard de guerre recule sur la carte du monde.
@@ -53,3 +93,7 @@ Propriété `view_radius` sur `Zoo` ou `Player`.
- **Couleurs** : Blanc/Gris (Nuages).
- **Textes** : "Nouvelle zone découverte !".
- **Formes** : Cercle (Rayon de vue).
### Vue Isométrique
- **Carte** : La carte du monde peut être stylisée comme une carte papier posée sur une table, ou un globe holographique.
- **Bords** : Les bords de la zone connue sont flous ou déchirés.

View File

@@ -9,7 +9,8 @@ Entité biologique principale du jeu.
- **Génétique** :
- **Couleur** : 15 variations.
- **Rareté** : 5 niveaux (pondération Fibonacci).
- **État** : Faim, Température, Santé, Âge.
- **Traits** : Caractéristiques spéciales (ex: "Gourmand", "Agile").
- **État** : Faim, Température, Santé, Âge, Stress.
- **Cycle de vie** : Œuf -> Bébé -> Adulte -> Mort.
## Besoins
@@ -18,10 +19,6 @@ Entité biologique principale du jeu.
- **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).
## 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
@@ -38,14 +35,20 @@ Conséquence : Perte sèche, pénalité d'attractivité.
"health": "float (0-100)",
"hunger": "float (0-100)",
"temperature_comfort": "float (-1.0 to 1.0)",
"stress": "float (0-100)"
"stress": "float (0-100)",
"energy": "float (0-100)"
},
"genetics": {
"parent_a_id": "uuid_v4 | null",
"parent_b_id": "uuid_v4 | null",
"mutation_factor": "float"
"mutation_factor": "float",
"traits": ["glutton", "nocturnal"]
},
"position": { "x": "int", "y": "int" }
"position": { "x": "float", "y": "float", "z": "float" },
"orientation": "enum (N, S, E, W)",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -57,12 +60,6 @@ Conséquence : Perte sèche, pénalité d'attractivité.
| 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 |
@@ -79,12 +76,6 @@ Conséquence : Perte sèche, pénalité d'attractivité.
| 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 |
@@ -102,110 +93,31 @@ Conséquence : Perte sèche, pénalité d'attractivité.
| 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):
# 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
if animal.hunger > 0:
# Gestion Faim
if animal.hunger < 100:
animal.hunger += baseHungerRate * context.seasonMod
else:
animal.health -= 10 # Famine
if animal.hunger >= 100:
animal.health -= 10
# Gestion Reproduction
if canReproduce(animal):
mate = findMate(animal)
if mate:
startReproduction(animal, mate)
```
### Messages d'Infos / Alerte
@@ -218,6 +130,15 @@ function updateAnimal(animal, context):
# 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.
@@ -238,40 +159,7 @@ function updateAnimal(animal, context):
- **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.
### 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).

View File

@@ -15,6 +15,7 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de
## 4. Interactions
* **Recrutement :** Menu "Employés", coût en pièces.
* **Placement :** Peut être assigné à une "scène" ou un point de passage stratégique.
* **Performance :** Le joueur peut déclencher un "Show Spécial" (cooldown) pour un gros boost.
## 5. Annexes Techniques
@@ -27,10 +28,16 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de
"name": "Melody",
"salary": 45,
"hire_cost": 450,
"state": "enum (IDLE, PERFORMING, BREAK)",
"performance_cooldown_end": "timestamp",
"stats": {
"charisma": 15,
"radius": 3 // Rayon d'effet
}
"radius": 3, // Rayon d'effet
"tips_collected": 0
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -38,7 +45,34 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de
* L'efficacité diminue si l'artiste reste trop longtemps au même endroit (besoin de rotation ou de pause).
* Attire les foules, ce qui peut créer des bouchons (à gérer avec les chemins).
### Algorithme de Performance
```python
def update_artist(artist, visitors_nearby):
if artist.state == "PERFORMING":
for visitor in visitors_nearby:
visitor.happiness += artist.stats.charisma * 0.1
visitor.stay_duration += 5 # minutes
# Chance de pourboire
if random() < 0.05:
tip = random(1, 5)
artist.tips_collected += tip
add_coins(tip)
```
## 6. Annexes UX/UI
* **Visuel Carte :** Personnage coloré, jonglant ou jouant d'un instrument.
* **Effet :** Notes de musique ou étoiles flottant autour de lui.
* **Son :** Musique d'ambiance locale quand on zoome dessus.
* **Vue Isométrique :** Animation de jonglage ou de jeu d'instrument en boucle.
# 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.

View File

@@ -105,6 +105,15 @@ N/A
# 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)
### Foule (Passif)
**Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants.

View File

@@ -108,6 +108,15 @@ N/A
# 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)
### Visualisation Flux (Consultation)
**Description UX** : Le joueur regarde la carte du monde pour voir d'où viennent ses visiteurs.

View File

@@ -8,6 +8,7 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn
* **Identité :** Associé au pseudonyme du joueur et à son niveau.
* **Feedback Visuel :** Peut réagir aux événements du zoo (sourire si tout va bien, inquiet si problème).
* **Social :** S'affiche sur la carte du monde à côté du zoo du joueur.
* **NPC Directeur :** Une version miniature de l'avatar se promène physiquement dans le zoo pour inspecter les enclos.
## 3. Icone
* **Représentation :** Tête de l'avatar actuel dans un cadre circulaire ou carré.
@@ -16,6 +17,7 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn
## 4. Interactions
* **Click :** Ouvre le menu de profil du joueur et l'inventaire de skins.
* **Survol :** Affiche le niveau actuel et le titre du joueur (ex: "Directeur Débutant").
* **Level Up :** Animation spéciale lorsque le joueur gagne un niveau.
## 5. Annexes Techniques
@@ -24,16 +26,16 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn
{
"avatar_id": "player_12345",
"gender": "female", // "male" | "female"
"level": 12,
"experience": 4500,
"next_level_xp": 5000,
"title": "Expert Zoologist",
"equipped_skins": {
"head": "skin_hat_safari",
"body": "skin_shirt_ranger",
"accessory": "skin_glasses_sun"
},
"display_position": {
"x": 10,
"y": 10,
"anchor": "top-left"
},
"unlocked_titles": ["Beginner", "Novice", "Expert"],
"mood_state": "happy" // "happy" | "neutral" | "worried"
}
```
@@ -47,3 +49,15 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn
* **Emplacement :** Coin supérieur (gauche ou droite) de l'interface principale (HUD).
* **Style :** Cartoon / Isométrique cohérent avec le reste du jeu.
* **Feedback :** Animation légère (clignement des yeux, mouvement de tête).
* **Vue Isométrique :** Le "Directeur" (NPC) a un pathfinding aléatoire mais priorise les zones à problèmes (animaux malades, déchets).
# 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.

View File

@@ -14,7 +14,7 @@
## 4. Interactions
* **Création :** Lors de la première partie, une pop-up demande le nom du zoo.
* **Modification :** Clic sur la banderole pour ouvrir l'éditeur de nom (peut coûter des pièces ou être gratuit).
* **Modification :** Clic sur la banderole pour ouvrir l'éditeur de nom (peut coûter des pièces ou être gratuit avec cooldown).
## 5. Annexes Techniques
@@ -24,16 +24,34 @@
"banner_id": "main_entrance_banner",
"text": "Mon Super Zoo",
"font_style": "default", // "comic", "serif", "safari"
"font_color": "#FF5733",
"material": "wood", // "stone", "metal" (skins possibles)
"position": {"x": 15, "y": 0} // Entrée du zoo
"background_pattern": "stripes",
"last_rename": "timestamp",
"position": {"x": 15, "y": 0} // Entrée du zoo,
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* **Longueur Max :** Le nom est limité en caractères (ex: 20 chars) pour tenir sur l'affichage.
* **Filtre :** Interdiction des mots offensants (profanity filter).
* **Cooldown :** Changement de nom gratuit 1x/semaine, sinon payant (Gemmes/Pièces).
## 6. Annexes UX/UI
* **Visuel :** Modèle 3D/Iso d'une arche en bois rustique avec une planche suspendue par des cordes.
* **Animation :** La planche peut se balancer légèrement au vent.
* **Texte :** Police lisible et "fun", intégrée à la texture du panneau.
* **Texte :** Police lisible et "fun", intégrée à la texture du panneau (Texture dynamique).
# 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.

View File

@@ -143,6 +143,15 @@ function updateBaby(baby, context):
# 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)
### Croissance en Nurserie (Passif)
**Description UX** : Le bébé est visible dans son slot de nurserie. Il grandit visuellement (petite jauge).

View File

@@ -25,8 +25,15 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
"position": { "x": "int", "y": "int" },
"stats": {
"total_entries": "integer",
"daily_revenue": "integer"
}
"daily_revenue": "integer",
"current_queue_length": "integer"
},
"entry_log": [
{ "timestamp": "...", "visitor_count": 5, "revenue": 50 }
],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -36,71 +43,6 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
| Prix Ticket | 10 pièces |
| Capacité Max | 20 visiteurs |
### Scores Initiaux
**File d'attente** : 0 personnes.
**Revenus cumulés** : 0.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage (Unique).
### Conditions de Disparition
Indestructible.
### Hérédité
**Renommée** : Un vieux zoo (reset) garde 10% de son flux initial grâce à sa réputation passée.
## 3. Impacts Environnementaux
### Impact Température
**Pluie** : Vente automatique de parapluies à l'entrée (+5 pièces/visiteur).
**Canicule** : Distribution d'éventails (Coût 1 pièce, mais +Satisfaction).
### Impact Milieu (Biome)
**Décoration** : Si le biome de l'entrée correspond au biome majoritaire du zoo, +5% Attractivité (Cohérence thématique).
### Impact Saisons
| Saison | Modificateur Prix Ticket |
| :--- | :--- |
| Été | +20% (Haute saison) |
| Hiver | -10% (Basse saison, promo "Hiver Sauvage") |
| Automne | -5% (Rentrée) |
| Printemps | +10% (Vacances Pâques) |
### Impact Heure / Jour-Nuit
**Ouverture** : 08h00 - 20h00. Fermé la nuit (sauf événements "Nocturne" débloqués au Niv 5).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Mascotte** : Si un bébé rare est né < 24h, affiche "Venez voir le bébé !" -> +10% Ventes Tickets.
### Impact Mort
**Scandale** : Si une mort est visible depuis l'entrée, -50% entrées pendant 24h.
### Impact Nourriture
**Odeur Snack** : Si un stand de nourriture est proche (< 5 cases), +5% faim des visiteurs dès l'entrée (Mise en appétit).
### Impact Attractivité (Visiteurs/Animaux)
Point d'entrée unique. L'attractivité globale du zoo détermine le flux qui se présente à la billeterie.
### Impact Valeur
**Valeur Bâtiment** : 50% du coût de construction/upgrade récupérable si destruction (impossible ici, mais pour info comptable).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Flux Entrée** : 1 visiteur / seconde max (Niv 1) -> 5 visiteurs / seconde (Niv 7 - Portiques auto).
### Dépenses (Boutiques/Visiteurs)
Revenu principal (Ticket). Pas de dépense sauf maintenance (10/jour).
### Trajet Visiteurs
Point de départ (Spawn) et d'arrivée (Despawn). Les visiteurs mécontents courent vers la sortie.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Entrée** : Gain pièces.
* **Refoulement** : Si Capacité Max atteinte.
* **VIP** : Arrivée d'un bus de touristes (Flux x2 pendant 1h).
## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction |
@@ -115,19 +57,27 @@ Point de départ (Spawn) et d'arrivée (Despawn). Les visiteurs mécontents cour
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function processEntry(zoo):
potentialVisitors = calculateAttractionFlow(zoo)
```python
def process_entry(zoo):
potential_visitors = calculate_attraction_flow(zoo)
if zoo.currentVisitors >= zoo.billeterie.capacity:
emitEvent("ZOO_FULL")
return
# Gestion de la file d'attente
zoo.billeterie.current_queue_length += potential_visitors
actualVisitors = min(potentialVisitors, zoo.billeterie.capacity - zoo.currentVisitors)
# Traitement des entrées (limité par la vitesse du guichet)
entries_per_tick = get_entry_speed(zoo.billeterie.level)
actual_entries = min(zoo.billeterie.current_queue_length, entries_per_tick)
for i in 0..actualVisitors:
spawnVisitor()
player.addCoins(zoo.billeterie.ticketPrice)
# Vérification capacité zoo
if zoo.current_visitors + actual_entries > zoo.billeterie.capacity:
actual_entries = zoo.billeterie.capacity - zoo.current_visitors
emit_event("ZOO_FULL")
zoo.billeterie.current_queue_length -= actual_entries
for _ in range(actual_entries):
spawn_visitor()
player.add_coins(zoo.billeterie.ticket_price)
```
### Messages d'Infos / Alerte
@@ -135,16 +85,26 @@ function processEntry(zoo):
| :--- | :--- | :--- |
| `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." |
| `VIP_BUS` | Info | "Un bus de touristes arrive !" |
| `QUEUE_LONG` | Warning | "La file d'attente est trop longue, des visiteurs partent !" |
# 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)
### Consultation
**Description UX** : Le joueur clique sur la billeterie pour voir ses statistiques et son niveau.
**Description UI** : **Bottom Sheet** ou Panneau Latéral affichant le niveau actuel, la capacité, le prix du ticket et les revenus du jour.
**Emplacement** : Case Billeterie sur la grille du zoo.
**Intégration** : Bâtiment fixe (ne peut pas être déplacé ou supprimé).
**Navigation** : Clic -> Ouverture Panneau -> Fermeture (Croix ou clic extérieur).
**Intégration** : Bâtiment fixe.
**Navigation** : Clic -> Ouverture Panneau -> Fermeture.
**Événements** : `CLICK_BILLETERIE`.
#### Assets
@@ -158,40 +118,6 @@ function processEntry(zoo):
- **Textes** : "Billeterie", "Niveau X", "Revenus : Y".
- **Formes** : Carré (case).
### Amélioration (Upgrade)
**Description UX** : Le joueur décide d'améliorer la billeterie pour augmenter la capacité et le prix du ticket.
**Description UI** : Bouton "Améliorer" dans le panneau de consultation, avec coût et prévisualisation des gains.
**Emplacement** : Panneau de consultation.
**Intégration** : Action immédiate si fonds suffisants.
**Navigation** : Clic "Améliorer" -> Confirmation (optionnelle) -> Mise à jour UI.
**Événements** : `UPGRADE_BILLETERIE`.
#### Assets
- **Musiques** : Fanfare courte "Level Up".
- **Sons** : `upgrade_success.mp3` (caisse enregistreuse).
- **Graphiques** : Icône flèche vers le haut.
- **Images** : Confettis (Sprite).
- **Vidéos** : Effet de lumière "Rayon divin".
- **Animations** : Particules de succès (confettis/étoiles) autour du bâtiment.
- **Couleurs** : Bouton Vert (si achetable), Gris (si fonds insuffisants).
- **Textes** : "Améliorer (X pièces)".
- **Formes** : Bouton rectangulaire arrondi.
### Flux Visiteurs (Passif)
**Description UX** : Le joueur observe les visiteurs entrer dans le zoo.
**Description UI** : Petits sprites de visiteurs apparaissant à la porte et se dispersant.
**Emplacement** : Devant la billeterie.
**Intégration** : Animation continue pendant les heures d'ouverture.
**Navigation** : Automatique (Flux continu).
**Événements** : `VISITOR_SPAWN`.
#### Assets
- **Musiques** : Bruit de foule (loop).
- **Sons** : `visitor_entry.mp3` (bruit de foule léger, pas à chaque spawn).
- **Graphiques** : Sprites visiteurs variés.
- **Images** : Silhouettes de foule en arrière-plan.
- **Vidéos** : Effet de foule floue en mouvement.
- **Animations** : Marche (4 directions).
- **Couleurs** : Variées (vêtements).
- **Textes** : Bulles de discussion aléatoires.
- **Formes** : Points mouvants (sur la minimap).
### Vue Isométrique
- **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet.
- **Portiques** : Animation d'ouverture/fermeture des barrières.

View File

@@ -33,7 +33,10 @@ Sélection hiérarchique : **Famille** > **Spécialisation**.
"sell_animal_threshold": "float (price factor)",
"expand_map_priority": "int (0-10)",
"research_priority": "int (0-10)"
}
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -122,6 +125,15 @@ function runBotLogic(bot, zoo):
# 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)
### Sélection du Profil (Configuration)
**Description UX** : Le joueur choisit comment son zoo sera géré en son absence.
@@ -149,7 +161,6 @@ function runBotLogic(bot, zoo):
**Intégration** : Bloquant au démarrage.
**Navigation** : Lire -> Fermer.
**Événements** : `SHOW_REPORT`.
#### Assets
- **Musiques** : N/A
- **Sons** : `notification.mp3`.

View File

@@ -26,7 +26,10 @@ Bâtiment commercial générant des revenus passifs grâce aux visiteurs.
"stats": {
"revenue_total": "integer",
"visitors_served": "integer"
}
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -143,6 +146,15 @@ function processShop(shop, visitors):
# 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)
### Vente (Passif)
**Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur.

View File

@@ -29,7 +29,10 @@ Véhicule de transport pour les achats et les ventes d'animaux/œufs.
"status": "enum ('idle', 'moving_to_target', 'moving_home')",
"cargo": "animal_uuid | null",
"position": { "x": "float", "y": "float" },
"target_site_id": "uuid | null"
"target_site_id": "uuid | null",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -144,6 +147,15 @@ function updateTruck(truck, deltaTime):
# 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)
### Envoi en Mission (Action)
**Description UX** : Le joueur achète un animal sur la carte du monde. Le camion part automatiquement le chercher.

View File

@@ -25,7 +25,10 @@ Une carte est une grille de cases représentant un espace de jeu ou de navigatio
"height": "integer",
"grid": [
[ { "case_ref": "case_id" } ]
]
],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -107,6 +110,15 @@ function updateMap(map):
# 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)
### Navigation (Action)
**Description UX** : Le joueur explore la carte.

View File

@@ -41,7 +41,10 @@ La carte du monde est l'espace multijoueur où sont situés les zoos des joueurs
"width": "integer (très grand)",
"height": "integer",
"sites": [ { "id": "uuid", "type": "zoo|city|lab", "pos": { "x": "int", "y": "int" } } ],
"trucks": [ { "id": "uuid", "owner_id": "uuid", "pos": { "x": "float", "y": "float" }, "target": "uuid" } ]
"trucks": [ { "id": "uuid", "owner_id": "uuid", "pos": { "x": "float", "y": "float" }, "target": "uuid" } ],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -134,6 +137,15 @@ function updateWorldMap(map, deltaTime):
# 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)
### Vue Globale (Passif)
**Description UX** : Le joueur voit les autres acteurs et les flux économiques.

View File

@@ -1,11 +1,12 @@
# Spécifications : Carte du Zoo
## Définition
La carte du zoo est l'espace principal de gestion du joueur. Elle prend tout l'espace de l'écran sous la barre supérieure (HUD) et permet de zoomer/dézoomer.
La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux.
## Structure
- **Vue** : Isométrique (2.5D).
- **Grille** : Composée de cases individuelles fusionnables (pour les enclos).
- **Affichage** : Plein écran sous la barre du haut, dézoom possible.
- **Grille** : Composée de cases individuelles.
- **Biomes** : Divisée en tiers de largeur :
- Gauche : Prairie
- Milieu : Océan
@@ -128,6 +129,16 @@ function initZooMap():
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Grille** : Les déplacements se font sur une grille losange.
* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
* Coloré, vivant, détails foisonnants.
* Aspect "dessiné à la main" ou "cartoon soigné".
* Couleurs vives et contours nets.
## 1. Expérience Utilisateur (UX)
### Interaction Grille (Action)
**Description UX** : Le joueur clique sur une case pour voir son contenu ou construire.

View File

@@ -8,10 +8,7 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde).
- **Couleur (Milieu)** : Définit le biome et l'environnement visuel.
- **Température** : Liée à la couleur/biome.
- **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre).
## Règles
- Les transitions de propriétés (couleur, température) entre cases adjacentes doivent être douces.
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre, fertilité).
# Annexes Techniques
@@ -25,107 +22,56 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde).
"temperature_offset": "float",
"content_ref": "uuid | null",
"content_type": "string",
"state_flags": ["frozen", "dry", "dirty"]
"fertility_level": "float (0-100)",
"state_flags": ["frozen", "dry", "dirty", "fertilized"],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Vide** : État par défaut.
### Scores Initiaux
**Usure** : 0% (Neuf).
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération carte.
### Conditions de Disparition
**Destruction** : Si la case fait partie d'une extension de zoo vendue/annulée (rare).
### Hérédité
**Mémoire** : Une case se "souvient" de son biome d'origine si on détruit le bâtiment dessus.
## 3. Impacts Environnementaux
### Impact Température
`Température_Réelle = Température_Biome + Température_Offset + Saison_Mod`
### Impact Milieu (Biome)
Définit la couleur de fond.
### Impact Saisons
**Esthétique** : Changement de palette (Vert -> Orange -> Blanc).
### Impact Heure / Jour-Nuit
**Lumière** : Assombrissement global (Overlay nuit).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Support** : Lieu physique de l'acte.
### Impact Mort
**Support** : Lieu physique du décès.
### Impact Nourriture
**Support** : Lieu de dépôt de la nourriture.
### Impact Attractivité (Visiteurs/Animaux)
**Propreté** : Une case sale réduit l'attractivité locale.
### Impact Valeur
**Immobilier** : Valeur intrinsèque du terrain.
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Terrain** : Modificateur de vitesse de déplacement (Boue, Sable).
### Dépenses (Boutiques/Visiteurs)
**Entretien** : Coût de maintenance du sol.
### Trajet Visiteurs
**Noeud** : Point de passage pour le pathfinding.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Clic** : Interaction joueur.
## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function getCaseState(case):
return {
temp: calculateTemp(case),
biome: case.biome,
isWalkable: !hasBuilding(case)
}
```
```python
def fertilize_case(case, player):
cost = 50
if player.money < cost: return error("NO_MONEY")
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `CASE_ERROR` | Erreur | "Impossible d'accéder à cette case." |
player.money -= cost
case.fertility_level = 100
case.state_flags.append("fertilized")
# Si plante dessus, boost croissance
if case.content and case.content.type == "plant":
case.content.growth_rate *= 1.5
return success("CASE_FERTILIZED")
```
# 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)
### Feedback État (Passif)
**Description UX** : La case montre son état physique.
**Description UI** : Overlay de texture (Givre, Craquelures, Boue).
**Emplacement** : Case.
**Intégration** : Layer 1 (Au-dessus du fond, sous le contenu).
**Navigation** : Automatique (Mise à jour visuelle).
**Événements** : `STATE_UPDATE`.
### Fertilisation (Action)
**Description UX** : Le joueur améliore le sol pour que l'herbe repousse plus vite.
**Description UI** : Outil "Sac d'engrais". Clic sur la case.
**Emplacement** : Menu Outils -> Case.
**Intégration** : Curseur.
**Navigation** : Clic.
**Événements** : `FERTILIZE_SOIL`.
#### Assets
- **Musiques** : Son d'ambiance très léger (vent).
- **Sons** : Bruit de pas (selon texture).
- **Graphiques** : Textures alpha (Givre blanc, Craquelures marron).
- **Images** : Pattern Sol.
- **Vidéos** : Effet de givre qui s'étend.
- **Animations** : Apparition progressive (Fade).
- **Couleurs** : Blanc, Marron, Gris.
- **Textes** : "Gelé", "Sec".
- **Formes** : Carré.
- **Musiques** : Bruit de poudre.
- **Sons** : `scatter.mp3`.
- **Graphiques** : Particules vertes/brunes.
- **Images** : Texture terre riche (plus foncée).
- **Animations** : Poussière qui retombe.
- **Couleurs** : Marron foncé.

View File

@@ -98,6 +98,15 @@ function getTravelCost(case):
# 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)
### Survol (Passif)
**Description UX** : Explorer la carte du monde.

View File

@@ -117,6 +117,15 @@ function checkAnimalDisappearance(case):
# 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)
### Sélection (Action)
**Description UX** : Clic sur une case zoo.

View File

@@ -4,8 +4,7 @@
Bâtiment produisant des points de science/recherche.
## Fonctionnalités
- **Production** : Génère des unités de recherche périodiquement grâce aux chercheurs assignés (Max 3).
- **Distinction** : Ne pas confondre avec le Laboratoire (qui gère la génétique et les bébés). Le Centre de Recherche produit du savoir (Science).
- **Production** : Génère des unités de recherche périodiquement.
- **Déblocage** : Permet de payer l'agrandissement de la carte du monde.
- **Visibilité** : Donne accès aux niveaux d'animaux/bébés supérieurs dans les autres zoos (débloque la vue sur les offres rares).
@@ -23,11 +22,13 @@ Bâtiment produisant des points de science/recherche.
"id": "uuid",
"type": "research_center",
"level": "integer (1-7)",
"assigned_researchers": ["uuid", "uuid", "uuid"], // Max 3
"stats": {
"points_generated": "integer",
"last_collection": "timestamp"
}
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -136,6 +137,15 @@ function updateResearch(center):
# 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)
### Collecte de Points (Action)
**Description UX** : Les points de recherche s'accumulent. Le joueur clique sur le bâtiment pour les récolter (ou collecte auto si implémenté).

View File

@@ -1,48 +1,55 @@
# Chemin
# Spécifications : Chemin
## 1. Définition
Voie de circulation pour les visiteurs à l'intérieur du zoo. Les chemins relient l'entrée aux enclos et aux bâtiments de service. Ils sont améliorables (Terre -> Gravier -> Pavés -> Marbre, etc.), ce qui influence la vitesse de déplacement et l'attractivité du parc.
## Définition
Les chemins sont des cases aménagées permettant aux visiteurs et au staff de se déplacer efficacement à travers le zoo. Ils connectent les différentes infrastructures (Enclos, Boutiques, Services).
## 2. Fonctions
* **Circulation :** Guide le flux des visiteurs (pathfinding).
* **Vitesse :** Les visiteurs marchent plus vite sur des chemins de meilleure qualité.
* **Attractivité :** Un beau chemin (pavé, décoré) augmente la note globale du zoo.
* **Canalisation :** Les visiteurs préfèrent rester sur les chemins plutôt que de marcher dans l'herbe (si l'herbe est accessible).
## Fonctions
* **Circulation :** Permet le déplacement des entités (Visiteurs, Staff).
* **Connexion :** Relie les bâtiments entre eux pour former un réseau accessible.
* **Esthétique :** Améliore l'aspect visuel du zoo.
## 3. Icone
* **Représentation :** Route sinueuse ou Pavé.
* **Couleur dominante :** Gris et Beige.
# Annexes Techniques
## 4. Interactions
* **Construction :** Outil "Route" -> Sélection du type -> Tracer sur la grille.
* **Upgrade :** Clic sur une portion de chemin -> Bouton "Améliorer" (coût en pièces).
* **Destruction :** Outil Bulldozer.
## 5. Annexes Techniques
### Données (JSON)
## 1. Données et États
### Modèle de Données (JSON)
```json
{
"path_id": "path_segment_10_12",
"type": "gravel", // "dirt", "paved", "marble"
"coordinates": {"x": 10, "y": 12},
"stats": {
"speed_modifier": 1.2, // x1.2 vitesse de marche
"attractiveness_bonus": 2
},
"cost_per_tile": 10
"type": "path",
"material": "gravel",
"x": 10,
"y": 12,
"connected_neighbors": ["N", "S", "E"],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* **Connexion :** Les chemins adjacents se connectent visuellement (textures dynamiques).
* **Accessibilité :** Les bâtiments doivent être reliés à un chemin pour être fonctionnels.
* **Coût :** L'amélioration coûte des pièces par case.
## 2. Règles Métier
* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling).
* **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins.
## 6. Annexes UX/UI
* **Textures :**
* Terre : Marron, irrégulier, poussière.
* Gravier : Gris clair, petits cailloux, bruit de pas "crunchy".
* Pavés : Motif régulier, propre, bruit de pas "clac".
* Marbre/Luxe : Blanc, brillant, très rapide.
* **Feedback :** Les visiteurs ont une animation de marche plus rapide sur les bons chemins.
# 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.
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Grille** : Les déplacements se font sur une grille losange.
* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
* Coloré, vivant, détails foisonnants.
* Aspect "dessiné à la main" ou "cartoon soigné".
* Couleurs vives et contours nets.
## 1. Détails Spécifiques
* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases.
* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).

View File

@@ -15,6 +15,7 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc
## 4. Interactions
* **Recrutement :** Menu "Employés", coût en pièces.
* **Assignation :** Doit être assigné à un Centre de Recherche (max 3 par centre).
* **Formation :** Peut être envoyé en stage pour augmenter son intelligence (coût + temps).
## 5. Annexes Techniques
@@ -27,19 +28,35 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc
"salary": 60,
"hire_cost": 600,
"assigned_building": "research_center_01",
"fatigue_level": "float (0-100)",
"current_task": "enum (IDLE, RESEARCHING, TRAINING)",
"stats": {
"intelligence": 10, // Points de recherche par cycle
"specialty": "genetics" // Bonus dans un domaine
}
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* **Limite :** Maximum 3 chercheurs par bâtiment "Centre de Recherche".
* Ne peut pas travailler sans bâtiment assigné.
* Le coût de salaire est élevé.
* **Fatigue :** L'efficacité diminue si la fatigue > 80%. Doit prendre des pauses.
* **Synergie :** 3 chercheurs de la même spécialité dans un centre = Bonus +20%.
## 6. Annexes UX/UI
* **Visuel Carte :** Visible à travers les fenêtres du Centre de Recherche ou entrant/sortant.
* **Interface Bâtiment :** Slots d'employés (0/3) dans le menu du Centre de Recherche.
* **Feedback :** Bulles de science (fioles, atomes) s'élevant du bâtiment quand ils travaillent.
# 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.

View File

@@ -29,7 +29,10 @@ Mécanisme de vente entre joueurs/bots sur la Carte du Monde.
"highest_bidder_id": "uuid | null",
"end_time": "timestamp",
"status": "enum ('active', 'pending_validation', 'finalizing', 'completed', 'cancelled')",
"finalization_timer": "timestamp (end)"
"finalization_timer": "timestamp (end)",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -63,6 +66,15 @@ function finalizeAuction(auction):
# 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)
### Consultation des Offres (Consultation)
**Description UX** : Le joueur survole les zoos sur la carte du monde pour voir les offres.

View File

@@ -5,19 +5,10 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
## 2. Fonctions
* **Hébergement :** Lieu de vie des animaux.
* **Fusion (Merge) :** Si deux cases "Enclos [Animal X]" sont posées côte à côte, les barrières internes disparaissent pour créer un espace commun.
* **Fusion (Merge) :** Si deux cases "Enclos [Animal X]" sont posées côte à côte, les barrières internes disparaissent pour créer un espace commun (Auto-tiling).
* **Visibilité :** Permet aux visiteurs d'observer les animaux (augmente l'attractivité).
* **Sécurité :** Empêche les animaux de s'enfuir (si entretenu).
## 3. Icone
* **Représentation :** Barrière en bois ou Grillage.
* **Couleur dominante :** Marron et Vert.
## 4. Interactions
* **Construction :** Outil "Enclos" -> Sélection de l'animal -> Clic sur la carte (glisser pour zone).
* **Gestion :** Clic sur n'importe quelle case de l'enclos fusionné ouvre le menu global de cet enclos.
* **Modification :** Ajouter/Retirer des cases, changer le type de barrière.
## 5. Annexes Techniques
### Données (JSON)
@@ -25,6 +16,7 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
{
"enclosure_id": "enclosure_lions_01",
"animal_type": "lion",
"biome_type": "savanna",
"cells": [
{"x": 10, "y": 10},
{"x": 10, "y": 11},
@@ -32,20 +24,43 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
{"x": 11, "y": 11}
],
"area": 4,
"capacity": 6, // Capacité totale calculée (ex: 1.5 animaux par case)
"capacity": 6,
"current_population": 3,
"cleanliness": 85,
"fence_health": 100
"fence_health": 100,
"decoration_score": 15,
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* **Adjacence :** La fusion se fait horizontalement et verticalement (pas en diagonale seule).
* **Cohérence :** Impossible de fusionner deux enclos d'espèces différentes (message d'erreur ou création de deux enclos séparés par une barrière).
* **Taille Minimum :** Certains animaux nécessitent un enclos de X cases minimum pour être heureux.
* **Affichage Animal :** Les animaux apparaissent "en petit" à l'intérieur de l'enclos, se déplaçant librement dans l'espace fusionné.
* **Algorithme de Fusion :** À chaque placement/suppression de case enclos, recalculer les composants connectés (Connected Components) pour mettre à jour les murs.
* **Murs :** Les murs ne sont générés que sur les bords de la zone connectée qui ne touchent pas une autre case du même enclos.
## 6. Annexes UX/UI
* **Visuel Barrières :** Génération procédurale des barrières uniquement sur le pourtour de l'ensemble des cases fusionnées (algorithme de "blob" ou "marching squares").
* **Affiche :** Une affiche descriptive de l'animal est placée automatiquement sur une portion horizontale de la clôture (voir `affiche_enclos.md`).
* **Isométrique :** Les barrières doivent avoir une hauteur et une profondeur en vue isométrique.
## 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.
### 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Grille** : Les déplacements se font sur une grille losange.
* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
* Coloré, vivant, détails foisonnants.
* Aspect "dessiné à la main" ou "cartoon soigné".
* Couleurs vives et contours nets.
### Détails Spécifiques
* **Visuel Barrières :** Génération procédurale des barrières uniquement sur le pourtour (Auto-tiling). Fusion visuelle des barrières si adjacents.
* **Isométrique :** Les barrières au Sud et à l'Est doivent être semi-transparentes ou plus basses pour ne pas cacher les animaux.
* **Signalétique :** Affiche de l'animal visible sur la clôture.

View File

@@ -104,6 +104,15 @@ elif animal.temp > animal.idealTemp + 10:
# 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)
### Lecture Immédiate (Passif)
**Description UX** : Le joueur comprend la situation d'un coup d'œil sans ouvrir de menu.

View File

@@ -48,6 +48,15 @@ function applyImpact(target, impactType, value):
# 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)
### Feedback Visuel d'Impact (Passif)
**Description UX** : Le joueur voit les conséquences de ses actions.

View File

@@ -25,7 +25,10 @@ Table statique `animal_types`.
"rarity": "int",
"ideal_biome": "int",
"ideal_temp": "float",
"base_value": "int"
"base_value": "int",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -119,6 +122,15 @@ function getCollectionBonus(player):
# 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)
### Bestiaire / Encyclopédie (Consultation)
**Description UX** : Le joueur consulte les animaux découverts/possédés.

View File

@@ -92,6 +92,15 @@ function getBabyBonus(baby):
# 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)
### Visualisation Bébé (Passif)
**Description UX** : Différencier les bébés des adultes.

View File

@@ -94,6 +94,15 @@ function updateTime(world, deltaTime):
# 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)
### Cycle Jour/Nuit (Passif)
**Description UX** : La luminosité change progressivement.

View File

@@ -97,6 +97,15 @@ function updateWeather(world):
# 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)
### Ambiance Météo (Passif)
**Description UX** : Le joueur ressent la météo actuelle.

View File

@@ -100,6 +100,15 @@ function getBiomeEffect(biome):
# 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)
### Palette Biome (Consultation)
**Description UX** : Le joueur consulte la liste des biomes disponibles pour terraformer.

View File

@@ -97,6 +97,15 @@ function checkVisitorNeeds(visitor):
# 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)
### Bulles d'Incidents (Action)
**Description UX** : Voir `visiteur.md`.

View File

@@ -17,7 +17,10 @@
"objective_type": "string",
"target_value": "int",
"reward_coins": "int",
"is_completed": "boolean"
"is_completed": "boolean",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -106,6 +109,15 @@ function checkQuests(player, action):
# 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)
### Suivi Quêtes (Permanent)
**Description UX** : Le joueur voit ses objectifs en cours.

View File

@@ -136,6 +136,15 @@ function updateSeason(world):
# 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)
### Ambiance Saisonnière (Passif)
**Description UX** : Le décor change selon la saison.

View File

@@ -48,3 +48,14 @@ Interface de gestion permettant au joueur de visualiser, trier et équiper les
* **Grille :** Affichage des items sous forme de grille scrollable.
* **Paper Doll :** Prévisualisation de l'avatar au centre ou sur le côté avec les équipements actuels.
* **Drag & Drop :** (Optionnel) Glisser un item sur la prévisualisation pour l'équiper.
# 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.

View File

@@ -97,6 +97,15 @@ function getTemp(case):
# 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)
### Thermomètre (Consultation)
**Description UX** : Le joueur voit la température actuelle.

View File

@@ -34,7 +34,10 @@ L'utilisateur humain.
"settings": {
"music_enabled": "boolean",
"bot_profile_id": "integer"
}
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -125,6 +128,15 @@ function playerAction(action):
# 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)
### HUD Principal (Permanent)
**Description UX** : Le joueur voit en permanence ses ressources et accès rapides.

View File

@@ -286,6 +286,15 @@ Microscope stylisé bleu néon sur fond sombre, évoquant la haute technologie.
## 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)
#### Description UX

View File

@@ -37,7 +37,10 @@ Interface centralisée dédiée aux transactions utilisant la monnaie premium (p
"currency_balance": {
"coins": 1500,
"gems": 50
}
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -49,3 +52,14 @@ Interface centralisée dédiée aux transactions utilisant la monnaie premium (p
* **Design :** Fenêtre modale propre, avec de grandes icônes et des prix clairs.
* **Feedback Achat :** Animation de pièces qui volent vers le compteur total lors de la dépense.
* **Confirmation :** Pop-up de confirmation pour les achats coûteux (> 1000 pièces).
# 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.

View File

@@ -24,7 +24,10 @@ Le milieu représente l'environnement écologique d'une case, défini par sa cou
"name": "string",
"color_hex": "string (#RRGGBB)",
"default_temperature": "float",
"fertility_bonus": "float"
"fertility_bonus": "float",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -122,6 +125,15 @@ function checkBiomeCompatibility(animal, tile):
# 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)
### Identification Visuelle (Passif)
**Description UX** : Le joueur identifie le biome à la couleur du sol.

View File

@@ -102,6 +102,15 @@ function handleBabyDeath(baby):
# 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)
### Drame (Événement)
**Description UX** : Le bébé meurt.

View File

@@ -30,7 +30,10 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les
"capacity": 50, // Quantité de nourriture transportable
"speed": 1.2
},
"current_task": "moving_to_enclosure_12"
"current_task": "moving_to_enclosure_12",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -42,3 +45,14 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les
* **Visuel Carte :** Personnage avec une brouette ou un sac sur le dos.
* **Animation :** Verse de la nourriture dans l'auge.
* **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé.
# 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.

View File

@@ -43,3 +43,14 @@ Consommable premium achetable avec des pièces, offrant un boost temporaire aux
* **Particules :** Effet scintillant autour de l'animal pendant la durée du boost.
* **Icône de Buff :** Petite icône (éclair, cœur) à côté de la barre de vie de l'animal.
* **Son :** Bruit de mastication joyeux.
# 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.

View File

@@ -24,7 +24,10 @@ Bâtiment dédié à l'éclosion des œufs et à la croissance des bébés anima
"level": "integer (1-7)",
"slots": [
{ "slot_id": 1, "content": "egg_uuid | baby_uuid | null", "timer_end": "timestamp" }
]
],
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -140,6 +143,15 @@ function updateNurserie(nurserie):
# 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)
### Gestion des Slots (Consultation)
**Description UX** : Le joueur clique sur la nurserie pour voir l'état de ses œufs et bébés.

View File

@@ -38,3 +38,14 @@
## 6. Annexes UX/UI
* **Visuel 3D/Iso :** Modèle détaillé correspondant au thème de l'animal.
* **Feedback :** Cœurs ou étoiles émanant de l'animal lorsqu'il utilise l'objet.
# 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.

View File

@@ -53,3 +53,14 @@ Système de progression temporaire (durée typique : 1 mois) offrant des récomp
* **Barre de Progression :** Visuel clair de l'avancement (jauge remplie).
* **Paliers :** Icônes des récompenses cliquables pour détails.
* **Mise en avant :** Pop-up à la connexion annonçant le nouveau passe ou les récompenses non réclamées.
# 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.

View File

@@ -19,7 +19,10 @@ Classe abstraite ou interface commune.
"id": "uuid",
"type": "string",
"position": { "x": "int", "y": "int" },
"active": "boolean"
"active": "boolean",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -95,6 +98,15 @@ N/A
# 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)
### Identification (Passif)
**Description UX** : Reconnaître le type de personnage au premier coup d'œil.

View File

@@ -29,7 +29,10 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues
"speed_modifier": 1.0,
"attractiveness_bonus": 5
},
"cost_per_tile": 50
"cost_per_tile": 50,
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -41,3 +44,14 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues
* **Visuel :** Planches de bois avec rambardes, piliers plongeant dans l'eau.
* **Son :** Bruit de pas sur le bois (creux).
* **Reflet :** Reflet du pont dans l'eau (si moteur graphique le permet).
# 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.

View File

@@ -119,6 +119,15 @@ if checkConditions(parentA, parentB):
# 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)
### Amour (Passif)
**Description UX** : Deux animaux compatibles se rencontrent. Des cœurs apparaissent.

View File

@@ -96,6 +96,15 @@ N/A
# 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)
### Affichage Score (Permanent)
**Description UX** : Le joueur connaît son niveau de prestige.

View File

@@ -97,6 +97,15 @@ survivalScore = average(allAnimals.health)
# 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)
### Monitoring Santé (Permanent)
**Description UX** : Le joueur surveille la santé globale de son zoo.

View File

@@ -22,7 +22,10 @@ Un site est un lieu d'intérêt positionné sur la Carte du Monde.
"id": "uuid",
"type": "enum",
"name": "string",
"position": { "x": "int", "y": "int" }
"position": { "x": "int", "y": "int" },
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -98,6 +101,15 @@ N/A
# 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)
### Info-bulle (Consultation)
**Description UX** : Survoler un site donne ses détails.

View File

@@ -31,7 +31,10 @@
"amount": 500,
"currency": "coins"
},
"asset_path": "assets/skins/avatar/head/pirate_hat.png"
"asset_path": "assets/skins/avatar/head/pirate_hat.png",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -43,3 +46,14 @@
* **Inventaire :** Grille d'icônes représentant les skins possédés.
* **Rareté :** Bordure de couleur autour de l'icône (Gris=Commun, Vert=Atypique, Bleu=Rare, Violet=Épique, Or=Légendaire).
* **Notification :** "Nouveau skin débloqué !" avec animation de coffre ou d'éclat.
# 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.

View File

@@ -32,7 +32,10 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l
"efficiency": 0.8,
"range": 5 // Rayon d'action en cases
},
"assigned_zone": null // null = tout le zoo, ou ID de zone
"assigned_zone": null // null = tout le zoo, ou ID de zone,
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -45,3 +48,14 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l
* **Visuel Carte :** Personnage en blouse blanche avec une mallette.
* **Feedback :** Icône de croix verte au-dessus de l'animal soigné.
* **Notification :** "Un animal est malade !" (si pas de soigneur dispo) ou "Animal soigné par [Nom]".
# 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.

View File

@@ -97,6 +97,15 @@ Certains événements doivent arriver même si le joueur est hors ligne (ex: Enc
# 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)
### Chargement (Feedback)
**Description UX** : Le joueur attend le calcul du Lazy Update à la connexion.

View File

@@ -111,6 +111,15 @@ currentTemp = baseBiomeTemp + seasonMod + dayNightMod + caseRegulatorOffset
# 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)
### Visualisation Thermique (Passif)
**Description UX** : Le joueur voit la température de chaque case.

View File

@@ -45,3 +45,14 @@ Ensemble cohérent de skins et d'éléments visuels transformant l'ambiance gén
## 6. Annexes UX/UI
* **Sélecteur de Thème :** Carrousel ou liste déroulante dans les options graphiques.
* **Transition :** Fondu au noir ou effet de "rideau" lors du changement de thème.
# 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.

View File

@@ -105,6 +105,15 @@ function sellAnimal(animal, price, mode):
# 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)
### Libération (Action)
**Description UX** : Le joueur relâche un animal (vente système).

View File

@@ -88,6 +88,15 @@ N/A
# 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)
### Mise en Vente (Action)
**Description UX** : Le joueur sélectionne un animal adulte sur la grille et choisit "Vendre".

View File

@@ -29,7 +29,10 @@ Processus de vente spécifique pour les bébés animaux nés dans le zoo.
"current_bid": "int",
"highest_bidder": "uuid | null",
"end_time": "timestamp",
"status": "active | sold | expired"
"status": "active | sold | expired",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -113,6 +116,15 @@ N/A
# 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)
### Mise en Vente (Action)
**Description UX** : Le joueur glisse un bébé depuis la nurserie vers le camion.

View File

@@ -23,7 +23,10 @@ Une ville est une entité sur la Carte du Monde qui génère le flux de visiteur
"type": "city",
"name": "string",
"population": "integer",
"wealth_factor": "float (0.5 - 2.0)"
"wealth_factor": "float (0.5 - 2.0)",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
@@ -121,6 +124,15 @@ function calculateVisitorFlow(city, zoo):
# 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)
### Visualisation Taille (Passif)
**Description UX** : Distinguer les grandes villes des petites.

View File

@@ -40,3 +40,14 @@ Statut premium pour les joueurs, généralement obtenu par abonnement ou achat i
* **Badge VIP :** Petite icône couronne à côté du pseudo partout dans l'interface.
* **Interface Boutique :** Section dédiée "Devenir VIP" avec mise en avant des avantages (surtout la conservation des thèmes).
* **Feedback :** Effet visuel doré lors de la récupération de récompenses.
# 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.

View File

@@ -305,6 +305,24 @@ Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, E
## 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 du personnage pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
### 0. Direction Artistique & Vue (Existante)
* **Vue** : Isométrique (2.5D).
* **Grille** : Les déplacements se font sur une grille losange.
* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
* Coloré, vivant, détails foisonnants.
* Aspect "dessiné à la main" ou "cartoon soigné".
* Couleurs vives et contours nets.
### 1. Expérience Utilisateur (UX)
#### Description UX
@@ -312,8 +330,11 @@ Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, E
|---|---|---|
| Observation | Zoom sur visiteur | Affichage info-bulle nom/état |
| Plainte | Clic sur bulle rouge | Ouverture fenêtre résolution problème |
| Déplacement | Se déplace sur les chemins | Attraction forte pour les chemins |
#### Description UI
Style graphique inspiré de `IMG_20260303_170253.jpg` : Coloré, vivant, détails foisonnants, aspect 'dessiné à la main' ou 'cartoon soigné'.
| Élément | Type (Bouton/Panel) | Contenu | État par défaut |
|---|---|---|---|
| Bulle Pensée | Icône Flottante | Image (Burger, WC...) | Caché |

View File

@@ -4,9 +4,9 @@
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
## Affichage
- **Nom du zoo** : Sur une banderole d'accueil personnalisable.
- **Avatar Joueur** : Visible à côté du nom ou sur la carte du monde.
- **Vue** : Isométrique (2.5D).
- **Nom du zoo** : Sur une banderole d'accueil personnalisable (poteaux bois).
- **Avatar Joueur** : Visible en coin de l'écran.
- **Vue** : Isométrique (2.5D). Le zoo est présenté comme un diorama vivant. La banderole flotte au vent.
- **Skins** : Le zoo peut avoir des thèmes visuels (Skins de Zoo).
- **Icône** : 🏠
- **Slot d'offre** :
@@ -170,6 +170,16 @@ function updateZooState(zoo) {
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Grille** : Les déplacements se font sur une grille losange.
* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
* Coloré, vivant, détails foisonnants.
* Aspect "dessiné à la main" ou "cartoon soigné".
* Couleurs vives et contours nets.
## 1. Expérience Utilisateur (UX)
### Visualisation Offre (Passif)
**Description UX** : Voir ce que vend un autre joueur.