Skip to the content.

Navigation: page “Mission Maker” du site de documentation VEAF


🚧 TRAVAUX EN COURS 🚧

La documentation est en train d’être retravaillée, morceau par morceau. En attendant, vous pouvez consulter l’ancienne documentation.


Table des matières

Introduction

Le module SkynetIadsHelper construit automatiquement des réseaux IADS Skynet à partir des groupes présents dans la mission.
Le module SkynetIadsMonitor offre des outils statiques et dynamiques pour surveiller l’état et la composition des réseaux IADS Skynet.

Principes

Synet-IADS est un script qui pilote les systèmes radar antiaériens afin qu’ils optimisent leur survivabilité et leur léthalité en restant éteints le plus possible. Il simule ainsi un IADS (Integrated Air Defence System) dans lequel les EWR (Early Warning Radar) scannent le ciel pour repérer et surveiller des contacts, et communiquent ces informations aux sites SAM (Surface-to-Air Missile), permettant à ceux-ci de ne s’activer que lorsqu’ils sont en capacité d’engager un contact.

Skynet-IADS change complétement la manière dont fonctionnent les défenses antiaériennes dans DCS. Il est ainsi quasi indispensable à toute mission qui comporte des radars au sol. Malheureusement, sa configuration nécéssite de mettre en place et de maintenir un script dans chaque mission, script dont la complexité augmente avec la taille de la mission. Les modules VEAF documentés ici automatisent la construction de ce script et offrent des outils pour consulter et vérifier les réseaux ainsi créés.

SkynetIadsHelper

Ce module construit automatiquement des réseaux IADS Skynet à partir des groupes présents dans la mission.
Pour cela il va parcourir la liste de tous les groupes de la mission, et ajouter ceux qui sont éligibles dans les réseaux IADS Skynet. Cette initialisation des réseaux se fait au démarrage de la mission (avec un délai paramétrable) sur la base des groupes qui existent à ce moment. Les groupes en activation retardée sont intégrés, mais pas les groupes qui seront générés plus tard par script lors de la vie de la mission.

Le module va toujours créer deux réseaux Skynet : un pour la coalition blue, un pour la coalition red.

Initialisation

Le module est activé par défaut dans les templates de mission VEAF.
L’initialisation se fait sur le modèle suivant :

if (veafSkynet) then
    veafSkynet.PointDefenceMode = veafSkynet.PointDefenceModes.Skynet
    veafSkynet.GroupIntegrationMode = veafSkynet.GroupIntegrationModes.Strict
    veafSkynet.DynamicSpawn = false
    veafSkynet.DelayForStartup = 5
    veafSkynet.initialize(
        false, --includeRedInRadio=true
        false, --debugRed
        false, --includeBlueInRadio
        false --debugBlue
    )
end

Fonction initialize

La fonction d’initialisation veafSkynet.initialize prend des paramètres qui seront passés aux réseau Skynet générés pour leur dire s’ils doivent reporter des informations.

includeInRadio ajoute une entrée radio F10 pour afficher ou masquer l’état du réseau.
debug active l’affichage de l’état du réseau, et des logs détaillés sur le comportement de celui-ci.

Point defences

Le module peut identifier les sites SAM capables d’intercepter des missiles antiradar, et essayer des les affecter en défense rapprochée d’autres élements du réseau à proximité.
La propriété générale veafSkynet.PointDefenceMode pilote cette mécanique. Elle est à positionner avant le initialize. Les valeurs possibles sont décrites dans l’énumeration veafSkynet.PointDefenceModes :

Si la création de défenses rapprochée est souhaitée, le mode Skynet devrait être l’option à retenir. Le mode Dcs donne la possibilité d’avoir des défenses potentiellement plus efficaces mais aussi plus vulnérables (car toujours allumées).

Mode d’intégration des groupes

La propriété générale veafSkynet.GroupIntegrationMode permet de choisir les critères que le module utilise pour décider si un groupe DCS doit être intégré dans les réseaux Skynet. Elle est à positionner avant le initialize. Les valeurs possibles sont décrites dans l’énumeration veafSkynet.GroupIntegrationModes :

Cette propriété a un impact sur l’intégration des groupes “mixtes” dans les réseau. Typiquement, un convoi composé de tanks et transports, escorté par des SA-19, sera intégré en Lenient mais pas en Strict.

Un groupe connu de Skynet est en règle générale un radar, un lanceur, ou une unité antiaérienne autonome (AAA, SA-15…)

Intégration dynamique de groupes générés en cours de mission

Les réseaux Skynet construits par SkynetIadsHelper sont initialisés au démarrage de la mission, sur la base des groupes existants à ce moment (qu’ils soient déjà présents ou en activation retardée).
Le module peut aussi surveiller les groupes générés au cours du déroulement de la mission, et les intégrer dans les réseaux existants quand applicable. L’activation de cette mécanique est pilotée par la propriété générale veafSkynet.DynamicSpawn.

Cette propriété peut être modifiée n’importe quand, permettant d’activer ou désactiver la surveillance des unités générées selon les besoins de la mission.

Le module VeafSpawn ajoute les unités au sol qu’il génère dans les réseaux Skynet lorsque cela est applicable. Cette mécanique est désactivée quand veafSkynet.DynamicSpawn est à true.

Début de l’initialisation

L’initialisation des réseaux Skynet par le module SkynetIadsHelper se fait après un délai qui peut être paramétré avec la propriété générale veafSkynet.DelayForStartup (temps d’attend en secondes, par défaut 1 seconde). Elle est à positionner avant le initialize.

Centres de commandement et bascule des réseaux en autonome

Le module propose des outils pour ajouter et détruire des Command Centers dans les réseaux Skynet.
Dans Skynet, un Command Center est une unité ou un statique dont dépend le fonctionnement d’un réseau. Si un réseau a au moins un Command Center, et que tous ses Command Centers sont détruits, il ne fonctionne plus et tous ses éléments basculent en autonome. Cette mécanique est intéressante pour donner des objectifs de mission, mais aussi peut donner un moyen simple de désactiver un réseau suite à un événement significatif de la mission.

Les élements autonomes restent allumés tout le temps et assurer eux-mêmes leur surveillance du ciel. Néanmoins ils bénéficient toujours des intelligences fournies par le script Skynet, en particulier ils sont toujours en capacité d’identifier un HARM et de s’éteindre pour lui échapper.

SkynetIadsHelper incorpore des outils pour maniupler les Command Centers des réseaux qu’il a construit.

veafSkynet.addCommandCenterOfCoalition(iCoalitionId, sCommandCenterName)
Cette fonction ajoute l’élement DCS nommé en tant que Command Center pour le réseau de la coalition. L’objet DCS peut être un groupe, une unité ou un statique.

veafSkynet.addCommandCenterOfCoalition(coalition.side.RED, "CommandCenterRed")

veafSkynet.destroyCommandCentersOfCoalition(iCoalitionId, iExplosionStrength) Cette fonction détruit (fait exploser) tous les Command Centers pour le réseau de la coalition. Attention, certains objets DCS ne sont pas destructibles par une unique explosion même de force maximale, en particulier les bunkers de commandement.

veafSkynet.destroyCommandCentersOfCoalition(coalition.side.RED)

Skynet IADS propose beaucoup d’autres options pour structurer les réseaux : noeuds de communication, générateurs électriques, etc. Si le créateur de la mission souhaite exploiter ces options, il ne devrait pas passer par SkynetIadsHelper, mais construire lui-même son réseau manuellement.

Exemple d’utilisation pour une bascule en autonome d’un réseau

Dans cet exemple, on a préparé dans l’éditeur, dans un recoin inutilisé de la carte :

local function SkynetNetworkEnable(iCoalition)
    veaf.loggers.get(veafSkynetMonitor.Id):info("SkynetNetworkEnable " .. CoalitionString(iCoalition))
    local veafSkynetNetwork = veafSkynet.getNetwork(veafSkynet.defaultIADS[tostring(iCoalition)])
    local iads = veafSkynetNetwork.iads

	if (#iads:getCommandCenters() > 0 and iads:isCommandCenterUsable()) then
        veaf.loggers.get(veafSkynet.Id):trace("Network is already enabled")
        return
    end

    local sCommandCenterTemplateName = "SkynetCommandCenter" .. CoalitionString(iCoalition)
    local commandCenterTemplate = Group.getByName(sCommandCenterTemplateName)
    if (not commandCenterTemplate) then
        veaf.loggers.get(veafSkynet.Id):trace("Command center template group not found : " .. sCommandCenterTemplateName)
        return
    end

    local commandCenterData = mist.cloneInZone(sCommandCenterTemplateName, "SkynetCommandCenterZone")
    veafSkynet.addCommandCenterOfCoalition(iads:getCoalition(), commandCenterData.name)
    veaf.loggers.get(veafSkynet.Id):trace("Command center added [" .. commandCenterData.name .. "]")
end

local function SkynetNetworkDisable(iCoalition)
    veafSkynet.destroyCommandCentersOfCoalition(iCoalition)
end

Désactivation d’un réseau

veafSkynet.deactivateNetworkOfCoalition(iCoalitionId, elementStates)

La désactivation d’un réseau Skynet consiste en deux étapes :

Les états possibles sont décrits par la propriété générale veafSkynet.SkynetElementStates :

veafSkynet.deactivateNetworkOfCoalition(coalition.side.RED)

Accéder aux réseaux IADS générés

Dans certains cas, il peut être utile au créateur de mission d’accéder aux réseaux IADS générés par SkynetIadsHelper. Cela peut se faire uniquement une fois que l’initialisation est terminée et doit donc être fait dans une tâche parallème qui attendra la fin de l’initialisation.

local assignRedIadsTaskId = nil
local myRedIads = nil

local function AssignRedIadsTask()
    if (not veafSkynet) then
        mist.removeFunction(assignRedIadsTaskId)
        return
    end

    if (veafSkynet.initialized) then
        mist.removeFunction(assignRedIadsTaskId)
        local veafSkynetNetwork = veafSkynet.getNetwork(veafSkynet.defaultIADS[tostring(coalition.side.RED)])
        myRedIads = veafSkynetNetwork.iads
    else
        veaf.loggers.get(veaf.Id):trace("waiting for Skynet IADS helpers to finish initialization")
    end
end

assignRedIadsTaskId = mist.scheduleFunction(AssignRedIadsTask, {}, timer.getTime() + veafSkynet.DelayForStartup + 1, 10)

SkynetIadsMonitor

Le module SkynetIadsMonitor offre des outils statiques et dynamiques pour surveiller l’état et la composition des réseaux IADS Skynet. Il permet principalement de construire des descriptifs textuels des réseaux Skynet, afin de vérifier leurs structures.

A compléter

Contacts

Si vous avez besoin d’aide, ou si vous voulez suggérer quelque chose, vous pouvez :