aircraft.cfg
Every Microsoft Flight Simulator 2024 aircraft is defined by a mandatory Aircraft Configuration File called aircraft.cfg
. It mainly provides general information about the aircraft and its variations to the simulation. Most of the data in this file can be set dynamically using The SimObject Editor - specifically from the Aircraft tab.
Below you can find information on the different sections used in the aircraft.cfg
file as well as what parameters and values are expected within them.
[Version]
The [Version]
section provides version information for the configuration file. In Microsoft Flight Simulator 2024, major versions should always be at least equal to 1.
Note that this section information is mandatory and should always be included.
Parameter | Description | Type | Required |
---|---|---|---|
major |
Major CFG file version number, values must be greater than 0. | Integer | Yes |
minor |
Minor CFG file version number, values must be greater than 0. | Integer | Yes |
[LIVERY]
This section is optional and only used when the aircraft being defined is a livery variation of an existing aircraft. The section only has one parameter:
Parameter | Description | Type | Required |
---|---|---|---|
base_container |
This is the relative path to the aircraft package which this aircraft should be based on within the VFS when the simulation is running. | String | No |
It is important to note that adding a livery does not permit you to change all the aircraft parameters, only those given in the [FLTSIM.N]
section.
[GENERAL]
In the [GENERAL]
section of the Aircraft Configuration File there are multiple entries that relate to properly configuring a plane to be integrated into the sim in the following ways:
- multiplayer
- as a grounded/parked plane
- as part of the air traffic
The parameters available are mostly related to how the plane is identified by the database of the ICAO and they should all be non-localized.
Parameter | Description | Type | Required |
---|---|---|---|
atc_type |
This is the "brand" name of the aircraft. | String | Yes |
atc_model |
This is the model name of the aircraft. | String | Yes |
Category |
The category for the SimObject. This is a general category used by the simulation as a filter for some options and activities. |
Enum (aircraft.cfg only):
Enum (sim.cfg only):
|
Yes |
object_class |
This parameter defines the class of aircraft with more detail than the category parameter, and is used as part of the criteria for deciding whether the aircraft can participate in some career activities. Default value is "Airplane". |
String:
|
No |
icao_type_designator |
The ICAO type designator of the plane. It can be different to the
Note that this is the parameter that will - in part - govern which aircraft are visible in a multiplayer scenario. Please see Air Traffic And Multiplayer Aircraft for more information. If your aircraft is "experimental" or not listed in the official database, you may put what you wish here, and the tail number will be used by the ATC. |
String | Yes |
icao_manufacturer |
The ICAO manufacturer of the plane. It could be different from the actual manufacturer of the plane. All possible values are available from the ICAO official database. For example the Textron 172 Skyhawk:
If your aircraft is "experimental" or not listed in the official database, you may put what you wish here, and the tail number will be used by the ATC. |
String | Yes |
icao_model |
The ICAO model name of the plane. It can be different to the
|
String | Yes |
icao_engine_type |
The ICAO engine type of the plane (for gliders use an empty string""). For example the Daher TBM 930:
|
String:
|
Yes |
icao_engine_count |
The ICAO engine count of the plane (usually a value between 1 and 16, although for a glider it can be 0). For example the Daher TBM 930:
|
Integer | Yes |
icao_wtc |
The ICAO Wake Turbulence Category of the plane. For example the Daher TBM 930:
|
Enum:
|
Yes |
icao_generic |
If TRUE, the plane is intended to be only used as a passive/Air Traffic plane and is not identifiable as a specific real plane. Please see the Air Traffic And The Aircraft.cfg File section for additional information related to this setting. Default is 0 (FALSE). |
Bool | No |
For multiplayer, the user might be choosing to use optimized and generic planes to represent other players planes, or they might not possess the correct plane model. In those cases, if the icao_type_designator
matches an entry in the ICAO database, the model will be swapped with a generic plane that is as close as possible to that plane, in terms of WTC, engine count and engine type.
For air traffic, if the icao_type_designator
matches an existing entry in the ICAO database, it might be used to represent a plane from the Real Online traffic. Please check the [FLTSIM]
section and the AI configuration file documentation for further information on correctly integrating the plane in the grounded/parked planes and in air traffic.
[PILOT]
This section was previously used for defining the pilot, copilot and instructor styles for the aircraft. However in Microsoft Flight Simulator 2024, only the parameters related to the copilot are used.
NOTE: This section is largely only relevant to specific copilot information, as the pilot is spawned and handled using a set of predefined behaviours based on the navigation_graph_pilot.cfg
file, as explained here: Spawn Pilot
This section can have the following parameters:
Parameter | Description | Type | Required |
---|---|---|---|
cabin_service |
This is the name of the navigation service XML file that the copilot should use (omitting the file extension). Currently the only available service XML is "CopilotService". Default value is "CopilotService". |
String | No |
generated_copilot |
This is the name of the profile to use for the generated copilot model. It can be any one of those listed here: Generated Character Profiles. In general you will want it to be set to "Copilot", but others can be used depending on the activity and type of aircraft. Default value is "", which means no copilot will be spawned. |
String | No |
copilot_behavior |
This is used to set the initial copilot behaviour, as defined in the The default value is "COPILOT". |
String | No |
hide_avatar |
This is used to set up how the pilot avatar is hidden. If set to 0 (false), the pilot avatar will only be hidden when the cockpit camera is used. If set to 1 (true) then the pilot avatar will always be hidden while inside the aircraft, regardless of the camera being used. Note that this will not affect the avatar visibility outside the aircraft. This can be used if the aircraft has a pilot avatar included as part of the model and doesn't want to display the one the simulation generates. Default value is 0. |
Boolean | No |
pilot |
This is the title of the SimObject - as set in the sim.cfg file. If you do not set this parameter then no pilot object will be spawned, although for user aircraft it may still spawn a pilot if a mission explicitly specifies one. If the player has a setting other than "Default" in the simulation options menu, then that setting will override this one (and may also spawn a pilot if this parameter is omitted). For a list of pilots available without creating your own SimObjects, please see the List Of Included Pilot/Copilot/Instructor SimObjects. NOTE: In "freeflight", this parameter may be ignored if the aircraft Default is "". |
String | No |
copilot |
This is the title of the SimObject - as set in the sim.cfg file f NOTE: In "freeflight", this parameter may be ignored if the aircraft Default is "". |
String | No |
instructor |
This is the title of the SimObject - as set in the sim.cfg file for a human SimObject - that is to be used as instructor in an aircraft. This title is only used for user aircraft (never AI ones) and in missions, and only then if the mission XML specifies the instructor as default in the *.flt file. For a list of instructors available without creating your own SimObjects, please see the List Of Included Pilot/Copilot/Instructor SimObjects.
Default is "". |
String | No |
pilot_default_animation |
A string representing the animation (BlendTreeState) that will be used by the Human Character pilot. If using one of the included pilots this should be "Idle1_PoseAirliner" or "Idle1_PosePropeller", depending on the type of aircraft. Default is Note that this parameter takes a table of 16 strings with the format:
|
List of strings |
No |
copilot_default_animation |
A string representing the animation (BlendTreeState) that will be used by the Human Character copilot. If using one of the included pilots this should be "Idle1_PoseAirliner" or "Idle1_PosePropeller", depending on the type of aircraft. Default is "". |
List of strings |
No |
pilot_attach_node |
A string which is the name of a Node in the model of the aircraft, where the pilot will be attached. The default value is "PILOT_0". |
String | No |
copilot_attach_node |
A string which is the name of a Node in the model of the aircraft, where the copilot will be attached. The default value is "COPILOT". |
String | No |
[SERVICES]
This section details which Airport Services can be available for this aircraft. Each line in this section contains a name of a service, followed by = 1
to mark it as available, or = 0
to make it unsuitable for the aircraft. Any unspecified service is considered unavailable (0) by default. The following parameters for services exist:
Note that most services require properly defined [Interactive Points]
in order to be usable.
Also note that if neither PUSHBACK
nor SMALL_PUSHBACK
are available (for example with aircraft having a left and right front wheels instead of a centered one), the User will still be able to pushback the aircraft (with Shift+P), but this might appear as "magic" because no visible vehicle or human character will be seen pushing the aircraft.
[LOADING]
Set an image to be used when starting a flight with the aircraft, along with one or more accompanying "tips" texts. The available parameters are:
[IKCHAINS]
This section is used to set up the inverse kinetic chain between the pilot extremities and the yoke/stick and pedals. Here you give the nodes on the cockpit model elements that should "connect" with the relevant part of the pilot/copilot model (hands and feet). The parameters available are:
[EXITS]
This section defines the exits for the aircraft.
NOTE: This section is no longer used in Microsoft Flight Simulator 2024 aircraft.
It can have the following parameters:
Parameter | Description | Type | Required |
---|---|---|---|
number_of_exits |
This value defines the number of simulated exits, or doors, on the aircraft. | Integer | Yes |
exit.N |
Each one of these entries defines the properties of an exit starting at
For example:
|
List of Floats |
No |
[VR]
For each base aircraft, a VR section should be added to bind node descriptors to the actual meshes or animations of the glTF file for the aircraft. This section has the following parameters:
Parameter | Description | Type | Required |
---|---|---|---|
yoke_anim_x |
This is the name of the horizontal stick animation left/right or the rotational yoke animation left/right, eg: Default value is "". |
String | No |
yoke_anim_y |
This is the name of the vertical (depth) yoke animation, eg: Default value is "". |
String | No |
yoke_node |
This is the name of the yoke node of the model. Note that this node - and all its children - will be highlighted when the yoke is selected by the player. Default value is "". |
String | No |
yoke_collision_mesh |
This is the optional collision mesh added to enhance interactions with the yoke. See the section Collision Mesh For The Yoke for more information. Default value is "". |
String | No |
For more information on VR controls for the yoke and stick, please see here:
[InteractionMgr.N]
This section initialises the interaction manager for the aircraft. This section must be added if there are interactions between SimObjects in the aircraft, for example, the interaction between the pilot, the seat, and the seatbelt. You can define multiple of these sections numbering them from 0, where each section is applied to a variation of the aircraft. You can find further information on interactions from the the following page:
This section can have the following parameters:
[FLTSIM.N]
The [FLTSIM.N]
section(s) are used to define the behavior of the aircraft as a SimObject, and whether it is available to the user or not. You can define multiple of these sections numbering them from 0, where each section is a variation of the aircraft. The following parameters exist for this section:
Parameter | Description | Type | Required |
---|---|---|---|
title |
The aircraft variation name. Names are a unique identifier of SimObjects and their variants. We recommend using your company name as a prefix, to guarantee the uniqueness of your SimObject even when included with objects produced by other 3rd party developers. | String | Yes |
operating_status |
This parameter tells the simulation what status the aircraft has. The string given here will affect what activities the aircraft can participate in as well as how it is displayed to the user. The status descriptions are as follows:
The default value is "in_service". |
String:
|
No |
targeted_specializations |
This is used in conjunction with the online version of the Career Compatibility tool to define whether an aircraft is available for a career specialisation or not. The parameter requires a list of Specialisation Codes to define the specialisations that you wish the aircraft to participate in. As an example:
Using this parameter you can exclude your aircraft from compatible specialisations by ommitting the specialisation code from this list. So the aircraft will only be available to those specialisations that are listed here and have been validated. If no specialisations are listed here the aircraft will not be available in any career activity. |
List of strings | Yes |
military |
When this is set to 1 (TRUE) then the aircraft will be considered a military aircraft. Default value is 0 (FALSE). |
Boolean | No |
premium |
When this is set to 1 (TRUE) then the aircraft will be considered a premium (luxury) aircraft. Default value is 0 (FALSE). |
Boolean | No |
model |
The folder for the aircraft model (if it's the default "model" folder, leave as an empty string ""). | String | No |
panel |
The folder for the aircraft panel (if it's the default "panel" folder, leave as an empty string ""). | String | No |
sound |
The folder for the aircraft sounds (if it's the default "sound" folder, leave as an empty string ""). However we recommend that you specify a path to to the sound folder, for example: sound="\..\..\MyCompany_MyAircraft\sound" It is worth noting that you can also specify a folder name suffix instead of a full path, for example: sound=CFM When using a suffix like this, the code will then look for a folder called IMPORTANT! By adding a folder name suffix, your event names will concatenate your PC.PCK file name with your suffix, for example: |
String | No |
soundai |
The folder for the aircraft AI sounds (if it's the default "soundai" folder, leave as an empty string ""). However we recommend that you specify a path to to the sound AI folder, for example:
soundai="\..\..\MyCompany_MyAircraft\soundai" It is worth noting that you can also specify a folder name suffix instead of a full path, for example: soundai=CFM When using a suffix like this, the code will then look for a folder called IMPORTANT! By adding a folder name suffix, your event names will concatenate your PC.PCK file name with your suffix, for example: |
String | No |
texture |
The folder for the aircraft textures (if it's the default "texture" folder, leave as an empty string ""). | String | No |
effects |
The folder for the aircraft lighting effects (if it's the default "effects" folder, leave as an empty string ""). NOTE: This is only for light effects, as explained in this section - Implementing Lights. |
String | No |
kb_checklists |
Procedures/Checklist sibling file name. | String | No |
kb_reference |
Reference information sibling file name. | String | No |
description |
A full description of the aircraft variation. | String | No |
short_description |
A short description of the aircraft variation. | String | No |
wip_indicator |
The current development status of the variation. |
Integer:
|
No |
ui_manufacturer |
Localisable string indicating the manufacturer. | String | No |
ui_type |
Localisable string indicating the aircraft type. | String | No |
ui_typerole |
String indicating the typical aircraft role. Can only be one of those listed currently. This will change what type of data is shown in the simulation UI when the user is inspecting the aircraft. If an incorrect string is given (ie: not one of those from the list), then the UI will only show the weight of the aircraft. Note that if your aircraft does not fit any of the descriptive strings available, then you should pick the one that is closest in terms of general properties. |
String:
|
No |
ui_variation |
Localisable string indicating the variation of the aircraft. | String | No |
ui_createdby |
Name of the person or company that created the asset. | String | No |
ui_thumbnailfile |
Relative path to the thumbnail image for the aircraft asset. | String | No |
ui_certified_ceiling |
The service ceiling/max certified operating altitude, in ft. | Float | No |
ui_max_range |
The maximum distance the aircraft can fly between take-off and landing, in nm. | Float | No |
ui_autonomy |
The maximum duration the aircraft can fly between take-off and landing in hours. | Float | No |
ui_fuel_burn_rate |
The average fuel consumption per hour, in lbs. | Float | No |
ui_powerplant_specifics |
A short localisable string that describes the powerplant of the aircraft. This can be the make and model or something more generic, for example:
|
String | No |
ui_instrumentation |
A short localisable string that describes the instrumentation of the aircraft. This can be the make and model or something more generic, for example:
|
String | No |
ui_additional_information |
A short localisable string that gives any important additional information about the aircraft, for example:
|
String | No |
atc_id |
This gives the registration number of the aircraft (note that it can be modified in the simulation options by the user). The options for how this is displayed will depend on the For more information please see here: Registration Numbers. |
String | No |
atc_airline |
The airline name. | String | No |
atc_flight_number |
The flight number. | String | No |
atc_heavy |
Whether the aircraft is heavy (TRUE, 1) or not (FALSE, 0). | Bool | No |
atc_parking_types |
List of types of parking permitted for the aircraft. This is a single string containing a comma separated list of possible parking types, eg: "GATE,RAMP,CARGO" |
String:
|
No |
atc_parking_codes |
A single string containing a comma separated list of parking codes, eg: "F18,A" | String | No |
isAirTraffic |
If this is set to TRUE (1) then this variation is considered to be optimized for use as a parked plane, or as part of air traffic. Please see the Air Traffic And The Aircraft.cfg File section for additional information related to this setting. |
Bool | No |
canBeUsedByAITraffic |
If this is set to TRUE (1) the aircraft will appear in AI Offline AirTraffic and/or in Parked Aircraft. If set to FALSE (0) then it won't be used for these things. The default value is TRUE (1). Please see the Air Traffic And The Aircraft.cfg File section for additional information related to this setting. |
Bool | No |
isUserSelectable |
If this is set to FALSE (0) this variation is not selectable to the user for flying. Please see the Air Traffic And The Aircraft.cfg File section for additional information related to this setting. |
Bool | No |
icao_airline |
Non-localized ICAO code of the airline if the variation is a livery for a real airline. Please see the Air Traffic And The Aircraft.cfg File section for additional information related to this setting. |
String | No |
isTowPlane |
This parameter can be used to flag the aircraft as available for use as a tow plane for gliders. Default value is false. |
Bool | No |
interior_occlusion_factor |
The interior models of the aircraft (passengers, seats, cargo, etc...) will have Ambient Occlusion included as part of their material definition when they were modeled. However, this may need adjusting at run-time depending on the aircraft they are being used in. As such this parameter can be adjusted to modify the amount of AO to be applied when the model is inside the aircraft. NOTE: This can be further adjusted using the node_occlusion_factor parameter when working with node graphs. Default value is 1. |
Float | No |
This value is the number of available seats in the aircraft, minus the pilot and copilot. Default value is 0. |
Integer | No | |
sim |
String | No | |
targeted_dressings |
List of strings | No |
Specialisation Codes
The following table gives all the codes required for the targeted_specializations parameter:
Specialisation | Dressing Code | Cabin Code |
---|---|---|
Medevac - Plane | MED-PLN | MED_Cabin |
Cargo Transport (Light) - Plane | CAR-PSO | CAR_Cabin |
Cargo Transport (Medium) - Plane | CAR-PLC | |
Cargo Transport (Heavy) - Plane | CAR-PCC | |
Cargo Transport (Super Heavy) - Plane | CAR-PVO | |
Remote Cargo Ops - Plane | CAR-PLM | |
Cargo Transport - Rotorcraft | CHT-ROH | CHT_Cabin |
Aerial Construction - Rotorcraft | CHT-AEC | |
Scientific Research - Plane | DIC-SCR | DIC_Cabin |
Passenger Transport - Plane | COF-PCC | COF_Cabin |
Passenger Transport - Rotorcraft | COF-ROT | |
Charter Service (Private) - Plane | PRC-PSO | COF_Cabin / PRC_Cabin |
Charter Service (VIP) - Plane | PRC-PLC | PRC_Cabin |
Charter Service (VIP Airliner) - Plane | PRC-PCC | |
Search & Rescue - Plane | SAR-PLN | COF_Cabin |
Search & Rescue - Rotorcraft | SAR-ROT | SAR_Cabin |
Search & Rescue (Hoist) - Rotorcraft | SAR-ROI | |
Aerial Firefighting (Initial Attack) - Plane | FIR-INA | FIR_Cabin |
Aerial Firefighting (Extended Attack) - Plane | FIR-EXA | |
Skydive Aviation - Plane | SKP-PLN | SKP_Cabin |
Agricultural Aviation - Plane | AEA-PLN | AEA_Cabin |
Agricultural Aviation - Rotorcraft | AEA-ROT | |
Aerial Advertising - Plane | AAD-PLN | AAD_Cabin |
First Flight - Plane | FIF-PLN | COF_Cabin |
Flightseeing - Plane | TOR-PLN | |
Flightseeing - Rotorcraft | TOR-ROT | |
Ferry Flight - Plane | FEF-PLN | DEFAULT |
[EFFECTS]
IMPORTANT! This section relates to using legacy effects from previous versions of the product, and currently this system should only be used for creating lights (as explained here: Implementing Lights). If you have included this section and have any parameters here that are not for lights (eg: vapor trails, water wake, etc...) then you should remove them as they can cause significant performance issues for zero gain as they will not be seen. For the current way of creating and using effects please see the section on Visual Effects. The effects section of the file refers to the visual effects that result from various systems or reactions of the aircraft. An effect file associated with a keyword in this section will be used when the corresponding action is triggered. If no entry is made a default effect file will be used.
Each entry can be followed by a ,1
if the effect is to be run for a single iteration. Set this number to ,0
or leave blank for the effect to continue as long as the respective action is active, for example:
[EFFECTS] vaportrail_l = fx_vaportrail_l, 0 vaportrail_r = fx_vaportrail_r, 0 l_wingtipvortice = fx_wingtipvortice_l, 1 r_wingtipvortice = fx_wingtipvortice_r, 1
If you make an entry in the configuration file it will replace the default effects with a new one, or - to turn off the effect - add an entry that references the fx_dummy
effect (which does nothing).
The table below outlines the aircraft effects parameters, though of course not all effects are supported on all aircraft:
Effects can also be specified for an aircraft within a list using the following format:
effect.N = \<nodename\>#\<SimCode\>#<fxFileName>
Where N
is the effect number and nodename
is the model node that the effect will be attached to. SimCode
is a script expression that has to return TRUE or FALSE (1 or 0), and the effect will show up based on this value. Here is a more thorough example:
effect.0 = L1_EngineFX#(A:GENERAL ENG COMBUSTION:1, boolean)#fx_reactorHeat effect.1 = L2_EngineFX#(A:GENERAL ENG COMBUSTION:2, boolean)#fx_reactorHeat effect.2 = R1_EngineFX#(A:GENERAL ENG COMBUSTION:3, boolean)#fx_reactorHeat effect.3 = R2_EngineFX#(A:GENERAL ENG COMBUSTION:4, boolean)#fx_reactorHeat
The last input in the line is a *.fx
file. At this time, it is not yet possible to re-define the effects used.
NOTE: You can find the different *.fx
files in the fs-base-effects-legacy
folder of your Microsoft Flight Simulator 2024 installation.
Here's a full example for a Boeing:
[EFFECTS] wake=fx_wake water=fx_spray dirt=fx_tchdrt concrete=fx_sparks touchdown=fx_tchdwn, 1 effect.0 = L1_EngineFX#(A:GENERAL ENG COMBUSTION:1, boolean)#fx_reactorHeat effect.1 = L2_EngineFX#(A:GENERAL ENG COMBUSTION:2, boolean)#fx_reactorHeat effect.2 = R1_EngineFX#(A:GENERAL ENG COMBUSTION:3, boolean)#fx_reactorHeat effect.3 = R2_EngineFX#(A:GENERAL ENG COMBUSTION:4, boolean)#fx_reactorHeat