-
Notifications
You must be signed in to change notification settings - Fork 0
Секция Flight route
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
Пример разбора:
{
'flight_route_3GvIAP01': [
FlightRouteTakeoffPoint(
type=RoutePointTypes.takeoff_normal,
pos=Point3D(193373.53, 99288.17, 0.0),
speed=0.0,
formation=None,
radio_silence=False,
delay=10,
spacing=20,
),
FlightRoutePatrolPoint(
type=RoutePointTypes.patrol_triangle,
pos=Point3D(98616.72, 78629.31, 500.00),
speed=300.00,
formation=Formations.echelon_right,
radio_silence=False,
patrol_cycles=1,
patrol_timeout=1,
pattern_angle=25,
pattern_side_size=5,
pattern_altitude_difference=500,
),
FlightRouteAttackPoint(
type=RoutePointTypes.air_attack,
pos=Point3D(63028.34, 42772.13, 500.00),
speed=300.00,
formation=None,
radio_silence=False,
target_id='r0100',
target_route_point=1,
),
FlightRouteAttackPoint(
type=RoutePointTypes.ground_attack,
pos=Point3D(99737.30, 79106.06, 500.00),
speed=300.00,
formation=None,
radio_silence=False,
target_id='0_Chief',
target_route_point=0,
),
FlightRouteAttackPoint(
type=RoutePointTypes.ground_attack,
pos=Point3D(74338.61, 29746.57, 500.00),
speed=300.00,
formation=None,
radio_silence=False,
target_id='4_Static',
target_route_point=0,
),
FlightRouteAttackPoint(
type=RoutePointTypes.ground_attack,
pos=Point3D(82387.92, 51163.75, 500.00),
speed=300.00,
formation=None,
radio_silence=False,
target_id='0_Rocket',
target_route_point=0,
),
FlightRoutePoint(
type=RoutePointTypes.landing_straight,
pos=Point3D(185304.27, 54570.12, 0.00),
speed=0.00,
formation=None,
radio_silence=True,
),
]
}
Существует 4 разных типа точек маршрута. У каждого из них есть свои подтипы. Все доступные типы описаны как типы точек маршрута.
Каждая точка маршрута имеет тип, координаты X, Y, Z и скорость. Так же они хранит информацию о радиомолчании и воздушном построении.
Взлет включает в себя руление и непосредственно взлет, который может иметь нормальное размещение самолетов, размещение парами и в линию. При использовании последних 2-х самолеты взлетают сразу в направлении следующей точки маршрута.

Можно задать расстояние между самолетами на земле. Также можно установить задержку взлета.
При нормальном типе взлета расположение самолетов автоматически будет привязано к ВПП как обычно, если точка маршрута расположена на расстоянии менее 1250 м от ВПП. Тем не менее, установленная временная задержка будет соблюдена.
Все эти параметры можно применять и ко взлету с авианосцев, но в этом случае будет иметь значение только временная задержка.
Пример определения:
TAKEOFF_003 80156.47 47263.58 0 0 &0 TRIGGERS 0 2 20 0
Пример разбора:
FlightRouteTakeoffPoint(
type=RoutePointTypes.takeoff_in_line,
pos=Point3D(80156.47, 47263.58, 0.0),
speed=0.0,
formation=None,
radio_silence=False,
delay=2,
spacing=20,
)
Точки взлета описываются с помощью
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
отсутствует при выборе нормального типа взлета
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
Пример разбора:
FlightRoutePatrolPoint(
type=RoutePointTypes.patrol_triangle,
pos=Point3D(98616.72, 98616.72, 500.00),
speed=300.00,
formation=Formations.echelon_right,
radio_silence=False,
patrol_cycles=1,
patrol_timeout=1,
pattern_angle=25,
pattern_side_size=5,
pattern_altitude_difference=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
отсутствует при выборе нормального
режима полета
TRIGGERS
- Указывает, что данная строка содержит дополнительные параметры для точки, определенной в предыдущей строке.
-
1
[1] -
Число циклов, которое необходимо выполнить.
Путь: patrol_cycles
Тип: int
Значение: исходное значение, преобразованное в целое число -
2
[1] -
Максимальное время патрулирования (в минутах).
Путь: patrol_timeout
Тип: int
Значение: исходное значение, преобразованное в целое число -
25
[1] -
Угол поворота шаблона (в градусах).
Путь: pattern_angle
Тип: int
Значение: исходное значение, преобразованное в целое число -
5
[1] -
Размер стороны шаблона (в км).
Путь: pattern_side_size
Тип: int
Значение: исходное значение, преобразованное в целое число -
500
[1] -
Разница высот (в метрах).
Путь: 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
Пример разбора:
[
FlightRouteAttackPoint(
type=RoutePointTypes.air_attack,
pos=Point3D(63028.34, 42772.13, 500.00),
speed=300.00,
formation=None,
radio_silence=False,
target_id='r0100',
target_route_point=1,
),
FlightRouteAttackPoint(
type=RoutePointTypes.ground_attack,
pos=Point3D(99737.30, 79106.06, 500.00),
speed=300.00,
formation=None,
radio_silence=False,
target_id='0_Chief',
target_route_point=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
Пример разбора:
FlightRoutePoint(
type=RoutePointTypes.landing_straight,
pos=Point3D(185304.27, 54570.12, 0.00),
speed=0.00,
formation=None,
radio_silence=True,
)
Точки посадки не имеют особых параметров и описываются с помощью
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
Примечания:
[1] | Только для точек патрулирования. |