aircraft.cfg
Every Microsoft Flight Simulator 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 Aircraft 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, major versions should always be at least equal to 1. Setting this version number to 1 or higher does a number of things:
- It allows splitting of the aircraft configuration file sections. This is optional, meaning all sections described in the other configuration file chapters may be defined in the
aircraft.cfg
. - It completely removes the
*.air
file as a dependency. All parameters must be configured in the configuration files instead. Note that this is also possible with lower versions, though in that case the*.air
file will be read for missing parameters. - It enables a number of improvements to animation and simulation, including:
- Model animations that are configured with lag will ignore this lag variable on their first frame of animation, immediately initializing to the requested state.
- Turbine engines can now generate some torque from their starter rather than solely rely on combustion.
- Turbine engines starters can be automatically disabled after reaching a specified N1 or N2 speed.
- Flaps can now have a position in between their defined positions.
- Electrical fuel pumps may be set to auto in addition to on or off.
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 |
[VARIATION]
This section is optional and only used when the aircraft being defined is a variation of an existing aircraft. The most common use case for this section is when creating liveries, but really it can be used when you want to base an aircraft off of any existing one in the simulation for any reason. 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 variation 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 (in this case it will almost always be "Airplane" or "Helicopter"). |
Enum:
|
Yes |
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 Note For Multiplayer Aircraft for more information. |
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:
|
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 Notes On Air Traffic 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 is for defining the pilot, copilot and instructor styles for the aircraft. It can have the following parameters:
Parameter | Description | Type | Required |
---|---|---|---|
pilot |
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 |
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:
|
1D Table of strings (see Data Types for more information) |
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 "". |
1D Table of strings (see Data Types for more information) |
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:
Parameter | Description | Type | Required |
---|---|---|---|
FUELTRUCK |
Ability to call a FuelTruck from a parking. Even if unavailable, this does not prevent the aircraft taxiing to a Fuel Station. |
Bool | No |
BAGGAGE_LOADER |
This determines whether the entire baggage service is available or not. | ||
CATERING_TRUCK |
This determines whether a catering truck is available or not. | ||
BOARDING_RAMP |
This determines whether a boarding ramp (ie: moving stairs) is available or not. | ||
GROUND_POWER_UNIT |
This determines whether ground power units are available or not. | ||
PUSHBACK |
This is for the large model of pushback, mostly for airliners. | ||
SMALL_PUSHBACK |
This is for the small model of pushback vehicle, designed for small GA aircrafts and private jets. The aircraft needs to have a centered front wheel | ||
MARSHALLER |
This determines whether a marshaller is available or not. | ||
JETWAY |
This determines whether a Jetway is available or not. If unavailable, aircraft will still be able to park at Gates, but not to connect to a jetway |
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.
[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: Legacy Visual Effects For 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:
Parameter | Description | Single Iteration | Type | Required |
---|---|---|---|---|
wake |
A wake effect for water. Default would be |
False |
Enum:
|
No |
water |
The landing, taxiing or taking off from water effect. Default would be |
False | ||
waterspeed |
Traveling at speed on the water. Default would be |
False | ||
dirt |
Moving on dirt. Default would be |
False | ||
concrete |
Moving on concrete. Default would be |
False | ||
touchdown |
The touchdown effect. Default would be |
True | ||
contrail |
Contrail effect, applies to jets flying above 29000ft. Default would be |
False | ||
startup |
Engine startup. Default would be |
True | ||
landrotorwash |
Rotor wash. Helicopters only. Default would be |
False | ||
waterrotorwash |
Water rotor wash. Helicopters only. Default would be |
False | ||
vaportrail_l |
Left wing vapor trail. Default would be |
False | ||
vaportrail_r |
Right wing vapor trail. Default would be |
False | ||
l_wingtipvortice |
Left wingtip vortice (contrails off the wingtip, usually from a jet such as the F18). Default would be |
True | ||
r_wingtipvortice |
Right wingtip vortice (contrails off the wingtip, usually from a jet such as the F18). Default would be |
True | ||
fueldump |
Fuel dump active. Default is |
False | ||
EngineFire |
Engine fire. Default would be |
False | ||
EngineDamage |
Engine damage. Default would be |
False | ||
EngineOilLeak |
Oil leak. Default would be |
False | ||
SkidPavement |
Skid on tarmac, leaves a mark. Default would be |
False | ||
SnowSkiTrack |
Skid on snow. Default is |
False | ||
WheelSnowSpray |
Taking off on snow. Default would be |
False | ||
WheelWetSpray |
Taking off on wet runway. Default would be |
False | ||
WetEngineWash |
Similar to Default would be |
False | ||
SnowEngineWash |
Similar to Default would be |
False | ||
WaterBallastDrain |
Draining the water ballast, applies only to sailplanes. Default would be |
False | ||
PistonFailure |
One or more pistons failed. Default would be |
True |
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 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
You can find out more information on using (legacy) effects from the section on Legacy Visual Effects For Lights.
[LOADING]
Set one or more images used when starting a free flight with the aircraft, along with one or more accompanying tips text. The available parameters are:
Parameter | Description | Type | Required |
---|---|---|---|
ImageName |
The relative path and filename of the loading image to use for the aircraft when starting a free flight. Images should be PNG or JPEG format and 3840*2160px in size. Note that you can use LOADING_FREEFLIGHT instead of a path to get generic freeflight images instead. |
String | Yes |
TipsN |
This is a "tip" text that will be shown along with the loading image. You can have multiple tips for any image, counted from 0, and these tips can be localisable. For example: Tips0=TT:LOADING.TIPS.AIRCRAFTNAME_000 Tips1=TT:LOADING.TIPS.AIRCRAFTNAME_001 Tips2=TT:LOADING.TIPS.AIRCRAFTNAME_002 Tips (whether localised or not) are comprised of a comma seperated list, which can be formatted in the following ways:
The available categories are as follows:
|
String | No |
[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:
Parameter | Description | Type | Required |
---|---|---|---|
right_hand_target |
This is the name of the node on the stick/yoke where the right hand will be "connected", eg: Default value is "". |
String | No |
left_hand_target |
This is the name of the node on the stick/yoke where the left hand will be "connected", eg: Default value is "". |
String | No |
left_foot_target |
This is the name of the node for the foot pedal where the right foot will be "connected", eg: Default value is "". |
String | No |
right_foot_target |
This is the name of the node for the foot pedal where the left foot will be "connected", eg: Default value is "". |
String | No |
[EXITS]
This section defines the exits for the 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:
|
1D Table of Floats (see Data Types for more information) |
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:
[FLTSIM.N]
The [FLTSIM.N]
section(s) are used to define the behavior of the aircraft as a SimObject, 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 |
model |
The folder for the aircraft model (if it's the default "model" folder, leave as an empty string ""). | String | |
panel |
The folder for the aircraft panel (if it's the default "panel" folder, leave as an empty string ""). | String | |
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 | |
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 | |
texture |
The folder for the aircraft textures (if it's the default "texture" folder, leave as an empty string ""). | String | |
effects |
The folder for the aircraft effects (if it's the default "effects" folder, leave as an empty string ""). NOTE: This is only for legacy effects, as explained in this section - Legacy Visual Effects For Lights. |
String | |
kb_checklists |
Procedures/Checklist sibling file name. | String | |
kb_reference |
Reference information sibling file name. | String | |
description |
A full description of the aircraft variation. | String | |
short_description |
A short description of the aircraft variation. | String | |
wip_indicator |
Flag the current status for the variation. |
Integer:
|
|
ui_manufacturer |
Localisable string indicating the manufacturer. | String | |
ui_type |
Localisable string indicating the aircraft type. | String | |
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:
|
|
ui_variation |
Localisable string indicating the variation. | String | |
ui_createdby |
Name of the person or company that created the asset. | String | |
ui_thumbnailfile |
Relative path to the thumbnail image for the aircraft asset. | String | |
ui_certified_ceiling |
The service ceiling/max certified operating altitude, in ft. | Float | |
ui_max_range |
The maximum distance the aircraft can fly between take-off and landing, in nm. | Float | |
ui_autonomy |
The maximum duration the aircraft can fly between take-off and landing in hours. | Float | |
ui_fuel_burn_rate |
The average fuel consumption per hour, in lbs. | Float | |
atc_id |
This gives the registration number of the aircraft (Note that it can be modified in the simulation options by the user). | String | |
atc_id_enable |
Whether the tail number is enabled (TRUE, 1) or not (FALSE, 0). NOTE: This is no longer used in Microsoft Flight Simulator. Whether the tail number is displayed or not will depend on whether there is a |
Bool | |
atc_id_color |
The color for the tail number in ARGB hexadecimal format, eg: "#ffff00ff". NOTE: This is no longer used in Microsoft Flight Simulator. The font color is defined in the |
String | |
atc_id_font |
Relative path to the font for the tail number. NOTE: This is no longer used Microsoft Flight Simulator. |
String | |
atc_airline |
The airline name. | String | |
atc_flight_number |
The flight number. | String | |
atc_heavy |
Whether the aircraft is heavy (TRUE, 1) or not (FALSE, 0). | Bool | |
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:
|
|
atc_parking_codes |
A single string containing a comma separated list of parking codes, eg: "F18,A" | String | |
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 Notes On Air Traffic section for additional information related to this setting. |
Bool | |
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 Notes On Air Traffic section for additional information related to this setting. |
Bool | |
isUserSelectable |
If this is set to FALSE (0) this variation is not selectable to the user for flying. Please see the Notes On Air Traffic section for additional information related to this setting. |
Bool | |
icao_airline |
Non-localized ICAO code of the airline if the variation is a livery for a real airline. Please see the Notes On Air Traffic section for additional information related to this setting. |
String | |
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 |