Learn to create FSX aircraft and scenery add-ons with the SDK, compile MDL and BGL files, package projects, and fix common build errors.
To create FSX aircraft or scenery add-ons, install the SDK that matches your boxed FSX service-pack or Acceleration level, build source assets with compatible modelling or GIS tools, compile them into FSX formats such as MDL and BGL, then package and test them in separate add-on folders.
The original SDK came with boxed FSX Deluxe, with updates corresponding to later FSX releases. FSX: Steam Edition can run FSX-targeted compiled content but does not itself provide the full original authoring SDK. Our edition-specific SDK installation and documentation notes explain the setup requirements and matching problem in detail.
What do I need before using the FSX SDK?
You need a legally installed, version-matched SDK, a suitable content-creation tool and a working directory outside the live simulator.
- A matching SDK: compiler and exporter versions must suit the FSX runtime you intend to support. An aircraft compiled for a later model format may not work in an unpatched boxed installation.
- An authoring tool: aircraft and custom objects require a modelling application with an FSX-compatible export route. Airport work is easier in a purpose-built airport editor, while imagery and elevation projects begin with geospatial source data.
- Separate source and release folders: keep editable models, XML, imagery and intermediate files away from
Program Files. Copy only the compiled release into FSX. - Distribution rights: confirm that you may redistribute every model, texture, sound, aerial image and data source. Referencing a stock FSX sound or panel by alias is different from copying and distributing Microsoft's files.
The SDK is primarily a collection of compilers, exporters, schemas, examples and documentation. It is not one visual application that creates an entire add-on.
Should I start with an aircraft or scenery project?
An airport edit is usually the shortest first project; a completely new flyable aircraft requires modelling, animation, flight dynamics, textures, sounds and cockpit work.
| Project | Typical workflow | Main output |
|---|---|---|
| Modify parking, runways or taxiways | Airport editor using the SDK compiler | Airport BGL |
| Place a custom building | Model, export, create an object library and place it | Library and placement BGL files |
| Add aerial imagery or elevation | Prepare geospatial data and a control file for Resample | Terrain BGL |
| Create a flyable aircraft | Model, animate, compile and build the complete SimObject container | MDL files plus aircraft configuration and assets |
How do I create an FSX aircraft with the SDK?
An FSX aircraft is a SimObject folder containing compiled models, flight dynamics, textures, sounds, panels and configuration files.
- Plan the aircraft container. Create a development tree with separate source, build and release directories. The final release normally goes under
SimObjects\Airplanes\YourAircraft, but source models and intermediate exports should remain elsewhere. - Build the exterior and cockpit models. Set correct dimensions, origins, pivots and object hierarchy before animating anything. Exterior and virtual-cockpit models may be separate, and complex aircraft should use sensible levels of detail rather than rendering the full model at every distance.
- Add FSX animations and attach points. Apply animation tags recognised by the SDK model-definition system to controls, landing gear, propellers and other moving parts. A made-up tag name in the modelling application will not acquire simulator behaviour automatically.
- Export and compile the models. Use a compatible exporter to produce the intermediate data expected by
XtoMDL, then compile the exterior and interior MDL files. Read the compiler output: an exported file is not proof that every material, animation or hierarchy compiled correctly. - Create the model and flight configuration. A
model.cfgidentifies the exterior and interior MDL files. Inaircraft.cfg, the[fltsim.0]entry makes the aircraft available in the selection menu, whilesim=,model=,panel=andsound=must point to matching files or suffixed folders. Aerodynamic tables are stored partly in the AIR file and partly inaircraft.cfg. - Add the panel, gauges and sounds. During development, panel and sound configurations can alias compatible default aircraft. A custom cockpit may use XML gauges or compiled gauges, but virtual-cockpit displays also require the correct model material and panel mapping.
- Convert and assign textures. Use FSX-compatible DDS formats, include alpha channels only where the material requires them, and check the mipmaps. Texture names in the material definitions must match the deployed files and folder suffixes.
- Test the assembled aircraft. Check selection-menu visibility, contact points, engine start, control direction, animations, lights, fuel stations, payload, views and both cockpit modes. Restart FSX after model changes because reselecting the aircraft does not reliably reload every resource.
How do I create FSX scenery with the SDK?
FSX scenery development uses different compilers for airport data, placed objects, terrain vectors, imagery and elevation.
- Choose the correct compiler path. Airport and scenery-placement XML is compiled with
BGLComp. Custom models pass throughXtoMDL, imagery and elevation useResample, and suitable vector data usesShp2Vec. - Edit or create the airport. A visual editor prevents many XML and coordinate mistakes. Our practical ADE airport-editing workflow covers runways, parking, object placement, validation and BGL compilation. There is also a downloadable beginner project for configuring ADE and compiling scenery.
- Build custom objects separately. Model and compile each object, assign it a stable GUID, add it to an object-library BGL and create placement records for its latitude, longitude, altitude and heading. Do not generate a new GUID after placing the object, or existing placements will no longer find it.
- Handle stock scenery deliberately. Adding a replacement does not necessarily remove the original object, airport feature or terrain. Use the appropriate airport record, exclusion rectangle or terrain method rather than hiding duplicates beneath a new model.
- Prepare terrain sources correctly. Aerial imagery and elevation need valid coordinates, projection information and an
INFcontrol file forResample. Wrong bounds or coordinate systems can produce a valid BGL thousands of miles from the intended location. - Package the compiled output. Put BGL files in a
scenerysubfolder and required textures in a neighbouringtexturesubfolder. Activate the parent area in the Scenery Library using our scenery-folder and library-activation instructions. - Set scenery priority and test. Place specific local scenery above broader regional packages when it needs to override them. Test every runway end, seasonal or night textures, approach paths and nearby add-ons that may contain another version of the same airport.
Why does an FSX SDK project compile but not appear?
A successful compiler exit only proves that acceptable input was produced; folder references, coordinates, model versions and Scenery Library activation can still prevent the add-on from appearing.
| Symptom | Likely cause | What to check |
|---|---|---|
| Aircraft is absent from the menu | Invalid aircraft container | Confirm [fltsim.0], a unique title=, the sim= AIR-file name and the aircraft's menu metadata. |
| Aircraft loads with no visible model | Broken model reference | Check the selected model folder, model.cfg, MDL filenames and compilation target. |
| Model is black, white or untextured | Missing or incompatible textures | Verify material filenames, DDS format, alpha channel, folder suffix and texture fallback configuration. |
| Animation does not move | Incorrect model tag or hierarchy | Check the SDK animation definition, key-frame range, pivot and exported hierarchy. |
| BGL exists but scenery is absent | Inactive area or incorrect coordinates | Verify the Scenery Library entry, folder structure, placement coordinates and compiler log. |
| Two airports or buildings overlap | Competing BGL files | Search installed scenery for another airport version, add the required exclusions and correct the library priority. |
| Exporter or compiler cannot be found | SDK or authoring-tool mismatch | Confirm the SDK installation, supported exporter chain and configured tool paths. |
How should I package and test the finished add-on?
A release package should contain only the files FSX needs, with a documented folder structure and no private source assets or SDK executables.
- Build into an empty release folder. This exposes hidden dependencies on files that happen to exist in your development installation.
- Test without unrelated add-ons. Establish that the project works in a clean configuration, then restore likely conflicting scenery, gauges or aircraft modifications.
- Check the intended FSX editions. Test boxed FSX and FSX: Steam Edition separately if you claim support for both; do not assume identical installation paths or add-on behaviour.
- Use unique names. Unique aircraft titles, folders, BGL filenames and object GUIDs reduce conflicts with other packages.
- Include concise installation and removal instructions. The SDK compiles content but does not create a universal installer. A simple folder-based package is often easier to inspect, update and uninstall.