À propos du projet
SwarmingLilMen est un moteur expérimental pour les systèmes multi‑agents émergents, actuellement basé sur une simulation 2D de boids/essaim construite à partir de principes fondamentaux en C#/.NET 8.0. Il privilégie l’émergence plutôt que le script : quelques règles de pilotage simples et composables génèrent des motifs macro riches. Le projet est en phase de développement précoce (GPL‑3.0‑only) et subit une transition architecturale d’une approche système pilotée par agrégats vers des règles de pilotage de style Reynolds testables de façon indépendante.
Deux implémentations coexistent côte à côte : un pipeline par défaut Legacy (systèmes de pilotage SoA pilotés par agrégats avec boids en grille uniforme et rendu interactif Raylib) et un chemin Canonical (échafaudage plus trois règles de pilotage, activé via --canonical). Le contrat de perception/index spatial canonical et l’application du budget de forces sont implémentés, mais l’UX d’instrumentation, les scénarios comportementaux prescrits, la sémantique multi‑groupe et les benchmarks canoniques restent à définir.
Parmi les capacités démontrées figurent la disposition Structure‑of‑Arrays (SoA) pour l’efficacité du cache ; des chemins Legacy et Canonical à pas fixe avec une couverture exacte de 500 ticks d’ordre cinématique‑hash ; des structures de données de génome d’agent et une API de mutation ; des paramètres de simulation configurables avec des préréglages (balanced, strong‑separation, tight‑flocking, fast‑loose, slow‑cohesive) ; le pipeline Legacy de boids en grille uniforme et le rendu interactif Raylib ; un rendu canonique à groupe unique opt‑in avec instrumentation du pilotage ; ainsi qu’une suite de tests xUnit dont le sous‑ensemble non‑performance constitue la porte d’entrée du CI. Une suite BenchmarkDotNet est disponible pour la mesure des performances.
Le pipeline système reconstruit une grille uniforme puis exécute, à chaque tick, les systèmes Sense, Behavior, Wander et Integrate. Les principes de performance incluent des chemins critiques conscients des allocations, l’absence de LINQ/délégations/boxing dans les boucles internes, des boucles for serrées avec invariants remontés, et des appels directs/static plutôt que du dispatch virtuel. Les objectifs de performance de 50 k‑100 k agents à 60 FPS en interaction et plus de 1 M en mode sans affichage sont explicitement indiqués comme non atteints ; la mesure à 50 k dépasse le budget de 16,67 ms/tick de plus d’un ordre de grandeur, et le débit canonical, le FPS du rendu et les allocations par tick ne sont pas mesurés.
Le projet fournit également des démonstrations autonomes en JavaScript pour le navigateur : Boids Basic (algorithme de Reynolds avec réglage de paramètres en temps réel), Self‑Propelled Particles/Vicsek Model (transitions de phase dans la matière active avec suivi du paramètre d’ordre), Ant Colony Optimization (recherche de chemin basée sur la stigmergie avec traces de phéromones) et Particle Swarm Optimization (optimisation globale continue avec visualisation du paysage de fitness). Ces démos ne nécessitent aucune installation et servent à l’itération rapide, aux démonstrations, à l’apprentissage et au prototypage.
Les phases de la feuille de route comprennent les interactions/combat/métabolisme multi‑groupe (Phase 3), la reproduction/évolution/dérive des traits (Phase 4), l’optimisation SIMD/parallélisation/NativeAOT (Phase 5) et des préréglages de scénarios supplémentaires/relecture/métriques avancées (Phase 6). La pile technologique comprend C# 12 sur .NET 8.0, Raylib‑cs 7.0.2 pour le rendu, xUnit 2.9.3 pour les tests et BenchmarkDotNet 0.15.6 pour le benchmarking.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.