🟢 P · A · E · S
Pulsar Automata Ecosystem Simulation
P.A.E.S. est une simulation interactive d'écosystème proie-prédateur basée sur un automate cellulaire à grille 2D discrète, rendue en temps réel en 3D via Three.js. Inspirée du Jeu de la Vie de John Conway et du modèle Wa-Tor d'A.K. Dewdney, elle modélise les dynamiques de population cycliques décrites par les équations de Lotka-Volterra.
- Rendu Three.js avec
InstancedMeshpour des performances optimales. - Post-Processing (NOUVEAU) :
EffectComposeretUnrealBloomPassactivés pour un effet de halo lumineux (Glow) intense sur les entités vivantes. - Caméra orbitale (
OrbitControls) avec auto-rotation, zoom et vues cinématiques personnalisées par preset. - Éclairage dynamique : lumière ambiante + lumière directionnelle avec ombres portées (
PCFSoftShadowMap). - Double buffering synchrone via
Uint8Arraypour une mise à jour matricielle sans biais d'ordre. - Boucle de rendu fluide par
requestAnimationFrame.
- Pinceau 3D : dessinez directement sur la grille via raycasting (clic gauche). Quatre modes : Vide, 🌿 Herbe, 🐇 Lapin, 🦊 Renard.
- Navigation 3D : rotation via clic droit, zoom via molette. L'auto-rotation se désactive automatiquement pendant le dessin.
- Contrôles de simulation : Play/Pause, Step, Reset, Clear, et génération aléatoire paramétrable.
- ~20 paramètres modifiables à la volée via sliders : vitesse, pousse herbe, famine, réussite de chasse, expansion des proies…
- Compteurs de population en temps réel avec barres de proportion colorées.
- Graphique linéaire temps réel (canvas 2D dédié) illustrant les oscillations de Lotka-Volterra.
- Badge de tick animé avec indicateur visuel d'état (running / paused).
- Glow dynamique : la bordure du canvas s'illumine selon l'espèce dominante.
- Mode Cinématique (Zen Mode) : Raccourci
Hpour un plein écran immersif total, avec un autopilotage qui enchaîne aléatoirement les presets scénarisés toutes les 20 secondes. - Micro-interactions Audio : Système de son génératif (
AudioContext) émettant des retours spatiaux subtils en fonction des actions. - Notifications Toast : Pop-ups discrets informant l'utilisateur des événements clés ou des modes activés.
- Design glassmorphism premium —
backdrop-filter, effets de flou, ombres portées dynamiques. - Thème dual : mode sombre (défaut) et mode clair, persisté via
localStorage. - Responsive : sidebar en off-canvas sur mobile (< 800px) avec overlay et hamburger menu.
- Typographie : Inter (UI) + JetBrains Mono (données).
- Modal pédagogique à onglets (5 tabs) : Concept, Règles, Formules, Applications, Références.
- SEO & Open Graph : métadonnées complètes pour le partage social.
| Catégorie | Presets |
|---|---|
| Motifs géométriques | 🌿 Le Désert Vert · 💧 L'Oasis Isolée · 🏁 Damier Prédateur · 🎯 Anneaux Concentriques · 🔲 Le Corridor · 🌌 Spirale Galactique · 💠 Symétrie Parfaite |
| Scénarios écologiques | ⚔️ L'Arène Temporelle · 🌊 La Migration Sauvage · ⚖️ Équilibre Parfait · 🦊 L'Invasion Renard · 🐇 La Grande Prairie · 🚧 Ligne de Frontière |
| Situations extrêmes | 💥 Surpopulation · 💀 La Grande Famine · 🌀 Chaos Total |
Chaque preset configure automatiquement la grille initiale, les paramètres de simulation, et l'angle de caméra 3D optimal pour le scénario.
| Espèce | Rôle | Comportement |
|---|---|---|
| 🌿 Herbe | Producteur primaire | Se propage sur les cases vides adjacentes (probabilité configurable) |
| 🐇 Lapins | Consommateur primaire | Mange l'herbe pour se reproduire. Meurt de famine (sans herbe) ou de surpopulation (≥ 5 voisins lapins) |
| 🦊 Renards | Prédateur | Chasse les lapins pour survivre. Meurt de faim sans proie à portée |
Chaque cellule évalue ses 8 voisins (haut, bas, gauche, droite + 4 diagonales). L'état futur est calculé via une fonction de transition stochastique :
S(t+1)(r,c) = f( S(t)(r,c), N₈(r,c) )
Deux innovations clés évitent l'extinction rapide typique des automates proie-prédateur :
- Chasse probabiliste — Le renard n'attrape pas systématiquement sa proie. Le paramètre
P_chasse(0–100%) module le taux de réussite. - Expansion passive — Les lapins colonisent les cases vides si ≥ 2 lapins voisins sont présents. Le paramètre
P_reprod(0–100%) contrôle cette probabilité, empêchant l'extinction totale.
Les oscillations observées dans le graphique temps réel correspondent au modèle mathématique continu de Lotka-Volterra (1925-1926), approximé ici par des règles stochastiques discrètes :
dx/dt = αx − βxy (croissance des proies)
dy/dt = δxy − γy (croissance des prédateurs)
| Paramètre | Variable | Défaut | Effet |
|---|---|---|---|
| Pousse herbe | P_herbe | 5% | Vitesse de propagation de l'herbe |
| Famine lapin | P_fam_L | 35% | Mortalité du lapin sans herbe |
| Famine renard | P_fam_R | 20% | Mortalité du renard sans proie |
| Réussite chasse | P_chasse | 30% | Probabilité capture renard → lapin |
| Expansion lapins | P_reprod | 20% | Probabilité colonisation case vide |
| Consommation | P_conso | 60% | Probabilité qu'un lapin mange l'herbe |
| Surpopulation | N_max | ≥ 5 | Seuil de voisins lapins → mort |
| Couche | Technologie | Détails |
|---|---|---|
| Structure | HTML5 | Sémantique, Flexbox/Grid, SEO & Open Graph |
| Style | CSS3 (Vanilla) | Variables CSS, backdrop-filter, glassmorphism, thème dual (dark/light), responsive (breakpoint 800px) |
| Logique | JavaScript ES6+ (Vanilla) | Automate matriciel (Uint8Array), double buffering, raycasting 3D, AudioContext |
| Rendu 3D | Three.js r128 | InstancedMesh, OrbitControls, Post-Processing (UnrealBloomPass) |
| Graphiques | Canvas 2D | Graphique de population temps réel codé from scratch |
| Polices | Google Fonts | Inter (300/400/500) + JetBrains Mono (400/500) |
Zéro dépendance d'installation — Three.js est chargé via CDN. Aucun bundler, framework ou étape de build requis.
Le projet est 100% client-side (statique). Aucun serveur, aucune installation de packages.
# 1. Cloner le dépôt
git clone https://github.com/votre-org/Pulse.git
cd Pulse
# 2. Ouvrir dans le navigateur
# Option A : double-clic sur index.html
# Option B : serveur local (recommandé pour CORS)
npx -y serve .
# → http://localhost:3000| Action | Commande |
|---|---|
| Lancer / Pauser | Bouton ▶ Play dans la sidebar |
| Avancer d'un tick | Bouton Step |
| Réinitialiser | Bouton ↺ Reset |
| Vider la grille | Bouton ⊘ Clear |
| Dessiner | Clic gauche sur la grille 3D |
| Tourner la caméra | Clic droit + drag |
| Zoomer | Molette |
| Changer de thème | Bouton 🌓 en haut à droite de la sidebar |
| Documentation | Bouton i → modale « À propos » |
| Mode Cinématique | Bouton 🎬 Cinéma dans la sidebar |
| Capture d'écran HD | Bouton 📸 Capture dans la sidebar |
| Zen Mode (Immersif) | Touche H au clavier |
Pulse/
├── index.html # Application complète (HTML + CSS + JS inline)
└── README.md # Ce fichier
L'application est volontairement contenue dans un fichier unique pour une portabilité maximale — ouvrable directement dans n'importe quel navigateur sans configuration.
- Conway, J.H. (1970) — The Game of Life. Automate cellulaire fondateur, popularisé par Martin Gardner dans Scientific American.
- Lotka, A.J. (1925) — Elements of Physical Biology. Première formulation des équations proie-prédateur.
- Volterra, V. (1926) — Variazioni e fluttuazioni del numero d'individui in specie animali conviventi. Formulation indépendante appliquée aux données de pêche adriatique.
- Dewdney, A.K. (1984) — Sharks and Fish: Wa-Tor. Modèle d'automate proie-prédateur sur grille toroïdale, inspiration directe de P.A.E.S.
- Wolfram, S. (2002) — A New Kind of Science. Référence sur la complexité émergente des automates cellulaires.
Créé par l'équipe EvodevsTeam — Digital Evolution Collective · Ngaoundéré