Releases: VEAF/CTLD
Release list
CTLD dev build (3460444)
This is not a release. It is the tool built from the latest merge into develop:
unreleased, and tested only by whatever CI ran on that commit. Take it when someone asks
you to try something; otherwise download a release from the
Releases page.
ctld-tools.exe --version prints the commit this build came from — quote it in any bug
report. As with every release, Windows will flag the unsigned executable on first run;
the installation notes
say how to get past it.
CTLD.lua is attached too, for anyone wiring a mission by hand.
CTLD v2.0.0-rc6
CTLD 2.0.0-rc6 — release candidate
Installation
- Download
ctld-tools.exebelow — it is the only file you need. - Run it: the tool opens in your browser, locally, with nothing to install.
- Open your
.miz, adjust what you want, then Install into mission: the tool writes CTLD, the
beacon sounds and your configuration into it.
Windows blocks it on the first run? The tool is not code-signed, so SmartScreen stops it: click
More info → Run anyway. If the file came through a browser you may also need right-click →
Properties → tick Unblock → OK.
Prefer doing it by hand? The files are attached to this release too — see the
documentation.
If you installed a mission with rc5, re-install it with this version. rc5's installer made your
beacon sounds play out loud at mission start — a beacon tone every connected player heard. The engine
is unchanged; re-installing over rc5's work fixes it in place.
What's fixed
- The beacon sounds no longer play out loud at mission start. rc5 added a trigger referencing the
two sound files, which is what stops the Mission Editor from deleting them — but it played them to
everyone. The trigger now addresses a country your mission does not use, so the files stay
registered and nobody hears a thing. This is the same technique the manual instructions have always
described, now done for you.
Also in this release
-
The documentation says what to do when Windows blocks the tool.
ctld-tools.exeis not
code-signed, so Windows stops it on a first run behind a screen that reads like a virus warning. The
way past it is now written down — in the release page above, in the README, and in the mission maker
guide. -
The README matches the tool again. It still described configuring CTLD by hand-editing Lua
tables, a model replaced some time ago, and its installation section predatedctld-tools
entirely. It is now a short entry point that links the published guides.
Nothing to change in your configuration
No setting added, renamed or removed. The engine is rc5's apart from its version stamp — everything
in this release is in the tool and the documentation.
Contributors
FullGas (lead developer), Zip (technical support) — VEAF.
The sound fix is Zip's: he specified the right technique from the start, and this release is what it
should have been in rc5.
CTLD v2.0.0-rc5
CTLD 2.0.0-rc5 — release candidate
Installation
- Download
ctld-tools.exebelow — it is the only file you need. - Run it: the tool opens in your browser, locally, with nothing to install.
- Open your
.miz, adjust what you want, then Install into mission: the tool writes CTLD, the
beacon sounds and your configuration into it.
Prefer doing it by hand? The files are attached to this release too — see the
documentation.
If you installed CTLD with rc4, re-install with this version. The engine is unchanged; the
installer was not. rc4 wrote the beacon sound files into your mission without registering them, and
the Mission Editor deletes files it sees as unreferenced the next time it saves — so a mission
installed with rc4 can lose its beacon sounds, and the beacons then go quiet with nothing to explain
it. Re-installing over rc4's work fixes it in place.
What's fixed
-
The beacon sounds stay in the mission. They now get a registration entry and a mission-start
trigger that references them, which is what tells the Mission Editor they belong to the mission.
That trigger plays both sounds at mission start; it runs before anyone is in a cockpit, so nobody
hears it. -
You can open a mission from the tool. Reading your configuration back out of a
.mizshipped
in rc4, but the file picker only listed.yamlfiles and the button read "Open a config file…", so
there was no way in unless you knew to switch the picker to "All files". The button is now
Open config or mission… and missions are listed by default.
Nothing to change in your configuration
No setting added, renamed or removed, and the engine is rc4's apart from its version stamp. If you
install by hand nothing changes for you either — but the same Mission Editor behaviour applies: a
sound no trigger references can be dropped when the mission is saved.
Contributors
FullGas (lead developer), Zip (technical support) — VEAF.
Both fixes in this release come from Zip using rc4 on a real mission, and the diagnosis of the sound
problem is his.
CTLD v2.0.0-rc4
CTLD 2.0.0-rc4 — release candidate
Installation
- Download
ctld-tools.exebelow — it is the only file you need. - Run it: the tool opens in your browser, locally, with nothing to install.
- Open your
.miz, adjust what you want, then Install into mission: the tool writes CTLD, the
beacon sounds and your configuration into it.
Prefer doing it by hand? The files are attached to this release too — see the
documentation.
CTLD 2.0 is a complete rewrite of the CTLD v1 script: the monolith becomes a set of testable
Lua modules (Manager/Entity object design), covered by continuous integration — one build, more than
1,100 unit and functional tests, plus integration tests in a live DCS.
This rc4 is about the three steps above. Until now, adding CTLD to a mission meant fetching the
script, fetching two sound files from the repository, dropping them into the .miz, adding a trigger
by hand, and only then running the tool for the configuration. Five steps, none of them announced —
and one of them, the sound files, silently left every beacon in the mission mute when it was missed.
Now there is one file to download and one button to press.
What's new
-
The tool installs CTLD, not just its configuration.
ctld-tools.execarries the engine and
both beacon sounds; Install into mission… writes them into your.mizalong with your
configuration and the two MISSION START triggers that load them, in the right order. It then tells
you what it wrote — engine version, files, triggers, how many settings differ from the defaults —
so you can check without opening the mission in the editor. Installing again replaces the previous
install rather than leaving a second copy behind. -
Open a mission and get its configuration back. Point the tool at a
.mizyou configured last
month and your settings return, ready to edit. Missions prepared with rc1, rc2 or rc3 are read too,
even though their configuration was stored differently. -
"Disembark Troops" now appears in flight, whenever fast-rope insertion is enabled and troops
are aboard. The entry used to be drawn only on the ground, which made fast-rope impossible to
trigger from the F10 menu — the feature existed and the menu hid it. Clicking it when the
conditions are not met now tells you which one: too high, or too fast, as two distinct messages. -
CTLD's interface language is settable from the tool. It always worked in a hand-written
configuration but never appeared in the app — reported by FullGas. It now sits in the General
family, with the four languages CTLD ships: English, French, Spanish, Korean. -
A help button that leads somewhere. The panel already described the configuration you had open;
it now also links the documentation for the version you are running — getting started, every
setting explained, zone setup, and the guide for anyone coming from CTLD v1 — and shows the CTLD
version, which is the thing to quote when reporting a problem. -
The beacon sounds are attached to this release.
beacon.oggandbeaconsilent.oggused to live
only in the repository, while the documentation said a mission needs them or its beacons stay
silent. Installing by hand is now possible from this page alone. -
The documentation is published per version. Each release gets its own copy of the pages, so a
mission built on an older CTLD can still be read against the documentation that matched it.
Nothing to change in an existing mission
No breaking change, no setting renamed or removed in this release. If you install by hand, keep doing
so — the script and the sound files are attached below, and the manual path stays documented as the
alternative rather than being dropped.
Contributors
FullGas (lead developer), Zip (technical support) — VEAF.
Two of this release's changes come straight from FullGas: the fast-rope menu fix, and spotting that
CTLD's own interface language could not be set from the tool.
CTLD v2.0.0-rc3
CTLD 2.0.0-rc3 — version candidate
CTLD 2.0 est une réécriture complète du script CTLD v1 : le code monolithique devient un
ensemble de modules Lua testables (architecture orientée objet Manager/Entité), couvert par une
intégration continue — build unique, plus de 1 100 tests unitaires et fonctionnels, plus des tests
d'intégration en DCS réel.
Cette rc3 fait parler CTLD. La plupart de ce qu'elle apporte tient en une idée : ce qui était
silencieux ou inaccessible devient dit ou appelable. Un point logistique se déclare par type
d'appareil au lieu d'être nommé unité par unité, une balise se pose depuis un script sans qu'un
pilote soit aux commandes, une zone d'embarquement posée sur un porte-avions suit enfin le
porte-avions — et trois situations qui vous étaient cachées sont désormais annoncées au démarrage.
Elle ajoute aussi les Gazelle et le Yak-52, absents du catalogue depuis le début.
Nouveautés
-
Déclarez vos points logistiques par type d'appareil. Le nouveau réglage
logisticUnitTypes
prend des noms de types DCS : chaque unité et chaque objet statique de la mission dont le type
y figure devient un point logistique, sans que vous ayez à le nommer. La zone suit l'objet, donc un
porte-avions garde son point logistique en route. Plus besoin de recopier dix noms d'unités d'une
mission à l'autre :logisticUnitTypes: - Stennis - CVN_71 - FARP Ammo Dump Coating
Un type listé qu'aucun objet de la mission ne porte n'est pas une erreur : c'est un catalogue,
réutilisable tel quel d'une mission à l'autre. -
Idem pour les points d'embarquement sur navire, avec
troopZoneShipTypes. Chaque navire du
type listé devient un point d'embarquement à stock illimité, ancré au bâtiment. -
Une balise radio peut être posée par un script. Jusqu'ici, tout passait par le menu F10 d'un
pilote : une FARP construite par script ne pouvait pas porter de balise.createAtPoint()la pose
en un point quelconque et rend ses trois fréquences ;removeBeacon()la retire par son nom :local beacon = CTLDBeaconManager.getInstance():createAtPoint( point, coalition.side.BLUE, country.id.USA, { name = "FARP Alpha NDB", batteryMinutes = -1 }) -- beacon:freqText() → "245.00 kHz - 350.50 / 45.20 MHz"
-
Cinq appareils de plus. Les quatre Gazelle (
SA342L,SA342M,SA342Minigun,
SA342Mistral) et le Yak-52 ont enfin leurs capacités déclarées : un soldat, pas de caisse —
ce que la v1 leur donnait. Leurs pilotes récupèrent le transport de troupes, les balises et les
fumigènes.
Changements importants pour les concepteurs de mission
non par choix, mais parce qu'il ne figurait dans aucune des deux tables de capacités et héritait des
valeurs par défaut. CTLD 2 ne reprend pas ce comportement : un hélicoptère d'attaque monoplace n'est
pas un transport. Ses pilotes gardent le menu CTLD, le RECON et le statut JTAC ; ils perdent les
caisses, les troupes et les balises. Si votre mission en avait besoin, ajoutez l'entrée
vous-même — c'est de la configuration, pas du comportement moteur, et le guide de migration
explique comment.
-
Une zone d'embarquement posée sur un navire utilise un rayon de 200 m, la valeur de la v1, au
lieu de suivre le réglagemaximumDistancePackableUnitsSearch. Sans effet si vous n'aviez pas
modifié ce réglage. -
Pour les auteurs de scripts :
createAtZone(..., batteryLife = -1, ...)signifie désormais
« n'expire jamais ». Auparavant, cette valeur produisait une balise dont la batterie était déjà à
plat. -
Trois situations qui vous étaient cachées sont désormais annoncées au démarrage, dans le
rapport CTLD :- une configuration v1 qui porte encore
dropOffZones— ce réglage n'est pas lu par CTLD 2, et
le message vous indique son remplaçant (une entréeaiZonesavecisDropoff: true) ; - une zone IA ignorée parce que son nom est déjà pris par une autre zone ;
- un nom de type DCS que rien dans la mission ne pourra faire correspondre, refusé par
ctld-toolsavant même que la mission tourne.
- une configuration v1 qui porte encore
Corrections visibles en jeu
-
Une zone d'embarquement portée par un navire suit enfin son navire. Elle était figée à la
position du bâtiment au démarrage de la mission : un porte-avions appareillait et laissait son
point d'embarquement au milieu de l'eau, sans le moindre message. La v1 recalculait la position à
chaque vérification ; ce comportement est rétabli. Rien à changer dans vos missions. -
Une entrée
aiZonesignorée le dit. Quand son nom est déjà utilisé par une autre zone, elle
était écartée en silence et vous obteniez une zone IA qui ne faisait rien. Le piège est facile à
tendre : une zoneTRZ_dropzone1_B_0_nil_0occupe le nomdropzone1, donc une zone IA appelée
dropzone1— même s'il s'agit d'une zone de l'éditeur bel et bien différente — entrait en
collision avec elle. La correction tient dans deux noms distincts. -
ctld-toolsaccepte les unités moddées que vous déclarez. Le réglagemodTypesexiste
précisément pour cela, mais l'outil rejetait quand même une caisse moddée et bloquait l'export.
Documentation
- Le guide de migration v1 → v2 gagne deux sections : ce que devient
dropOffZones(avec un
exemple avant/après), et quels appareils sont des transports — dont l'explication du cas Ka-50. - La page Zones énonce une règle qui n'était écrite nulle part :
TRZ_,WPZ_, les zones IA et
la table héritéetroopZonespartagent un seul espace de noms, et la première zone
enregistrée l'emporte. - La page Configuration ne prétend plus qu'un appareil absent du catalogue n'a aucun menu CTLD :
il en a un, il ne transporte simplement rien. « Le menu est là mais il est vide » a maintenant une
cause documentée.
Contributeurs
FullGas (développeur principal), Zip (assistance technique) — VEAF.
Cette rc3 vient de l'audit d'intégration mené pour brancher les VEAF Mission Creation Tools sur
CTLD 2 : quatre manques y ont été trouvés, tous corrigés ici, et trois autres défauts ont été
découverts en chemin.
CTLD v2.0.0-rc2
CTLD 2.0.0-rc2 — version candidate
CTLD 2.0 est une réécriture complète du script CTLD v1 : le code monolithique devient un
ensemble de modules Lua testables (architecture orientée objet Manager/Entité), couvert par une
intégration continue — build unique, plus de 1 100 tests unitaires et fonctionnels, plus des tests
d'intégration en DCS réel.
Cette rc2 apporte le gros morceau attendu : un outil de configuration graphique, et avec lui
un nouveau modèle de configuration. Lisez la section « Changements importants » si vous avez déjà
configuré une mission pour la rc1.
Nouveautés
ctld-tools.exe— configurez CTLD sans écrire une ligne de Lua. Double-cliquez le fichier :
l'outil s'ouvre dans votre navigateur, en local, sans installation ni connexion. Tous les réglages
et tous les catalogues sont éditables — caisses, groupes de troupes, zones, capacités par appareil,
zones IA, modèles de caisse — avec recherche, libellés en clair, unités (m / kg / s), marqueurs de
valeur modifiée et retour au défaut en un clic. La validation tourne en continu et parle français.
Puis « Injecter dans la mission… » écrit la configuration directement dans votre.miz
(trigger MISSION START placé en premier). Interface FR / EN selon la langue de votre système.- Détection d'écart de version. À l'ouverture d'une configuration écrite pour une version
antérieure de CTLD, l'outil liste ce qui est apparu, ce qui a disparu et ce qui diffère du défaut,
avant réinjection. Jamais de fusion silencieuse. - Zones ancrées à une unité (Moving Zones). Une zone trigger attachée à une unité dans le
Mission Editor suit désormais son unité en direct — zones logistiques et zones de troupes. Unité
détruite = zone morte. - Rapport de démarrage unifié. Un bloc
=== CTLD_STARTUP_REPORT ===est écrit dansDCS.logà
chaque démarrage, cherchable même quand tout va bien, et un unique message écran apparaît s'il
y a un problème. Configuration saine = silence total. - Interface en français. Menus F10 et messages pilotes traduits (FR complet, ES/KO partiels), y
compris les sous-menus RECON et les messages du système AA qui restaient en anglais. Réglable par
mission viai18n_lang, qui est devenu un vrai réglage — plus besoin d'éditer une source. - Douze constantes deviennent des réglages — rayons de recherche et de collecte, distances de
réarmement et d'assemblage AA, plage de codes laser JTAC, poids par défaut, rayon de zone par
défaut. Mêmes valeurs qu'avant, désormais modifiables par mission. - Un réglage a maintenant exactement une valeur par défaut. 114 valeurs de repli en double dans
le code ont été supprimées ; cinq avaient déjà divergé du catalogue.
Changements importants pour les concepteurs de mission
CTLD_userConfig.lua ne porte plus des surcharges mais
toute la configuration, sous forme d'instantané YAML dans ctld.configUser. Les anciennes
méthodes ctld.yamlConfigDatas (bloc de scalaires) et ctld.userSetup (callbacks addCrate,
patchCrate…) n'existent plus. Reprenez votre configuration rc1 avec ctld-tools, qui part des
défauts courants et valide avant export.
Rien n'est fusionné, mais l'omission n'est pas uniforme : un réglage que vous omettez retombe sur
la valeur par défaut de CTLD et est nommé dans le rapport de démarrage à l'écran, alors qu'une
liste omise (une section de caisses, un groupe de troupes, une zone) est réellement absente —
c'est ainsi qu'on en retire une.
maxSlingloadSpeed : défaut corrigé de 50 à 26. La valeur est en mètres par seconde — 50
signifiait ~180 km/h, près du double de la limite d'un UH-1H, et ressemblait à une valeur saisie en
nœuds. 26 m/s ≈ 94 km/h. La caisse est donc larguée plus tôt qu'avant ; remontez le réglage si votre
appareil le justifie.
JTAC_droneRadius est remplacé par JTAC_droneRadiusNoLase et
JTAC_droneRadiusOnLase (rayon de recherche et rayon plus serré en désignation), et
JTAC_droneSpeed apparaît. L'orbite est inchangée, mais le drone apparaît désormais à 3000 m et
150 km/h au lieu de 4000 m et ~194 km/h : il vole à une seule altitude et une seule vitesse du début
à la fin.
specificParams sur une caisse n'est plus lu. Une configuration qui en porte encore affiche
un message NOTICE au démarrage nommant les caisses concernées et les réglages qui les remplacent.
(Sans rapport avec specificParams.task sur les modèles de troupes, qui reste actif.)
AIZones était une clé morte — quatre zones IA par défaut sans aucun effet en jeu. Le moteur
lit aiZones (minuscule), dont les entrées sont des enregistrements nommés. La clé morte est
supprimée et aiZones a désormais un éditeur dédié dans l'outil.
dropOffZones de la v1 n'est pas lu par CTLD 2. Le drop-off IA se configure avec une entrée
aiZones portant isDropoff.
L'ordre des triggers ne change pas : (1) CTLD_userConfig.lua (optionnel), (2) CTLD.lua, (3) les
éventuels plugins de scène après CTLD.
Corrections visibles en jeu
- Une configuration incomplète ne fait plus planter la mission. Trois réglages étaient lus sans
garde-fou et injectés directement dans un calcul — deux intervalles JTAC et
slingCutDestroyHeight— ce qui produisait une erreur à chaque tick JTAC ou à chaque largage. - Un éditeur de groupes de troupes qui corrompait le fichier qu'il éditait :
jtacétait traité
comme une case à cocher alors que le catalogue porte un nombre. - Onze descriptions de réglages en français étaient illisibles (double encodage UTF-8).
- Pour les auteurs de plugins : l'événement
OnCrateDestroyedn'est plus émis du tout. Le seul
chemin qui le publiait,dropCrate, était injoignable — aucun menu F10 ne l'appelait — et a été
retiré. Le largage en vol est assuré parparachuteCrates.
Documentation
Toute la documentation de configuration a été reprise pour ce nouveau modèle. Les pages qui
enseignaient encore les anciennes méthodes montrent désormais le YAML réel, et plusieurs erreurs de
fond ont été corrigées au passage — notamment un exemple de transportPilotNames écrit comme un
dictionnaire là où le moteur attend une simple liste, et l'ordre des triggers présenté à l'envers
dans les pages d'accueil.
Contributeurs
FullGas (développeur principal), Zip (assistance technique) — VEAF.
CTLD v2.0.0-rc1
CTLD 2.0.0-rc1 — version candidate
CTLD 2.0 est une réécriture complète du script CTLD v1 : le code monolithique devient un
ensemble de modules Lua testables (architecture orientée objet Manager/Entité), couvert par une
intégration continue — build unique, ~150 tests unitaires et fonctionnels, plus des tests
d'intégration en DCS réel. Le comportement en jeu reste identique à la v1 : cette refonte vise
la maintenabilité et la fiabilité, pas un changement d'usage pour les pilotes.
Cette rc1 est une version candidate, destinée aux tests avant la 2.0.0 stable.
Nouveautés
- Scènes personnalisables et plugins. Les scènes (FARP, FOB, champ de mines…) sont désormais
indépendantes de leur position de chargement et peuvent être fournies en plugins externes. La
Metal FARP (dépendante d'un mod) est extraite du livrable vers le dépôt
VEAF/CTLD_plugins— supprimant au passage l'avertissement
affiché à chaque démarrage. - Validation de votre configuration à la conception. Un compagnon optionnel
CTLD_asset_check.lua(fourni avec la release) signale les types DCS inconnus de votre config,
sans rien spawner. Nouveau réglagemodTypespour déclarer les types issus de mods. CTLD ne
« sonde » plus l'environnement au démarrage (fini les événementsS_EVENT_BIRTHparasites). - Configuration utilisateur séparée.
CTLD_userConfig.luaest livré comme fichier autonome.
Changements importants pour les concepteurs de mission
Mission Editor : (1) CTLD_userConfig.lua (optionnel), (2) CTLD.lua, (3) les éventuels plugins
de scène après CTLD. Si vous utilisez la Metal FARP, chargez désormais son plugin.
→ Voir Ordre de chargement dans le Mission Editor
et le guide Scènes & FOB.
Corrections visibles en jeu
- Request Equipment : le spawn d'un véhicule entier (transports
canTransportWholeVehicle)
fonctionne à nouveau. - Menu troupes après atterrissage : « Parachuter » / « Débarquer les troupes » reflètent
immédiatement l'état au sol (plus de menu figé à l'atterrissage). - Transport IA (stock virtuel) : plus de spawn erroné quand un véhicule dépasse la limite de
poids de l'hélico ; type invalideM1025 HMMWV Armamentcorrigé (spawnait un Leopard-2 par
erreur). - Rafraîchissement immédiat des crates de scène chargées par plugin ; divers correctifs de
robustesse (poll de position au sol, validation du stock des zones IA).
Contributeurs
FullGas (développeur principal), Zip (assistance technique) — VEAF.