Spécifications : Case (Générique)
Définition
Une case est l'unité élémentaire de la grille (Zoo ou Monde).
Propriétés
- Coordonnées : Position (x, y) dans la grille.
- Couleur (Milieu) : Définit le biome et l'environnement visuel.
- Température : Liée à la couleur/biome.
- Contenu : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
- État : Peut avoir des indicateurs visuels (herbe jaunie, givre, fertilité).
Annexes Techniques
1. Données et États
Modèle de Données (JSON)
{
"x": "integer",
"y": "integer",
"grid_id": "string (stable key: `${x}:${y}`)",
"owner_id": "uuid | null (null = carte neutre/monde)",
"created_at": "timestamp",
"updated_at": "timestamp",
"biome_id": "integer",
"biome_type": "enum('prairie','ocean','montagne','savane','toundra','desert','jungle','marais')",
"temperature_offset": "float (°C, additive)",
"content_ref": "uuid | null",
"content_type": "enum('empty','animal','building','visitor','staff','decoration','path','bridge','water','fence')",
"fertility_level": "float (0-100)",
"cleanliness_level": "float (0-100)",
"state_flags": [
"enum('frozen','dry','dirty','fertilized','muddy','snowy','flooded','trampled')"
],
"render": {
"tile_variant": "string (auto-tiling key)",
"occluder": "boolean",
"hitbox": "enum('tile','base_sprite','custom_polygon')"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
Contraintes (Invariants)
- Unicité : (
x,y) est unique dans une grille.
- Cohérence contenu : si
content_type === 'empty' alors content_ref === null.
- Température :
temperature_offset s’applique additivement à la température “biome” et aux modificateurs (saison, jour/nuit).
- Z-index isométrique :
z_index est dérivé principalement de y (et secondairement de x) pour garantir le recouvrement correct.
8. Logique et Interfaces
Pseudo-code Impacts
Messages d'Infos / Alerte
| Type |
Message |
Condition |
Priorité |
| Info |
"Sol fertilisé." |
state_flags ajoute fertilized |
2 |
| Warn |
"Fonds insuffisants." |
player.money < cost |
4 |
| Warn |
"Case occupée : action indisponible." |
content_type non compatible |
3 |
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)
Fertilisation (Action)
Description UX : Le joueur améliore le sol pour que l'herbe repousse plus vite.
Description UI : Outil "Sac d'engrais". Clic sur la case.
Emplacement : Menu Outils -> Case.
Intégration : Curseur.
Navigation : Clic.
Événements : FERTILIZE_SOIL.
Assets
- Musiques :
ambience_garden_soft.mp3 (léger, discret).
- Sons :
scatter.mp3.
- Graphiques : Particules vertes/brunes.
- Images : Texture terre riche (plus foncée).
- Animations : Poussière qui retombe.
- Couleurs : Marron foncé.
- Textes :
TOOL_FERTILIZE = "Engrais", CASE_FERTILIZED = "Sol fertilisé"
- Formes : Curseur rond (outil), surbrillance tuile.
Définition
| Champ |
Valeur |
| Concept |
Case générique : unité élémentaire ((x,y)) d’une carte, portant biome, température, contenu, états de sol et paramètres de rendu isométrique. |
| Rôle |
Supporter toutes les interactions bas niveau (occupation, états terrain, outils) et fournir un contrat unique pour les spécialisations (zoo/monde). |
| Portée |
Toute grille (zoo/world) ; les entités référencent des cases via coordonnées ou grid_id. |
| Contrainte |
Invariants stricts (content_type vs ref) ; pas de fallback silencieux ; dérivés (z_index, tile_variant) calculés à la volée. |
Fonctions (tableau détaillé)
| Fonction |
Déclencheur |
Entrées |
Sorties |
Règles |
Observabilité |
Résoudre grid_id |
création |
x,y |
string |
format ${x}:${y} |
Event GRID_ID_BUILT |
| Mettre à jour contenu |
placement |
content_type/ref |
case |
cohérence obligatoire |
Event CASE_CONTENT_UPDATED |
| Appliquer outil (fertilize) |
action |
player, cost |
fertility=100 |
fonds requis, sinon erreur |
Event FERTILIZE_SOIL |
| Mettre à jour flags |
tick |
env + actions |
state_flags |
clamp + cohérence |
Event CASE_FLAGS_UPDATED |
| Calculer température locale |
tick |
biome + offset + saison |
float |
additif |
Event CASE_TEMP_COMPUTED |
Icone de base
| Élément |
Spécification |
| Représentation |
Tuile + symbole biome |
| Couleur dominante |
selon biome |
| Variantes |
icon_tile_generic.png, icon_tile_fertilized.png |
| États |
dirty, fertilized, snowy, muddy |
Interactions (tableau détaillé)
| Interaction |
Type |
Préconditions |
Étapes UI |
Résultat |
Erreurs / Messages |
| Fertiliser |
Action |
fonds ≥ 50 |
outil → clic case |
fertilité 100 |
NO_MONEY |
| Lire état case |
Consultation |
- |
survol |
tooltip flags |
- |
Annexes Techniques
1. Données et États (tableau détaillé)
| Donnée / État |
Type |
Exemple |
Source |
Contraintes |
x |
int |
10 |
DB |
coord |
y |
int |
12 |
DB |
coord |
grid_id |
string |
10:12 |
calcul |
stable |
owner_id |
uuid_v4 | null |
uuid_v4 |
DB |
null pour monde |
biome_type |
enum |
prairie |
DB |
- |
temperature_offset |
float |
-2.0 |
DB |
additif |
content_type |
enum |
empty |
DB |
voir enum |
content_ref |
uuid_v4 | null |
- |
DB |
null si empty |
fertility_level |
float |
100 |
DB |
0..100 |
cleanliness_level |
float |
80 |
DB |
0..100 |
state_flags[] |
enum[] |
dirty |
DB |
sans doublons |
render.tile_variant |
string |
prairie_A |
calcul |
auto-tiling |
render.hitbox |
enum |
tile |
config |
access |
iso_x |
int |
120 |
calcul |
iso |
iso_y |
int |
88 |
calcul |
iso |
z_index |
int |
12088 |
calcul |
tri |
Caractéristiques Initiales (tableau détaillé)
| Caractéristique |
Valeur initiale |
Unité |
Notes |
| Fertilité |
0 |
pts |
init |
| Propreté |
100 |
pts |
init |
| Temp offset |
0.0 |
°C |
init |
Scores Initiaux (tableau détaillé)
| Score |
Valeur initiale |
Plage |
Impact |
| Occupation |
0 |
0..100 |
densité |
| Dégradation |
0 |
0..100 |
sol |
2. Cycles de Vie et Apparition (tableau détaillé)
| Phase |
Déclencheur |
Entrées |
Sorties |
Invariants |
| Création |
gen map |
biome |
case |
unicité |
| Mutation |
actions |
outils |
flags |
cohérence |
Conditions d'Apparition (tableau détaillé)
| Condition |
Seuil |
Opérateur |
Résultat |
| Génération |
true |
est |
case créée |
Conditions de Disparition (tableau détaillé)
| Condition |
Seuil |
Opérateur |
Résultat |
| Suppression compte |
true |
est |
supprimée |
Hérédité (tableau détaillé)
| Élément |
Hérité |
Règle |
| Coordonnées |
Oui |
stables |
| Flags |
Oui |
persistants DB |
3. Impacts Environnementaux
Impact Température (tableau détaillé)
| Condition |
Effet |
Notes |
| Saison |
temp (\pm) |
global |
Impact Milieu (Biome) (tableau détaillé)
| Biome |
Effet |
Notes |
| jungle |
humidité |
visuel |
Impact Saisons (tableau détaillé)
| Saison |
Effet |
Notes |
| hiver |
snowy |
flag |
Impact Heure / Jour-Nuit (tableau détaillé)
| Période |
Effet |
Notes |
| nuit |
luminosité - |
rendu |
4. Impacts Biologiques et Sociaux
Impact Reproduction (tableau détaillé)
| Facteur |
Effet sur taux |
Condition |
| fertilized |
+ |
plantes |
Impact Mort (tableau détaillé)
| Cas |
Effet |
Condition |
| flooded |
danger |
event |
Impact Nourriture (tableau détaillé)
| Ressource |
Effet |
Condition |
| herbe |
nourriture |
prairie |
Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État |
Gain |
Rayon |
Notes |
| propre |
+ |
local |
ambiance |
Impact Attractivité Animaux) (tableau détaillé)
| Action/État |
Effet animaux |
Condition |
| sale |
stress + |
proximité |
Impact Valeur (tableau détaillé)
| Facteur |
Variation |
Condition |
| tile premium |
+ |
flag |
5. Impacts Logistiques et Économiques
Vitesse (Camion) (tableau détaillé)
| Paramètre |
Effet |
Condition |
| movement_cost |
vitesse - |
>1 |
Vitesse (Nurserie) (tableau détaillé)
| Paramètre |
Effet |
Condition |
| - |
neutre |
base |
Vitesse (Accueil) (tableau détaillé)
| Paramètre |
Effet |
Condition |
| - |
neutre |
base |
Vitesse (Recherche) (tableau détaillé)
| Paramètre |
Effet |
Condition |
| - |
neutre |
base |
Vitesse (Labo) (tableau détaillé)
| Paramètre |
Effet |
Condition |
| - |
neutre |
base |
Vitesse (Visite) (tableau détaillé)
| Paramètre |
Effet |
Condition |
| walkable |
route |
bool |
Dépenses (Billeterie) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| fertilize |
50 |
coins |
outil |
Dépenses (Boutiques) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| nettoyage |
5 |
coins |
option |
Dépenses (Visiteurs) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| saleté |
temps |
min |
déchets |
Dépenses (Employés) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| intervention |
temps |
min |
staff |
Dépenses (Boutiques) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| section dupliquée |
1 |
coins |
conservée |
Dépenses (Nurseries) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| - |
1 |
coins |
lore |
Dépenses (Nourriture) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| - |
1 |
coins |
lore |
Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| - |
1 |
coins |
lore |
Dépenses (Camion) (tableau détaillé)
| Poste |
Coût |
Unité |
Condition |
| - |
1 |
coins |
lore |
Trajet Visiteurs
Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source |
Destination |
Déclencheur |
Effet |
| ville |
zoo |
attractivité |
flux |
Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source |
Destination |
Déclencheur |
Effet |
| entrée |
enclos |
visite |
route |
Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source |
Destination |
Déclencheur |
Effet |
| enclos |
boutique |
faim |
achats |
Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source |
Destination |
Déclencheur |
Effet |
| zoo |
sortie |
fin |
despawn |
6. Événements
Événements du Jeu (tableau détaillé)
| Event |
Déclencheur |
Payload |
Effet |
CASE_FERTILIZED |
outil |
grid_id |
flag + |
CASE_CONTENT_UPDATED |
placement |
content |
cohérence |
Événements du Carte (tableau détaillé)
| Event |
Déclencheur |
Effet |
CASE_TEMP_COMPUTED |
tick |
temp |
Événements du Zoo (tableau détaillé)
| Event |
Déclencheur |
Effet |
CASE_FLAGS_UPDATED |
tick |
flags |
Événements du Ville / Visiteur (tableau détaillé)
| Event |
Déclencheur |
Effet |
GRID_ID_BUILT |
init |
id |
Événements du Visiteur (tableau détaillé)
| Event |
Déclencheur |
Effet |
CASE_HOVERED |
UI |
tooltip |
Événements du Joueur (tableau détaillé)
| Event |
Déclencheur |
Effet |
PLAYER_FERTILIZES |
clic |
sol |
7. Progression
Tableau des Upgrades (tableau détaillé)
| Niveau |
Coût |
Effet |
Débloque |
| Outil engrais |
50 |
fertilité 100 |
action |
8. Logique et Interfaces
Pseudo-code Impacts (tableau détaillé)
| Fonction |
Entrées |
Sorties |
Notes |
fertilize_case |
case, player |
result |
fonds |
getLocalTemp |
case, season |
float |
additif |
Messages d'Infos / Alerte (tableau détaillé)
| ID |
Niveau |
Message |
Condition |
CASE_FERTILIZED |
Info |
"Sol fertilisé." |
succès |
NO_MONEY |
Warn |
"Fonds insuffisants." |
coût |
Annexes UX/UI
1. Expérience Utilisateur (UX)
Description UX (tableau détaillé)
| Parcours |
But |
Friction |
Réduction clics |
| Utiliser outil |
améliorer case |
menus |
outil direct |
Description UI (tableau détaillé)
| Composant |
Contenu |
États |
| Curseur outil |
sac engrais |
actif |
| Feedback case |
particules |
succès |
Emplacement (tableau détaillé)
| Zone UI |
Position |
Notes |
| Menu outils |
HUD |
accès |
Intégration (tableau détaillé)
| Intégration |
Contrat |
Notes |
case_zoo.md |
spécialisation |
zoo |
Navigation (tableau détaillé)
| Action |
Chemin |
Résultat |
| Fertiliser |
outil → clic |
succès |
Événements (tableau détaillé)
| Event UI |
Déclencheur |
Effet |
FERTILIZE_SOIL |
clic |
action |
Assets Skinables
Musiques (tableau détaillé)
| Asset |
Usage |
Durée |
Notes |
ambience_garden_soft.mp3 |
outil |
loop |
discret |
Sons (tableau détaillé)
| Asset |
Usage |
Volume |
scatter.mp3 |
engrais |
bas |
Graphiques (tableau détaillé)
| Asset |
Usage |
Contraintes |
fertilize_particles.png |
FX |
overlay |
Images (tableau détaillé)
| Asset |
Usage |
soil_rich.png |
tuile |
Vidéos (tableau détaillé)
| Asset |
Usage |
Durée |
fertilize_fx.webm |
feedback |
0.8s |
Animations (tableau détaillé)
| Animation |
Déclencheur |
Notes |
| poussière |
action |
0.6s |
Couleurs (tableau détaillé)
| Token |
Valeur |
Usage |
soil_brown |
#4E342E |
sol |
Textes (tableau détaillé)
| Clé |
FR |
EN |
tool.fertilize |
Engrais |
Fertilize |
case.fertilized |
Sol fertilisé |
Soil fertilized |
Formes (tableau détaillé)
| Élément |
Forme |
Notes |
| Curseur |
rond |
outil |