The mission folder¶
What it is¶
A version-controllable folder holding everything: the exploded DCS mission, your configuration,
your scripts, and the tools. It is your unit of work — the .miz is now just a build product.
Creating it¶
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 prepare --template minimal --theatre Caucasus
Twelve files appear:
my-mission/
├── mission.yaml # the build configuration
├── src/
│ ├── mission/ # the exploded DCS mission (extract writes here)
│ ├── options # the DCS options table injected into the .miz
│ ├── scripts/
│ │ ├── mission-script.lua # your Lua
│ │ └── veafDynamicConfig.lua # dynamic loading (dev/test)
│ ├── presets.yaml # radio presets
│ ├── waypoints.yaml # named flight plans
│ ├── spawnables.yaml # spawnable aircraft groups (empty = shipped catalogue)
│ ├── dynamic-slot-templates.yaml # dynamic-slot templates (empty = shipped catalogue)
│ ├── warehouses.yaml # stock and dynamic slots per airfield
│ ├── spawn-groups.yaml # ground/sea groups for `_spawn`
│ └── versions.yaml # weather/time variants
├── published/ # VEAF scripts and tools (laid down by the updater)
└── .gitignore
--theatre lays down a synthetic blank mission in src/mission: the folder builds with no DCS
round-trip. Without it, src/mission stays empty and you must extract a .miz into it.
--template picks the module set of the generated mission.yaml: minimal, standard, full, or
custom (interactive). With no --template, the shipped default mission.yaml is copied as-is.
Whatever the tier, the five opt-out community scripts (STTS, CTLD, AIEN, CSAR, SKYNET)
are written out explicitly as true or false: leaving them out would enable them (see
the mission.yaml gotcha).
Filling it from an existing .miz¶
.\veaf-tools.exe extract my-mission.miz
The .miz is exploded into src/mission/. The round trip is repeatable: opening the built
.miz in the DCS editor, saving, re-extracting and rebuilding does not duplicate the VEAF triggers
— the build strips them before injecting them again.
The gotcha¶
The produced .miz and the scripts are resolved from the current directory, not from the
argument. Always run .\veaf-tools.exe from the mission folder; run from elsewhere with the
folder as an argument, it looks for published/ in the wrong place and writes the .miz beside
itself.
And .gitignore is never overwritten, not even with --force: it is yours.