# The Project Editor The project editor allows to create and edit add-on packages for Microsoft Flight Simulator 2024 which are used to add new content to the simulation. To enable the project editor, [Developer Mode](../../../../introduction/sdk-overview/#developer-mode) must be enabled in the simulation. Once enabled you can open the project editor from the [Tools](../../../menus/tools/) menu or by by creating a new project using [New Project](../../../menus/file/#new-project) from the [DevMode](../../../menus/file/) menu. Either way, the following **Project Editor** window will open: {{< image-center src="images/2_DevMode/project_editor/editor/projed_1_projecteditor.png" alt="The Main Project Editor Window" >}} This editor has the following menu items across the top: - [Project](../menus/project/) - [Edit](../menus/edit/) - [View](../menus/view/) - [Settings](../menus/settings/) Below the menu items you have the following buttons (these are simply shortcuts to the most common options from the [Project](../menus/project/) menu): - ##### Build All In Project This will build all the packages in the current project. Note that if you wish to build a *single* package, you can do this by right-clicking on the package and selecting the **Build and Mount** option. - ##### Clean All In Project This will remove all packages and package information from the editor. Note that if you wish to clean a *single* package, you can do this by right-clicking on the package and selecting the **Clean** option. - ##### Build & Export This option will build all the packages in the currently open project, as if using the **Build All** option. It will then export the packages as a completed add-on, including any marketplace data. For more information on exporting, please see the [Export Window](../export-window/) page.   This window then permits you to set a **Default Company Name** and a **Default Creator Name** for the different add-ons that will be a part of the project. These fields *cannot* be left blank, and if you are an individual and not a company, you will still need to fill the company name in (you can use your own name, or some other "alias" like a forum username, for example). The Creator name can use special characters, have spaces, etc... but the Company name must be as short as possible - there is a 25 character maximum limit - and *cannot* contain capital letters, special characters, or spaces. Essentially only a-z and 0-9 are permitted. The main area of the Project Editor window will be taken up with a list of packages that form a part of the current project. If you have loaded a project or have created at least one package, you will have a **Filter** option to show only those packages that contain a specific input keyword, or - if you prefix the filter text with "`-`" - you can *omit* items with the filter keyword from the list. You will also have {{< button "Add Package" />}} and {{< button "Remove Package" />}} buttons. As you would expect, these are used to add new packages to the project - which can be scenery, an airport, aircraft livery, etc... - or to remove already existing packages from the project. Adding a package to the project editor is explained in the sections below. Most projects will be comprised of multiple files, the majority of which will be XML or CFG files. However there are other file types that may be used pr be created as part of a package by the Project Editor. These are all explained on the following page: - [File Formats](../file-formats/file-formats/) ### Package Order If you are opening an older project, either from the early days of Microsoft Flight Simulator 2024 or from a previous version of the simulation, you will be presented with the following window: {{< image-center src="images/2_DevMode/project_editor/editor/projed_22_hintselect.png" alt="The Order Hint Selection Window" >}} The **package order hint** is used to set the priorities of the packages when they are mounted in the {{< glossterm >}}vfs{{< /glossterm >}}, with the aim to maximise compatibility between packages and optimise the simulation. To start with when this window comes up you can click on the {{< button "Auto Set Order Hints" />}} button, which may simply set the hint for you based on context clues within the package. If there are multiple possible hints, then the window will be updated to show this and list the hints that are recommended: {{< image-center src="images/2_DevMode/project_editor/editor/projed_23_autohint.png" alt="Auto Set Order Hints Errors" >}} In this case, you should go ahead and click on the drop down list and select an appropriate hint for the package that you are loading. The list will be filtered with the recomended hints at the top, and all others below. You can find a full list of available hints and a description of what they are for on the following page: - [Package Order Hint](../the-project-inspector/#package-order-hint) Once a hint has been selected, the option to {{< button "Save Project And Exit" />}} will be available: {{< image-center src="images/2_DevMode/project_editor/editor/projed_24_savehint.png" alt="Save Project And Exit" >}} At any time you can click on the {{< button "Close Current Project" />}} button to close this window *and* the project you are trying to load (you *cannot* edit the project unless you set a package order hint). ### Package States At various points while using the Project Editor, your packages will be "tagged" with different state messages to help you better understand the current status of the package and the {{< glossterm >}}vfs{{< /glossterm >}}. For example: {{< image-center src="images/2_DevMode/project_editor/editor/projed_20_flags.png" alt="The Project Editor With Multiple Packages And Tags" >}} The different states that may be shown are as follows: - ##### Edited This will be shown on all packages that have been built by the Project Editor. Note that once a package has been built and tagged as **Edited**, it will stay that way, even if you close the simulation. Note that you can right-click on an edited package and select the option **Remove 'Edited' Tag**. The package will then show the **Previously Edited** tag (explained below) - ##### Previously Edited This tag signifies that the package has been edited, but has then been reverted using the right-click option, **Remove 'Edited' Tag**. This means that the package will return to it's *default* stage after the simulation has been closed and restarted (but is not *currently* in its default state). - ##### Outdated When you modify the contents of a package in DevMode, you will not always be required to build the package to see the changes. In those cases, the project editor will tag the asset as "outdated", which just means that you will need to build the package again to ensure that all the changes are applied for the next time you launch the simulation. {{< callout context="note" title="NOTE" icon="outline/bulb" >}} If you have outdated packages when closing the Project Editor or the simulation, you will be asked if you want to build them before closing, which you can choose to do or not, or simply cancel the close action. {{< /callout >}} - ##### Build Errors This tag will be shown on a package when the build fails. You can click the {{< button "Show Errors" />}} button to open the DevMode [Debug Console](../../../menus/debug_info/the-console/) on the corresponding message(s) for your package. - ##### Streamed A package that is tagged as "Streamed" is one that you have uploaded to the Marketplace, and that has since been streamed and installed on your machine, *but has not yet been edited*. A streamed package will load the *streamed* version into the simulation, **not** the one on disk, unless it is built in the Project Editor (in which case it will be tagged as "Edited", unless there are errors - see below). Note that if you are the developer of the package you will have to ensure that the package is activated on the marketplace for the option to play with the package to be available. - ##### Streamed (Because Local Version Has Errors) This tag will be shown when you try to locally build a package that is currently being streamed, and the built package has some kind of error(s). In this case you can click on the red text to open the DevMode [Debug Console](../../../menus/debug_info/the-console/) with the build error(s) for this package. Note that this will only work if you built the package during the current session, ie: you have not closed the simulation since you last built the package. ### Creating A New Project All add-ons in Microsoft Flight Simulator 2024 are created as **projects**, and within each project you can have one or more **packages**. A package is a self-contained add-on item, and can be an aircraft, an airport, some scenery, a mission, etc... To create each of the packages in the project you need to add **asset groups** which are the individual components that go together to make up the package. For example, an Airport package may have [BGL](../asset-types/#bgl), [MaterialLib](../asset-types/#materiallib) and [ModelLib](../asset-types/#modellib) asset groups. In this section we'll walk you through the creation of all these parts - **project**, **package** and **asset groups** - from the beginning. To start with you will need to create a new project which is done from the [New Project](../../../menus/file/#new-project) option in the [DevMode](../../../menus/file/) menu, or by opening the Project Editor and then selecting **New Project** from the [Project](../menus/project/) menu. Either option will open the "Create New Project" window: {{< image-center src="images/2_DevMode/menus/File/file_2_new_project.png" alt="The Create New Project Dialog" >}} Here you give a location where the project folder will be saved to (this folder is where all the package source files will be stored for the entire project), and the name of the project. Clicking {{< button "Create New Project" />}} will create the `.xml` file. If you have no yet defined a default creator name or company name, you may also supply these here, otherwise the fields will be pre-filled with the default names (which you can change if required). You will then be shown the following window: {{< image-center src="images/2_DevMode/project_editor/editor/projed_12_groups.png" alt="The Publishing Item Selection Window" >}} Here you want to select the **Package** option, as that's the most basic first step in creating add-on content for Microsoft Flight Simulator 2024. We'll cover the **Import Item** option [further down this page](#importing-packages). After this you will then be shown the **New Package** **Wizard**. where you give the **package** details. Every project that you make for Microsoft Flight Simulator 2024 must contain at least one **package**, which is a collection of files that will be bundled together to create the final add-on for the simulation. For example, you could have a package that adds scenery to the world, or adds an aircraft, or changes the livery of an existing aircraft. Your project can even contain multiple individual packages that do all these things and more. So, the first thing that you are required to do when you create a new project is add an initial package. #### Adding A Package The **New Package Wizard** is shown when you initially create a new project and name the initial package, or it will open when you click the {{< button "Add Package" />}} button from the main Project Editor window: {{< image-center src="images/2_DevMode/project_editor/editor/projed_2_addpackage.png" alt="The Add Package Window In The Project Editor" >}} Each of these buttons is a **wizard** to help you though the asset group creation process for your package. Currently you have a choice of several main package types: - ##### Aircraft This is what you should use when creating a Modular Aircraft. You can find more information on the page about [creating an aircraft project](../../../../samples-tutorials/tutorials/aircraft-checklist/creating-a-modular-aircraft-project/). - ##### Airport Airport packages are discussed in more detail on the page [Creating Or Replacing An Airport](../../../../samples-tutorials/tutorials/creating-or-replacing-an-airport/) - ##### Animal This package type is used when you want to an animal [SimObject](../../../../content-configuration/modular-simobjects/simobjects/living-things/). - ##### Boat This package type is used when you want to an boat [SimObject](../../../../content-configuration/modular-simobjects/simobjects/boats/). - ##### Device This package type is used when you want to create a [Device Profile](../../../../content-configuration/input/device-profiles/). - ##### Ground Vehicle This package type is used when you want to an ground vehicle [SimObject](../../../../content-configuration/modular-simobjects/simobjects/ground-vehicles/). - ##### Input Profile This package type is used when you want to create an [Input Profile](../../../../content-configuration/input/device-profiles/). - ##### Livery This package type is used when you want to create one or more liveries for an existing aircraft through [editing an existing livery](../../../../models-and-textures/modeling/aircraft/airframe/liveries/edited-liveries/). - ##### Scenery This package type is used when you want to create a scene that is *not* an airport (for example, a {{< glossterm >}}poi{{< /glossterm >}}) using [The Scenery Editor](../../../editors/scenery-editor/the-scenery-editor/). - ##### SimPropContainer This type is for creating [SimPropContainer Objects](../../../editors/scenery-editor/objects/simpropcontainer-objects/). - ##### Visual Effect Visual effect packages are discussed in detail on the page about [The Visual Effects Editor](../../../editors/vfx-editor/the-visual-effects-editor/). - ##### Custom This package type is used for anything that is not covered by the wizards listed above. Since the other wizards are covered elsewhere in the documentation, we'll be using the **Custom** type, so click the {{< button "Custom" />}} button and note how the window changes: {{< image-center src="images/2_DevMode/project_editor/editor/projed_3_custom.png" alt="Adding A Custom Package" >}} Here you need to give the following details about the package that you are creating: - ##### Display Title The title that will be displayed for the package in the content manager and on the Marketplace. A maximum of 50 characters. - ##### Company Name This will contain the name of the company in relation to the package. This will be the default name supplied for the project, but can be changed on a per-package basis. - ##### Package Name The name of the package. There are some guidelines on how the package should be named depending on the contents of the package, and they should all be based on the following schema: ``` developer - type ( - subtype ) - name-of-asset ( - variation-of-named-asset ) ( - subcontent ) ``` Below you can find more precise examples of how this naming convention can be applied to the main packages that will be made using the SDK (if a type of package is not mentioned here then you are free to name it as you see fit, but it's recommended to adopt the above shown formatting structure - for example a visual effects package could be named <company>-vfx-<name>): {{< callout context="caution" title="IMPORTANT!" icon="outline/bulb" >}} The package name has a maximum length of 128 characters. {{< /callout >}} - **Airports**: `-airport--`, for example - `mcsweeneyassets-airport-ksea-seattle-tacoma` - **Aircraft**: `-aircraft-`, for example - `mcsweeneyassets-aircraft-dr400` - **Model Libraries**: `-modellib-`, for example - `mcsweeneyassets-modellib-props` - **SimObjects**: `-simobjects-`, for example - `mcsweeneyassets-simobjects-characters` - **Scenery**: `-scenery-`, for example - `mcsweeneyassets-scenery-cliffsofdover` - ##### Content-Type The type of package that you are making. The available content types are shown below: {{< image-center src="images/2_DevMode/project_editor/editor/projed_4_content.png" alt="The Different Content Types For Custom Projects" >}} Which one of these different content types you select will depend on the package you are creating and the choice should follow these rules: - **Unknown** - This package type will only be shown when none of the types listed below are selected. This type will **not** permit you to build a package and a content type must be set before you can (this is done from the **Inspector** window for the package) - **Aircraft** - This package type is only for use when adding a new aircraft model to the simulator, and will require you to use [The SimObject Editor](../../simobject-editor/the-simobject-editor/). If you select this type of content then an additional option will be shown: - **Manufacturer**. This is the name of the manufacturer of the aircraft being referenced in the package. - **Instruments** - This package type permits you to bundle cockpit instruments together for use in several aircraft. - **Scenery** - This package type is for scenery elements made using the [The Scenery Editor](../../../editors/scenery-editor/the-scenery-editor/) (and is also used for Airports, but you should use the Airport Wizard [as explained here](../../../../samples-tutorials/tutorials/creating-or-replacing-an-airport/) instead). - **Livery** - This package type is for adding liveries to existing aircraft ([see here](../../../../content-configuration/modular-simobjects/aircraft/liveries/liveries/) for more information). - **Mission** - This package type is for creating missions. - **Input Profile** - This package type is for adding new input bindings to existing aircraft or to new devices. - **Misc** - This package type is for use for anything that doesn't fit into any of the "main" package types listed above (like [Visual Effects](../../../editors/vfx-editor/the-visual-effects-editor/), for example). Once you have filled in the required data and selected the package type you would click on the {{< button "Create" />}} button. It should be noted that each package requires a **package hint** to determine the mount order in the {{< glossterm >}}vfs{{< /glossterm >}}, and for all packages *except* custom, this is assigned automatically. However for **custom** packages, you need to set this manually in the **Project Inspector**. See here for more information: [Package Order Hint](../the-project-inspector/#package-order-hint) #### Adding An Asset Group When you first add a package, a new window will open where you can add your first **Asset Group** to the package: {{< callout context="note" title="NOTE" icon="outline/bulb" >}} All packages require at least one Asset Group, although you can add more later through the Inspector window, if required. {{< /callout >}} {{< image-center src="images/2_DevMode/project_editor/editor/projed_5_assets.png" alt="The Add Asset Group Window In The Project Editor" >}} Here you need to give the following details: - **Asset Group Name**: This is the name of the Asset Group as it will be shown in the Project Editor - **Asset Type**: This is the type of asset that is being added to the package. You can finds a complete list of available assets on the [Asset Types](../asset-types/) page of the documentation. - **Template**: Some assets have "templates" that can be used to create a base on which to build the asset. If one or more is available they will be listed in this section and you can click on the one you want to use to select it. If you click the wrong one, or do not wish to use a template, simply click on it again to deselect it. Once you have added the asset group, it will be shown beside the package in the **Project Editor**: {{< image-center src="images/2_DevMode/project_editor/editor/projed_5_editor.png" alt="The Project Editor With A New Package And Asset Group" >}} From the project editor, you can then click on the listed items that comprise the project to get further information about them in the **Inspector** window, which can be opened from the [View](../menus/view/) menu if it hasn't opened automatically. If you click on the asset group that was just added, you will see that the relative paths within the project for the packages assets and output have already been set up for you and you can then click the {{< button "Load In Editor" />}} button (if available for the asset group type) to open the asset in the relevant Dev Mode editor and start working on it. {{< image-center src="images/2_DevMode/project_editor/editor/projed_6_inspector.png" alt="The Project Editor Inspector Showing An Asset group" >}} #### Adding Further Asset Groups And Packages If a package needs to have multiple asset groups - for example, a scenery package may also require ModelLibs or Materials - then this can be done by selecting the *package* in the Project Editor, and then clicking the {{< button "Add Asset Group" />}} button at the bottom of the **Inspector** window: {{< image-center src="images/2_DevMode/project_editor/editor/projed_11_moreassets.png" alt="Add More Asset Groups To A Package" >}} This is also how you would add assets if you cancelled the initial package wizard when you first created the package. You can also have multiple packages in the same project - for example, you can have an aircraft package along with a couple of livery packages. To add a new package to the project you need to click the {{< button "Add Item" />}} button at the bottom of the **Project Editor** and select the **Package** option: {{< image-center src="images/2_DevMode/project_editor/editor/projed_11_morepackages.png" alt="The Add Item Button In The Project Editor" >}} This will then open the Package Wizard, and you can begin the process explained at the top of this page in the [Adding A Package](#adding-a-package) section. #### Building A Package Once you have added the assets and made the editions you need, you can **build** the package and test it in the simulation. This can be done by clicking either the {{< button "Build All In Project" />}} button at the top of the project editor, or - if you have multiple packages in the project and only want to build one of them - using the {{< button "Build package" />}} button at the bottom of the **Inspector** window for the package: {{< image-center src="images/2_DevMode/project_editor/editor/projed_10_build.png" alt="The Build Button In The Inspector For A Package" >}} This will build (compile) the package into a format that can be used by the simulation, and save it to the `Packages` folder within the project files. This package can then be zipped and shared with other users, who can unzip it into [The Community Folder](../../../../introduction/sdk-overview/#the-community-folders) and see the package contents in their version of Microsoft Flight Simulator 2024. The {{< button "Build package" />}} button will also *temporarily* add the package to the simulation. So, if it is - for example - an aircraft, you can test it by going to the main menu and looking for it in the available aircraft. {{< callout context="note" title="NOTE" icon="outline/bulb" >}} The build progress can be tracked by opening the console (in the menu bar choose {{< link "../../menus/debug_info/">}}Debug{{< /link >}} > {{< link "../../menus/debug_info/the-console/" >}}The Console{{< /link >}} ). {{< /callout >}} If your project has multiple packages - or you want to build a package for Microsoft Marketplace - then an alternative to building them individually is to use the [Build & Export](../menus/project/#build--export) option from the Project Editor [Project](../menus/project/) menu. This will build all the packages within the project at the same time, adding them all to the simulation and saving them to the `Packages` folder. This option is explained in more detail on the page covering the [Export Window](export-window/). Finally, if you wish to only build *selected* packages, you can do the following: - {{< input "Ctrl" />}} + *left click* to add to the current selection. - {{< input "Shift" />}} + *left click* to select a range of packages. The list of selected packages is visible inside the Inspector if you ever need to check which items have been selected: {{< image-center src="images/2_DevMode/project_editor/editor/projed_21_multiselect.png" alt="The Project Inspector Listing Multiple Selected Packages" >}} Find out more information about selecting multiple packages here: - [The Selected Packages Inspector](../the-project-inspector/#the-selected-packages-inspector) ### Importing Packages It may be that you want to consolidate multiple packages within a single project - for example, an aircraft along with it's liveries. You can import packages in one of two ways: - **When Creating A New Project**: When you create a new project, the New Project Wizard will give you the option to import an exisiting package from another project: {{< image-center src="images/2_DevMode/project_editor/editor/projed_15_import.png" alt="The Import Item Button In The Project Creation Wizard" >}} - **As Part Of An Existing Project**: When you have an existing project open in the Project Editor, you can click on the {{< button "Import Item" />}} button: {{< image-center src="images/2_DevMode/project_editor/editor/projed_16_import.png" alt="The Add Item Button In The Project Editor" >}} In either case, you will be presented with a new window asking you to provide the path to the **package definition file** (XML) for the package that is to be imported: {{< image-center src="images/2_DevMode/project_editor/editor/projed_17_itemselect.png" alt="The Import Item Window" >}} If you click the ... button, a file explorer window will open and you can navigate to the **PackageDefinitions** folder where you will find the XML file that defines the package you want to import: {{< image-center src="images/2_DevMode/project_editor/editor/projed_18_definition.png" alt="The PackageDefinitions Folder" >}} Once you select the XML file to import, the Import Item window will show a message saying that the XML file chosen is correct and that you can continue to import the package: {{< image-center src="images/2_DevMode/project_editor/editor/projed_19_import.png" alt="The Import Item Window" >}} When the package import process has finished it will be listed in the Project Editor along with any other packages that the project contains. ### The Inspector The **Inspector** window can be opened from the [View](../menus/view/) menu of the Project Editor and is used to show additional information about the **Packages** and **Asset Groups** that are currently listed as part of the project. You can find full details from the following page: - [The Package Inspector](../the-project-inspector/)