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:
BIN
docs/specs/IMG_20260303_170253.jpg
Normal file
BIN
docs/specs/IMG_20260303_170253.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 626 KiB |
@@ -1,11 +1,12 @@
|
|||||||
# Spécifications : Accueil des Animaux
|
# Spécifications : Accueil des Animaux
|
||||||
|
|
||||||
## Définition
|
## 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
|
## Fonctionnalités
|
||||||
- **Acclimatation** : Période obligatoire avant de pouvoir placer l'animal sur la grille active.
|
- **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.
|
- **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)
|
## Niveaux d'Amélioration (7 niveaux)
|
||||||
- **Coût** : Progressif par palier.
|
- **Coût** : Progressif par palier.
|
||||||
@@ -19,58 +20,74 @@ Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou tr
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"id": "uuid",
|
"id": "uuid",
|
||||||
"type": "animal_reception",
|
"type": "building_reception",
|
||||||
|
"created_at": "timestamp",
|
||||||
|
"updated_at": "timestamp",
|
||||||
"level": "integer (1-7)",
|
"level": "integer (1-7)",
|
||||||
|
"position": { "x": "integer", "y": "integer" },
|
||||||
"slots": [
|
"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éristiques Initiales
|
||||||
| Caractéristique | Valeur Initiale (Niv 1) |
|
| Caractéristique | Valeur Initiale (Niv 1) | Valeur Max (Niv 7) |
|
||||||
| :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| Temps Acclimatation | 10 minutes |
|
| Temps Acclimatation | 600 secondes (10 min) | 0 secondes (Instantané) |
|
||||||
| Capacité | 1 animal |
|
| Capacité | 1 animal | 7 animaux |
|
||||||
|
|
||||||
### Scores Initiaux
|
### Scores Initiaux
|
||||||
N/A
|
N/A
|
||||||
|
|
||||||
## 2. Cycles de Vie et Apparition
|
## 2. Cycles de Vie et Apparition
|
||||||
### Conditions d'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
|
### Conditions de Disparition
|
||||||
Indestructible.
|
Indestructible. Ne peut pas être vendu ni déplacé (sauf si feature de réaménagement global).
|
||||||
|
|
||||||
### Hérédité
|
### Hérédité
|
||||||
N/A
|
N/A
|
||||||
|
|
||||||
## 3. Impacts Environnementaux
|
## 3. Impacts Environnementaux
|
||||||
### Impact Température
|
### 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)
|
### Impact Milieu (Biome)
|
||||||
Zone neutre.
|
Zone neutre. Compatible avec tous les biomes d'animaux.
|
||||||
|
|
||||||
### Impact Saisons
|
### Impact Saisons
|
||||||
Protégé.
|
Protégé des intempéries.
|
||||||
|
|
||||||
### Impact Heure / Jour-Nuit
|
### Impact Heure / Jour-Nuit
|
||||||
N/A
|
Fonctionne 24/7. Pas de pénalité la nuit.
|
||||||
|
|
||||||
## 4. Impacts Biologiques et Sociaux
|
## 4. Impacts Biologiques et Sociaux
|
||||||
### Impact Reproduction
|
### 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
|
### 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
|
### Impact Nourriture
|
||||||
Nourri automatiquement.
|
Nourri automatiquement (coût nul ou inclus dans les frais de gestion globaux).
|
||||||
|
|
||||||
### Impact Attractivité (Visiteurs/Animaux)
|
### Impact Attractivité (Visiteurs/Animaux)
|
||||||
N/A
|
N/A - Les visiteurs ne voient pas l'intérieur de l'accueil.
|
||||||
|
|
||||||
### Impact Valeur
|
### Impact Valeur
|
||||||
N/A
|
N/A
|
||||||
@@ -78,56 +95,91 @@ N/A
|
|||||||
## 5. Impacts Logistiques et Économiques
|
## 5. Impacts Logistiques et Économiques
|
||||||
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
|
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
|
||||||
**Réduction Temps Acclimatation** :
|
**Réduction Temps Acclimatation** :
|
||||||
| Niveau | Temps Base |
|
| Niveau | Temps Base | Réduction % |
|
||||||
| :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| 1 | 10 min |
|
| 1 | 10 min | 0% |
|
||||||
| 2 | 8 min |
|
| 2 | 8 min | 20% |
|
||||||
| 3 | 6 min |
|
| 3 | 6 min | 40% |
|
||||||
| 4 | 4 min |
|
| 4 | 4 min | 60% |
|
||||||
| 5 | 2 min |
|
| 5 | 2 min | 80% |
|
||||||
| 6 | 1 min |
|
| 6 | 1 min | 90% |
|
||||||
| 7 | Instantané |
|
| 7 | Instantané | 100% |
|
||||||
|
|
||||||
### Dépenses (Boutiques/Visiteurs)
|
### Dépenses (Boutiques/Visiteurs)
|
||||||
N/A
|
N/A
|
||||||
|
|
||||||
### Trajet Visiteurs
|
### Trajet Visiteurs
|
||||||
N/A
|
N/A - Bâtiment administratif.
|
||||||
|
|
||||||
## 6. Événements
|
## 6. Événements
|
||||||
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
|
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
|
||||||
* **Arrivée** : Animal livré par camion.
|
* **Arrivée (`ANIMAL_ARRIVAL`)** : Animal livré par camion, entre dans un slot libre.
|
||||||
* **Prêt** : Animal prêt à être placé.
|
* **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
|
## 7. Progression
|
||||||
### Tableau des Upgrades
|
### Tableau des Upgrades
|
||||||
| Niveau | Coût (Pièces) | Capacité | Temps Acclimatation | Temps Construction |
|
| Niveau | Coût (Pièces) | Capacité | Temps Acclimatation | Temps Construction |
|
||||||
| :--- | :--- | :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- | :--- |
|
||||||
| 1 | 100 | 1 | 10 min | 0s |
|
| 1 | 100 | 1 | 10 min | 0s |
|
||||||
| 2 | 200 | 2 | 8 min | 0s |
|
| 2 | 200 | 2 | 8 min | 10s |
|
||||||
| 3 | 400 | 3 | 6 min | 0s |
|
| 3 | 400 | 3 | 6 min | 30s |
|
||||||
| 4 | 800 | 4 | 4 min | 0s |
|
| 4 | 800 | 4 | 4 min | 1m |
|
||||||
| 5 | 1600 | 5 | 2 min | 0s |
|
| 5 | 1600 | 5 | 2 min | 2m |
|
||||||
| 6 | 3200 | 6 | 1 min | 0s |
|
| 6 | 3200 | 6 | 1 min | 5m |
|
||||||
| 7 | 6400 | 7 | 0 min | 0s |
|
| 7 | 6400 | 7 | 0 min | 10m |
|
||||||
|
|
||||||
## 8. Logique et Interfaces
|
## 8. Logique et Interfaces
|
||||||
### Pseudo-code Impacts
|
### Pseudo-code Impacts
|
||||||
```
|
```python
|
||||||
function updateReception(center):
|
def update_reception(reception_center, current_time):
|
||||||
for slot in center.slots:
|
# Vérification de l'intégrité
|
||||||
if currentTime >= slot.ready_time:
|
if not reception_center or not reception_center.slots:
|
||||||
notifyPlayer("ANIMAL_READY", slot.animal_id)
|
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
|
### Messages d'Infos / Alerte
|
||||||
| ID | Niveau | Message |
|
| ID | Niveau | Message | Condition |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- |
|
||||||
| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" |
|
| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" | `slot.status` passe à `READY` |
|
||||||
| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." |
|
| `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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Arrivée Animal (Passif)
|
### Arrivée Animal (Passif)
|
||||||
**Description UX** : Le camion décharge un animal. Il apparaît dans l'Accueil en mode "Attente".
|
**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
|
- **Couleurs** : N/A
|
||||||
- **Textes** : N/A
|
- **Textes** : N/A
|
||||||
- **Formes** : 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.
|
||||||
|
|||||||
@@ -1,24 +1,79 @@
|
|||||||
# Spécifications : Achat et Upgrade des Boutiques
|
# Spécifications : Achat et Upgrade des Boutiques
|
||||||
|
|
||||||
## Construction
|
## 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)
|
## Upgrade (7 Niveaux)
|
||||||
- **Attrait** : Attire les visiteurs de plus loin sur la grille.
|
- **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.
|
- **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.
|
- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément (File d'attente).
|
||||||
|
|
||||||
# Annexes Techniques
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 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
|
## 7. Progression
|
||||||
### Tableau des Upgrades
|
### 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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Rénovation (Action)
|
### Rénovation (Action)
|
||||||
**Description UX** : Améliorer la boutique change son apparence et ses stats.
|
**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).
|
- **Couleurs** : Doré (pour les niveaux élevés).
|
||||||
- **Textes** : "Niveau Supérieur !".
|
- **Textes** : "Niveau Supérieur !".
|
||||||
- **Formes** : Particules Étoiles.
|
- **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.
|
||||||
|
|||||||
@@ -3,25 +3,68 @@
|
|||||||
## Achat
|
## Achat
|
||||||
- Le joueur possède un camion par défaut.
|
- Le joueur possède un camion par défaut.
|
||||||
- Possibilité d'acheter des camions supplémentaires (si le design autorise plusieurs flottes).
|
- 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)
|
## Upgrade (7 Niveaux)
|
||||||
- **Niveau 1** : Camion standard.
|
- **Niveau 1** : Camion standard.
|
||||||
- **Niveau 2-7** :
|
- **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.
|
- **Confort** : Réduit la perte de santé/stress des animaux transportés.
|
||||||
- **Capacité** : (Optionnel) Transport de plusieurs animaux ? *Actuellement 1 unité = 1 camion.*
|
- **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
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 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
|
## 7. Progression
|
||||||
### Tableau des Upgrades
|
### 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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Garage / Atelier (Consultation)
|
### Garage / Atelier (Consultation)
|
||||||
**Description UX** : Le joueur gère sa flotte de camions.
|
**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.
|
- **Couleurs** : Palette 16 couleurs.
|
||||||
- **Textes** : "Peinture fraîche !".
|
- **Textes** : "Peinture fraîche !".
|
||||||
- **Formes** : Taches de peinture au sol.
|
- **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).
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
## Construction
|
## Construction
|
||||||
- Sur une case vide de type "Terrain", le joueur peut acheter un bâtiment.
|
- Sur une case vide de type "Terrain", le joueur peut acheter un bâtiment.
|
||||||
- Le coût dépend du type de 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
|
## Types Constructibles
|
||||||
- Nurserie
|
- 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).
|
- (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)
|
## Upgrade de Case (Terrain)
|
||||||
- **Changement de Milieu** : Payer pour changer la couleur (Biome) d'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.
|
- **Changement de Température** : Payer pour installer un régulateur thermique sur une case (invisible ou petit objet technique).
|
||||||
|
|
||||||
# Annexes Techniques
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 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`.
|
Voir `case_zoo.md` et `achat_upgrade_generique.md`.
|
||||||
|
|
||||||
## 7. Progression
|
## 7. Progression
|
||||||
@@ -23,8 +34,8 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`.
|
|||||||
**Changement de Milieu** :
|
**Changement de Milieu** :
|
||||||
| Niveau | Coût | Précision | Temps |
|
| Niveau | Coût | Précision | Temps |
|
||||||
| :--- | :--- | :--- | :--- |
|
| :--- | :--- | :--- | :--- |
|
||||||
| 1 | 500 | Changement vers biome adjacent | 0s |
|
| 1 | 500 | Changement vers biome adjacent uniquement | 5s |
|
||||||
| 7 | 5000 | Changement vers n'importe quel biome | 0s |
|
| 7 | 5000 | Changement vers n'importe quel biome (Terraformation avancée) | 2s |
|
||||||
|
|
||||||
**Régulateur Thermique** :
|
**Régulateur Thermique** :
|
||||||
| Niveau | Coût | Plage Réglage | Temps |
|
| 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 |
|
| 1 | 200 | +/- 5°C | 0s |
|
||||||
| 7 | 2000 | +/- 50°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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Modification Terrain (Action)
|
### Modification Terrain (Action)
|
||||||
**Description UX** : Le joueur sélectionne une case et choisit "Modifier Biome" ou "Température".
|
**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.
|
- **Couleurs** : Vert, Jaune, Blanc.
|
||||||
- **Textes** : "Coût : X".
|
- **Textes** : "Coût : X".
|
||||||
- **Formes** : Curseur Pinceau.
|
- **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).
|
||||||
|
|||||||
@@ -4,12 +4,23 @@
|
|||||||
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
|
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
|
||||||
- **Coût** : Très élevé, progressif selon la taille actuelle du zoo.
|
- **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.
|
- **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
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 1. Données et États
|
||||||
### Modèle de Données (JSON)
|
### Modèle de Données (JSON)
|
||||||
Action sur l'objet `Zoo` (dimensions).
|
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
|
### Caractéristiques Initiales
|
||||||
**Taille Initiale** : 5x6 cases (30 cases).
|
**Taille Initiale** : 5x6 cases (30 cases).
|
||||||
@@ -25,8 +36,39 @@ Action sur l'objet `Zoo` (dimensions).
|
|||||||
| +1 Colonne (Est 2) | 5000 | +Hauteur cases |
|
| +1 Colonne (Est 2) | 5000 | +Hauteur cases |
|
||||||
| +1 Ligne (Sud 2) | 5000 | +Largeur 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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Achat Parcelle (Action)
|
### Achat Parcelle (Action)
|
||||||
**Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter.
|
**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).
|
- **Couleurs** : Gris (Inaccessible) -> Vert (Accessible).
|
||||||
- **Textes** : "Acheter Terrain (X Pièces)".
|
- **Textes** : "Acheter Terrain (X Pièces)".
|
||||||
- **Formes** : Carré.
|
- **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.
|
||||||
|
|||||||
@@ -3,18 +3,64 @@
|
|||||||
## Upgrade (7 Niveaux)
|
## Upgrade (7 Niveaux)
|
||||||
- **Production** : Augmente le nombre d'Unités de Recherche générées par heure.
|
- **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).
|
- **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
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 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
|
## 7. Progression
|
||||||
### Tableau des Upgrades
|
### 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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Arbre Technologique (Consultation)
|
### Arbre Technologique (Consultation)
|
||||||
**Description UX** : Visualiser les paliers de recherche.
|
**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).
|
- **Couleurs** : Bleu (Science).
|
||||||
- **Textes** : "Niveau Suivant : Portée +10km".
|
- **Textes** : "Niveau Suivant : Portée +10km".
|
||||||
- **Formes** : Hexagones.
|
- **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.
|
||||||
|
|||||||
@@ -13,7 +13,23 @@
|
|||||||
|
|
||||||
## 1. Données et États
|
## 1. Données et États
|
||||||
### Modèle de Données (JSON)
|
### 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
|
### Caractéristiques Initiales
|
||||||
**Solde Joueur** : Voir `joueur.md`.
|
**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).
|
**Isolation** : Les bâtiments de haut niveau résistent mieux aux coûts énergétiques (Chauffage/Clim -10% par niveau).
|
||||||
|
|
||||||
### Impact Milieu (Biome)
|
### 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
|
### Impact Saisons
|
||||||
**Soldes** : Certains items moins chers en Hiver (-15% sur les chauffages).
|
**Soldes** : Certains items moins chers en Hiver (-15% sur les chauffages).
|
||||||
@@ -94,21 +110,44 @@
|
|||||||
### Pseudo-code Impacts
|
### Pseudo-code Impacts
|
||||||
```javascript
|
```javascript
|
||||||
function processPurchase(player, item):
|
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:
|
if player.coins >= item.cost:
|
||||||
player.coins -= item.cost
|
player.coins -= item.cost
|
||||||
player.inventory.add(item)
|
player.inventory.add(item)
|
||||||
emitEvent("BUY_SUCCESS")
|
emitEvent("BUY_SUCCESS")
|
||||||
|
logTransaction(player, item, "SUCCESS")
|
||||||
else:
|
else:
|
||||||
emitEvent("BUY_FAIL", "Fonds insuffisants")
|
emitEvent("BUY_FAIL", "Fonds insuffisants")
|
||||||
|
logTransaction(player, item, "FAILED")
|
||||||
```
|
```
|
||||||
|
|
||||||
### Messages d'Infos / Alerte
|
### Messages d'Infos / Alerte
|
||||||
| ID | Niveau | Message |
|
| ID | Niveau | Message |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| `FUNDS_LOW` | Alerte | "Pas assez de pièces !" |
|
| `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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Interface d'Achat (Consultation)
|
### Interface d'Achat (Consultation)
|
||||||
**Description UX** : Le joueur ouvre le menu de construction ou d'upgrade.
|
**Description UX** : Le joueur ouvre le menu de construction ou d'upgrade.
|
||||||
|
|||||||
@@ -2,23 +2,66 @@
|
|||||||
|
|
||||||
## Construction
|
## Construction
|
||||||
- Nécessaire pour faire éclore plus d'œufs simultanément.
|
- Nécessaire pour faire éclore plus d'œufs simultanément.
|
||||||
|
- Peut être construite sur une case vide.
|
||||||
|
|
||||||
## Upgrade (7 Niveaux)
|
## Upgrade (7 Niveaux)
|
||||||
- **Incubation** : Réduit le temps d'éclosion.
|
- **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).
|
- **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
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 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
|
## 7. Progression
|
||||||
### Tableau des Upgrades
|
### 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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Extension (Action)
|
### Extension (Action)
|
||||||
**Description UX** : Ajouter des slots d'œufs.
|
**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.
|
- **Couleurs** : Rose pastel et Bleu ciel.
|
||||||
- **Textes** : "Slot débloqué".
|
- **Textes** : "Slot débloqué".
|
||||||
- **Formes** : Cercles doux (œufs).
|
- **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).
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
|
|||||||
|
|
||||||
## 2. Fonctions
|
## 2. Fonctions
|
||||||
* **Information :** Indique aux visiteurs (et au joueur) quel animal se trouve ici.
|
* **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.
|
* **Esthétique :** Habille les clôtures et rend le zoo plus réaliste.
|
||||||
|
|
||||||
## 3. Icone
|
## 3. Icone
|
||||||
@@ -15,6 +15,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
|
|||||||
## 4. Interactions
|
## 4. Interactions
|
||||||
* **Clic :** Ouvre la fiche encyclopédique de l'animal ("Zoopédia").
|
* **Clic :** Ouvre la fiche encyclopédique de l'animal ("Zoopédia").
|
||||||
* **Personnalisation :** (Optionnel) Changer le style du cadre ou l'image.
|
* **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
|
## 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",
|
"sign_id": "sign_lion_01",
|
||||||
"parent_enclosure_id": "enclosure_lions_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": {
|
"animal_info": {
|
||||||
"name": "Lion d'Afrique",
|
"name": "Lion d'Afrique",
|
||||||
"scientific_name": "Panthera leo",
|
"scientific_name": "Panthera leo",
|
||||||
"conservation_status": "VU" // Vulnerable
|
"conservation_status": "VU"
|
||||||
}
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Règles Métier
|
### 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).
|
* **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).
|
* **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
|
## 6. Annexes UX/UI
|
||||||
* **Visuel :** Petit panneau en bois avec une image miniature de l'animal.
|
* **Visuel :** Petit panneau en bois avec une image miniature de l'animal.
|
||||||
* **Lisibilité :** Doit être visible sans cacher les animaux derrière.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -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é).
|
* **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.
|
* **Intervention :** Expulse les visiteurs qui jettent des déchets ou embêtent les animaux.
|
||||||
* **Protection :** Capture les animaux échappés (avec filet ou tranquillisant).
|
* **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
|
## 3. Icone
|
||||||
* **Représentation :** Écusson ou Casquette de police.
|
* **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
|
## 4. Interactions
|
||||||
* **Recrutement :** Menu "Employés", coût en pièces.
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
* **Ordre :** Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité.
|
* **Ordre :** Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité.
|
||||||
|
* **Licenciement :** Possible via le menu employé.
|
||||||
|
|
||||||
## 5. Annexes Techniques
|
## 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",
|
"employee_id": "security_05",
|
||||||
"type": "agent_securite",
|
"type": "agent_securite",
|
||||||
"name": "Sgt. Pepper",
|
"name": "Sgt. Pepper",
|
||||||
|
"created_at": "timestamp",
|
||||||
"salary": 40,
|
"salary": 40,
|
||||||
"hire_cost": 400,
|
"hire_cost": 400,
|
||||||
|
"state": "enum (PATROL, CHASE, REST, INTERACT)",
|
||||||
|
"position": { "x": 12.5, "y": 14.0 },
|
||||||
|
"target_position": { "x": 20, "y": 10 },
|
||||||
"stats": {
|
"stats": {
|
||||||
"intimidation": 10, // Efficacité contre vandales
|
"intimidation": 10,
|
||||||
"speed": 1.1
|
"speed": 1.1,
|
||||||
}
|
"stamina": 100
|
||||||
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Règles Métier
|
### 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.
|
* **Rayon d'action :** 5 cases autour de lui.
|
||||||
* Nécessaire pour débloquer certains animaux dangereux.
|
* **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
|
## 6. Annexes UX/UI
|
||||||
* **Visuel Carte :** Personnage en uniforme bleu.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -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
|
## 1. Données et États
|
||||||
### Modèle de Données (JSON)
|
### Modèle de Données (JSON)
|
||||||
Propriété `view_radius` sur `Zoo` ou `Player`.
|
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éristiques Initiales
|
||||||
| Caractéristique | Valeur Initiale |
|
| Caractéristique | Valeur Initiale |
|
||||||
@@ -32,8 +42,38 @@ Propriété `view_radius` sur `Zoo` ou `Player`.
|
|||||||
| 6 | 2500 | 1200 km |
|
| 6 | 2500 | 1200 km |
|
||||||
| 7 | 5000 | 2000 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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Découverte (Passif/Action)
|
### Découverte (Passif/Action)
|
||||||
**Description UX** : En payant des points de recherche, le brouillard de guerre recule sur la carte du monde.
|
**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).
|
- **Couleurs** : Blanc/Gris (Nuages).
|
||||||
- **Textes** : "Nouvelle zone découverte !".
|
- **Textes** : "Nouvelle zone découverte !".
|
||||||
- **Formes** : Cercle (Rayon de vue).
|
- **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.
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ Entité biologique principale du jeu.
|
|||||||
- **Génétique** :
|
- **Génétique** :
|
||||||
- **Couleur** : 15 variations.
|
- **Couleur** : 15 variations.
|
||||||
- **Rareté** : 5 niveaux (pondération Fibonacci).
|
- **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.
|
- **Cycle de vie** : Œuf -> Bébé -> Adulte -> Mort.
|
||||||
|
|
||||||
## Besoins
|
## Besoins
|
||||||
@@ -18,10 +19,6 @@ Entité biologique principale du jeu.
|
|||||||
- **Social** : Besoin de congénères (reproduction) ou de solitude (selon espèce).
|
- **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).
|
- **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
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 1. Données et États
|
||||||
@@ -38,14 +35,20 @@ Conséquence : Perte sèche, pénalité d'attractivité.
|
|||||||
"health": "float (0-100)",
|
"health": "float (0-100)",
|
||||||
"hunger": "float (0-100)",
|
"hunger": "float (0-100)",
|
||||||
"temperature_comfort": "float (-1.0 to 1.0)",
|
"temperature_comfort": "float (-1.0 to 1.0)",
|
||||||
"stress": "float (0-100)"
|
"stress": "float (0-100)",
|
||||||
|
"energy": "float (0-100)"
|
||||||
},
|
},
|
||||||
"genetics": {
|
"genetics": {
|
||||||
"parent_a_id": "uuid_v4 | null",
|
"parent_a_id": "uuid_v4 | null",
|
||||||
"parent_b_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 |
|
| Stress | 0.0 |
|
||||||
| Âge | 0 (Bébé) |
|
| Âge | 0 (Bébé) |
|
||||||
|
|
||||||
### Scores Initiaux
|
|
||||||
| Score | Valeur |
|
|
||||||
| :--- | :--- |
|
|
||||||
| Valeur Vente (Base) | 10 * Fibonacci(Rareté) |
|
|
||||||
| Attractivité (Base) | 5 * Rareté |
|
|
||||||
|
|
||||||
## 2. Cycles de Vie et Apparition
|
## 2. Cycles de Vie et Apparition
|
||||||
### Conditions d'Apparition
|
### Conditions d'Apparition
|
||||||
| Type | Condition |
|
| Type | Condition |
|
||||||
@@ -79,12 +76,6 @@ Conséquence : Perte sèche, pénalité d'attractivité.
|
|||||||
| Vente | Transaction validée |
|
| Vente | Transaction validée |
|
||||||
| Libération | Action joueur |
|
| 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
|
## 3. Impacts Environnementaux
|
||||||
### Impact Température
|
### Impact Température
|
||||||
| Delta T° (Idéal - Réel) | Effet sur Santé / Heure | Effet sur Stress / Heure |
|
| 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 |
|
| Adjacente (Cercle chromatique) | 0 | 0 |
|
||||||
| Opposée | -5 | +10 |
|
| 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
|
## 8. Logique et Interfaces
|
||||||
### Pseudo-code Impacts
|
### Pseudo-code Impacts
|
||||||
```javascript
|
```javascript
|
||||||
function updateAnimal(animal, context):
|
function updateAnimal(animal, context):
|
||||||
|
# Gestion Température
|
||||||
deltaTemp = abs(animal.idealTemp - context.tileTemp)
|
deltaTemp = abs(animal.idealTemp - context.tileTemp)
|
||||||
if deltaTemp > 0:
|
if deltaTemp > 0:
|
||||||
animal.health -= tableImpactTemp[deltaTemp]
|
animal.health -= tableImpactTemp[deltaTemp]
|
||||||
animal.stress += tableImpactTemp[deltaTemp] * 0.5
|
animal.stress += tableImpactTemp[deltaTemp] * 0.5
|
||||||
|
|
||||||
|
# Gestion Biome
|
||||||
if context.tileBiome != animal.idealBiome:
|
if context.tileBiome != animal.idealBiome:
|
||||||
animal.stress += 5
|
animal.stress += 5
|
||||||
|
|
||||||
if animal.hunger > 0:
|
# Gestion Faim
|
||||||
|
if animal.hunger < 100:
|
||||||
animal.hunger += baseHungerRate * context.seasonMod
|
animal.hunger += baseHungerRate * context.seasonMod
|
||||||
|
else:
|
||||||
|
animal.health -= 10 # Famine
|
||||||
|
|
||||||
if animal.hunger >= 100:
|
# Gestion Reproduction
|
||||||
animal.health -= 10
|
if canReproduce(animal):
|
||||||
|
mate = findMate(animal)
|
||||||
|
if mate:
|
||||||
|
startReproduction(animal, mate)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Messages d'Infos / Alerte
|
### Messages d'Infos / Alerte
|
||||||
@@ -218,6 +130,15 @@ function updateAnimal(animal, context):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Vie Quotidienne (Passif)
|
### Vie Quotidienne (Passif)
|
||||||
**Description UX** : L'animal vit sa vie sur la grille. Il bouge, mange, dort.
|
**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).
|
- **Textes** : Bulle "Zzz" (Sommeil), "!" (Alerte).
|
||||||
- **Formes** : Ombre portée ovale sous l'animal.
|
- **Formes** : Ombre portée ovale sous l'animal.
|
||||||
|
|
||||||
### Consultation (Consultation)
|
### Vue Isométrique
|
||||||
**Description UX** : Le joueur clique sur l'animal pour voir ses détails (Santé, Faim, Génétique).
|
- **Sprites** : 4 directions (N, S, E, W) minimum. Idéalement 8 pour fluidité.
|
||||||
**Description UI** : **Bottom Sheet** (Mobile) ou Panneau Latéral (Desktop) pour ne pas masquer le jeu. Jauges colorées. Arbre généalogique simplifié.
|
- **Occlusion** : L'animal doit être caché par les murs sud/est de son enclos, mais visible par-dessus les murs nord/ouest.
|
||||||
**Emplacement** : Case Zoo.
|
- **Comportement** : L'animal ne doit jamais traverser les murs (collision box stricte).
|
||||||
**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.
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de
|
|||||||
## 4. Interactions
|
## 4. Interactions
|
||||||
* **Recrutement :** Menu "Employés", coût en pièces.
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
* **Placement :** Peut être assigné à une "scène" ou un point de passage stratégique.
|
* **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
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
@@ -27,10 +28,16 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de
|
|||||||
"name": "Melody",
|
"name": "Melody",
|
||||||
"salary": 45,
|
"salary": 45,
|
||||||
"hire_cost": 450,
|
"hire_cost": 450,
|
||||||
|
"state": "enum (IDLE, PERFORMING, BREAK)",
|
||||||
|
"performance_cooldown_end": "timestamp",
|
||||||
"stats": {
|
"stats": {
|
||||||
"charisma": 15,
|
"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).
|
* 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).
|
* 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
|
## 6. Annexes UX/UI
|
||||||
* **Visuel Carte :** Personnage coloré, jonglant ou jouant d'un instrument.
|
* **Visuel Carte :** Personnage coloré, jonglant ou jouant d'un instrument.
|
||||||
* **Effet :** Notes de musique ou étoiles flottant autour de lui.
|
* **Effet :** Notes de musique ou étoiles flottant autour de lui.
|
||||||
* **Son :** Musique d'ambiance locale quand on zoome dessus.
|
* **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.
|
||||||
|
|||||||
@@ -105,6 +105,15 @@ N/A
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Foule (Passif)
|
### Foule (Passif)
|
||||||
**Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants.
|
**Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants.
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ N/A
|
|||||||
function calculateDailyVisitors(zoo, city):
|
function calculateDailyVisitors(zoo, city):
|
||||||
dist = distance(zoo.pos, city.pos)
|
dist = distance(zoo.pos, city.pos)
|
||||||
if dist > zoo.maxAttractionRange: return 0
|
if dist > zoo.maxAttractionRange: return 0
|
||||||
|
|
||||||
baseFlow = city.population * (zoo.reputation / (dist * dist))
|
baseFlow = city.population * (zoo.reputation / (dist * dist))
|
||||||
return baseFlow * seasonMod
|
return baseFlow * seasonMod
|
||||||
```
|
```
|
||||||
@@ -108,6 +108,15 @@ N/A
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Visualisation Flux (Consultation)
|
### Visualisation Flux (Consultation)
|
||||||
**Description UX** : Le joueur regarde la carte du monde pour voir d'où viennent ses visiteurs.
|
**Description UX** : Le joueur regarde la carte du monde pour voir d'où viennent ses visiteurs.
|
||||||
|
|||||||
@@ -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.
|
* **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).
|
* **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.
|
* **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
|
## 3. Icone
|
||||||
* **Représentation :** Tête de l'avatar actuel dans un cadre circulaire ou carré.
|
* **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
|
## 4. Interactions
|
||||||
* **Click :** Ouvre le menu de profil du joueur et l'inventaire de skins.
|
* **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").
|
* **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
|
## 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",
|
"avatar_id": "player_12345",
|
||||||
"gender": "female", // "male" | "female"
|
"gender": "female", // "male" | "female"
|
||||||
|
"level": 12,
|
||||||
|
"experience": 4500,
|
||||||
|
"next_level_xp": 5000,
|
||||||
|
"title": "Expert Zoologist",
|
||||||
"equipped_skins": {
|
"equipped_skins": {
|
||||||
"head": "skin_hat_safari",
|
"head": "skin_hat_safari",
|
||||||
"body": "skin_shirt_ranger",
|
"body": "skin_shirt_ranger",
|
||||||
"accessory": "skin_glasses_sun"
|
"accessory": "skin_glasses_sun"
|
||||||
},
|
},
|
||||||
"display_position": {
|
"unlocked_titles": ["Beginner", "Novice", "Expert"],
|
||||||
"x": 10,
|
|
||||||
"y": 10,
|
|
||||||
"anchor": "top-left"
|
|
||||||
},
|
|
||||||
"mood_state": "happy" // "happy" | "neutral" | "worried"
|
"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).
|
* **Emplacement :** Coin supérieur (gauche ou droite) de l'interface principale (HUD).
|
||||||
* **Style :** Cartoon / Isométrique cohérent avec le reste du jeu.
|
* **Style :** Cartoon / Isométrique cohérent avec le reste du jeu.
|
||||||
* **Feedback :** Animation légère (clignement des yeux, mouvement de tête).
|
* **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.
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
## 4. Interactions
|
## 4. Interactions
|
||||||
* **Création :** Lors de la première partie, une pop-up demande le nom du zoo.
|
* **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
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
@@ -24,16 +24,34 @@
|
|||||||
"banner_id": "main_entrance_banner",
|
"banner_id": "main_entrance_banner",
|
||||||
"text": "Mon Super Zoo",
|
"text": "Mon Super Zoo",
|
||||||
"font_style": "default", // "comic", "serif", "safari"
|
"font_style": "default", // "comic", "serif", "safari"
|
||||||
|
"font_color": "#FF5733",
|
||||||
"material": "wood", // "stone", "metal" (skins possibles)
|
"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
|
### Règles Métier
|
||||||
* **Longueur Max :** Le nom est limité en caractères (ex: 20 chars) pour tenir sur l'affichage.
|
* **Longueur Max :** Le nom est limité en caractères (ex: 20 chars) pour tenir sur l'affichage.
|
||||||
* **Filtre :** Interdiction des mots offensants (profanity filter).
|
* **Filtre :** Interdiction des mots offensants (profanity filter).
|
||||||
|
* **Cooldown :** Changement de nom gratuit 1x/semaine, sinon payant (Gemmes/Pièces).
|
||||||
|
|
||||||
## 6. Annexes UX/UI
|
## 6. Annexes UX/UI
|
||||||
* **Visuel :** Modèle 3D/Iso d'une arche en bois rustique avec une planche suspendue par des cordes.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -126,12 +126,12 @@ function updateBaby(baby, context):
|
|||||||
# Fragilité accrue
|
# Fragilité accrue
|
||||||
damageMultiplier = 2.0
|
damageMultiplier = 2.0
|
||||||
growthRate = baseGrowthRate * nurserieLevelBonus
|
growthRate = baseGrowthRate * nurserieLevelBonus
|
||||||
|
|
||||||
baby.growth_progress += growthRate
|
baby.growth_progress += growthRate
|
||||||
|
|
||||||
if baby.growth_progress >= 100:
|
if baby.growth_progress >= 100:
|
||||||
transformToAdult(baby)
|
transformToAdult(baby)
|
||||||
|
|
||||||
# Reste de la logique héritée de Animal avec damageMultiplier
|
# Reste de la logique héritée de Animal avec damageMultiplier
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -143,6 +143,15 @@ function updateBaby(baby, context):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Croissance en Nurserie (Passif)
|
### Croissance en Nurserie (Passif)
|
||||||
**Description UX** : Le bébé est visible dans son slot de nurserie. Il grandit visuellement (petite jauge).
|
**Description UX** : Le bébé est visible dans son slot de nurserie. Il grandit visuellement (petite jauge).
|
||||||
|
|||||||
@@ -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" },
|
"position": { "x": "int", "y": "int" },
|
||||||
"stats": {
|
"stats": {
|
||||||
"total_entries": "integer",
|
"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 |
|
| Prix Ticket | 10 pièces |
|
||||||
| Capacité Max | 20 visiteurs |
|
| 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
|
## 7. Progression
|
||||||
### Tableau des Upgrades
|
### Tableau des Upgrades
|
||||||
| Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction |
|
| 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
|
## 8. Logique et Interfaces
|
||||||
### Pseudo-code Impacts
|
### Pseudo-code Impacts
|
||||||
```
|
```python
|
||||||
function processEntry(zoo):
|
def process_entry(zoo):
|
||||||
potentialVisitors = calculateAttractionFlow(zoo)
|
potential_visitors = calculate_attraction_flow(zoo)
|
||||||
|
|
||||||
if zoo.currentVisitors >= zoo.billeterie.capacity:
|
|
||||||
emitEvent("ZOO_FULL")
|
|
||||||
return
|
|
||||||
|
|
||||||
actualVisitors = min(potentialVisitors, zoo.billeterie.capacity - zoo.currentVisitors)
|
# Gestion de la file d'attente
|
||||||
|
zoo.billeterie.current_queue_length += potential_visitors
|
||||||
for i in 0..actualVisitors:
|
|
||||||
spawnVisitor()
|
# Traitement des entrées (limité par la vitesse du guichet)
|
||||||
player.addCoins(zoo.billeterie.ticketPrice)
|
entries_per_tick = get_entry_speed(zoo.billeterie.level)
|
||||||
|
actual_entries = min(zoo.billeterie.current_queue_length, entries_per_tick)
|
||||||
|
|
||||||
|
# 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
|
### Messages d'Infos / Alerte
|
||||||
@@ -135,16 +85,26 @@ function processEntry(zoo):
|
|||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." |
|
| `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." |
|
||||||
| `VIP_BUS` | Info | "Un bus de touristes arrive !" |
|
| `VIP_BUS` | Info | "Un bus de touristes arrive !" |
|
||||||
|
| `QUEUE_LONG` | Warning | "La file d'attente est trop longue, des visiteurs partent !" |
|
||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Consultation
|
### Consultation
|
||||||
**Description UX** : Le joueur clique sur la billeterie pour voir ses statistiques et son niveau.
|
**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.
|
**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.
|
**Emplacement** : Case Billeterie sur la grille du zoo.
|
||||||
**Intégration** : Bâtiment fixe (ne peut pas être déplacé ou supprimé).
|
**Intégration** : Bâtiment fixe.
|
||||||
**Navigation** : Clic -> Ouverture Panneau -> Fermeture (Croix ou clic extérieur).
|
**Navigation** : Clic -> Ouverture Panneau -> Fermeture.
|
||||||
**Événements** : `CLICK_BILLETERIE`.
|
**Événements** : `CLICK_BILLETERIE`.
|
||||||
|
|
||||||
#### Assets
|
#### Assets
|
||||||
@@ -158,40 +118,6 @@ function processEntry(zoo):
|
|||||||
- **Textes** : "Billeterie", "Niveau X", "Revenus : Y".
|
- **Textes** : "Billeterie", "Niveau X", "Revenus : Y".
|
||||||
- **Formes** : Carré (case).
|
- **Formes** : Carré (case).
|
||||||
|
|
||||||
### Amélioration (Upgrade)
|
### Vue Isométrique
|
||||||
**Description UX** : Le joueur décide d'améliorer la billeterie pour augmenter la capacité et le prix du ticket.
|
- **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet.
|
||||||
**Description UI** : Bouton "Améliorer" dans le panneau de consultation, avec coût et prévisualisation des gains.
|
- **Portiques** : Animation d'ouverture/fermeture des barrières.
|
||||||
**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).
|
|
||||||
|
|||||||
@@ -33,7 +33,10 @@ Sélection hiérarchique : **Famille** > **Spécialisation**.
|
|||||||
"sell_animal_threshold": "float (price factor)",
|
"sell_animal_threshold": "float (price factor)",
|
||||||
"expand_map_priority": "int (0-10)",
|
"expand_map_priority": "int (0-10)",
|
||||||
"research_priority": "int (0-10)"
|
"research_priority": "int (0-10)"
|
||||||
}
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -107,10 +110,10 @@ function runBotLogic(bot, zoo):
|
|||||||
if zoo.foodStock < bot.logic.buy_food_threshold:
|
if zoo.foodStock < bot.logic.buy_food_threshold:
|
||||||
buyFood(zoo)
|
buyFood(zoo)
|
||||||
return
|
return
|
||||||
|
|
||||||
if bot.family == 'BREEDER':
|
if bot.family == 'BREEDER':
|
||||||
optimizePairs(zoo)
|
optimizePairs(zoo)
|
||||||
|
|
||||||
if bot.family == 'TRADER':
|
if bot.family == 'TRADER':
|
||||||
checkMarketArbitrage(zoo)
|
checkMarketArbitrage(zoo)
|
||||||
```
|
```
|
||||||
@@ -122,6 +125,15 @@ function runBotLogic(bot, zoo):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Sélection du Profil (Configuration)
|
### Sélection du Profil (Configuration)
|
||||||
**Description UX** : Le joueur choisit comment son zoo sera géré en son absence.
|
**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.
|
**Intégration** : Bloquant au démarrage.
|
||||||
**Navigation** : Lire -> Fermer.
|
**Navigation** : Lire -> Fermer.
|
||||||
**Événements** : `SHOW_REPORT`.
|
**Événements** : `SHOW_REPORT`.
|
||||||
|
|
||||||
#### Assets
|
#### Assets
|
||||||
- **Musiques** : N/A
|
- **Musiques** : N/A
|
||||||
- **Sons** : `notification.mp3`.
|
- **Sons** : `notification.mp3`.
|
||||||
|
|||||||
@@ -26,7 +26,10 @@ Bâtiment commercial générant des revenus passifs grâce aux visiteurs.
|
|||||||
"stats": {
|
"stats": {
|
||||||
"revenue_total": "integer",
|
"revenue_total": "integer",
|
||||||
"visitors_served": "integer"
|
"visitors_served": "integer"
|
||||||
}
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -127,7 +130,7 @@ Point d'intérêt majeur pour le pathfinding (Poids 50). Arrêt obligatoire si b
|
|||||||
function processShop(shop, visitors):
|
function processShop(shop, visitors):
|
||||||
queue = visitors.filter(v => v.target == shop)
|
queue = visitors.filter(v => v.target == shop)
|
||||||
served = min(queue.length, shop.capacity)
|
served = min(queue.length, shop.capacity)
|
||||||
|
|
||||||
for i in 0..served:
|
for i in 0..served:
|
||||||
revenue = shop.baseRevenue * seasonMod
|
revenue = shop.baseRevenue * seasonMod
|
||||||
player.addCoins(revenue)
|
player.addCoins(revenue)
|
||||||
@@ -143,6 +146,15 @@ function processShop(shop, visitors):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Vente (Passif)
|
### Vente (Passif)
|
||||||
**Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur.
|
**Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur.
|
||||||
|
|||||||
@@ -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')",
|
"status": "enum ('idle', 'moving_to_target', 'moving_home')",
|
||||||
"cargo": "animal_uuid | null",
|
"cargo": "animal_uuid | null",
|
||||||
"position": { "x": "float", "y": "float" },
|
"position": { "x": "float", "y": "float" },
|
||||||
"target_site_id": "uuid | null"
|
"target_site_id": "uuid | null",
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -131,7 +134,7 @@ function updateTruck(truck, deltaTime):
|
|||||||
if truck.status == 'moving':
|
if truck.status == 'moving':
|
||||||
distance = truck.speed * deltaTime
|
distance = truck.speed * deltaTime
|
||||||
moveTowardsTarget(truck, distance)
|
moveTowardsTarget(truck, distance)
|
||||||
|
|
||||||
if truck.cargo:
|
if truck.cargo:
|
||||||
truck.cargo.stress += baseStress * (1.0 - truck.comfortFactor) * deltaTime
|
truck.cargo.stress += baseStress * (1.0 - truck.comfortFactor) * deltaTime
|
||||||
```
|
```
|
||||||
@@ -144,6 +147,15 @@ function updateTruck(truck, deltaTime):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Envoi en Mission (Action)
|
### Envoi en Mission (Action)
|
||||||
**Description UX** : Le joueur achète un animal sur la carte du monde. Le camion part automatiquement le chercher.
|
**Description UX** : Le joueur achète un animal sur la carte du monde. Le camion part automatiquement le chercher.
|
||||||
|
|||||||
@@ -25,7 +25,10 @@ Une carte est une grille de cases représentant un espace de jeu ou de navigatio
|
|||||||
"height": "integer",
|
"height": "integer",
|
||||||
"grid": [
|
"grid": [
|
||||||
[ { "case_ref": "case_id" } ]
|
[ { "case_ref": "case_id" } ]
|
||||||
]
|
],
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -107,6 +110,15 @@ function updateMap(map):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Navigation (Action)
|
### Navigation (Action)
|
||||||
**Description UX** : Le joueur explore la carte.
|
**Description UX** : Le joueur explore la carte.
|
||||||
|
|||||||
@@ -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)",
|
"width": "integer (très grand)",
|
||||||
"height": "integer",
|
"height": "integer",
|
||||||
"sites": [ { "id": "uuid", "type": "zoo|city|lab", "pos": { "x": "int", "y": "int" } } ],
|
"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"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -122,7 +125,7 @@ function updateWorldMap(map, deltaTime):
|
|||||||
moveTruck(truck, deltaTime)
|
moveTruck(truck, deltaTime)
|
||||||
if hasArrived(truck):
|
if hasArrived(truck):
|
||||||
processTransaction(truck)
|
processTransaction(truck)
|
||||||
|
|
||||||
updateWeather(map)
|
updateWeather(map)
|
||||||
updateDayNightCycle(map)
|
updateDayNightCycle(map)
|
||||||
```
|
```
|
||||||
@@ -134,6 +137,15 @@ function updateWorldMap(map, deltaTime):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Vue Globale (Passif)
|
### Vue Globale (Passif)
|
||||||
**Description UX** : Le joueur voit les autres acteurs et les flux économiques.
|
**Description UX** : Le joueur voit les autres acteurs et les flux économiques.
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# Spécifications : Carte du Zoo
|
# Spécifications : Carte du Zoo
|
||||||
|
|
||||||
## Définition
|
## 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
|
## Structure
|
||||||
- **Vue** : Isométrique (2.5D).
|
- **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 :
|
- **Biomes** : Divisée en tiers de largeur :
|
||||||
- Gauche : Prairie
|
- Gauche : Prairie
|
||||||
- Milieu : Océan
|
- Milieu : Océan
|
||||||
@@ -128,6 +129,16 @@ function initZooMap():
|
|||||||
|
|
||||||
# Annexes UX/UI
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Interaction Grille (Action)
|
### Interaction Grille (Action)
|
||||||
**Description UX** : Le joueur clique sur une case pour voir son contenu ou construire.
|
**Description UX** : Le joueur clique sur une case pour voir son contenu ou construire.
|
||||||
|
|||||||
@@ -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.
|
- **Couleur (Milieu)** : Définit le biome et l'environnement visuel.
|
||||||
- **Température** : Liée à la couleur/biome.
|
- **Température** : Liée à la couleur/biome.
|
||||||
- **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
|
- **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
|
||||||
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre).
|
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre, fertilité).
|
||||||
|
|
||||||
## Règles
|
|
||||||
- Les transitions de propriétés (couleur, température) entre cases adjacentes doivent être douces.
|
|
||||||
|
|
||||||
# Annexes Techniques
|
# Annexes Techniques
|
||||||
|
|
||||||
@@ -25,107 +22,56 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde).
|
|||||||
"temperature_offset": "float",
|
"temperature_offset": "float",
|
||||||
"content_ref": "uuid | null",
|
"content_ref": "uuid | null",
|
||||||
"content_type": "string",
|
"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
|
## 8. Logique et Interfaces
|
||||||
### Pseudo-code Impacts
|
### Pseudo-code Impacts
|
||||||
```javascript
|
```python
|
||||||
function getCaseState(case):
|
def fertilize_case(case, player):
|
||||||
return {
|
cost = 50
|
||||||
temp: calculateTemp(case),
|
if player.money < cost: return error("NO_MONEY")
|
||||||
biome: case.biome,
|
|
||||||
isWalkable: !hasBuilding(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")
|
||||||
```
|
```
|
||||||
|
|
||||||
### Messages d'Infos / Alerte
|
|
||||||
| ID | Niveau | Message |
|
|
||||||
| :--- | :--- | :--- |
|
|
||||||
| `CASE_ERROR` | Erreur | "Impossible d'accéder à cette case." |
|
|
||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Feedback État (Passif)
|
### Fertilisation (Action)
|
||||||
**Description UX** : La case montre son état physique.
|
**Description UX** : Le joueur améliore le sol pour que l'herbe repousse plus vite.
|
||||||
**Description UI** : Overlay de texture (Givre, Craquelures, Boue).
|
**Description UI** : Outil "Sac d'engrais". Clic sur la case.
|
||||||
**Emplacement** : Case.
|
**Emplacement** : Menu Outils -> Case.
|
||||||
**Intégration** : Layer 1 (Au-dessus du fond, sous le contenu).
|
**Intégration** : Curseur.
|
||||||
**Navigation** : Automatique (Mise à jour visuelle).
|
**Navigation** : Clic.
|
||||||
**Événements** : `STATE_UPDATE`.
|
**Événements** : `FERTILIZE_SOIL`.
|
||||||
|
|
||||||
#### Assets
|
#### Assets
|
||||||
- **Musiques** : Son d'ambiance très léger (vent).
|
- **Musiques** : Bruit de poudre.
|
||||||
- **Sons** : Bruit de pas (selon texture).
|
- **Sons** : `scatter.mp3`.
|
||||||
- **Graphiques** : Textures alpha (Givre blanc, Craquelures marron).
|
- **Graphiques** : Particules vertes/brunes.
|
||||||
- **Images** : Pattern Sol.
|
- **Images** : Texture terre riche (plus foncée).
|
||||||
- **Vidéos** : Effet de givre qui s'étend.
|
- **Animations** : Poussière qui retombe.
|
||||||
- **Animations** : Apparition progressive (Fade).
|
- **Couleurs** : Marron foncé.
|
||||||
- **Couleurs** : Blanc, Marron, Gris.
|
|
||||||
- **Textes** : "Gelé", "Sec".
|
|
||||||
- **Formes** : Carré.
|
|
||||||
|
|||||||
@@ -98,6 +98,15 @@ function getTravelCost(case):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Survol (Passif)
|
### Survol (Passif)
|
||||||
**Description UX** : Explorer la carte du monde.
|
**Description UX** : Explorer la carte du monde.
|
||||||
|
|||||||
@@ -117,6 +117,15 @@ function checkAnimalDisappearance(case):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Sélection (Action)
|
### Sélection (Action)
|
||||||
**Description UX** : Clic sur une case zoo.
|
**Description UX** : Clic sur une case zoo.
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
Bâtiment produisant des points de science/recherche.
|
Bâtiment produisant des points de science/recherche.
|
||||||
|
|
||||||
## Fonctionnalités
|
## Fonctionnalités
|
||||||
- **Production** : Génère des unités de recherche périodiquement grâce aux chercheurs assignés (Max 3).
|
- **Production** : Génère des unités de recherche périodiquement.
|
||||||
- **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).
|
|
||||||
- **Déblocage** : Permet de payer l'agrandissement de la carte du monde.
|
- **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).
|
- **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",
|
"id": "uuid",
|
||||||
"type": "research_center",
|
"type": "research_center",
|
||||||
"level": "integer (1-7)",
|
"level": "integer (1-7)",
|
||||||
"assigned_researchers": ["uuid", "uuid", "uuid"], // Max 3
|
|
||||||
"stats": {
|
"stats": {
|
||||||
"points_generated": "integer",
|
"points_generated": "integer",
|
||||||
"last_collection": "timestamp"
|
"last_collection": "timestamp"
|
||||||
}
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -123,7 +124,7 @@ Production continue 24h/24.
|
|||||||
function updateResearch(center):
|
function updateResearch(center):
|
||||||
points = center.productionRate * deltaTime
|
points = center.productionRate * deltaTime
|
||||||
player.addResearchPoints(points)
|
player.addResearchPoints(points)
|
||||||
|
|
||||||
visibleRarity = center.maxRarityVisible
|
visibleRarity = center.maxRarityVisible
|
||||||
updateWorldMapVisibility(center.range, visibleRarity)
|
updateWorldMapVisibility(center.range, visibleRarity)
|
||||||
```
|
```
|
||||||
@@ -136,6 +137,15 @@ function updateResearch(center):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Collecte de Points (Action)
|
### 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é).
|
**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é).
|
||||||
|
|||||||
@@ -1,48 +1,55 @@
|
|||||||
# Chemin
|
# Spécifications : Chemin
|
||||||
|
|
||||||
## 1. Définition
|
## 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.
|
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
|
## Fonctions
|
||||||
* **Circulation :** Guide le flux des visiteurs (pathfinding).
|
* **Circulation :** Permet le déplacement des entités (Visiteurs, Staff).
|
||||||
* **Vitesse :** Les visiteurs marchent plus vite sur des chemins de meilleure qualité.
|
* **Connexion :** Relie les bâtiments entre eux pour former un réseau accessible.
|
||||||
* **Attractivité :** Un beau chemin (pavé, décoré) augmente la note globale du zoo.
|
* **Esthétique :** Améliore l'aspect visuel 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).
|
|
||||||
|
|
||||||
## 3. Icone
|
# Annexes Techniques
|
||||||
* **Représentation :** Route sinueuse ou Pavé.
|
|
||||||
* **Couleur dominante :** Gris et Beige.
|
|
||||||
|
|
||||||
## 4. Interactions
|
## 1. Données et États
|
||||||
* **Construction :** Outil "Route" -> Sélection du type -> Tracer sur la grille.
|
### Modèle de Données (JSON)
|
||||||
* **Upgrade :** Clic sur une portion de chemin -> Bouton "Améliorer" (coût en pièces).
|
|
||||||
* **Destruction :** Outil Bulldozer.
|
|
||||||
|
|
||||||
## 5. Annexes Techniques
|
|
||||||
|
|
||||||
### Données (JSON)
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"path_id": "path_segment_10_12",
|
"type": "path",
|
||||||
"type": "gravel", // "dirt", "paved", "marble"
|
"material": "gravel",
|
||||||
"coordinates": {"x": 10, "y": 12},
|
"x": 10,
|
||||||
"stats": {
|
"y": 12,
|
||||||
"speed_modifier": 1.2, // x1.2 vitesse de marche
|
"connected_neighbors": ["N", "S", "E"],
|
||||||
"attractiveness_bonus": 2
|
"iso_x": "integer",
|
||||||
},
|
"iso_y": "integer",
|
||||||
"cost_per_tile": 10
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Règles Métier
|
## 2. Règles Métier
|
||||||
* **Connexion :** Les chemins adjacents se connectent visuellement (textures dynamiques).
|
* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling).
|
||||||
* **Accessibilité :** Les bâtiments doivent être reliés à un chemin pour être fonctionnels.
|
* **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins.
|
||||||
* **Coût :** L'amélioration coûte des pièces par case.
|
|
||||||
|
|
||||||
## 6. Annexes UX/UI
|
# Annexes UX/UI
|
||||||
* **Textures :**
|
|
||||||
* Terre : Marron, irrégulier, poussière.
|
|
||||||
* Gravier : Gris clair, petits cailloux, bruit de pas "crunchy".
|
## 0. Direction Artistique & Vue
|
||||||
* Pavés : Motif régulier, propre, bruit de pas "clac".
|
* **Vue** : Isométrique (2.5D).
|
||||||
* Marbre/Luxe : Blanc, brillant, très rapide.
|
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
|
||||||
* **Feedback :** Les visiteurs ont une animation de marche plus rapide sur les bons chemins.
|
* **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).
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc
|
|||||||
## 4. Interactions
|
## 4. Interactions
|
||||||
* **Recrutement :** Menu "Employés", coût en pièces.
|
* **Recrutement :** Menu "Employés", coût en pièces.
|
||||||
* **Assignation :** Doit être assigné à un Centre de Recherche (max 3 par centre).
|
* **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
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
@@ -27,19 +28,35 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc
|
|||||||
"salary": 60,
|
"salary": 60,
|
||||||
"hire_cost": 600,
|
"hire_cost": 600,
|
||||||
"assigned_building": "research_center_01",
|
"assigned_building": "research_center_01",
|
||||||
|
"fatigue_level": "float (0-100)",
|
||||||
|
"current_task": "enum (IDLE, RESEARCHING, TRAINING)",
|
||||||
"stats": {
|
"stats": {
|
||||||
"intelligence": 10, // Points de recherche par cycle
|
"intelligence": 10, // Points de recherche par cycle
|
||||||
"specialty": "genetics" // Bonus dans un domaine
|
"specialty": "genetics" // Bonus dans un domaine
|
||||||
}
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Règles Métier
|
### Règles Métier
|
||||||
* **Limite :** Maximum 3 chercheurs par bâtiment "Centre de Recherche".
|
* **Limite :** Maximum 3 chercheurs par bâtiment "Centre de Recherche".
|
||||||
* Ne peut pas travailler sans bâtiment assigné.
|
* **Fatigue :** L'efficacité diminue si la fatigue > 80%. Doit prendre des pauses.
|
||||||
* Le coût de salaire est élevé.
|
* **Synergie :** 3 chercheurs de la même spécialité dans un centre = Bonus +20%.
|
||||||
|
|
||||||
## 6. Annexes UX/UI
|
## 6. Annexes UX/UI
|
||||||
* **Visuel Carte :** Visible à travers les fenêtres du Centre de Recherche ou entrant/sortant.
|
* **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.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -29,7 +29,10 @@ Mécanisme de vente entre joueurs/bots sur la Carte du Monde.
|
|||||||
"highest_bidder_id": "uuid | null",
|
"highest_bidder_id": "uuid | null",
|
||||||
"end_time": "timestamp",
|
"end_time": "timestamp",
|
||||||
"status": "enum ('active', 'pending_validation', 'finalizing', 'completed', 'cancelled')",
|
"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"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -42,13 +45,13 @@ Mécanisme de vente entre joueurs/bots sur la Carte du Monde.
|
|||||||
function placeBid(auction, bidder, amount):
|
function placeBid(auction, bidder, amount):
|
||||||
if amount <= auction.current_bid: return Error
|
if amount <= auction.current_bid: return Error
|
||||||
if bidder.coins < amount: return Error
|
if bidder.coins < amount: return Error
|
||||||
|
|
||||||
auction.current_bid = amount
|
auction.current_bid = amount
|
||||||
auction.highest_bidder_id = bidder.id
|
auction.highest_bidder_id = bidder.id
|
||||||
|
|
||||||
function finalizeAuction(auction):
|
function finalizeAuction(auction):
|
||||||
if now < auction.finalization_timer: return
|
if now < auction.finalization_timer: return
|
||||||
|
|
||||||
transferCoins(auction.highest_bidder_id, auction.seller_id, auction.current_bid)
|
transferCoins(auction.highest_bidder_id, auction.seller_id, auction.current_bid)
|
||||||
transferAnimal(auction.seller_id, auction.highest_bidder_id, auction.animal_ref)
|
transferAnimal(auction.seller_id, auction.highest_bidder_id, auction.animal_ref)
|
||||||
auction.status = 'completed'
|
auction.status = 'completed'
|
||||||
@@ -63,6 +66,15 @@ function finalizeAuction(auction):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Consultation des Offres (Consultation)
|
### Consultation des Offres (Consultation)
|
||||||
**Description UX** : Le joueur survole les zoos sur la carte du monde pour voir les offres.
|
**Description UX** : Le joueur survole les zoos sur la carte du monde pour voir les offres.
|
||||||
|
|||||||
@@ -5,19 +5,10 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e
|
|||||||
|
|
||||||
## 2. Fonctions
|
## 2. Fonctions
|
||||||
* **Hébergement :** Lieu de vie des animaux.
|
* **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é).
|
* **Visibilité :** Permet aux visiteurs d'observer les animaux (augmente l'attractivité).
|
||||||
* **Sécurité :** Empêche les animaux de s'enfuir (si entretenu).
|
* **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
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
### Données (JSON)
|
### 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",
|
"enclosure_id": "enclosure_lions_01",
|
||||||
"animal_type": "lion",
|
"animal_type": "lion",
|
||||||
|
"biome_type": "savanna",
|
||||||
"cells": [
|
"cells": [
|
||||||
{"x": 10, "y": 10},
|
{"x": 10, "y": 10},
|
||||||
{"x": 10, "y": 11},
|
{"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}
|
{"x": 11, "y": 11}
|
||||||
],
|
],
|
||||||
"area": 4,
|
"area": 4,
|
||||||
"capacity": 6, // Capacité totale calculée (ex: 1.5 animaux par case)
|
"capacity": 6,
|
||||||
"current_population": 3,
|
"current_population": 3,
|
||||||
"cleanliness": 85,
|
"cleanliness": 85,
|
||||||
"fence_health": 100
|
"fence_health": 100,
|
||||||
|
"decoration_score": 15,
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Règles Métier
|
### Règles Métier
|
||||||
* **Adjacence :** La fusion se fait horizontalement et verticalement (pas en diagonale seule).
|
* **Algorithme de Fusion :** À chaque placement/suppression de case enclos, recalculer les composants connectés (Connected Components) pour mettre à jour les murs.
|
||||||
* **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).
|
* **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.
|
||||||
* **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é.
|
|
||||||
|
|
||||||
## 6. Annexes UX/UI
|
## 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.
|
||||||
|
|||||||
@@ -104,6 +104,15 @@ elif animal.temp > animal.idealTemp + 10:
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Lecture Immédiate (Passif)
|
### Lecture Immédiate (Passif)
|
||||||
**Description UX** : Le joueur comprend la situation d'un coup d'œil sans ouvrir de menu.
|
**Description UX** : Le joueur comprend la situation d'un coup d'œil sans ouvrir de menu.
|
||||||
|
|||||||
@@ -42,12 +42,21 @@ function applyImpact(target, impactType, value):
|
|||||||
target.attractiveness += value
|
target.attractiveness += value
|
||||||
elif impactType == 'SURVIVAL':
|
elif impactType == 'SURVIVAL':
|
||||||
target.survival_score += value
|
target.survival_score += value
|
||||||
|
|
||||||
logEvent(target.id, impactType, value)
|
logEvent(target.id, impactType, value)
|
||||||
```
|
```
|
||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Feedback Visuel d'Impact (Passif)
|
### Feedback Visuel d'Impact (Passif)
|
||||||
**Description UX** : Le joueur voit les conséquences de ses actions.
|
**Description UX** : Le joueur voit les conséquences de ses actions.
|
||||||
|
|||||||
@@ -25,7 +25,10 @@ Table statique `animal_types`.
|
|||||||
"rarity": "int",
|
"rarity": "int",
|
||||||
"ideal_biome": "int",
|
"ideal_biome": "int",
|
||||||
"ideal_temp": "float",
|
"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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Bestiaire / Encyclopédie (Consultation)
|
### Bestiaire / Encyclopédie (Consultation)
|
||||||
**Description UX** : Le joueur consulte les animaux découverts/possédés.
|
**Description UX** : Le joueur consulte les animaux découverts/possédés.
|
||||||
|
|||||||
@@ -92,6 +92,15 @@ function getBabyBonus(baby):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Visualisation Bébé (Passif)
|
### Visualisation Bébé (Passif)
|
||||||
**Description UX** : Différencier les bébés des adultes.
|
**Description UX** : Différencier les bébés des adultes.
|
||||||
|
|||||||
@@ -94,6 +94,15 @@ function updateTime(world, deltaTime):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Cycle Jour/Nuit (Passif)
|
### Cycle Jour/Nuit (Passif)
|
||||||
**Description UX** : La luminosité change progressivement.
|
**Description UX** : La luminosité change progressivement.
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ function updateWeather(world):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Ambiance Météo (Passif)
|
### Ambiance Météo (Passif)
|
||||||
**Description UX** : Le joueur ressent la météo actuelle.
|
**Description UX** : Le joueur ressent la météo actuelle.
|
||||||
|
|||||||
@@ -100,6 +100,15 @@ function getBiomeEffect(biome):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Palette Biome (Consultation)
|
### Palette Biome (Consultation)
|
||||||
**Description UX** : Le joueur consulte la liste des biomes disponibles pour terraformer.
|
**Description UX** : Le joueur consulte la liste des biomes disponibles pour terraformer.
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ function checkVisitorNeeds(visitor):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Bulles d'Incidents (Action)
|
### Bulles d'Incidents (Action)
|
||||||
**Description UX** : Voir `visiteur.md`.
|
**Description UX** : Voir `visiteur.md`.
|
||||||
|
|||||||
@@ -17,7 +17,10 @@
|
|||||||
"objective_type": "string",
|
"objective_type": "string",
|
||||||
"target_value": "int",
|
"target_value": "int",
|
||||||
"reward_coins": "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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Suivi Quêtes (Permanent)
|
### Suivi Quêtes (Permanent)
|
||||||
**Description UX** : Le joueur voit ses objectifs en cours.
|
**Description UX** : Le joueur voit ses objectifs en cours.
|
||||||
|
|||||||
@@ -136,6 +136,15 @@ function updateSeason(world):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Ambiance Saisonnière (Passif)
|
### Ambiance Saisonnière (Passif)
|
||||||
**Description UX** : Le décor change selon la saison.
|
**Description UX** : Le décor change selon la saison.
|
||||||
|
|||||||
@@ -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.
|
* **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.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ function getTemp(case):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Thermomètre (Consultation)
|
### Thermomètre (Consultation)
|
||||||
**Description UX** : Le joueur voit la température actuelle.
|
**Description UX** : Le joueur voit la température actuelle.
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ L'utilisateur humain.
|
|||||||
"settings": {
|
"settings": {
|
||||||
"music_enabled": "boolean",
|
"music_enabled": "boolean",
|
||||||
"bot_profile_id": "integer"
|
"bot_profile_id": "integer"
|
||||||
}
|
},
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -125,6 +128,15 @@ function playerAction(action):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### HUD Principal (Permanent)
|
### HUD Principal (Permanent)
|
||||||
**Description UX** : Le joueur voit en permanence ses ressources et accès rapides.
|
**Description UX** : Le joueur voit en permanence ses ressources et accès rapides.
|
||||||
|
|||||||
@@ -286,6 +286,15 @@ Microscope stylisé bleu néon sur fond sombre, évoquant la haute technologie.
|
|||||||
|
|
||||||
## Annexes UX/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)
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
#### Description UX
|
#### Description UX
|
||||||
|
|||||||
@@ -37,7 +37,10 @@ Interface centralisée dédiée aux transactions utilisant la monnaie premium (p
|
|||||||
"currency_balance": {
|
"currency_balance": {
|
||||||
"coins": 1500,
|
"coins": 1500,
|
||||||
"gems": 50
|
"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.
|
* **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.
|
* **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).
|
* **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.
|
||||||
|
|||||||
@@ -24,7 +24,10 @@ Le milieu représente l'environnement écologique d'une case, défini par sa cou
|
|||||||
"name": "string",
|
"name": "string",
|
||||||
"color_hex": "string (#RRGGBB)",
|
"color_hex": "string (#RRGGBB)",
|
||||||
"default_temperature": "float",
|
"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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Identification Visuelle (Passif)
|
### Identification Visuelle (Passif)
|
||||||
**Description UX** : Le joueur identifie le biome à la couleur du sol.
|
**Description UX** : Le joueur identifie le biome à la couleur du sol.
|
||||||
|
|||||||
@@ -102,6 +102,15 @@ function handleBabyDeath(baby):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Drame (Événement)
|
### Drame (Événement)
|
||||||
**Description UX** : Le bébé meurt.
|
**Description UX** : Le bébé meurt.
|
||||||
|
|||||||
@@ -30,7 +30,10 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les
|
|||||||
"capacity": 50, // Quantité de nourriture transportable
|
"capacity": 50, // Quantité de nourriture transportable
|
||||||
"speed": 1.2
|
"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.
|
* **Visuel Carte :** Personnage avec une brouette ou un sac sur le dos.
|
||||||
* **Animation :** Verse de la nourriture dans l'auge.
|
* **Animation :** Verse de la nourriture dans l'auge.
|
||||||
* **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé.
|
* **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.
|
||||||
|
|||||||
@@ -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.
|
* **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.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -24,7 +24,10 @@ Bâtiment dédié à l'éclosion des œufs et à la croissance des bébés anima
|
|||||||
"level": "integer (1-7)",
|
"level": "integer (1-7)",
|
||||||
"slots": [
|
"slots": [
|
||||||
{ "slot_id": 1, "content": "egg_uuid | baby_uuid | null", "timer_end": "timestamp" }
|
{ "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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Gestion des Slots (Consultation)
|
### Gestion des Slots (Consultation)
|
||||||
**Description UX** : Le joueur clique sur la nurserie pour voir l'état de ses œufs et bébés.
|
**Description UX** : Le joueur clique sur la nurserie pour voir l'état de ses œufs et bébés.
|
||||||
|
|||||||
@@ -38,3 +38,14 @@
|
|||||||
## 6. Annexes UX/UI
|
## 6. Annexes UX/UI
|
||||||
* **Visuel 3D/Iso :** Modèle détaillé correspondant au thème de l'animal.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -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).
|
* **Barre de Progression :** Visuel clair de l'avancement (jauge remplie).
|
||||||
* **Paliers :** Icônes des récompenses cliquables pour détails.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -19,7 +19,10 @@ Classe abstraite ou interface commune.
|
|||||||
"id": "uuid",
|
"id": "uuid",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"position": { "x": "int", "y": "int" },
|
"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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Identification (Passif)
|
### Identification (Passif)
|
||||||
**Description UX** : Reconnaître le type de personnage au premier coup d'œil.
|
**Description UX** : Reconnaître le type de personnage au premier coup d'œil.
|
||||||
|
|||||||
@@ -29,7 +29,10 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues
|
|||||||
"speed_modifier": 1.0,
|
"speed_modifier": 1.0,
|
||||||
"attractiveness_bonus": 5
|
"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.
|
* **Visuel :** Planches de bois avec rambardes, piliers plongeant dans l'eau.
|
||||||
* **Son :** Bruit de pas sur le bois (creux).
|
* **Son :** Bruit de pas sur le bois (creux).
|
||||||
* **Reflet :** Reflet du pont dans l'eau (si moteur graphique le permet).
|
* **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.
|
||||||
|
|||||||
@@ -119,6 +119,15 @@ if checkConditions(parentA, parentB):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Amour (Passif)
|
### Amour (Passif)
|
||||||
**Description UX** : Deux animaux compatibles se rencontrent. Des cœurs apparaissent.
|
**Description UX** : Deux animaux compatibles se rencontrent. Des cœurs apparaissent.
|
||||||
|
|||||||
@@ -96,6 +96,15 @@ N/A
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Affichage Score (Permanent)
|
### Affichage Score (Permanent)
|
||||||
**Description UX** : Le joueur connaît son niveau de prestige.
|
**Description UX** : Le joueur connaît son niveau de prestige.
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ survivalScore = average(allAnimals.health)
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Monitoring Santé (Permanent)
|
### Monitoring Santé (Permanent)
|
||||||
**Description UX** : Le joueur surveille la santé globale de son zoo.
|
**Description UX** : Le joueur surveille la santé globale de son zoo.
|
||||||
|
|||||||
@@ -22,7 +22,10 @@ Un site est un lieu d'intérêt positionné sur la Carte du Monde.
|
|||||||
"id": "uuid",
|
"id": "uuid",
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"name": "string",
|
"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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Info-bulle (Consultation)
|
### Info-bulle (Consultation)
|
||||||
**Description UX** : Survoler un site donne ses détails.
|
**Description UX** : Survoler un site donne ses détails.
|
||||||
|
|||||||
@@ -31,7 +31,10 @@
|
|||||||
"amount": 500,
|
"amount": 500,
|
||||||
"currency": "coins"
|
"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.
|
* **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).
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l
|
|||||||
"efficiency": 0.8,
|
"efficiency": 0.8,
|
||||||
"range": 5 // Rayon d'action en cases
|
"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.
|
* **Visuel Carte :** Personnage en blouse blanche avec une mallette.
|
||||||
* **Feedback :** Icône de croix verte au-dessus de l'animal soigné.
|
* **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]".
|
* **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.
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ Certains événements doivent arriver même si le joueur est hors ligne (ex: Enc
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Chargement (Feedback)
|
### Chargement (Feedback)
|
||||||
**Description UX** : Le joueur attend le calcul du Lazy Update à la connexion.
|
**Description UX** : Le joueur attend le calcul du Lazy Update à la connexion.
|
||||||
|
|||||||
@@ -111,6 +111,15 @@ currentTemp = baseBiomeTemp + seasonMod + dayNightMod + caseRegulatorOffset
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Visualisation Thermique (Passif)
|
### Visualisation Thermique (Passif)
|
||||||
**Description UX** : Le joueur voit la température de chaque case.
|
**Description UX** : Le joueur voit la température de chaque case.
|
||||||
|
|||||||
@@ -45,3 +45,14 @@ Ensemble cohérent de skins et d'éléments visuels transformant l'ambiance gén
|
|||||||
## 6. Annexes UX/UI
|
## 6. Annexes UX/UI
|
||||||
* **Sélecteur de Thème :** Carrousel ou liste déroulante dans les options graphiques.
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -105,6 +105,15 @@ function sellAnimal(animal, price, mode):
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Libération (Action)
|
### Libération (Action)
|
||||||
**Description UX** : Le joueur relâche un animal (vente système).
|
**Description UX** : Le joueur relâche un animal (vente système).
|
||||||
|
|||||||
@@ -88,6 +88,15 @@ N/A
|
|||||||
|
|
||||||
# Annexes UX/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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Mise en Vente (Action)
|
### Mise en Vente (Action)
|
||||||
**Description UX** : Le joueur sélectionne un animal adulte sur la grille et choisit "Vendre".
|
**Description UX** : Le joueur sélectionne un animal adulte sur la grille et choisit "Vendre".
|
||||||
|
|||||||
@@ -29,7 +29,10 @@ Processus de vente spécifique pour les bébés animaux nés dans le zoo.
|
|||||||
"current_bid": "int",
|
"current_bid": "int",
|
||||||
"highest_bidder": "uuid | null",
|
"highest_bidder": "uuid | null",
|
||||||
"end_time": "timestamp",
|
"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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Mise en Vente (Action)
|
### Mise en Vente (Action)
|
||||||
**Description UX** : Le joueur glisse un bébé depuis la nurserie vers le camion.
|
**Description UX** : Le joueur glisse un bébé depuis la nurserie vers le camion.
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ Une ville est une entité sur la Carte du Monde qui génère le flux de visiteur
|
|||||||
"type": "city",
|
"type": "city",
|
||||||
"name": "string",
|
"name": "string",
|
||||||
"population": "integer",
|
"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
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Visualisation Taille (Passif)
|
### Visualisation Taille (Passif)
|
||||||
**Description UX** : Distinguer les grandes villes des petites.
|
**Description UX** : Distinguer les grandes villes des petites.
|
||||||
|
|||||||
@@ -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.
|
* **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).
|
* **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.
|
* **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.
|
||||||
|
|||||||
@@ -305,6 +305,24 @@ Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, E
|
|||||||
|
|
||||||
## Annexes UX/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 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)
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
#### Description 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 |
|
| Observation | Zoom sur visiteur | Affichage info-bulle nom/état |
|
||||||
| Plainte | Clic sur bulle rouge | Ouverture fenêtre résolution problème |
|
| 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
|
#### 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 |
|
| Élément | Type (Bouton/Panel) | Contenu | État par défaut |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| Bulle Pensée | Icône Flottante | Image (Burger, WC...) | Caché |
|
| Bulle Pensée | Icône Flottante | Image (Burger, WC...) | Caché |
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
|
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.
|
||||||
|
|
||||||
## Affichage
|
## Affichage
|
||||||
- **Nom du zoo** : Sur une banderole d'accueil personnalisable.
|
- **Nom du zoo** : Sur une banderole d'accueil personnalisable (poteaux bois).
|
||||||
- **Avatar Joueur** : Visible à côté du nom ou sur la carte du monde.
|
- **Avatar Joueur** : Visible en coin de l'écran.
|
||||||
- **Vue** : Isométrique (2.5D).
|
- **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).
|
- **Skins** : Le zoo peut avoir des thèmes visuels (Skins de Zoo).
|
||||||
- **Icône** : 🏠
|
- **Icône** : 🏠
|
||||||
- **Slot d'offre** :
|
- **Slot d'offre** :
|
||||||
@@ -170,6 +170,16 @@ function updateZooState(zoo) {
|
|||||||
|
|
||||||
# Annexes UX/UI
|
# 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)
|
## 1. Expérience Utilisateur (UX)
|
||||||
### Visualisation Offre (Passif)
|
### Visualisation Offre (Passif)
|
||||||
**Description UX** : Voir ce que vend un autre joueur.
|
**Description UX** : Voir ce que vend un autre joueur.
|
||||||
|
|||||||
Reference in New Issue
Block a user