The build¶
What it is¶
One command that recomposes the .miz from the mission folder. It always does the same four things,
then runs the optional steps whose file it finds.
The
.\is required. The default Windows terminal is PowerShell, which does not search the current directory — on purpose.cmd.exeaccepts both forms, so.\works everywhere. See PowerShell or Command Prompt?.
.\veaf-tools.exe build My-Mission.miz
- reads
src/mission/(the exploded DCS mission); - generates
src/scripts/veaf-config.luafrommission.yaml, and reports the modules it read there — with their entry count for those that carry a list, e.g.COMBATZONE (1); a module you have just added and which does not appear was not read; - strips the existing VEAF triggers, then injects fresh ones that load the VEAF scripts and yours at start-up;
- writes the
.miz.
You never add a VEAF trigger by hand in the DCS editor. And because step 3 cleans before it injects, rebuilding ten times in a row produces the same result ten times.
The pipeline steps¶
Each runs if its file is present, in this order:
| Step | File | Card |
|---|---|---|
presets |
src/presets.yaml |
radio presets |
spawnable_aircrafts |
src/spawnables.yaml |
spawnable groups |
dynamic_slot_templates |
src/dynamic-slot-templates.yaml |
dynamic slots |
waypoints |
src/waypoints.yaml |
— |
warehouses |
src/warehouses.yaml |
dynamic slots |
spawn_data |
src/spawn-groups.yaml |
— |
weather |
src/versions.yaml |
weather variants |
To switch one off:
pipeline:
weather: false
Checking before building¶
.\veaf-tools.exe validate
It rereads the configuration and the mission together, and reports what will not line up — a combat
zone whose trigger zone does not exist, radio presets with no player aircraft to apply them to. It
exits non-zero on an error; --strict also makes it exit on a plain warning.
The output file name¶
| What you type | What you get |
|---|---|
build My-Mission.miz |
My-Mission.miz |
build My-Mission (no .miz) |
My-Mission_YYYYMMDD.miz — today's date is appended |
build (nothing) |
the name comes from mission.name in mission.yaml |
The gotcha¶
A freshly created folder produces two files. src/versions.yaml ships with a "noon" variant,
so the weather step runs and additionally writes missions/My-Mission_noon.miz. The file at the root
is the base mission; the one under missions/ is the variant. See
weather variants.
Going further¶
- Pipeline reference — every step in detail
mission.yamlreference —pipeline:andprofiles:- CLI reference —
buildandvalidate - Full guide — what the builder does