Skip to content

Système Social d'Intelligence Collective ​

Paramètre SystèmeValeur
Classe Principalenet.dasik.social.core.GlobalSocialSystem
Classe de Registrenet.dasik.social.core.SocialRegistry
Fréquence d'Impulsion1 tick (Règle Highlander)
Complexité de Recherche$O(1)$ HashMap Partitionnée
Stratégie de Purge MémoireNettoyage automatique via isAlive() et isRemoved()

⚡ Présentation & Règle Highlander ​

Le Système Social d'Intelligence Collective (Hive Mind) est le moteur central d'orchestration de Dasik Library. Au lieu de laisser des centaines d'entités sociales exécuter indépendamment des requêtes spatiales lourdes à chaque tick, Dasik Library utilise un coordinateur unique à impulsion globale (GlobalSocialSystem).

👑 La Règle Highlander (« Il ne peut en rester qu'un ») ​

GlobalSocialSystem garantit qu'exactement un cycle d'impulsion global est exécuté par tick de serveur ($20\text{ ticks} = 1\text{s}$). Si plusieurs threads ou sous-systèmes tentent de déclencher une pulsation dans le même tick, GlobalSocialSystem ignore les appels redondants :

$$\text{Global Pulse Execution} = \begin{cases} \text{Execute Ticks}, & \text{if } \text{currentTick} > \text{lastTick} \ \text{Skip (No-Op)}, & \text{if } \text{currentTick} \le \text{lastTick} \end{cases}$$

ascii
[ Server Level Tick ]
         │
         ▼
 ┌──────────────────────┐
 │ GlobalSocialSystem   │  ◄── Highlander Rule Guard (1 tick per server tick)
 └──────────┬───────────┘
            │
            ▼
 ┌──────────────────────┐
 │   SocialRegistry     │  ◄── O(1) Shard Lookup & Dead Entity Purge
 └──────────┬───────────┘
            │
      ┌─────┴────────────────┐
      ▼                      ▼
 ┌──────────────┐      ┌──────────────┐
 │ Entity 1     │      │ Entity N     │
 │ Mood Task    │      │ Mood Task    │
 └──────────────┘      └──────────────┘

🗂️ Architecture de SocialRegistry ​

La SocialRegistry organise les entités sociales actives par espèce et identifiant d'univers (UUID) :

  • Enregistrement en $O(1)$ : Les entités s'enregistrent via SocialRegistry.register(SocialEntity entity).
  • Purge Automatique : Les références périmées (chunks déchargés, entités mortes) sont éliminées pendant la boucle d'impulsion via entity.dasik$asEntity().isAlive() et isRemoved().
  • Partitionnement par Espèce : Les entités sont indexées par dasik$getSpeciesId(), ce qui permet des requêtes de voisinage ultra-rapides pour les meutes et nuées sans parcourir le monde entier.

💻 Exemple de Code Développeur ​

java
// Registering an entity to the Hive Mind
public class CustomSocialMob extends PathfinderMob implements SocialEntity {
    private final EntitySocialScheduler scheduler = new EntitySocialScheduler();

    @Override
    public void tick() {
        super.tick();
        if (this.level() instanceof ServerLevel serverLevel) {
            SocialRegistry.register(this);
            GlobalSocialSystem.pulse(serverLevel);
        }
    }

    @Override
    public SocialScheduler dasik$getScheduler() {
        return this.scheduler;
    }
}

🔗 Pages Liées ​

Official documentation & web portal for Dasik Igaijinn mods.