# Modular SimObject Project Structure Modular aircraft SimObj have a very specific package and folder structure that *must* be adhered to. This structure will be created for you automatically when you create the initial package from [The SimObject Editor](../../../devmode/editors/simobject-editor/the-simobject-editor/).   The image below shows the essential contents of the folder for a modular aircraft package before being compiled by the Microsoft Flight Simulator 2024 package manager: {{< image-center src="images/5_Content_Config/SimObj/modular_aircraft/mod_aircraft_folders.png" alt="The Folders Required By A Modular Aircraft" >}}   Here you can see that there are 4 sub-folders within the modular aircraft package, but only the **Common** and **Preset** folders are *required* for a modular aircraft. Each folder has a very specific purpose, and can contain a selection of sub-folders and files - each of which is outlined in the sections below - and you can click on the schema below to expand an outline of the folder structure.   {{< glossterm >}}project_schema{{< /glossterm >}} !   To see how all these files and folders are merged together to create a final aircraft, please see here: - [Modular Aircraft Merging](modular-simobject-merging/)   Your package may also contain an **Inputs** folder at the top level if you wish to include an **input profile** to map specific controls/buttons/keys for the aircraft. You may also provide further **Inputs** folder within the *common*, *preset* or *attachments* folders to further modify this base input mapping for the aircraft. You can find more information on all this from the following page: - [Aircraft Specific Input Profiles](../../input/aircraft-specific-input-profiles/)   For addtional information on how liveries are applied when in Career mode, please see here: - [Livery Application](../../careers/general-career-information/career-activities-additional-information/#livery-application)   ### Common The `common` folder contains all the base files for the aircraft that will be shared to all variations. These files (CFG, XML, FLT, {{< glossterm >}}gltf{{< /glossterm >}}, Textures, etc...) will form the common base that is then built upon to create each one of the different aircraft variations that you want to be available to the user to fly. If you are only creating a single aircraft, or porting over a legacy aircraft, then this is the folder where all the files will go. Files and folders for the aircraft should be placed in here directly without a company name folder: {{< image-center src="images/5_Content_Config/SimObj/modular_aircraft/mod_aircraft_common.png" alt="Example Of The Common Folder For A Modular Aircraft" >}} {{< callout context="note" title="NOTE" icon="outline/bulb" >}} This folder is **required** for the aircraft to be a modular aircraft. {{< /callout >}}   Within the *common* folder you can have the following folders and files:   | Folder | Files | | --- | --- | | `checklist` | `_.xml_`_See here for details: [Checklist XML Properties](Aircraft/Checklists/Checklist_XML_Properties/)_ | | `config` | `ai.cfg``aircraft.cfg``cameras.cfg``cockpit.cfg``engines.cfg``flight_model.cfg``flight_performance.cfg``gameplay.cfg``reference_points.cfg``sim.cfg``systems.cfg` | | `effects` | `effects.cfg`, `.fx` Only used for lighting effects. See here for details: [Implementing Lights](../../cfg-files/System/Implementing_Lights/) | | `flt` | `_.flt_`_See here for details: [FLT Files](../../flt-files/FLT_Files/)_ | | `input` | `.xml`, `_.db_`_See here for details: [Input Configuration XML Properties](../../Input/Input_Configuration_XML_Properties/)_ | | `interactions` | `.xml`See here for details: [Service Interaction XML Properties](../../Navigation_Services/Interaction_XML_Properties/) | | `loads` | `loads.lbl`, `SimPropContainer.xml`Only used if the SimObject has some kind of cargo load. See here for details: [Aircraft Loads](../../Careers/General_Career_Information/Aircraft_Loads/) | | `localization` | `_.loc_`_See here for details: [Localization (LOC Files)](../../Localization/Localization/)_ | | `model[.TAG]` | `model.cfg`, `.xml`, `.gltf`, `_.bin_`_See here for details: [Models](../../Models/Models/)_ | | `panel[.TAG]` | `panel.cfg``panel.xml` | | `navigation_graph` | `navigation_graph.cfg`See these pages for more details: [Cabin Services](../../Navigation_Services/Navigation_Services/), [Career Activities](../../Careers/Career_Activities/) | | `rtc` | `.xml`, `_.gltf_`_,_ `.bin`See here for details: [RTC XML Properties](../../Cameras/RTC/RTC_XML_Properties/) | | `sound` | `sound.xml` and `PC.PCK`.For specific setup information related to Modular SimObjects, please see [Sounds And Modular SimObjects](../../../4_Sound/Sounds_And_modular-simobjects/). | | `soundai` | `soundai.xml` and `PC.PCK`.For specific setup information related to Modular SimObjects, please see [Sounds And Modular SimObjects](../../../4_Sound/Sounds_And_modular-simobjects/). | | `texture[.TAG]` | `texture.cfg`, `_.xml_`_,_ `.png` / `_.tiff_`_See here for details: [Textures](../../Textures/Textures/)_ | | `thumbnail` | `.png`This folder contains the thumbnails relevant to the SimObject being defined. For more information on how to generate thumbnails, please see here: [Thumbnails](../../../3_Models_And_Textures/Modeling/Aircraft/Thumbnails/) | | `wasm` | `*.wasm`Only used if the SimObject has any WebAssembly systems modules. See here for details: [Creating WASM Systems](../../../6_Programming_APIs/WASM/Creating_WASM_Systems/) |   ### Attachments The `attachments` folder defines all the different **attachments** that can be added to the base aircraft to create the different configurations available. An attachment can be something as simple as a seat, or something much more complex like a landing gear assembly or an engine. The actual files and folders that are required by the attachment will be based on its functionality, with the most basic having simply a model and a texture folder, while the most complex can have all the functionality of any other SimObject, with sound, animations, effects, etc... as well as their *own* attachments. {{< callout context="note" title="NOTE" icon="outline/bulb" >}} This folder is **not** required for the aircraft to be a modular aircraft. {{< /callout >}}   Within the attachment folder you will have various sub-folders, one for each of the attachments that you wish to be available to the aircraft. For more information on SimAttachment setup, please see here: - [Sim Attachments](simattachments/sim-attachments/)   Within each attachment folder you can have the following sub-folders and files (the exact ones will depend on the overall functionality of the attachment, but note that the `model` and `texture` folders are **required**): | Folder | Files | | --- | --- | | `checklist` | `_.xml_`_See here for details: [Checklist XML Properties](Aircraft/Checklists/Checklist_XML_Properties/)_ | | `config` | `ai.cfg``aircraft.cfg``attached_objects.cfg``cameras.cfg``cockpit.cfg``engines.cfg``flight_model.cfg``gameplay.cfg``reference_points.cfg``sim.cfg``systems.cfg` | | `effects` | `effects.cfg`, `.fx` Only used for lighting effects. See here for details: [Implementing Lights](../../cfg-files/System/Implementing_Lights/) | | `flt` | `_.flt_`_See here for details: [FLT Files](../../flt-files/FLT_Files/)_ | | `input` | `InputProfiles/.xml`, `_.db_`_See here for details: [Input Configuration XML Properties](../../Input/Input_Configuration_XML_Properties/)_ | | `interactions` | `.xml`See here for details: [Service Interaction XML Properties](../../Navigation_Services/Interaction_XML_Properties/) | | `loads` | `loads.lbl`, `SimPropContainer.xml`Only used if the attachment has some kind of cargo load. See here for details: [Aircraft Loads](../../Careers/General_Career_Information/Aircraft_Loads/) | | `localization` | `_.loc_`_See here for details: [Localization (LOC Files)](../../Localization/Localization/)_ | | `model[.TAG]` | `model.cfg`, `.xml`, `.gltf`, `_.bin_`_See here for details: [Models](../../Models/Models/)_ | | `panel[.TAG]` | `panel.cfg``panel.xml` | | `navigation_graph` | `navigation_graph.cfg`, `.xml`See these pages for more details: [Cabin Services](../../Navigation_Services/Navigation_Services/), [Career Activities](../../Careers/Career_Activities/) | | `rtc` | `_.xml_`_,_ `.gltf`, `_.bin_`_See here for details: [RTC XML Properties](../../Cameras/RTC/RTC_XML_Properties/)_ | | `sound` | `sound.xml`, `PC.PCK`For specific setup information related to Modular SimObjects, please see [Sounds And Modular SimObjects](../../../4_Sound/Sounds_And_modular-simobjects/). | | `soundai` | `soundai.xml`, `PC.PCK`For specific setup information related to Modular SimObjects, please see [Sounds And Modular SimObjects](../../../4_Sound/Sounds_And_modular-simobjects/). | | `texture[.TAG]` | `texture.cfg`, `.xml`, `_.lbl_`_,_ `.png` / `_.tiff_`_See here for details: [Textures](../../Textures/Textures/)_ | | `thumbnail` | This folder contains a thumbnail relevant to the SimAttachment being defined. This file is _optional_ and is what will be used as part of the attachment preview in the [Attachments](../../../2_DevMode/SimObject_Editor/The_SimObject_Editor/#attachments) window:1. `thumbnail.png` - authored at 128x128 without opacityFor more information on how to generate thumbnails, please see here: [Thumbnails](../../../3_Models_And_Textures/Modeling/Aircraft/Thumbnails/) | | `wasm` | `.wasm`Only used if the attachment has any WebAssembly systems modules. See here for details: [Creating WASM Systems](../../../6_Programming_APIs/WASM/Creating_WASM_Systems/) | | `attachment.cfg` | Additional file that goes beside the attachment folders. Only required if the attachment is a modification of another existing attachment. | ### Liveries The `liveries` folder is exclusively for liveries, and as such will contain mainly model and texture folders, with a couple of necessary configuration files to tie it all together. The model and texture data should be nested in appropriately named folders within the **company name** folder, where each sub-folder is a specific livery. These sub-folders can be accompanied by a [`livery.lbl`](../../lbl-files/liveries-lbl/), which is used to link the different liveries with geographic regions and packages (used for [Dynamic Liveries](../../../models-and-textures/modeling/aircraft/airframe/liveries/dynamic-liveries/), as explained here - [Liveries](aircraft/liveries/liveries/)): {{< image-center src="images/5_Content_Config/SimObj/modular_aircraft/liveries/lbl_files_1_livery.png" alt="Example Of Where The livery.lbl File Should Be Placed" >}} {{< callout context="note" title="NOTE" icon="outline/bulb" >}} This folder is **not** required for an aircraft to be classed as modular. {{< /callout >}}   Within each livery sub-folder you must have a *model* folder and a *texture* folder, as well as the livery configuration file, although there are some other files and folders which may also be included, depending on how extensive the livery is. Each livery folder should be named appropriately for the *preset* that it represents: {{< image-center src="images/5_Content_Config/SimObj/modular_aircraft/liveries/livery_1_example.png" alt="An Example Of A Livery Folder In A Modular Aircraft" >}}   As you can see in the image above, the *model* folder has been appended with a **tag** name (*airframe* and *tail*, in the image above). This name is then used in the `[Tags]` section of the [`attachment.cfg`](../../cfg-files/attachment.cfg/) or [`sim.cfg`](../../cfg-files/sim.cfg/) to specify which livery is applied to which attachments or non-aircraft SimObject (you can have the same "tag" in multiple attachments so they all share the same livery files). Tags can also be used on the other folders too, if required.   The complete list of items you can have in the *liveries* folder is as follows: | Folder | Files | | --- | --- | | `model[.TAG]` | `livery.xml`, `_.gltf_`_,_ `.bin`See here for details: [Models](../../Models/Models/) | | `texture[.TAG]` | `texture.cfg`, `_.xml_`_,_ `.png` / `*.tiff`See here for details: [Textures](../../Textures/Textures/) | | `panel[.TAG]` | `panel.cfg`(only the `[VPaintingN]` section) | | `livery.cfg` | `livery.cfg`See here for details: [Liveries](Aircraft/Liveries/Liveries/) | | `thumbnail` | This folder contains the thumbnails relevant to the livery being defined. There are three thumbnail files which are _obligatory_:1. `thumbnail.png` - authored at 720 x 344 without opacity2. `thumbnail_button.png` - authored at 830 x 260, with opacity3. `thumbnail_side.png` - authored at 930 x 340, with opacityFor more information on how to generate thumbnails, please see here: [Thumbnails](../../../3_Models_And_Textures/Modeling/Aircraft/Thumbnails/) |   Note that a livery can override the base texture reference in the {{< glossterm >}}gltf{{< /glossterm >}}, which means that for a given texture name, the livery name should be used instead of the base one, and that the base one exists purely as a fallback. Also note that in addition to the folders and files for each livery, in the same location as the livery folders, you can have the `liveries.lbl`. This file is used to list all the available liveries and link them to to various different things.   For information on how liveries are merged with the rest of the aircraft geometry and textures, please see the following section: - [Merge Process For Liveries](modular-simobject-merging/#livery_merge)   For information on how liveries are created, please see here: - [Modelling Aircraft Livery](../../../models-and-textures/modeling/aircraft/airframe/liveries/modelling-liveries/)   For information on how to set up an aircraft package with liveries, please see here: - [Liveries](aircraft/liveries/liveries/)     ### Presets The `presets` folder contains the "glue" that holds everything else together. The idea here is that each variation of your aircraft has a "preset" which is a selection of additional CFG/XML/FLT files, and a special `attached_objects.cfg`, which is the file that tells the simulation which attachments should be merged with the base files to create the final aircraft. The different preset folders should be nested within the **company name** folder, where each nested folder is named after the **preset name**, for example: {{< image-center src="images/5_Content_Config/SimObj/modular_aircraft/mod_aircraft_preset.png" alt="Example Of A Modular Aircraft Preset" >}} {{< callout context="note" title="NOTE" icon="outline/bulb" >}} This folder is **required** for the aircraft to be a modular aircraft. {{< /callout >}}   Within the *preset* folder you can have the following folders and files: | Folder | Files | | --- | --- | | `checklist` | `_.xml_`_See here for details: [Checklist XML Properties](Aircraft/Checklists/Checklist_XML_Properties/)_ | | `config` | `ai.cfg``aircraft.cfg``attached_objects.cfg``cameras.cfg``cockpit.cfg``engines.cfg``flight_model.cfg``flight_performance.cfg``gameplay.cfg``reference_points.cfg``sim.cfg``systems.cfg` | | `effects` | `effects.cfg`, `.fx` Only used for lighting effects. See here for details: [Implementing Lights](../../cfg-files/System/Implementing_Lights/) | | `flt` | `_.flt_`_See here for details: [FLT Files](../../flt-files/FLT_Files/)_ | | `input` | `.xml`, `_.db_`_See here for details: [Input Configuration XML Properties](../../Input/Input_Configuration_XML_Properties/)_ | | `interactions` | `.xml`See here for details: [Service Interaction XML Properties](../../Navigation_Services/Interaction_XML_Properties/) | | `loads` | `loads.lbl`, `SimPropContainer.xml`Only used if the aircraft preset has some kind of cargo load. See here for details: [Aircraft Loads](../../Careers/General_Career_Information/Aircraft_Loads/) | | `localization` | `_.loc_`_See here for details: [Localization (LOC Files)](../../Localization/Localization/)_ | | `model` | `model.cfg`, `model.xml`, `.gltf`, `_.bin_`_See here for details: [Models](../../Models/Models/)_ | | `panel` | `panel.cfg``panel.xml` | | `navigation_graph` | `navigation_graph.cfg`See these pages for more details: [Cabin Services](../../Navigation_Services/Navigation_Services/), [Career Activities](../../Careers/Career_Activities/) | | `rtc` | `.xml`, `_.gltf_`_,_ `.bin`See here for details: [RTC XML Properties](../../Cameras/RTC/RTC_XML_Properties/) | | `sound` | `sound.xml` and `PC.PCK`. For specific setup information related to Modular SimObjects, please see [Sounds And Modular SimObjects](../../../4_Sound/Sounds_And_modular-simobjects/). | | `soundai` | `soundai.xml` and `PC.PCK`. For specific setup information related to Modular SimObjects, please see [Sounds And Modular SimObjects](../../../4_Sound/Sounds_And_modular-simobjects/). | | `texture` | `texture.cfg`, `_.xml_`_,_ `.png` / `_.tiff_`_See here for details: [Textures](../../Textures/Textures/)_ | | `thumbnail` | This folder contains the thumbnails relevant to the preset being defined. There are three thumbnail files which are _obligatory_:1. `thumbnail.png` - authored at 720 x 344 without opacity2. `thumbnail_button.png` - authored at 830 x 260, with opacity3. `thumbnail_side.png` - authored at 930 x 340, with opacityThere is also an _optional_ thumbnail file which should be included to highlight a specific aspect of any preset variation:1. `thumbnail_variation.png` - authored at 660 x 300, without opacityFor more information on how to generate thumbnails, please see here: [Thumbnails](../../../3_Models_And_Textures/Modeling/Aircraft/Thumbnails/) | | `wasm` | `.wasm`Only used if the preset has any WebAssembly systems modules. See here for details: [Creating WASM Systems](../../../6_Programming_APIs/WASM/Creating_WASM_Systems/) |