Поведение модели самолета в симуляторе и характеристики силовой установки заложены в двух файлах AIR–файле и конфигурационном файле Aircraft.cfg.
AIR–файл представляет собой бинарный файл, в котором перечислены таблицы данных аэродинамических свойств и характеристики силовой установки. Исторически этот файл был единственным источником информации о модели. Программирование вообще и тем более программирование графики для DOS на платформе IBM PC осуществлялось преимущественно на ассемблере. Поэтому AIR–файл создавался компиляцией ассемблерного файла данных. Однако, по-видимому, сами разработчики поняли, что столь сложное для редактирования и понимания хранение данных не правильно и перенесли часть информации в текстовый файл Aircraft.cfg. Часть переменных в этом файле полностью аналогичны переменным AIR–файл, а часть представляет собой множители, действующие на переменные AIR–файл.
На скрине из Flight Simulator 5.0 видно, что выбор летательного аппарата тождествен выбору AIR–файла в котором раньше содержалась вся информация о модели (раньше понятие SIM означало собственно модель летательного аппарата).
![]() |
В интернете есть сайт, на котором доступны для загрузки ранние версии симулятора для DOS. Вы видите окно выбора летательного аппарата в Microsoft ® Flight Simulator 5.0 (последней версии вышедшей для DOS). Исторически Майкрософт предлагает четыре типа модели динамики: для планера (Schweizer Sailplane), поршневого моноплана с носовой опорой (Cessna Skyline R182), поршневого биплана с хвостовой опорой (Sopwith Camel) и реактивного самолета (впоследствии появилась модель для турбореактивного самолета). Прототипом модели реактивного самолета является Лирджет-35А, которого впоследствии заменил Лирджет-45 ныне существующий в Microsoft ® Flight Simulator 2004 и Microsoft ® Flight Simulator X. Именно поэтому дефолтная модель Лирджет-45 выбрана в качестве основы для изучения сим-аэродинамики. Однако методы, описанные здесь, естественно могут быть применены к любой модели. Как видно выбор летательного аппарата тождествен выбору AIR–файла в котором раньше содержалась вся информация о модели. |
| Множитель в секции [flight_tuning] файла Aircraft.cfg | Производная на которую действует множитель | Расшифровка |
| cruise_lift_scalar | CL0 | Коэффициент подъемной силы при нулевом угле атаки |
| parasite_drag_scalar | Cd0 | Профильное сопротивление |
| induced_drag_scalar | Cdi | Индуктивное сопротивление |
| elevator_effectiveness | Cmde | Момент тангажа связанный с отклонением руля высоты |
| aileron_effectiveness | Clda | Момент крена связанный с отклонением элеронов |
| rudder_effectiveness | Cndr | Момент рысканья связанный с отклонением руля направления |
| pitch_stability | Cmq | Демпфирующий момент тангажа |
| roll_stability | Clp | Демпфирующий момент крена |
| yaw_stability | Cnr | Демпфирующий момент рысканья |
| elevator_trim_effectiveness | Cmdetr | Момент тангажа связанный с отклонением триммера руля высоты |
| aileron_trim_effectiveness | Cldatr | Момент тангажа связанный с отклонением триммера элеронов |
| rudder_trim_effectiveness | Cndrtr | Момент тангажа связанный с отклонением триммера руля направления |
AIR–файл представляет собой список записей каждая, из которых имеет свой номер – token. Символ token является шестнадцатеричным числом, которому соответствует определенное имя этого символа. Например: запись номер 0х404 или AIR_CL_ALPHA это таблица зависимости коэффициента подъемной силы от угла атаки фюзеляжа; запись номер 0х473 или AIR_CM_ALPHA это таблица зависимости момента тангажа от угла атаки фюзеляжа; запись номер 0х455 или AIR_CL_P это таблица слагаемых для демпфирующего момент крена в зависимости от числа Маха.
В исходном виде AIR-файл должен быть написан в любом текстовом редакторе на языке ассемблер. Затем он может быть изменен с помощью визуальных редакторов типа AirEd by William Roth, Aircraft Airfile Manager (AAM) by Karl-Heinz Klotz, AirWrench by GWBeckwith.
Файл на языке ассемблера компилируется в бинарный модуль с помощью утилиты Asm2Air.exe доступной в свободно распространяемом пакете Lockheed Martin Prepar3D 1.3 SDK.
Каждая запись ассемблера начинается с макроса TOKEN_BEGIN, который записывает в AIR–файл шестнадцатеричный номер записи, затем размер записи в байтах, затем адрес начала блока данных. Заканчивается запись макросом TOKEN_END, который записывает в AIR–файл адрес конца блока данных.
Например, если token это AIR_CL_ALPHA (0х404), то:
А вот как это используется при написании ассемблерного файла.
Каждая запись в AIR-файле имеет определенный номер (token), размер в байтах, смещение от начала файла в байтах, и массив данных ограниченный числом 2048 (2 килобайта). Соответственно этому составляется структура AIR_RECORD описывающая одну запись в AIR-файле. Список таких структур AIR_RECORD_LIST и представляет собой содержимое AIR-файла.
Затем создается функция читающая содержимое AIR-файла, т.е. заполняющая список записей. При вызове этой функции ей передается в качестве параметра указатель на «голову» списка.
В этом вызове функция читает записи из файла в список:
На ниже приведенном рисунке показан результат работы демонстрационной программы. Как видно программа прочитала файл. Нашла запись с номером 0x341, второй по счету в списке (нумерация с нуля), размер записи 116 байт, смещение от начала файла 160 (0хА0)байт. Массив данных содержит 7 элементов и представляет собой таблицу масштабирования эффективности руля высоты, где по оси X отложено отклонение руля высоты в радианах, а по оси Y – множитель на который умножается эффективность руля высоты.