Files
builazoo/docs/plan-implementation-rappel-grandes-regles.md
Nicolas Cantu e031c9a1d2 Initial commit
**Motivations:**
- Initialisation du versionning git pour le projet

**Root causes:**
- N/A (Nouveau projet)

**Correctifs:**
- N/A

**Evolutions:**
- Structure initiale du projet
- Ajout du .gitignore

**Pages affectées:**
- Tous les fichiers
2026-03-03 22:24:17 +01:00

322 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Plan d'implémentation Rappel des grandes règles (cahier des charges 174-324)
Plan pour implémenter lintégralité du bloc « Rappel des grandes règles » sans exception. Les phases sont ordonnées par dépendances ; chaque phase livre un ensemble cohérent et testable.
---
## 0. Modèle de données et configuration
**Objectif** : Fondations pour tout le reste (cases avec couleur + température, bâtiments, bébés vs animaux, ventes).
**Livrables** :
- **Cases** : chaque case a une **couleur** (milieu : eau douce, eau salée, montagne, prairie, forêt, etc.) et une **température** (nombre ou plage). Transitions douces = formules dinterpolation entre cases voisines (calcul côté moteur).
- **Animaux multi-cases** : définition des types danimaux qui occupent N×M cases (shape), et stockage dans `grid.cells` (référence à une entité « animal » multi-case ou marquage des cases).
- **Types de bâtiments** (remplacement / extension des kinds actuels) :
- `research` (Centre de recherche), 7 niveaux
- `billeterie`, 7 niveaux
- `boutique` (déjà présent en `souvenirShop` → renommer/aligner), 7 niveaux
- `nursery`, 7 niveaux (au lieu de 5)
- `food` (Nourriture), 7 niveaux
- `reception` (Accueil nouveaux animaux), 7 niveaux
- `truck` (camion : actuellement métadonnée détat, pas une case à trancher : case dédiée ou zone comme aujourdhui)
- `biomeChangeColor` (changement de milieu couleur), 7 niveaux
- `biomeChangeTemp` (changement de milieu température), 7 niveaux
- **Entités déplaçables** : `baby` (bébé, en nurserie ou en vente), `animal` (adulte, sur carte ou en accueil ou en vente). Plus dœufs comme objet principal : les zoos exposent des **bébés** et des **animaux** à lachat/vente.
- **Config** : GameConfig étendu (niveaux max à 7 pour les bâtiments listés, coûts, capacités : recherche 10 zoos/unité, billeterie 20 visiteurs/unité, boutique 5 visiteurs/unité, nurserie 1 bébé/unité, nourriture 5 animaux/unité, accueil 1 animal/unité, camion 1/unité).
**Fichiers impactés** : `web/js/types.js`, `web/js/config.js`, `web/js/state.js`, `server/schema.sql` (si extension game_state), `web/js/loot-tables.js` (animaux avec `cellsWide`, `cellsHigh`, température idéale, score reproduction/survie par milieu).
**Dépendances** : aucune.
---
## 1. Cartes : couleurs et températures des cases
**Objectif** : Les cases ont une couleur (milieu) et une température ; les transitions sont douces entre cases.
**Livrables** :
- **Couleurs** : élargir les biomes au-delà de prairie/océan/montagne (eau douce, eau salée, montagne, prairie, forêt, etc.) ; chaque case a un `biome` (couleur/milieu) et un `temperature` (valeur ou min/max).
- **Transitions douces** : calcul de la couleur et de la température affichées par interpolation avec les cases voisines (ou gradient par position). Export dune fonction du type `getDisplayColor(x, y, grid)`, `getDisplayTemperature(x, y, grid)`.
- **Rendu** : CSS/Canvas ou styles dynamiques pour fond de case selon couleur et température (dégradés entre cases).
- **Grille** : les cases forment le cadrillage des cartes (zoo et monde) ; pas de changement de structure, seulement sémantique couleur/température.
**Fichiers impactés** : `web/js/biome-rules.js` (ou nouveau `cell-environment.js`), `web/js/grid-utils.js`, `web/css/main.css`, `web/js/ui.js` (rendu grille).
**Dépendances** : Phase 0.
---
## 2. Animaux multi-cases
**Objectif** : Certains animaux prennent plusieurs cases.
**Livrables** :
- **Définition** : dans les données animaux (loot-tables ou équivalent), champs `cellsWide`, `cellsHigh` (ex. 1×1, 2×2). Placement valide si toutes les cases cibles sont vides et dans les limites.
- **Stockage** : soit une entité « animal » avec `originKey` (case coin) + `animalId` + `width`, `height`, soit marquage de chaque case avec référence à la même entité. Suppression/mouvement : toute la surface est libérée ou déplacée.
- **Règles** : cohérence animal/milieu et température (phase 1) appliquée sur la zone couverte (ex. toutes les cases dans la plage de température idéale ou au moins la case dorigine).
- **UI** : affichage dun sprite ou emprise sur plusieurs cases ; glisser-déposer dun animal multi-case déplace tout le bloc.
**Fichiers impactés** : `web/js/loot-tables.js`, `web/js/placement.js`, `web/js/grid-utils.js`, `web/js/ui.js`, `web/js/state.js` (structure cells).
**Dépendances** : Phase 0, 1.
---
## 3. Bâtiments zoo (types et niveaux)
**Objectif** : Implémenter tous les types de cases « achetables » avec 7 niveaux et leurs effets.
**Livrables** :
- **Centre de recherche** (`research`) : 7 niveaux. Produit des **unités de recherche** par tick (formule par niveau). Stock dans le game_state (ex. `researchPoints`). 1 unité = 10 zoos max couverts (par proximité sur la carte du monde) ; ces zoos débloquent des niveaux danimaux/bébés. Coût dupgrade par palier.
- **Billeterie** : 7 niveaux. Cap visiteurs en simultané = 20 × niveau (ou 20 par unité comme dans le rappel). Entrée des visiteurs uniquement via la billeterie (voir phase 8). Coût par palier.
- **Boutique** : passer à 7 niveaux. 1 unité = 5 visiteurs simultanés max (effet sur revenus quand un visiteur « passe » par une boutique). Coût par palier.
- **Nurserie** : 7 niveaux. 1 unité = 1 bébé max en croissance. Effet « plus rapide » et « meilleurs reproducteurs » (à lier à la reproduction, phase 7). Coût par palier.
- **Nourriture** : 7 niveaux. 1 unité = 5 animaux max nourris (voir phase 4). Coût par palier.
- **Accueil nouveaux animaux** : 7 niveaux. 1 unité = 1 animal en acclimatation. Durée dacclimatation selon niveau ; à la fin, état « animal prêt » déplaçable sur une case ou sur le camion. Coût par palier.
- **Camion** : 7 niveaux. Représentation : soit une case dédiée « camion », soit une zone comme aujourdhui ; 1 unité = 1 camion. Effets : plus rapide (durée trajet), dégrade moins le score de reproduction avec la durée du transport (à lier aux ventes et au score de reproduction).
- **Changement de milieu (couleur)** : 7 niveaux, payant. Permet de modifier la couleur/milieu dune case (ou dune zone selon niveau). Effets : plage de température plus précise, améliore reproduction, diminue besoin nourriture, allonge temps avant mort.
- **Changement de milieu (température)** : 7 niveaux, payant. Même idée pour la température des cases.
**Grille au lancement** (à appliquer en phase 11) : 1 Agrandissement zoo, 1 Recherche, 1 Billeterie, 1 Nurserie, 1 Accueil, 1 Nourriture, 1 Camion, 24 cases (3 couleurs). Pas de « changement de milieu » au lancement.
**Fichiers impactés** : `web/js/config.js`, `web/js/state.js`, `web/js/economy.js`, `web/js/placement.js`, `web/js/zoo.js`, `web/js/ui.js`, `server/` si game_state étendu.
**Dépendances** : Phase 0.
---
## 4. Bébés et flux nurserie / accueil (remplacement œufs)
**Objectif** : Ce ne sont plus des œufs qui apparaissent dans les zoos mais des bébés ; flux nurserie → bébé mature, achat/accueil → animal prêt.
**Livrables** :
- **Suppression du modèle « œuf »** comme objet acheté sur la carte du monde. Les zoos (et le labo) proposent des **bébés** ou des **animaux adultes** à lachat.
- **Nurserie** : un bébé est « en croissance » dans une case nurserie (1 bébé par unité de capacité). À la fin de la durée : état **bébé mature**. Déplacement possible : vers une case vide du zoo (devient animal) ou vers le camion (mise en vente, voir phase 9).
- **Accueil nouveaux animaux** : un animal acheté (ou reçu) est dabord en **accueil** (1 animal par unité). À la fin de lacclimatation : **animal prêt**. Déplacement possible : vers une case vide du zoo ou vers le camion (mise en vente).
- **Carte du zoo** : on peut **acheter** (occupe la case) : recherche, billeterie, boutique, nurserie, nourriture, accueil, camion, changement de milieu (couleur), changement de milieu (température). On peut **déplacer dessus** (occupe la case) : bébé mature, animal prêt.
- **État** : `pendingBabies` / `receptionAnimals` avec `readyAt`, `babyId` / `animalId`, lien vers case nurserie/accueil. Quand `now >= readyAt`, lentité est déplaçable (bébé mature / animal prêt).
**Fichiers impactés** : `web/js/state.js`, `web/js/zoo.js`, `web/js/placement.js`, `web/js/hatching.js` (remplacer par croissance bébé + acclimatation), `web/js/conveyor.js` (offres = bébés/animaux, pas œufs), `web/js/ui.js`, `web/js/world-map.js`, API offres.
**Dépendances** : Phase 0, 3.
---
## 5. Nourriture, consommation et morts
**Objectif** : Chaque animal a une consommation / unité de temps ; sinon il meurt. Toutes les causes de mort listées.
**Livrables** :
- **Nourriture** : par tick, calcul de la consommation totale des animaux du zoo. Les bâtiments « nourriture » ont une capacité (5 animaux × niveau ou 5 par unité). Répartition : nourrir jusquà la capacité ; les animaux non nourris accumulent un déficit (ou un timer « sans nourriture »).
- **Mort si pas nourri** : au-delà dun seuil (temps ou déficit), lanimal meurt (retiré de la grille, enregistré pour pénalités attractivité / naissances).
- **Autres causes de mort** (toutes à implémenter) :
- **Seul** : à définir (ex. animal seul sur lîle sans voisin après un délai).
- **Pas visité** : déjà en place (MaxSecondsWithoutVisit).
- **Manque de nourriture** : ci-dessus.
- **Tué par un autre animal dun autre zoo** : règle métier (ex. événement rare ou mécanique croisée entre zoos).
- **Niveau de recherche trop inférieur** : si niveau du centre de recherche du zoo < seuil requis pour le type danimal, après un délai lanimal meurt.
- **Bébé non vendu dans les délais** : si un bébé en vente nest pas vendu avant une date limite, il meurt (voir phase 9).
- **Bébé de nurserie prêt non placé dans les délais** : si bébé mature nest pas déplacé (case ou camion) avant un délai, il meurt.
- **Animal daccueil prêt non placé sur la carte après un délai** : idem.
- **Animal non placé sur la carte dans les délais (vente échouée)** : si une vente est annulée ou expire sans que lanimal soit récupéré, mort.
- **Température trop en écart** : si la température de la case (ou de la zone) nest pas dans la plage acceptable pour lanimal, après un délai mort.
- **Milieu (couleur) trop en écart** : idem pour le biome.
- **Historique des morts** : stockage (compteur ou liste récente) pour calcul dattractivité et de naissances (phases 8 et 7).
**Fichiers impactés** : `web/js/config.js`, `web/js/state.js`, nouveau `web/js/food.js` (ou dans `income.js`), `web/js/game-loop.js`, `web/js/animal-visits.js` (étendre pour morts), `web/js/loot-tables.js` (température idéale, plages par animal).
**Dépendances** : Phase 0, 1, 3, 4.
---
## 6. Reproduction
**Objectif** : Après un délai, en proximité dun autre animal de même type mais issu dun zoo différent, naissance dun bébé (nurserie ou vente). Score de reproduction du zoo et adéquation température/milieu influencent.
**Livrables** :
- **Proximité** : deux animaux de même type (même `animalId` ou même « type ») sur des cases adjacentes (ou à distance N). Un des deux doit avoir une origine « autre zoo » (vendue achetée) pour permettre la reproduction.
- **Délai** : timer par paire ou par animal ; à léchéance, génération dun **bébé**. Le bébé va en nurserie si une place est libre, sinon directement en vente (case de vente sur la carte du monde).
- **Score de reproduction du zoo** (voir phase 7) : utilisé pour accélérer larrivée du bébé (réduction du délai).
- **Température et milieu** : « très bonne adéquation » avec la température/milieu de lanimal réduit le délai ou augmente la chance de reproduction.
- **Score de reproduction par milieux (couleurs)** et **score de survie par milieux (couleurs)** : définis dans les données animaux ; utilisés dans les formules de reproduction et de mort.
- **Température idéale** : par type danimal (déjà prévu en phase 5 pour les morts) ; utilisée aussi pour la reproduction.
**Fichiers impactés** : `web/js/loot-tables.js`, nouveau `web/js/reproduction.js`, `web/js/state.js`, `web/js/game-loop.js`.
**Dépendances** : Phase 0, 1, 4, 5.
---
## 7. Score de reproduction du zoo
**Objectif** : Nombre de naissances, taux dalimentation, et score « vendu » attaché aux animaux.
**Livrables** :
- **Nombre de naissances** : compteur dans le game_state (incrémenté à chaque bébé né en reproduction).
- **Taux dalimentation** : ratio (animaux nourris / animaux total) sur une fenêtre ou instantané ; stocké ou dérivé pour laffichage et les formules.
- **Score de reproduction** (valeur agrégée du zoo) : formule combinant naissances, taux dalimentation, et éventuellement autres facteurs. Exposé pour lUI (carte du monde : case « score de reproduction » sous le nom du zoo).
- **Animal vendu** : quand un animal quitte le zoo (vente), il garde en mémoire le **score de reproduction du zoo au moment de la vente** (pour accélérer larrivée dun bébé dans le zoo acheteur, phase 6).
**Fichiers impactés** : `web/js/state.js`, `web/js/income.js` ou `web/js/food.js`, `web/js/reproduction.js`, `web/js/trade.js`, `web/js/world-map.js` (affichage score).
**Dépendances** : Phase 5, 6.
---
## 8. Attractivité et visiteurs (billeterie, 1 journée, boutiques)
**Objectif** : Visiteurs entrent par la billeterie, restent max 1 journée, plus longtemps avec boutiques et nombre danimaux différents. Attractivité du zoo avec toutes les composantes et pénalités.
**Livrables** :
- **Billeterie** : seule entrée des visiteurs dans le zoo. Capacité simultanée = 20 × niveau billeterie (ou 20 par unité). Le nombre de visiteurs présents est plafonné par cette capacité.
- **Durée max 1 journée** : chaque visiteur a une « arrivée » ; il repart au plus tard après 1 journée (temps de jeu). Il repart par la billeterie.
- **Temps passé** : les visiteurs restent plus longtemps dans la journée sil y a des boutiques et plus danimaux différents (formule à définir).
- **Déplacement** : les visiteurs se déplacent en étant attirés (déjà partiellement en place ; conserver et adapter si besoin).
- **Attractivité du zoo** (formule globale) :
- proportionnelle à la valeur cumulée des animaux du zoo
- proportionnelle au nombre danimaux différents
- proportionnelle à la rareté (niveau) des animaux
- proportionnelle au taux de remplissage en animaux
- **Pénalités** : les morts pénalisent lattractivité auprès des visiteurs à venir (depuis les villes) ; les morts pénalisent lapparition de naissances dans le zoo.
- **Bonus** : les naissances augmentent lattractivité auprès des visiteurs à venir ; les naissances augmentent lapparition dautres naissances dans le zoo.
- **Villes** : nombre de visiteurs maximum vers les zoos (voir phase 10). Lattractivité du zoo détermine combien de ces visiteurs sont « alloués » au zoo.
- **Affichage** : sur la carte du monde, sous le nom du zoo : une case « score dattractivité » (et une « score de reproduction », phase 7).
**Fichiers impactés** : `web/js/income.js`, `web/js/visitor-attraction.js`, `web/js/config.js`, `web/js/state.js`, `web/js/ui.js`, `web/js/world-map.js`.
**Dépendances** : Phase 3, 5, 7.
---
## 9. Carte du monde : agrandissement en unités de recherche et compteurs
**Objectif** : Agrandissement de la carte payé en unités de recherche ; affichage des compteurs et des cases zoo (attractivité, reproduction, vente).
**Livrables** :
- **Agrandissement de la carte** : plus payé en pièces mais en **unités de recherche** produites par les centres de recherche des zoos du joueur. Coût en unités par palier (plus cher par palier, même nombre de cases ajoutées). Si pas assez dunités, bouton/zone grisé.
- **Compteurs** (sur la carte du monde ou dans une barre dédiée) :
- Compteur de bébés à vendre (total ou par zoo)
- Compteur danimaux à vendre
- Compteur de laboratoires
- Compteur de zoos
- Compteur de villes
- **Cases monde au lancement** : 1 Agrandissement carte, 1 Compteur bébés à vendre, 1 Compteur animaux à vendre, 1 Compteur laboratoires, 1 Compteur zoos, 1 Compteur villes, 1 Accueil, 1 Nourriture, 1 Camion, 24 cases 3 couleurs.
- **Case du zoo (joueur et autres)** : 1 case nom du zoo, juste en dessous 1 case score dattractivité, juste en dessous 1 case score de reproduction, juste en dessous 1 case de vente (voir phase 10). Possibilité dacheter sur les cases voisines dautres cases de vente (achats multi-slots).
- Même principe pour zoos des autres joueurs et zoos bots.
**Fichiers impactés** : `web/js/state.js`, `web/js/economy.js`, `web/js/world-map.js`, `web/js/ui.js`, `web/js/config.js`.
**Dépendances** : Phase 3, 7, 8.
---
## 10. Ventes et enchères (bébés et animaux adultes)
**Objectif** : Bébés et animaux en vente sur la carte du monde ; enchères joueurs/bots ; vendeur valide ou non ; bébé invendu meurt.
**Livrables** :
- **Cases de vente** : sur la carte du monde, sous le nom de chaque zoo, une (ou plusieurs) case(s) de vente affichant un bébé ou un animal à vendre, avec le dernier montant denchère.
- **Mise en vente** : depuis la carte du zoo, déplacer un animal ou un bébé mature sur le camion → lentité sort du zoo et apparaît en **vente** sur la carte du monde (case de vente du joueur).
- **Enchères** : joueurs et bots peuvent enchérir. Montant initial décidé par le vendeur (ou dérivé dun prix de base). Après un temps, le **vendeur** choisit de valider ou non la vente (acceptation de la meilleure enchère ou refus).
- **Si vente validée** : lacheteur reçoit le bébé ou lanimal (en accueil dans son zoo, ou en nurserie si bébé). Le score de reproduction du zoo vendeur au moment de la vente est attaché à lentité (pour accélérer bébé en phase 6).
- **Si bébé invendu** (délai dépassé sans vente validée) : le bébé **meurt** (supprimé, pénalités éventuelles).
- **Animaux adultes** : les zoos vendent aussi des animaux adultes (pas seulement des bébés) ; même flux : mise sur le camion → case de vente → enchères → validation ou refus.
**Fichiers impactés** : `web/js/state.js`, `web/js/trade.js`, `web/js/world-map.js`, `web/js/ui.js`, `server/routes/zoos.js` ou nouveau `server/routes/trades.js` (enchères temps réel ou polling), `server/db.js` (table ou champs pour offres de vente / enchères).
**Dépendances** : Phase 4, 6, 7, 9.
---
## 11. Villes
**Objectif** : Cases des villes avec nom et nombre de visiteurs maximum vers les zoos.
**Livrables** :
- **Cases des villes** : sur la carte du monde, chaque ville a 1 case nom et 1 case « nombre de visiteurs maximum vers les zoos » (capacité totale ou par zoo à définir).
- **Règle** : ce nombre limite ou répartit les visiteurs qui peuvent aller vers les zoos (déjà partiellement en place avec CityAttractionScale ; adapter pour un plafond « max visiteurs vers zoos » par ville).
**Fichiers impactés** : `web/js/config.js`, `web/js/world-map.js`, `web/js/income.js` ou `web/js/visitor-attraction.js`, `web/js/ui.js`.
**Dépendances** : Phase 8.
---
## 12. UI et grille au lancement
**Objectif** : Grille zoo et monde conformes au rappel ; transitions douces visibles ; tous les types de cases et actions.
**Livrables** :
- **Carte du zoo au lancement** : 1 Agrandissement du zoo (+1 case, payant), 1 Recherche (en haut à gauche), 1 Billeterie, 1 Nurserie, 1 Accueil nouveaux animaux, 1 Nourriture, 1 Camion, 24 cases de 3 couleurs différentes. Positions exactes (ex. 1_1 = Recherche, 2_1 = Billeterie, …) à fixer dans `defaultState()` et config.
- **Carte du monde au lancement** : 1 Agrandissement de la carte (payé en unités de recherche), compteurs (bébés, animaux, labos, zoos, villes), 1 Accueil, 1 Nourriture, 1 Camion, 24 cases de 3 couleurs. Layout à définir (même zone que la grille zoo ou zone dédiée).
- **Transitions douces** : rendu des couleurs et températures avec interpolation (phase 1) visible sur les deux cartes.
- **Actions** : achat sur case vide (recherche, billeterie, boutique, nurserie, nourriture, accueil, camion, changement de milieu couleur, changement de milieu température) ; déplacement sur case vide (bébé mature, animal prêt). Messages derreur et feedback clairs.
- **Accessibilité** : ARIA, clavier, contraste (règles projet).
**Fichiers impactés** : `web/js/state.js`, `web/js/ui.js`, `web/js/world-map.js`, `web/css/main.css`.
**Dépendances** : Toutes les phases précédentes.
---
## 13. Migration et compatibilité
**Objectif** : Anciennes sauvegardes (modèle œufs/école actuel) restent jouables ou migration propre.
**Livrables** :
- **Détection de version** : `game_state.version` ou `game_state.specVersion` pour distinguer « ancien » (œufs, école, 5 niveaux) et « nouveau » (bébés, recherche, 7 niveaux, etc.).
- **Migration** : script ou logique au chargement : si ancienne version, soit conversion (œufs → bébés en nurserie, école → centre de recherche niveau 1, etc.), soit message « sauvegarde incompatible, recommencer ».
- **API et BDD** : extension de `game_state` (JSONB) pour tous les nouveaux champs ; pas de perte de données existantes si migration choisie.
**Fichiers impactés** : `web/js/state.js` (loadState, defaultState), `server/routes/zoos.js`, éventuellement script de migration côté serveur.
**Dépendances** : Toutes les phases 012.
---
## Synthèse des dépendances
```
0 (modèle) ─┬─ 1 (couleurs/temp) ─┬─ 2 (multi-cases)
│ └─ 5 (nourriture/morts)
├─ 3 (bâtiments)
└─ 4 (bébés/flux)
├─ 5 (nourriture/morts) ─ 7 (score repro)
├─ 6 (reproduction) ──── 7
├─ 8 (attractivité/visiteurs)
├─ 9 (carte monde recherche/compteurs)
└─ 10 (ventes/enchères) ─ 11 (villes)
└─ 12 (UI / grilles lancement) ─ 13 (migration)
```
**Ordre recommandé dimplémentation** : 0 → 1 → 3 → 4 → 2 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13.
---
## Checklist exhaustive (référence 174-324)
- [ ] Cases : couleur (milieu) + température ; transitions douces
- [ ] Animaux multi-cases
- [ ] Centre de recherche : 7 niv., unités de recherche, 10 zoos/unité, déblocage niveaux animaux/bébés
- [ ] Billeterie : 7 niv., 20 visiteurs/unité, entrée/sortie visiteurs
- [ ] Boutique : 7 niv., 5 visiteurs simultanés/unité
- [ ] Nurserie : 7 niv., 1 bébé/unité, bébé mature → case ou camion
- [ ] Nourriture : 7 niv., consommation/animal, mort si pas nourri, 5 animaux/unité, reproduction
- [ ] Accueil nouveaux animaux : 7 niv., 1 animal/unité, animal prêt → case ou camion
- [ ] Camion : 7 niv., bébé/animal sur camion → vente carte monde, 1 camion/unité
- [ ] Changement de milieu (couleur) : 7 niv., payant
- [ ] Changement de milieu (température) : 7 niv., payant
- [ ] Bébés animaux (plus dœufs) ; zoos vendent bébés et animaux adultes
- [ ] Morts : seuls, pas visités, nourriture, tué autre zoo, recherche trop basse, bébé non vendu à temps, bébé mature non placé à temps, animal accueil non placé à temps, vente échouée, température/milieu en écart
- [ ] Reproduction : délai, proximité même type autre zoo, score repro, température/milieu adéquats ; score repro/survie par milieu ; température idéale
- [ ] Score de reproduction du zoo : naissances, taux alimentation, score vendu sur lanimal
- [ ] Attractivité : valeur cumulée, nombre danimaux différents, rareté, taux remplissage ; pénalités morts ; bonus naissances
- [ ] Visiteurs : entrée billeterie, max 1 journée, plus longtemps avec boutiques et diversité animaux, déplacement attiré
- [ ] Carte du monde : agrandissement en unités de recherche ; compteurs bébés, animaux, labos, zoos, villes ; cases zoo (nom, attractivité, reproduction, vente) ; villes (nom, max visiteurs vers zoos)
- [ ] Ventes : cases de vente sous les zoos ; enchères joueurs/bots ; vendeur valide ou non ; bébé invendu meurt
- [ ] Grille zoo au lancement : 1 agrandissement, 1 recherche, 1 billeterie, 1 nurserie, 1 accueil, 1 nourriture, 1 camion, 24 cases 3 couleurs
- [ ] Grille monde au lancement : 1 agrandissement carte (recherche), compteurs, 1 accueil, 1 nourriture, 1 camion, 24 cases 3 couleurs
- [ ] Migration anciennes sauvegardes / compatibilité