Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 

Repository files navigation

🟢 P · A · E · S
Pulsar Automata Ecosystem Simulation

Version 2.0 Three.js JavaScript Zero Dependencies License MIT


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.

✨ Fonctionnalités

Moteur & Rendu 3D

  • Rendu Three.js avec InstancedMesh pour des performances optimales.
  • Post-Processing (NOUVEAU) : EffectComposer et UnrealBloomPass activé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 Uint8Array pour une mise à jour matricielle sans biais d'ordre.
  • Boucle de rendu fluide par requestAnimationFrame.

Interactivité

  • 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…

Monitoring

  • 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.

Interface & UX

  • Mode Cinématique (Zen Mode) : Raccourci H pour 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 premiumbackdrop-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.

16 Presets Scénarisés

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.


🔬 Modèle Scientifique

Les Entités

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

Voisinage de Moore (N₈)

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) )

Mécanismes de Stabilisation

Deux innovations clés évitent l'extinction rapide typique des automates proie-prédateur :

  1. Chasse probabiliste — Le renard n'attrape pas systématiquement sa proie. Le paramètre P_chasse (0–100%) module le taux de réussite.
  2. 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.

Correspondance avec Lotka-Volterra

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)

Tableau des Paramètres

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

🛠️ Stack Technique

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.


🚀 Installation & Exécution

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

Contrôles

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

📁 Structure du Projet

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.


📚 Références Scientifiques

  1. Conway, J.H. (1970) — The Game of Life. Automate cellulaire fondateur, popularisé par Martin Gardner dans Scientific American.
  2. Lotka, A.J. (1925) — Elements of Physical Biology. Première formulation des équations proie-prédateur.
  3. 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.
  4. 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.
  5. 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é

About

P.A.E.S. (Pulsar Automata Ecosystem Simulation) est une simulation interactive de chaîne alimentaire basée sur un automate cellulaire à grille 2D discrète. Elle s'inscrit dans la lignée du Jeu de la Vie de John Conway (1970) et du modèle Wa-Tor d'A.K. Dewdney (1984).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages