Skip to content

Секция Flight route

Alexander Oblovatniy edited this page Oct 13, 2016 · 7 revisions

Note: English version

Класс il2fb.parsers.mission.sections.wing.FlightRouteSectionParser отвечает за разбор секций, которые содержат информацию о маршруте отдельного авиационного звена.

Маршрут сотстоит из отдельных точек, каждая из которых определяется на отдельной строке. Строки, начинающиеся с ключевого слова TRIGGERS, определяют дополнительные параметры для точки, определенной на предыдущей строке.

Конечным результатом работы парсера является словарь с элементом FLIGHT_ID_route, где FLIGHT_ID — идентификатор звена, который присутствует в секции Wing. Элемент содержит список точек.

Пример секции:

[3GvIAP01_Way]
  TAKEOFF 193373.53 99288.17 0 0 &0
  TRIGGERS 0 10 20 0
  NORMFLY_401 98616.72 78629.31 500.00 300.00 &0 F2
  TRIGGERS 1 1 25 5 500
  NORMFLY 63028.34 42772.13 500.00 300.00 r0100 1 &0
  GATTACK 99737.30 79106.06 500.00 300.00 0_Chief 0 &0
  GATTACK 74338.61 29746.57 500.00 300.00 4_Static 0 &0
  GATTACK 82387.92 51163.75 500.00 300.00 0_Rocket 0 &0
  LANDING_104 185304.27 54570.12 0 0 &1

Пример разбора:

Существует 4 разных типа точек маршрута. У каждого из них есть свои подтипы. Все доступные типы описаны как типы точек маршрута.

Каждая точка маршрута имеет тип, координаты X, Y, Z и скорость. Так же они хранит информацию о радиомолчании и воздушном построении.

Взлет

Взлет включает в себя руление и непосредственно взлет, который может иметь нормальное размещение самолетов, размещение парами и в линию. При использовании последних 2-х самолеты взлетают сразу в направлении следующей точки маршрута.

Направление взлета

Можно задать расстояние между самолетами на земле. Также можно установить задержку взлета.

При нормальном типе взлета расположение самолетов автоматически будет привязано к ВПП как обычно, если точка маршрута расположена на расстоянии менее 1250 м от ВПП. Тем не менее, установленная временная задержка будет соблюдена.

Все эти параметры можно применять и ко взлету с авианосцев, но в этом случае будет иметь значение только временная задержка.

Пример определения:

TAKEOFF_003 80156.47 47263.58 0 0 &0
TRIGGERS 0 2 20 0

Пример разбора:

Точки взлета описываются с помощью il2fb.parsers.mission.sections.wing.FlightRouteTakeoffPoint.

Рассмотрим определенные строки:

TAKEOFF_003

Тип точки маршрута (взлет в линию).

Путь

type

Тип

сложная константа типы точек маршрута

80156.47

Координата X.

Путь

pos.x

Тип

float

Значение

исходное значение, преобразованное в вещественное число

47263.58

Координата Y.

Путь

pos.y

Тип

float

Значение

исходное значение, преобразованное в вещественное число

0

Координата Z.

Путь

pos.z

Тип

float

Значение

исходное значение, преобразованное в вещественное число

0

Скорость.

Путь

speed

Тип

float

Значение

исходное значение, преобразованное в вещественное число

&0

Указывает, включен ли для этой точки режим радиомолчания.

Путь

radio_silence

Тип

bool

Значение

True, если &1, иначе False

TRIGGERS

Указывает, что данная строка содержит дополнительные параметры для точки, определенной в предыдущей строке.

0

Не используется для взлета.

2

Временная задержка (в минутах)

Путь

delay

Тип

int

Значение

исходное значение, преобразованное в целое число

20

Расстояние между самолетами (в метрах).

Путь

spacing

Тип

int

Значение

исходное значение, преобразованное в целое число

0

Не используется для взлета.

Нормальный полет

Нормальный полет включает в себя крейсерство, патрулирование и артиллерийскую корректировку.

Патрулирование определяет циклическое движение согласно определенному шаблону (по треугольнику, по квадрату и т.д.). Можно установить угол вращения шаблона (направление в первой точке шаблона), размер стороны шаблона (в км) и разницу высот между точками (восходящий или низходящий шаблон).

Шаблон полета

Если установлено количество циклов или таймер, то они сообщат ИИ, когда необходимо прекратить движение по шаблону и перейти к кледующей точке маршрута. Таймер и количество кругов работают согласно логике ИЛИ: первый выполнившийся критерий выведет ИИ из цикла патрулирования. Нулевое значение указывает, что критерий игнорируется.

Точки маршрута типа артиллерийский корректировщик имеют такие параметры как: количество циклов, таймер, направление и размер стороны шаблона. Тем не менее, эти параметры почему-то ни на что не влияют.

Пример определения:

NORMFLY_401 98616.72 78629.31 500.00 300.00 &0 F2
TRIGGERS 1 1 25 5 500

Пример разбора:

Точки патрулирования описываются с помощью il2fb.parsers.mission.sections.wing.FlightRoutePatrolPoint. В остальных случаях (точки нормального полета и артиллерийской корректировки) используется il2fb.parsers.mission.sections.wing.FlightRoutePoint.

Рассмотрим определенные строки:

NORMFLY_401

Тип точки маршрута (патрулирование по треугольнику).

Путь

type

Тип

сложная константа типы точек маршрута

98616.72

Координата X.

Путь

pos.x

Тип

float

Значение

исходное значение, преобразованное в вещественное число

98616.72

Координата Y.

Путь

pos.y

Тип

float

Значение

исходное значение, преобразованное в вещественное число

500.00

Координата Z.

Путь

pos.z

Тип

float

Значение

исходное значение, преобразованное в вещественное число

300.00

Скорость.

Путь

speed

Тип

float

Значение

исходное значение, преобразованное в вещественное число

&0

Указывает, включен ли для этой точки режим радиомолчания.

Путь

radio_silence

Тип

bool

Значение

True, если &1, иначе False

F2

Тип авиационного построения (правый пеленг).

Путь

formation

Тип

сложная константа авиационные построения или None

TRIGGERS

Указывает, что данная строка содержит дополнительные параметры для точки, определенной в предыдущей строке.

1

Число циклов, которое необходимо выполнить.

Путь

patrol_cycles

Тип

int

Значение

исходное значение, преобразованное в целое число

2

Максимальное время патрулирования (в минутах).

Путь

patrol_timeout

Тип

int

Значение

исходное значение, преобразованное в целое число

25

Угол поворота шаблона (в градусах).

Путь

pattern_angle

Тип

int

Значение

исходное значение, преобразованное в целое число

5

Размер стороны шаблона (в км).

Путь

pattern_side_size

Тип

int

Значение

исходное значение, преобразованное в целое число

500

Разница высот (в метрах).

Путь

pattern_altitude_difference

Тип

int

Значение

исходное значение, преобразованное в целое число

Атака

Существует 2 вида точек маршрута, которые сообщают ИИ о необходимости атаки вражеских объектов: атака наземных целей и атака воздушных целей. Оба эти вида имеют одинаковые параметры, но их типы отличаются. Первый определяется как GATTACK, а последний — как NORMFLY.

Примечание: Да, точки маршрута, которые сообщают ИИ атаковать воздушные цели, определяются как NORMFLY, т.е. как точки нормального полета. Это сбивает с толку, поэтому типы точек маршрута определяют этот тип как X_AIR_ATTACK, где X указывает, что это вымышленый тип.

Целью атаки может быть любой разрушаемый объект: самолет, движущееся транспортное средство, артиллерия, ракета, неподвижный объект и т.д.

Пример определения:

NORMFLY 63028.34 42772.13 500.00 300.00 r0100 1 &0
GATTACK 99737.30 79106.06 500.00 300.00 0_Chief 0 &0

Пример разбора:

Точки атаки описываются с помощью il2fb.parsers.mission.sections.wing.FlightRouteAttackPoint.

Рассмотрим вторую строку:

GATTACK

Тип точки маршрута (атаковать наземную цель).

Путь

type

Тип

сложная константа типы точек маршрута

99737.30

Координата X.

Путь

pos.x

Тип

float

Значение

исходное значение, преобразованное в вещественное число

79106.06

Координата Y.

Путь

pos.y

Тип

float

Значение

исходное значение, преобразованное в вещественное число

500.00

Координата Z.

Путь

pos.z

Тип

float

Значение

исходное значение, преобразованное в вещественное число

300.00

Скорость.

Путь

speed

Тип

float

Значение

исходное значение, преобразованное в вещественное число

0_Chief

Идентификатор цели, которую необходимо атаковать.

Путь

target_id

Тип

str

Значение

исходная строка

0

Номер точки объекта, который необходимо атаковать (не имееет значения для неподвижных объектов).

Путь

target_route_point

Тип

int

Значение

исходное значение, преобразованное в целое число

&0

Указывает, включен ли для этой точки режим радиомолчания.

Путь

radio_silence

Тип

bool

Значение

True, если &1, иначе False

Посадка

Для посадки можно выбрать 5 разных способов:

  • слева;
  • справа;
  • короткий слева;
  • короткий справа;
  • по прямой.

Способ слева используется по умолчанию в игре до версии 4.12. Способ по прямой сложно использовать правильно: самолеты могут столкнуться между собой. Вы можете выбрать различные способы посадки для разных звеньев при посадке на один аэродром. ИИ довольно неплохо справляется с этим, но нет никаких гарантий, что столкновений не будет. Все настройки игнорируются, если посадка происходит на авианосец (в этом случае ИИ используют стандартный способ слева).

Пример определения:

LANDING_104 185304.27 54570.12 0 0 &1

Пример разбора:

Точки посадки не имеют особых параметров и описываются с помощью il2fb.parsers.mission.sections.wing.FlightRoutePoint.

Описание:

LANDING_104

Тип точки маршрута (посадка по прямой).

Путь

type

Тип

сложная константа типы точек маршрута

185304.27

Координата X.

Путь

pos.x

Тип

float

Значение

исходное значение, преобразованное в вещественное число

54570.12

Координата Y.

Путь

pos.y

Тип

float

Значение

исходное значение, преобразованное в вещественное число

0

Координата Z.

Путь

pos.z

Тип

float

Значение

исходное значение, преобразованное в вещественное число

0

Скорость.

Путь

speed

Тип

float

Значение

исходное значение, преобразованное в вещественное число

&1

Указывает, включен ли для этой точки режим радиомолчания.

Путь

radio_silence

Тип

bool

Значение

True, если &1, иначе False


Примечания: