User Tools

Site Tools


tools:a3flightmodeltool

This is an old revision of the document!


Arma 3 Flight Model Graph Tool

This guide explains how to build and tune Arma 3 PlaneX/basic flight model config values with the RKSL Flight Model Graph Tool.

The tool is designed for addon makers who need to see how envelope[], thrustCoef[], control authority arrays, drag coefficients, altitude limits, and landing values work together before exporting a config snippet.

Pages

What the tool does

  • Imports an aircraft config snippet or starts from a BIS aircraft preset.
  • Draws the main PlaneX graph arrays as editable speed curves.
  • Lets the user drag graph points vertically to rewrite the matching array values.
  • Shows derived stall, thrust, drag, climb, and control authority views.
  • Exports a clean config snippet for the tuned class.

What the tool does not replace

The tool is a tuning assistant. It does not replace in-game testing, resolved inheritance checks, Geometry LOD mass checks, or final config validation.

Keep these three things separate while tuning:

  • Extracted game config values.
  • Tool-only estimates and graph overlays.
  • In-game calibration changes made after flight testing.

Arma 3 Flight Model Graph Tool Workflow

Follow this process for each aircraft type. Do not tune duplicate editor variants separately unless they use genuinely different physics values.

1. Choose the closest starting profile

Open the tool and choose one of the BIS aircraft presets that most closely matches the aircraft role, mass, speed range, and engine type.

Good starting comparisons:

Aircraft type Useful BIS starting point
Light jet / trainer A-143 Buzzard or A-149 Gryphon
CAS jet A-164 Wipeout or To-199 Neophron
Modern fighter F/A-181 Black Wasp II, To-201 Shikra, or A-149 Gryphon
UAV / UCAV MQ-4A Greyhawk or UCAV Sentinel
Prop aircraft Caesar BTT
VTOL / heavy transport V-44 X Blackfish or Y-32 Xi'an

Use the preset as a known-good baseline, not as the final answer.

2. Identify the real config class

Find the aircraft class you are tuning in CfgVehicles.

Record:

  • Class name.
  • Parent class.
  • Display name.
  • Source file path.
  • Any inherited parent class where the flight model values are actually declared.

If the aircraft inherits from another class, resolve inheritance before changing values. Many editor-facing variants reuse the same physics class.

3. Collect the fixed performance values

Enter these values before editing curves:

Tool field Source priority
maxSpeed km/h Real data if known, otherwise existing config, otherwise similar BIS class
landingSpeed km/h Real landing reference, existing config, or 1.20 to 1.35 times landing-configuration stall speed
stallSpeedForced km/h Use only when you have a sourced or tested stall value to force
mass kg Geometry LOD mass or sourced aircraft mass
base thrust N Engine thrust estimate or calibrated graph-assist value
structural limit +g Published aircraft limit, design target, or conservative class target
structural limit -g Published aircraft limit, design target, or conservative class target

mass kg, base thrust N, and the structural limits are tool calculation inputs. They are not exported as PlaneX config fields by the current tool.

4. Import or enter the graph arrays

Paste the existing config values into the matching fields:

  • envelope[]
  • thrustCoef[]
  • aileronCoef[]
  • elevatorCoef[]
  • rudderCoef[]

The tool resamples editable curves to 14 points. Before resampling a real config array, keep the original values in the source note or version control.

5. Read the point table before dragging

Each numbered point is a speed station.

  • envelope[] covers 0% to 125% of maxSpeed.
  • thrustCoef[], aileronCoef[], elevatorCoef[], and rudderCoef[] cover 0% to 150% of maxSpeed.

Drag points vertically to change the value at that speed. Use the point table to see the exact speed and coefficient being edited.

6. Tune lift with envelope[]

Use the Lift Envelope view.

  • Set the 1 g crossing near the clean stall target.
  • Raise the mid-speed region until sustained turns feel credible.
  • Keep the peak near the desired maneuvering range.
  • Taper high-speed lift so the aircraft cannot pull unrealistic turns at maximum speed.

If stallSpeedForced is 0, the tool estimates clean stall from the envelope[] 1 g crossing.

7. Tune thrust against drag

Use the Thrust, Drag, and Climb Estimate views.

  • Shape thrustCoef[] so low-speed acceleration, cruise acceleration, and high-speed falloff are plausible.
  • Use airFrictionCoefs2[] for most high-speed drag tuning.
  • Use airFrictionCoefs1[] for broader speed-range drag adjustment.
  • Keep altNoForce higher than altFullForce.

The goal is for available thrust and drag to balance close to the intended level-flight top speed, then degrade plausibly with altitude.

8. Tune control authority

Use the Control Authority view.

  • aileronCoef[] controls roll authority by speed.
  • elevatorCoef[] controls pitch authority by speed.
  • rudderCoef[] controls yaw authority by speed.
  • aileronSensitivity, elevatorSensitivity, and rudderInfluence are broad scalars.

Use the arrays for speed-specific behaviour and the scalar fields for whole-aircraft heaviness.

9. Tune landing and braking aids

Use the Stall / Landing view and test with flaps, gear, and airbrake options.

  • Raise flapsFrictionCoef until approach and descent behaviour are useful without becoming a brake parachute.
  • Tune gearsUpFrictionCoef against gear-down speed loss and approach drag.
  • Tune airBrakeFrictionCoef against dive recovery and combat-speed deceleration.
  • Keep landingSpeed above the landing-configuration stall speed with a practical margin.

10. Export and validate

Use Copy snippet or Download config.

Paste the exported values into the aircraft class or into a controlled child test class. Test in-game before replacing production values.

After each meaningful change, record:

  • Date.
  • Source class.
  • Changed fields.
  • Test conditions.
  • Result.
  • Next change.

Finding Flight Model Source Data

Use the best available source for each value. Prefer extracted config and measured model data over guesswork, then use real-world data where the game needs a credible target.

BIS aircraft config locations

The bundled presets were extracted from a local Q:\a3 config tree. If your Arma 3 source tree is mounted elsewhere, search the equivalent unpacked PBO folders.

Aircraft Typical extracted config path
A-143 Buzzard Q:\a3\air_f_gamma\Plane_Fighter_03\config.cpp
A-149 Gryphon Q:\a3\air_f_jets\Plane_Fighter_04\config.cpp
A-164 Wipeout Q:\a3\air_f_epc\Plane_CAS_01\config.cpp
Caesar BTT Q:\a3\air_f_exp\Plane_Civil_01\config.cpp
F/A-181 Black Wasp II Q:\a3\air_f_jets\Plane_Fighter_01\config.cpp
KH-3A Fenghuang Q:\a3\air_f_exp\UAV_04\config.cpp
MQ-4A Greyhawk Q:\a3\drones_f\Air_F_Gamma\UAV_02\config.cpp
To-199 Neophron Q:\a3\air_f_epc\Plane_CAS_02\config.cpp
To-201 Shikra Q:\a3\air_f_jets\Plane_Fighter_02\config.cpp
UCAV Sentinel Q:\a3\air_f_jets\UAV_05\config.cpp
V-44 X Blackfish Q:\a3\air_f_exp\VTOL_01\config.cpp
Y-32 Xi'an Q:\a3\air_f_exp\VTOL_02\config.cpp

Search examples:

rtk rg -n -i 'class .*Plane|simulation *= *"airplanex"|envelope\[]|thrustCoef\[]' Q:\a3
rtk rg -n 'class I_Plane_Fighter_04_F|class Plane_Fighter_04_Base_F' Q:\a3

Your addon config

Check these files first:

  • config.cpp
  • config.hpp
  • Included vehicle config files.
  • Any generated config output used before packing.

Find the final aircraft class, then follow parent classes until the flight model fields are declared.

Record whether each value is:

  • Directly declared on the aircraft class.
  • Inherited from a parent.
  • Estimated by the tool.
  • Calibrated after in-game testing.

Unpacking game data

If you only have PBOs, unpack the relevant Arma 3 PBO and convert config.bin to readable config text with your normal Arma tooling.

Common source areas:

  • Arma 3\Addons\air_f*.pbo
  • Arma 3\Addons\drones_f*.pbo
  • Any DLC aircraft PBOs used by the inherited class.

Do not edit extracted BIS files. Copy the values into your own addon class or test class.

Model data

Use Object Builder or your modelling workflow to inspect:

  • Geometry LOD mass.
  • Main dimensions.
  • Wing span and wing area if available.
  • Centre of mass position.
  • Gear/contact point layout for takeoff and landing testing.

The tool uses mass kg for estimates. The final in-game aircraft behaviour still depends on the model and config together.

Real aircraft data

Useful real-world or design-target values:

  • Maximum level speed.
  • Stall speed clean.
  • Stall speed with landing configuration.
  • Landing approach speed.
  • Maximum takeoff mass and empty mass.
  • Engine static thrust or shaft power.
  • Climb rate.
  • Service ceiling.
  • Positive and negative G limits.
  • Roll rate and pitch response if available.

Use real data as a target, then adapt it to Arma gameplay and AI behaviour.

In-game measurements

Build a small test mission with clear weather, no wind, repeatable fuel/loadout, and a known starting altitude.

Record:

  • Aircraft class.
  • Fuel and payload.
  • Altitude.
  • Speed.
  • Flaps, gear, and airbrake state.
  • Throttle setting.
  • Test result.

Run the same test after each change. If the test method changes, do not compare the numbers as if they came from the same run.

Flight Model Field Reference

This page maps the tool fields to Arma 3 config values and explains how to source or calculate each value.

Identity

Tool field Config field Meaning How to fill it
Class name class MyPlane_F Exact CfgVehicles class being tuned. Copy from the addon config. Keep stable because inheritance, pylons, factions, scripts, and editor entries may reference it.
Display name displayName Editor-facing label. Use only as a readable label. Do not use display names as identifiers.
Simulation simulation PlaneX aircraft should use airplaneX or inherited equivalent. Verify the parent class. This tool is not for RotorLib Advanced Flight Model XML.
Source note Tool note Evidence trail for the current values. Record source class, source file, inherited parent, measured data, and in-game test notes.

Flight model inputs

Tool field Exported? Meaning How to calculate or source it
maxSpeed km/h Yes, maxSpeed Main speed reference used by PlaneX graph arrays and AI behaviour. Use real level-flight max speed, existing config, or close BIS class. Tune thrust and drag until in-game level speed converges near this value.
mass kg No Tool-side mass for drag, climb, and power-to-weight estimates. Use Geometry LOD mass or sourced aircraft mass. If unknown, start from a similar BIS aircraft and update after model mass is known.
base thrust N No Tool-side base thrust used with thrustCoef[] to estimate available thrust. Use known engine thrust if available. If only power is known, estimate from thrust_N = power_W / speed_mps. Otherwise calibrate until thrust and drag balance near top speed.
structural limit +g No Positive G reference used for graph warnings and envelope overlays. Use published aircraft data or a conservative design target. Validate sustained turns and pull-ups in game.
structural limit -g No Negative G reference used for graph warnings. Use published aircraft data or a conservative target lower than positive G for most aircraft.
stallSpeedForced km/h Yes, if above 0 Explicit stall reference where supported. Leave 0 if the tool should estimate stall from envelope[]. Set only if you have a sourced or tested stall speed.
landingSpeed km/h Yes, landingSpeed AI/autopilot landing reference speed. Start at 1.20 to 1.35 times landing-configuration stall speed, then validate approach, flare, and runway behaviour.

Graph arrays

Tool field Exported config field Speed range Meaning Tuning rule
envelope[] envelope[] 0% to 125% of maxSpeed Lift/load-factor curve in G. Put the 1 g crossing near clean stall, peak around maneuvering speed, then taper high-speed lift.
thrustCoef[] thrustCoef[] 0% to 150% of maxSpeed Speed-based multiplier for available thrust. Shape acceleration and high-speed falloff so thrust and drag balance near intended top speed.
aileronCoef[] aileronCoef[] 0% to 150% of maxSpeed Roll authority by speed. Preserve low-speed control, avoid excessive high-speed roll response.
elevatorCoef[] elevatorCoef[] 0% to 150% of maxSpeed Pitch authority by speed. Tune rotation, flare, stall recovery, and high-speed G control alongside envelope[].
rudderCoef[] rudderCoef[] 0% to 150% of maxSpeed Yaw authority by speed. Keep enough low-speed runway authority, taper high-speed yaw to avoid abrupt lateral response.

The current editor uses 14 draggable points for each graph array. Imported arrays with a different count are resampled for editing.

Drag and altitude

Tool field Config field Meaning How to tune
airFrictionCoefs0[] airFrictionCoefs0[] Constant term of the PlaneX axis drag formula. Use three model-space X/Y/Z values. Start from a similar BIS aircraft.
airFrictionCoefs1[] airFrictionCoefs1[] Linear term of the PlaneX axis drag formula. Adjust broad drag behaviour across the speed range.
airFrictionCoefs2[] airFrictionCoefs2[] Quadratic term of the PlaneX axis drag formula. Tune high-speed drag and level-flight top speed.
flapsFrictionCoef flapsFrictionCoef Additional drag when flaps are deployed. Raise until approach speed and descent angle are useful without excessive braking.
gearsUpFrictionCoef gearsUpFrictionCoef Landing gear drag coefficient. Tune gear-down speed loss and approach drag. Keep fixed-gear aircraft conservative.
airBrakeFrictionCoef airBrakeFrictionCoef Airbrake drag coefficient. Tune dive recovery and combat-speed deceleration. Use 0 or omit if the aircraft has no airbrake.
altFullForce m altFullForce Altitude where thrust starts degrading. Use engine type and target service profile. Below this, thrust remains at full force in the tool model.
altNoForce m altNoForce Altitude where thrust influence reaches zero. Keep above altFullForce. Validate climb and level speed at altitude.

Control scalars

Tool field Config field Meaning How to tune
aileronSensitivity aileronSensitivity Broad scalar for roll response. Use for whole-aircraft roll heaviness after the speed curve is shaped.
elevatorSensitivity elevatorSensitivity Broad scalar for pitch response. Use for whole-aircraft pitch heaviness after elevatorCoef[] and envelope[] are plausible.
rudderInfluence rudderInfluence Broad yaw/rudder influence. Tune with rudderCoef[] and runway handling. Very high values can make yaw feel arcade-like.

Exported snippet fields

The tool exports:

  • displayName
  • simulation
  • maxSpeed
  • landingSpeed
  • stallSpeedForced when above 0
  • envelope[]
  • thrustCoef[]
  • airFrictionCoefs0[]
  • airFrictionCoefs1[]
  • airFrictionCoefs2[]
  • aileronCoef[]
  • elevatorCoef[]
  • rudderCoef[]
  • aileronSensitivity
  • elevatorSensitivity
  • rudderInfluence
  • flapsFrictionCoef
  • gearsUpFrictionCoef
  • airBrakeFrictionCoef
  • altFullForce
  • altNoForce
tools/a3flightmodeltool.1784475323.txt.gz · Last modified: by rock