Airport catalog
vCareer's AirportRef table is the structural index of every
airport the generator considers — about 8,000 entries at MVP, weighted
toward fields VATSIM controllers actually staff. Categorized by runway
length and max aircraft size, not by hand-curation.
What it is
Each row is one airport. Fields: icao, name,
countryIso, latitude, longitude,
runwayCodeNumber (1–4), maxAircraftCodeLetter
(A–F), surface (paved / unpaved / water), elevationFt,
ifrSuitable.
Nothing in there is human-curated. The catalog is generated from the OpenStreetMap aerodrome dataset cross-referenced with the ICAO Aviation System Block Upgrade airport classifications. We regenerate it each release; no per-airport overrides.
Categories
Runway Code Number
| CODE | RUNWAY LENGTH | TYPICAL USE |
|---|---|---|
| 1 | Runway < 800m | Bush strips, regional VFR fields |
| 2 | Runway 800–1200m | GA / training airfields |
| 3 | Runway 1200–1800m | Regional, business jet |
| 4 | Runway ≥ 1800m | Airliner-capable |
Max Aircraft Code Letter
| CODE | WINGSPAN | EXAMPLES |
|---|---|---|
| A | Wingspan < 15m | C172-class |
| B | Wingspan 15–24m | Caravan, DA62 |
| C | Wingspan 24–36m | A320, 737, ATR-72 |
| D | Wingspan 36–52m | A330, 767, 757 |
| E | Wingspan 52–65m | A340, 777, 787 |
| F | Wingspan 65–80m | A380, 747-8 |
How the generator filters
Each class template has constraints expressed in these codes. For example:
- Bush: code number 1–2, code letter A–B, unpaved allowed, IFR not required.
- Charter: code number 2–3, code letter B–C, paved only.
- Long Haul: code number 4, code letter E–F, paved, IFR-suitable, runway length actually ≥3000m.
Stage 2 of generation runs an indexed query against
AirportRef with these constraints; surviving candidates
then go through ATC + weather + recency scoring. The whole airport
filter typically narrows the universe to a few hundred candidates in
under 20ms.
Country anchor
The generator enforces a 70% home-country quota: roughly 70% of missions on a board have either dep or arr in your declared country, and the remaining ~30% are "ferry / international" slots.
Enforced at Stage 5 (board composition), not at Stage 2 (airport filtering). Stage 2 considers all category-matching airports world-wide; Stage 5 trims and ensures the quota is met.
Why not 100%? Pure home-country gets boring fast for compact countries (most of the FR network would be a CDG/ORY shuffle). Pure global gets expensive in flight time and ignores the fact that you fly out of one region most days.
Recency penalty
Stage 2 and Stage 3 both penalize airports you've recently visited. Two windows:
- Last 5 missions: mild downweight if dep or arr appears.
- Full dep+arr pair recency: stronger downweight — the generator avoids serving you LFPG→EGLL twice in a row even if both airports are otherwise hot.
The penalty resets on a "shake up my board" request (board refresh button) and on full account data-wipe.