Weather variants¶
What it is¶
src/versions.yaml describes weather + time pairs. The build writes one .miz per entry, beside
the base mission, under missions/. One source mission, several moods.
The smallest example that works¶
It is the shipped file, cut down to the essentials:
versions:
- name: noon
time: "12:00"
weather:
temperature: 25.0
wind_speed: 8.0
wind_direction: 270.0
visibility: 10000.0
cloud_type: "clear"
fog_enabled: false
build My-Mission.miz then produces My-Mission.miz and missions/My-Mission_noon.miz.
Solar times and real weather¶
position: # optional: otherwise, the point of the mission's map
latitude: 41.93
longitude: 41.86
timezone: "Asia/Tbilisi"
base_date: "2024-03-15"
versions:
- name: dawn
time: "sunrise"
- name: evening
time: "sunset-30*60" # 30 minutes before sunset
- name: real-weather
time: "14:00"
metar: "METAR OSDI 151420Z 27015G25KT 9999 BKN025 18/12 Q1018 NOSIG"
position:says where sunrise and sunset are computed. Without it, the build computes them on the mission's map, at one point per theatre (near Batumi on the Caucasus, Hama on Syria…), and says so in the log. On a wide map, a mission far from that point is a few minutes off: giveposition:near the mission then. Aposition:outside the mission's map (the Damascus of the former default file, left in a Caucasus mission) gets a warning.- Times:
"HH:MM", a solar expression (sunrise,sunset-30*60), or seconds. All of them are on the theatre's local clock, the one DCS shows: each theatre has a fixed offset from UTC, with no daylight saving time (Caucasus UTC+4, Syria UTC+3, GermanyCW UTC+2…). Thetimezone:ofpositionis only used for a theatre the tool does not know, and the build says so. - Dates:
"YYYY-MM-DD",today,tomorrow,+N/-Ndays. metar:replaces theweather:block with a real observation.
The wind¶
wind_speed and wind_direction are the wind wanted 10 m above a reference airfield, as a METAR or the ATIS will give it there — not the Mission Editor's setting.
DCS multiplies its "ground wind" by 2.14 at sea level, and reduces it near the ground the less the higher the terrain: 9 m/s set (17 kt) blew 24 kt at 10 m above Rosh Pina and 36 kt at 1,000 ft (DCS's wind model).
So the build writes the setting that gives the wanted wind, and its log says for which airfield.
- The reference airfield is, in order: the METAR's station when it is on the map; otherwise
reference_airfield; otherwise the first player group's departure airfield; otherwise sea level, with a warning (the wind will blow stronger over any inland airfield). - Aloft, the 2,000 m wind is 2.2 times the ground setting, veered 20° to the right (
wind_veer, 0 to 30°); at 8,000 m, 3 m/s more. The wind then only grows with height.wind_speed_2000/wind_direction_2000andwind_speed_8000/wind_direction_8000(where the wind comes from, degrees) set them by hand; a 2,000 m wind under 2.14 times the ground setting makes a jet 300 to 600 m above the ground, and the build says so. Never set an upper wind opposed to the surface one: DCS makes a layer without wind between them. clearsky: truecaps the wanted wind at 15 kt, hence the simulated surface wind at the reference airfield, and drops the gusts.- Gusts: a METAR's
Ggroup (27015G25KT), orwind_gust(m/s), becomes DCS's turbulence (groundTurbulence), from the in-game measurement: a gust gap G over the mean wind takes a turbulence of G / 0.62, capped at 3 m/s.turbulence(m/s, as the editor shows it) wins over the gust.
versions:
- name: windy
time: "10:00"
weather:
wind_speed: 7.7 # 15 kt at 10 m above Rosh Pina
wind_direction: 270.0
reference_airfield: "Rosh Pina"
wind_gust: 10.3 # 20 kt
The briefing announces the simulated wind, layer by layer: the one inspect_built_mission and the briefing deck give, and that veaf-tools dcs mission-check checks against the briefing, without DCS (mission-check).
The gotcha¶
The file ships non-empty, so the step runs on your very first build. Your first mission produces
two .miz files without you asking: the one at the root and missions/…_noon.miz. Not a duplicate —
the second carries the weather.
Second gotcha: up to 6.29, the shipped versions.yaml wrote a position: at Damascus, whatever the map.
A mission created before keeps that position, and its "dawn" on the Caucasus comes 25 to 50 minutes after sunrise.
Remove the position: block from your versions.yaml: the build then computes on the mission's map.
To switch the step off entirely:
pipeline:
weather: false
Going further¶
- Pipeline reference — step 6, weather and time variants
- Pipeline reference — showing the weather in the briefing
- veafWeather — the weather in game, on the player's side