Learn how to create custom scenery for Prepar3D, compile BGL files, package textures, install with add-on.xml, and fix missing scenery.
To create custom scenery for Prepar3D, install the SDK that matches your simulator version, build or edit the airport, terrain, imagery or models with the appropriate SDK-compatible tool, compile the source into BGL files, package those files in scenery and texture folders, then register the package through add-on.xml or the Scenery Library.
Which tools do I need for Prepar3D scenery?
The right tool depends on the type of scenery being created; there is no single editor for every airport, terrain and object task.
| Scenery type | Typical creation route | Compiled output |
|---|---|---|
| Runways, taxiways, aprons and airport facilities | Airport editor or airport XML compiled with BGLComp | Airport BGL |
| Placed library objects | Object-placement XML or a compatible graphical placement tool | Placement BGL |
| Custom buildings and models | Supported modelling exporter, model library and placement data | Model-library and placement BGLs, plus textures |
| Aerial imagery and elevation | Georeferenced raster source processed with Resample | Terrain or imagery BGL |
| Coastlines, water, roads and vector exclusions | GIS vector data processed with Shp2Vec | Vector BGL |
Install the SDK for the same Prepar3D release—and preferably the same build—as the simulator used for testing. Compiler and modelling-tool mismatches can produce missing materials, invalid models or BGL files that compile but do not behave correctly. Our guide to installing the matching Prepar3D SDK tools explains BGLComp, Resample, Shp2Vec and the supplied samples.
For an airport project, Airport Design Editor can provide a more practical interface than writing facility XML manually. The underlying concepts are demonstrated in this worked ADE airport-building tutorial; when targeting Prepar3D, configure the editor to use the correct Prepar3D SDK compiler rather than an FSX compiler.
How do I build and compile the scenery?
A reliable Prepar3D scenery project keeps editable source files separate from both the compiled package and the simulator installation.
- Create a source workspace. Make separate folders for airport XML, models, source textures, imagery, vector data and compiled output. Never edit or replace Prepar3D's stock BGL files.
- Define the scenery area. Record the airport identifier, coordinates, elevation and the add-ons already covering that location. For imagery, verify its projection, geographic bounds and source resolution before compiling it.
- Build each scenery element. Edit airport facilities, create object placements and prepare terrain data with the appropriate tool. Keep airport facilities, object placement and terrain output in separate BGL files where practical; isolating them makes conflicts much easier to diagnose.
- Add exclusions only where needed. An exclusion can suppress default buildings, vegetation or vector features, but an oversized exclusion may remove wanted scenery well beyond the airport boundary. Exclusions generally need to be above the content they are intended to suppress.
- Compile with the matching SDK. BGLComp handles compatible XML data, Resample processes raster terrain sources, and Shp2Vec compiles supported vector data. Read the compiler log rather than assuming that the appearance of a BGL means every source element was accepted.
- Stage the finished files. Put compiled BGL files in a
scenerydirectory and their required textures in the adjacenttexturedirectory. Retain the editable XML, imagery and model sources elsewhere; a BGL is deployment output, not a practical master project.
Use distinctive filenames instead of names such as airport.bgl. A prefix based on the airport identifier or project name helps locate conflicting files later.
How do I package and install the custom scenery?
The add-on package method is the safest installation choice in Prepar3D releases that support add-on.xml, because it keeps custom files outside the simulator's core directory.
A simple package can use this structure:
MyScenery/add-on.xmlMyScenery/Scenery/scenery/for compiled BGL filesMyScenery/Scenery/texture/for DDS or other supported texture files
The scenery component in add-on.xml should use the Scenery category and point to the outer Scenery folder—the directory containing the lower-case scenery and texture folders. Copy the XML structure from the SDK sample for your Prepar3D version rather than reusing an unverified manifest from a different release.
- Place the package in a discovered add-on location. The usual per-user location is the version-specific
Documents/Prepar3D vX Add-ons/folder, withMyScenerydirectly beneath it. - Start Prepar3D and enable the package. Accept the add-on discovery prompt if one appears. If the package has already been rejected or disabled, check the simulator's add-on configuration rather than creating a second installation.
- Check the scenery order. A custom airport normally belongs above broader regional and default scenery. Terrain mesh selection can also depend on mesh resolution, so layer order alone does not resolve every elevation conflict.
- Restart and inspect the location. Test by day and night and, where relevant, in more than one season. Check runways, object placement, ground elevation and texture loading separately.
For older or legacy packages without add-on.xml, open the Prepar3D Scenery Library, add the directory containing the scenery and texture subfolders, then place it at the appropriate priority. Do not register the same files through both methods, as that creates duplicate scenery entries. The Prepar3D v5 packaging and registration instructions cover both approaches in greater detail.
If you need to verify how a finished download is arranged, compare your folders with a real P3D-compatible airport package and its installation notes. Treat it as a structural example rather than copying its scenery files into your project.
Why does my custom scenery not appear?
Most missing Prepar3D scenery is caused by an incorrect component path, an extra folder level, a disabled package or missing dependent assets.
| Symptom | Likely cause and fix |
|---|---|
| No add-on prompt or scenery entry | Confirm that add-on.xml is at the package root, is not secretly named add-on.xml.txt, and uses a valid scenery component path. |
| Area is active but nothing changes | Check that the BGL files are directly inside the active component's scenery folder, not inside another nested package directory. |
| Objects are missing or untextured | Install the required model-library BGL and textures, check texture filenames and confirm that the models were exported for the target Prepar3D version. |
| Duplicate runways or overlapping buildings | Another airport BGL is active for the same location. Disable competing versions, correct the priority and use carefully bounded exclusions for unwanted stock objects. |
| Airport sits on a plateau or below ground | Check airport altitude, flatten or elevation data, then test without competing mesh and regional scenery. |
| Aerial imagery is shifted or absent | Recheck source projection, geographic bounds, coordinate order and Resample configuration. Moving a finished BGL cannot correct bad georeferencing. |
Enable Prepar3D's available content-error reporting while testing. Missing texture names, unresolved model references and malformed package definitions are much easier to fix from a specific logged error than by repeatedly changing scenery priority.
Will the same scenery work in every Prepar3D version?
No; simple airport and placement BGLs may work across nearby Prepar3D versions, but cross-version compatibility is not guaranteed.
Custom models, materials, terrain processing and package definitions are more sensitive to SDK changes than a basic airport layout. Compile and test separate release packages when supporting multiple Prepar3D versions, state the target version clearly, and never redistribute default simulator BGLs or textures as part of the package.