How do I create aircraft or scenery with the FSX SDK?
Create aircraft and scenery with the FSX SDK, including Steam Edition compatibility, tool choices, compilation, packaging and common fixes.
To create aircraft or scenery for Microsoft Flight Simulator X, install the FSX SDK version that matches your boxed FSX build, create source assets in a compatible modelling, airport or GIS tool, compile them to MDL or BGL files, then package and test them in isolated add-on folders. FSX: Steam Edition needs extra care.
The FSX SDK is not a single design application. It is a collection of command-line compilers, modelling exporters, schemas, sample files, in-simulator tools and documentation. You still need an appropriate editor for the type of add-on you intend to build.
Does FSX: Steam Edition include the FSX SDK?
No. FSX: Steam Edition does not include the complete original Microsoft authoring SDK. It can run most correctly compiled add-ons targeting the FSX SP2 or Acceleration generation, but creating them requires a legally obtained SDK and a compatible authoring toolchain.
The base SDK was supplied with boxed FSX Deluxe; FSX Gold includes the Deluxe and Acceleration media. Boxed Standard did not include the full SDK. SDK service-pack updates are not substitutes for the original base installation, and the compiler, exporter and modeldef.xml versions should come from the same update level.
A boxed SDK can be configured for use with an FSX: Steam Edition installation, although old installers and modelling plug-ins may expect boxed-edition registry entries or installation paths. Our FSX SDK installation and troubleshooting guide covers installation order, missing Tools menus, path problems and version mismatches.
End users do not need the SDK to install a finished aircraft or scenery package. Never redistribute Microsoft SDK executables, headers, samples or other files merely because your add-on used them during development.
What do I need before starting an FSX SDK project?
You need a version-matched SDK, a suitable content editor, a separate development workspace and permission to distribute every asset in the finished package.
- A defined target version: decide whether the add-on must support unpatched boxed FSX, SP1, SP2, Acceleration or FSX: Steam Edition. Targeting the oldest claimed runtime limits which model features and animation definitions you can use.
- A compatible authoring route: aircraft and custom buildings need a modelling application capable of preserving FSX materials, animation tags and hierarchy through export. Airport layouts are easier in a dedicated airport editor; aerial imagery and elevation begin in GIS or image-processing software.
- Separate source, build and release folders: keep editable models, XML, imagery and intermediate files outside the live simulator and outside protected locations such as
Program Files. Copy only the release build into FSX. - Redistribution rights: check models, photographs, aerial imagery, sounds, fonts and data sources. Aliasing a stock FSX panel or sound set is different from copying Microsoft's files into your package.
Many SDK components are command-line programs. If a compiler window appears and immediately closes when double-clicked, that does not necessarily indicate a fault; run it from a command prompt or through an editor so that you can read its arguments, warnings and errors.
Should I create an aircraft or scenery first?
A small airport correction or object-placement project is the easiest introduction to the SDK; a completely new flyable aircraft is a much larger undertaking.
| Project | Authoring route | Main output |
|---|---|---|
| Correct runways, parking or taxiways | Airport editor using the SDK compiler | Airport BGL |
| Place an existing library object | Placement editor or placement XML | Placement BGL |
| Create a custom building | 3D model, MDL compilation, object library and placement | Library and placement BGL files |
| Add aerial imagery or elevation | Georeferenced source data and a Resample control file | Terrain BGL |
| Create a flyable aircraft | Modelling, animation, model compilation and SimObject assembly | MDL files, configurations and supporting assets |
How do I create an FSX aircraft with the SDK?
An FSX aircraft is a complete SimObject containing compiled exterior and cockpit models, flight dynamics, textures, sounds, panels and configuration files.
- Plan the aircraft container. Build separate source, intermediate and release directories. The final aircraft normally belongs under
SimObjects\Airplanes\YourAircraft, but project files and export intermediates should remain outside FSX. - Model to the correct scale and axes. Establish dimensions, origins, pivots and object hierarchy before animation. Exterior and virtual-cockpit models may be separate, and complex models need sensible levels of detail rather than full geometry at every viewing distance. Our 3ds Max aircraft-development workflow for FSX explains the exporter, animation and MDL stages in more depth.
- Apply recognised animation tags. Landing gear, control surfaces, propellers, doors and cockpit controls must use definitions understood by the selected SDK toolchain. Inventing a tag in the modelling application does not create matching simulator behaviour. Check key-frame ranges, pivots and parent-child relationships before export.
- Export and compile the models. Use a compatible exporter to create the intermediate data required by
XtoMDL, then compile the exterior and interior MDL files. Read the complete compiler output; receiving an MDL does not prove that every material or animation survived correctly. - Assemble the model references. A
model.cfgidentifies the exterior and interior MDL files. Inaircraft.cfg, each[fltsim.x]section defines a selectable variation, whilesim=,model=,panel=,sound=andtexture=must match the corresponding files or suffixed folders. - Create the flight and systems configuration. FSX flight behaviour is divided between the AIR file and
aircraft.cfg. Configure contact points, engines, fuel, weight, payload, control effectiveness, lights and views; the SDK model compiler does not create these automatically. - Add cockpit, gauges and sounds. A development aircraft can alias compatible default panel and sound folders. A custom virtual cockpit also needs correctly mapped panel materials, gauge definitions and model animations.
- Prepare the textures. Use FSX-compatible DDS formats, appropriate alpha channels and mipmaps. Material texture names must match the deployed filenames. Missing mipmaps often cause shimmer, while an incorrect alpha channel can make a surface opaque, excessively reflective or invisible.
- Test the assembled aircraft. Check menu visibility, loading, engine start, contact points, control direction, animations, lights, fuel stations, payload, views and both cockpit modes. Restart FSX after significant model or gauge changes because selecting the aircraft again may not reload every cached resource.
Which FSX SDK tools create scenery?
The correct scenery tool depends on whether the source represents an airport, a placed object, raster terrain or vector terrain.
| Content | SDK tool | Result |
|---|---|---|
| Airport records and object-placement XML | BGLComp | Scenery BGL |
| Custom 3D models | XtoMDL, followed by library packaging | MDL and object-library BGL |
| Aerial imagery and elevation | Resample | Terrain BGL |
| Supported vector terrain data | Shp2Vec | Vector scenery BGL |
A visual editor normally acts as a front end to these compilers; it does not replace the SDK. Keep its project files and the compiled BGL files separate so that you do not accidentally distribute editable source data or stale builds.
How do I create FSX scenery with the SDK?
FSX scenery is created by preparing accurately positioned source data, compiling each content type with the correct tool and activating the resulting BGL files in a scenery area.
- Define the location and scope. Record the airport identifier, coordinates, elevation, intended coverage and source-data projection before building anything. Reversing latitude and longitude or using ungeoreferenced imagery can produce a valid BGL in the wrong part of the world.
- Create or edit the airport record. Use a suitable airport editor to lay out runways, taxiways, parking, starts, aprons and communication data. Validate connected taxi links, runway headings and parking radii before compiling through
BGLComp. - Build custom objects separately. Model and compile the object, assign it a stable GUID, package it in an object-library BGL and create a separate placement record containing latitude, longitude, altitude and heading. Our guide to placing FSX scenery objects and compiling their XML covers the in-simulator Object Placement Tool and manual BGL workflow.
- Suppress conflicting default content. Adding a replacement airport or building does not automatically remove the stock version. Use the appropriate airport replacement record, exclusion rectangle or terrain method rather than hiding duplicate objects inside new geometry.
- Prepare terrain sources. Aerial imagery and elevation require valid geographic bounds, resolution information and an INF control file for
Resample. Water masks, blend masks, seasons and source projection need to be planned before compilation. For this branch of scenery design, follow our georeferenced photo-scenery and Resample workflow. - Package the compiled files. Place BGL files in a
scenerysubfolder and required textures in the neighbouringtexturesubfolder. Activate their parent folder in the FSX Scenery Library. - Set scenery priority deliberately. A specific airport package normally needs to sit above broader regional scenery when it is intended to override that content. Priority cannot fix every conflict: duplicate airport BGL files and overlapping object libraries may still need removal or exclusions.
- Inspect the whole area. Test every runway end, parking area, approach path, season and time of day. Also check nearby airports and regional packages because an overly broad exclusion or airport record can damage scenery beyond the visible project boundary.
Why does an FSX SDK project compile but not appear?
A successful compilation only proves that the compiler accepted the source; FSX can still reject or overlook the result because of configuration, coordinates, folder structure or version incompatibility.
| Symptom | Likely cause | What to check |
|---|---|---|
| Aircraft is absent from the selection menu | Invalid or nested aircraft container | Check that aircraft.cfg is directly inside the aircraft folder, that a valid [fltsim.0] exists, title= is unique and sim= matches the AIR filename. |
| Aircraft loads without a visible model | Broken model reference or incompatible MDL | Verify the model= suffix, selected model folder, model.cfg, MDL filenames and target SDK version. |
| Model is black, white or untextured | Missing or unsuitable textures | Compare material names with deployed DDS files and check format, alpha channel, mipmaps, texture-folder suffix and fallback entries. |
| An animation does not move | Wrong tag, pivot, hierarchy or key range | Confirm the tag exists in the matching modeldef.xml and survived the exporter and compiler stages. |
| The FSX Tools menu is missing | In-simulator SDK module did not load | Check the SDK update level, module configuration, security prompt and whether paths still point to another FSX installation. |
| BGL exists but no scenery appears | Inactive area or incorrect folder structure | Verify the Scenery Library entry and ensure BGL files are inside the area's scenery subfolder. |
| Scenery appears far from the intended site | Coordinates or projection were misread | Check latitude-longitude order, hemisphere signs, decimal formatting, bounds and source projection. |
| Two airports or buildings overlap | Competing BGL files or missing exclusions | Look for another version of the airport, correct scenery priority and add only the exclusions the replacement needs. |
| An old model or airport remains after rebuilding | Duplicate output or cached resources | Remove stale BGL or MDL copies from every active folder, install the new build and restart FSX. |
How do I package one add-on for boxed FSX and FSX: Steam Edition?
Use relative folder structures, avoid hard-coded simulator paths and test the release independently in every edition for which you claim compatibility.
- Build into an empty release directory. This reveals textures, gauges, sounds or libraries that worked only because they were already present in the development installation.
- Keep the package self-contained. Aircraft should include the required SimObject subfolders; scenery should use a parent folder containing
sceneryand, when needed,texture. Document aliases and required dependencies clearly. - Use unique identifiers. Give aircraft variations unique
title=values, use distinctive BGL and folder names, and never change a published object's GUID without a migration plan. - Test boxed and Steam installations separately. Their installation paths, registry entries and user configuration locations can differ. An old installer that finds boxed FSX successfully may fail to locate FSX: Steam Edition even when the add-on itself is compatible.
- Check performance as well as appearance. Excessive geometry, missing levels of detail, oversized textures and dense scenery can exhaust FSX's 32-bit address space. Use LOD models, mipmaps and appropriately divided scenery rather than relying on the user's hardware to hide inefficient assets.
- Include installation and removal instructions. State exactly which folders should be copied or activated and which files should be removed. Do not include SDK components, private source files or content for which you lack redistribution permission.