## 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 General 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 exiting 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

For further information and an example of use, please see the following page:

### [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").

String:

1. "Airplane"
2. "Helicopter"
3. "Boat"
4. "GroundVehicle"
5. "Animal"
6. "FlyingAnimal"
7. "Human"
8. "StaticObject"
9. "AircraftPilot"
10. "GroundVehiclePilot"
Yes
icao_type_designator

The ICAO type designator of the plane. It can be different to the atc_type field. All possible values are available from the ICAO official database. For example the Airbus A320 Neo:

icao_type_designator = "A20N"

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:

icao_manufacturer = "CESSNA"

String Yes
icao_model

The ICAO model name of the plane. It can be different to the atc_model field. For example the Textron 172 Skyhawk:

icao_model = "172 Skyhawk"

String Yes
icao_engine_type

The ICAO engine type of the plane (for gliders use an empty string""). For example the Daher TBM 930:

icao_engine_type = "Turboprop/Turboshaft"

String:

1. "Piston"
2. "Turboprop/Turboshaft"
3. "Jet"
4. "Electric"
5. "Rocket"
6. "None" (for gliders)
Yes
icao_engine_count

The ICAO engine count of the plane (usually a value between 1 and 8, although for a glider it can be 0). For example the Daher TBM 930:

icao_engine_count = 1

Integer Yes
icao_WTC

The ICAO Wake Turbulence Category of the plane. For example the Daher TBM 930:

icao_WTC = "L"

Enum:

1. "L"
2. "L/M"
3. "M"
4. "H"
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 fflight_model.cfg/strong> pilot. 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 flight_model.cfg has not defined a pilot station_load.N.

Default is "".

String No
copilot

This is the title of the SimObject - as set in the sim.cfg file fflight_model.cfg/strong> copilot. If you do not set this parameter then no copilot object will be spawned, although for user aircraft it may still spawn a copilot 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 copilot if this parameter is omitted). For a list of copilots 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 flight_model.cfg has not defined a copilot station_load.N.

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

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

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]

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.

IMPORTANT! This section relates to using legacy effects from previous versions of the product. For the current way of creating and using effects please see the section on Visual Effects.

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 fx_wake.

False

Enum:

1. fx_wake
2. fx_spray
3. fx_tchdrt
4. fx_sparks
5. fx_tchdwn
6. fx_contrail_l
7. fx_engstrt
8. fx_rtr_lnd
9. fx_rtr_wtr
10. fx_vaportrail_l
11. fx_vaportrail_r
12. fx_wingtipvortice_l
13. fx_wingtipvortice_r
14. fx_engfire
15. fx_engsmoke
16. fx_OilLeak
17. fx_skidmark
18. fx_WheelSnowSpray
19. fx_WheelWetSpray
20. fx_WetEngineWash
21. fx_SnowEngineWash
22. fx_WaterBallastDrain
23. fx_PistonFailure
24. fx_dummy
No
water

The landing, taxiing or taking off from water effect.

Default would be fx_spray.

False
waterspeed

Traveling at speed on the water.

Default would be fx_spray.

False
dirt

Moving on dirt.

Default would be fx_tchdrt.

False
concrete

Moving on concrete.

Default would be fx_sparks.

False
touchdown

The touchdown effect.

Default would be fx_tchdwn.

True
contrail

Contrail effect, applies to jets flying above 29000ft.

Default would be fx_contrail_l.

False
startup

Engine startup.

Default would be fx_engstrt.

True
landrotorwash

Rotor wash. Helicopters only.

Default would be fx_rtr_lnd.

False
waterrotorwash

Water rotor wash. Helicopters only.

Default would be fx_rtr_wtr.

False
vaportrail_l

Left wing vapor trail.

Default would be fx_vaportrail_l.

False
vaportrail_r

Right wing vapor trail.

Default would be fx_vaportrail_r.

False
l_wingtipvortice

Left wingtip vortice (contrails off the wingtip, usually from a jet such as the F18).

Default would be fx_wingtipvortice_l.

True
r_wingtipvortice

Right wingtip vortice (contrails off the wingtip, usually from a jet such as the F18).

Default would be fx_wingtipvortice_r.

True
fueldump

Fuel dump active.

Default is fx_dummy (ie: no effect).

False
EngineFire

Engine fire.

Default would be fx_engfire.

False
EngineDamage

Engine damage.

Default would be fx_engsmoke.

False
EngineOilLeak

Oil leak.

Default would be fx_OilLeak.

False
SkidPavement

Skid on tarmac, leaves a mark.

Default would be fx_skidmark.

False
SnowSkiTrack

Skid on snow.

Default is fx_dummy (ie: no effect).

False
WheelSnowSpray

Taking off on snow.

Default would be fx_WheelSnowSpray.

False
WheelWetSpray

Taking off on wet runway.

Default would be fx_WheelWetSpray.

False
WetEngineWash

Similar to waterrotorwash, the effect a propeller has on wet terrain when flying below 20m.

Default would be fx_WetEngineWash.

False
SnowEngineWash

Similar to waterrotorwash, the effect a propeller has on snow covered terrain, or when it is snowing, when flying below 20m.

Default would be fx_SnowEngineWash.

False
WaterBallastDrain

Draining the water ballast, applies only to sailplanes.

Default would be fx_WaterBallastDrain.

False
PistonFailure

One or more pistons failed.

Default would be fx_PistonFailure.

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.

### [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: "Right_Hand_Ik_snap"

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: "Left_Hand_Ik_snap"

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: "Right_Foot_Ik_snap"

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: "Left_Foot_Ik_snap"

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 0 up to number_of_exits - 1. The parameter requires a table of 5 values, in the following order:

For example:

exit.0 = 0.4, -16.50, -4.5, 0.5, 0;

1D Table 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: "HANDLING_YOKE_Lever_StickLR"

Default value is "".

String No
yoke_anim_y

This is the name of the vertical (depth) yoke animation, eg: "HANDLING_YOKE_Lever_StickForeAft"

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

### [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 ""). String
soundai The folder for the aircraft AI sounds (if it's the default "soundai" folder, leave as an empty string ""). 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.

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:

1. -1 = Disabled
2. 0 = Rough
3. 1 = First Pass
4. 2 = Finished
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:

1. Commercial Airliner
2. 747-400 V3
3. 747-400BCF V3
4. 747-400D V3
5. 747-400ER V3
6. 747-400ERF V3
7. 747-400F V3
8. 747-400M V3
9. Single Engine Prop
10. Twin Engine Prop
11. Single Engine TurboProp
12. Twin Engine TurboProp
13. Twin Engine Jet
14. Regional Jet
15. Single Engine Jet
16. Rotorcraft
17. Glider
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 [VPaintingN] section in the panel.cfg file.

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 [VPaintingN] section of the panel.cfg file.

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:

1. ANY
2. RAMP
3. CARGO
4. MIL_CARGO
5. MIL_COMBAT
6. GATE
7. DOCK
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