DCS Sortie Starter · v1.104.2 · SourcesSORTIE STARTER / SOURCES

DCS Sortie Starter — Sources

Where the facts in this product came from. Served at /api/sources.

Why this page exists. DCS Sortie Starter makes a lot of specific claims — a

SAM's engagement radius, a squadron's callsign, the heading a stand's painted

lines run, the bearing of a 1981 raid, a contrast ratio. Every one of them is

either measured, cited, or an admitted estimate, and the difference matters. A

number nobody can trace is a number nobody should trust, including us.

Rule of the page: anything the product asserts as fact gets an entry here.

If a claim can't be traced to a source, a measurement, or a stated estimate, it

is a bug — file it. tests/test_sources.py fails the build if a data pack with

external provenance has no entry.

1. The simulator and the library

pydcs

The mission-file framework everything is built on.

The dcs-retribution pydcs fork

Two terrain packages are lifted from a fork, not from upstream.

Eagle Dynamics, on their own maps

Product state, airfield lists, what is modelled and what is planned.

Full research with per-claim citations: docs/dcs-iraq-map-state.md.

2. Measured in the simulator — our own instrumentation

These are not cited because nobody has published them. They are measured,

by us, with the method and the date recorded.

DataWhat it isMethod
data/parking_headings.json9,550 painted-line stand headings (degrees TRUE) across ten mapsHand-measured in the Mission Editor. pydcs does not expose stand heading, so without these every static aircraft points at a random compass bearing. Guarded by tests/test_parking_headings.py, which found 26 dead measurements on the day it was written.
data/airframe_dimensions.jsonReal in-sim bounding boxes (m)BUSURVEY export read out of dcs.log. pydcs models the F-14's span as 10.15 m (swept); the real envelope is 20.34 m. Survey f14bu_survey2, 21 July 2026.
missiongen/terrains/afghanistan/projection.pyTransverse Mercator parametersOriginally derived by us from an in-sim probe mission (probe_afghanistan.mizscripts/import_projection.py) and marked provisional. v1.68.0 replaced it with ED's official export — which agreed with ours to 2.3 × 10⁻⁵ m of false easting. The label was over-cautious, not wrong.
docs/mission-semantics-baseline.jsonSemantic fingerprint of 52 generated missionsscripts/mission_semantics.py. Not a source so much as a control: it is how we prove a data swap changed what we think it changed.

aar.TERRAIN_MAX_FT — the refuelling track floor

A refuelling track you can fly into a mountain is not a training aid. pydcs

exposes no terrain elevation (terrain carries no height attributes and an

airport's alt is None), so the highest ground on each map is a table, and

each row is labelled with where the number came from.

The era gate — data/aircraft_service.json and data/weapon_service.json

The hard filter that keeps a Hornet out of 1978 and an AIM-120 off a 1965

Phantom is two tables of [from_year, to_year | null], one per pydcs aircraft

class and one per weapon CLSID.

data/air_corridors.json

Curated tactical lanes per map and era: a compass bearing from the friendly

base centroid and a reach in metres. Every lane traces to a published

operation — see §3 below, and docs/iraq-air-corridors.md for the full

citations, the places sources disagree, and the four candidates we rejected.

Corridors that cross terrain a map's developer has not detailed yet carry a

terrain_note that is briefed to the pilot verbatim.

The F-16 B-Course track — bc_* Library cards

Eleven Library cards follow the phase architecture, task lists and setup

geometry of **AETC Syllabus F16C0B00PL (56 FW), "F-16C/D Initial

Qualification", April 2014** — the Luke AFB Combined Wingman Syllabus. Every

card names the document and the paragraph it came from, and

tests/test_bcourse.py fails the build if one stops doing so.

Air refuelling — missiongen/aar.py

Six tankers, each on a track its receivers can actually fly. Every entry

carries a basis field, because these are a different kind of number from

the BFM perches: tuned operating points, not quotations. No document in

this library states AAR airspeed bands, so the table says so next to each value

rather than implying doctrine.

What is sourced is the instruction. The pre-contact zero-closure gate is

ATP-56; the 1-3 kt closure figure is from Stephenson's *Air Refueling

Receiver*; the boom-vs-drogue hookup benchmark (40.8 s vs 85.0 s) is a CARI

study; and the pilot-induced-oscillation explanation — phase lag, loop gain,

the 0.5-1 Hz danger band — is the standard PIO literature. Full working and

citations: docs/aar-training.md.

The card deliberately refuses to give a control-curve number. Published

recommendations for the same task span 0 to 30 depending on gimbal type and

stick length. A single figure would be confidently wrong for most readers,

which is the same failure mode as an invented range.

Admitted estimates, labelled as such. Where we could not measure or cite, we

say so in the product rather than rounding a guess into a fact:

3. History — mission and corridor design

Each corridor and scenario traces to a published account. Full write-ups with

per-claim citations, source disagreements, and the candidates we rejected:

docs/iraq-air-corridors.md.

Iran–Iraq War (1980–88)

4. Training and doctrine

5. Design, typography and accessibility

6. Licensing summary

ComponentLicense
DCS Sortie Starter (our code)MIT © Authentic Media LLC — LICENSE
vendor/dcs (pydcs)LGPL-3.0, unmodified — vendor/dcs/COPYING.LESSER
missiongen/terrains/{iraq,afghanistan}LGPL-3.0, from the dcs-retribution fork
vendor/axe-coreMPL-2.0
Vendored fontsSIL OFL 1.1
Lucide iconsISC

Full third-party notices: THIRD-PARTY-NOTICES.md.

Not affiliated with Eagle Dynamics. DCS World and its terrain modules are

their products; this tool generates mission files for them.

7. Thanks

**The Thanks list is rendered below this section when this page is served, and

it is not in this file.** That is deliberate. Everything above is a citation —

a pinned commit, a license, a published source — and belongs in the repository

where it is versioned, reviewed and guarded byte-for-byte. Gratitude is a

living list: it changes between releases, and the person who should be writing

it is the one who knows the community, not the one who knows the build system.

So it lives on the server's data volume, is edited from the password-gated

/admin under Thanks, and is injected into this page at request time.

Also available as JSON at /api/credits. See missiongen/credits.py.

8. Where the deeper write-ups live

DocumentWhat it covers
docs/dcs-iraq-map-state.mdWhat ED has actually shipped for Iraq, with per-claim citations and an explicit list of what we could not verify
docs/iraq-air-corridors.mdThe corridor research: every lane, its sources, the disagreements between them, and the four candidates rejected
docs/skillwork-syllabus.mdThe training progression and its instructional design
docs/pydcs-strategy.md, -fork-evaluation.md, -fork-feature-review.md, -plan-critique.mdThe library question, from first look to standing conclusion ("take the data, leave the engine")
docs/wcag-audit-2026-08-12.mdAccessibility audit and remediation
docs/how-a-terrain-module-works.md, docs/afghanistan-terrain-export-runbook.mdHow terrain data is exported and verified
docs/chart-authenticity-evaluation.mdHow close the theatre chart gets to a real aeronautical product, and where it deliberately stops
vendor/dcs/PYDCS_PROVENANCE.mdThe vendoring discipline and the LGPL reasoning

Thanks

This tool stands on a lot of other people's work. Some of it is code we vendored and some of it is the reason anybody knows how to fly these aircraft at all.