Versions d'entraînement par rôle¶
Une soirée de mission est plus courte quand les pilotes ont déjà volé le cadre.
Avec un bloc training: dans mission.yaml, le build produit, à côté de la mission de la soirée, des versions d'entraînement sur le même cadre : même théâtre, même date et heure, même météo et même vent, mêmes événements scriptés, mêmes plans de vol et mêmes slots.
Chaque version met la mission dans l'état « les autres rôles ont fait leur travail », et ce que le briefing ne précise pas y change à chaque lancement : on s'entraîne sans apprendre par cœur la mission du soir.
Ce que produit le build¶
| Fichier | Pour qui | Ce qui change par rapport à la soirée |
|---|---|---|
<mission>.miz |
la soirée | rien : c'est la mission définitive |
<mission>_TRAINING_A2G.miz |
les pilotes air-sol | ni CAP ennemie, ni QRA, ni SAM longue portée |
<mission>_TRAINING_CAP.miz |
les pilotes air-air | plus de cibles A2G, mais toutes leurs défenses aériennes restent ; la QRA est armée dès le départ |
<mission>_TRAINING_SEAD.miz |
les pilotes SEAD | ni CAP ennemie, ni QRA, plus de cibles A2G ; les SAM longue portée restent |
<mission>_TRAINING_ALL.miz |
l'entraînement commun | rien n'est retiré |
Le briefing est le même pour toutes. Dans les versions d'entraînement qui les gardent, les éléments décrits de façon vague par le briefing sont tirés au sort à chaque lancement (voir plus bas).
Classer la mission : elements¶
Chaque entrée dit ce qu'est un élément de la soirée, avec exactement un sélecteur :
| Sélecteur | Désigne |
|---|---|
groups |
des groupes de l'éditeur, par nom exact ou par motif ("SA-10 *") |
zone |
une combat zone déclarée dans modules.COMBATZONE, avec tous les groupes qu'elle capture |
qra |
une QRA déclarée dans modules.QRA.definitions, par son name |
cap_mission |
une CAP à la demande de cap_missions, par son group_name |
Et un kind parmi :
kind |
A2G | CAP | SEAD | Commun |
|---|---|---|---|---|
enemy_cap — CAP ennemie, vol IA ou CAP à la demande |
retirée | gardée | retirée | gardée |
qra |
retirée | gardée et armée | retirée | gardée |
sam_lr — SAM longue portée |
retiré | gardé | gardé | gardé |
a2g_target — cible air-sol |
gardée | retirée | retirée | gardée |
sam_threat — SAM qui protège une zone A2G, ou objectif secondaire SEAD |
gardé | gardé | gardé | gardé |
Un élément que personne ne déclare reste dans toutes les versions.
En CAP, toute défense aérienne reste — SAM, radar ou AAA, déclarée ou non, même dans une zone a2g_target : une CAP traverse les SAM de la zone quoi qu'aient fait les avions d'attaque.
Un groupe compte comme défense aérienne quand toutes ses unités sont antiaériennes ou de soutien (radar, camion de ravitaillement) : une colonne de chars escortée d'un Tunguska est une cible, et part.
En SEAD, seuls les SAM déclarés restent (sam_lr, sam_threat) : les autres groupes d'une zone a2g_target partent avec ses cibles.
Les éléments vagues : randomize¶
Ce que le briefing précise (type et nombre : « 4 chars protégés par un SA-8 ») reste tel quel.
Ce qu'il décrit vaguement (« un SA-6 avec des défenses autour », « une colonne de blindés ») se déclare dans randomize : dans les versions d'entraînement, les groupes qu'il remplace quittent leur place, et une combat zone tire à chaque lancement parmi ses candidats.
training:
elements:
- groups: ["SA-10 Gudauta"]
kind: sam_lr
- zone: Factory
kind: a2g_target
- groups: ["Factory-SA-6"]
kind: sam_threat
randomize:
- name: factory-def # lettres, chiffres, - et _
replaces: ["Factory-SA-8 *"] # les groupes figés de la soirée
pool:
- group: "Factory-SA-8 #1" # un groupe de la soirée, repris tel quel
- command: -sa15 # un raccourci VEAF (list_shortcuts)
- units: [{type: Strela-10M3, count: 2}] # un groupe créé à partir de types DCS
count: 1-2 # combien en tirer : un nombre ou min-max
radius: 500-2000 # dispersion autour de leur position, en mètres
Trois sortes de candidats :
group: un des groupes remplacés, repris tel quel — type, unités, emport, niveau. Il doit figurer dansreplaces.command: un raccourci VEAF, porté par une unité du même genre que les groupes remplacés (un SA-8 pour-sa15), pour que l'éditeur dessine le bon cercle de menace ;carrier: <type DCS>en choisit une autre.units: un groupe au sol que le build crée à partir de types DCS.
Le tirage se fait au lancement de la mission, par les marqueurs de combat zone (#spawngroup, #spawncount, #spawnradius) que le build écrit dans le nom des unités : chaque lancement donne un autre résultat.
Si les groupes remplacés appartiennent déjà à une combat zone de la soirée, le tirage se fait dans cette zone ; sinon le build pose une zone TRAINING-<name> autour d'eux, active dès le départ, sans menu radio.
at: {x, y} place le tirage ailleurs que sur les groupes remplacés.
Un tirage est ce qu'il tire, et suit les règles de ce type d'élément : des blindés tirés dans une zone a2g_target sont des cibles A2G, et disparaissent des versions CAP et SEAD avec les groupes qu'ils remplacent.
Par défaut, un tirage prend le type de la combat zone où il vit ; s'il ne remplace que des défenses aériennes (« des défenses autour du SA-6 »), c'est une menace (sam_threat) et il reste partout ; hors de toute zone, il reste partout.
kind: sur l'entrée donne le type soi-même.
label: sur un élément ou un tirage donne le nom qu'un pilote lira dans le briefing (« Chars et BMP-2 de Khan Arnabah ») ; sans lui, le briefing affiche le nom de la zone, de la QRA, ou des groupes.
Dans le briefing¶
build_mission_briefing ajoute à la fin du deck et du PDF une page par version : chaque élément déclaré et ce qu'il devient dans la version (gardé, retiré, cibles retirées et défenses gardées, tiré au sort), puis la mission à charger.
Le contenu est calculé avec les règles mêmes du build : il dit ce que contient le .miz.
Ce qui est refusé, et pourquoi¶
Le build et validate_mission refusent le bloc, en nommant chaque problème :
- un sélecteur qui ne désigne rien, une zone, une QRA ou une CAP inconnue ;
- un groupe déclaré deux fois avec deux
kinddifférents, ou à la fois classé et tiré au sort ; - un candidat
groupabsent dereplaces, un raccourci inconnu, un type DCS inconnu ou qui n'est pas une unité au sol ; - un
countplus grand que le nombre de candidats ; - un groupe repris dans un tirage et nommé ailleurs — par un script de trigger, un module de
mission.yamlou un script de la mission. Pour que la zone le capture, le build doit le renommer, ce qui casserait cette référence sans aucun message de DCS ; le garder figé, ou le remplacer par de nouveaux candidats ; - un groupe repris qui porte un
#veafInterpreter: sa commande s'exécute une fois au démarrage, il ne reste rien à tirer ; training:à côté debuild_variants:: la combinaison donnerait huit missions que personne n'a demandées.
Construire¶
Rien de plus que le build habituel, depuis le dossier de la mission :
.\veaf-tools.exe build
Le build annonce les cinq missions, puis, pour chaque version d'entraînement, combien de groupes il a retirés et combien de tirages il a posés.
Pour une seule version : .\veaf-tools.exe build --profile TRAINING_SEAD.
Avec l'assistant IA¶
Dis-lui « génère aussi les versions d'entraînement ».
Il propose un classement à partir des données de la mission (propose_training_plan), le confronte au briefing pour séparer le précis du vague, te le montre, puis l'écrit (set_training_plan) et construit.
Voir le catalogue des actions.