====== L'optimisation des IA dans Arma Reforger : le système de LOD ====== ===== Paramétrage global : deux budgets pour les IA ===== Arma Reforger optimise les IA selon deux systèmes de budget : - Le nombre total d'IA dans le monde. Si le nombre total est atteint, aucune nouvelle IA ne peut être spawnée. - Le nombre total d'IA actives //simultanément//. Si le nombre total est atteint, aucune nouvelle IA ne peut être activée. Ces deux paramètres sont exposés et modifiables dans le prefab ''%%SCR_AIWorld%%'' du terrain, via les propriétés ''%%AILimits%%''. ===== Le système de simulation dynamique des IA ===== Bohemia utilise le terme de LOD - Level Of Detail pour qualifier le niveau de simulation des IA : * LOD 0 (pleinement actif) : l'agent exécute son Behavior Tree, perçoit l'environnement, calcule ses déplacements, gère son inventaire, communique avec son groupe — tout tourne en temps réel. * LOD 9 (dormant) : l'agent existe en mémoire mais n'exécute rien. Il est figé. Son corps est présent dans le monde mais il ne réagit à rien, ne se déplace pas. * LOD intermédiaire : le moteur peut réduire la fréquence de mise à jour du BT, simplifier la perception, désactiver certains sous-systèmes — sans mettre l'agent complètement en veille. Le moteur fait varier le LOD en fonction de la distance d'une caméra par rapport au groupe. Lorsqu'une caméra (joueur ou game master) est proche d'un groupe, le LOD est faible, voire à zéro. Lorsque la caméra est éloignée de plusieurs centaines de mètres, le LOD est à 9 et le groupe est totalement inactif (il ne répond à aucun ordre). ===== Forcer un groupe pour qu'il soit toujours actif ===== Si vous voulez que des groupes éloignés des joueurs restent actifs (ex. renforts très lointains, mortiers, etc.), il faut forcer le LOD à 0, sans quoi, ces groupes n'exécuteront aucun ordre. À l'heure où cet article est écrit (1.6.0.119), la propriété du prefab ''%%SCR_AIGroup%%'' de Bohemia permettant de forcer un groupe d'IA en LOD0 est buguée. Heureusement, GDC AR Lib propose une alternative : il suffit d'ajouter le composant ''%%GDC_ForceGroupActiveLODComponent%%'' au groupe en question. Ce composant se trouve là : ''%%GDC AR Lib>scripts>Game>GDC>AI%%''.