Крыло и полёт
Модель полёта — не аркада с одной кривой «скорость–подъёмная сила», а точечная масса с ориентацией, которая считает те же уравнения, что и настоящий дельтаплан: подъёмная сила и сопротивление из поляры крыла, масса пилота, крен от смещения веса, сваливание, разбег и выравнивание у земли. Ниже — как это устроено и какие крылья в игре.
Как считается полёт
Логика лежит в scripts/flight/ — обычных классах RefCounted (проверяются без графики, тестами), нода
Glider — тонкая обёртка вокруг них. Шаг физики — 120 Гц, полу-неявный Эйлер.
Состояние планера: положение, скорость относительно земли, курс, крен и угловая скорость крена, тангаж киля, угол атаки, флаг срыва. Силы: подъёмная — перпендикулярно воздушной скорости, наклонена на угол крена; сопротивление — вдоль потока; вес.
Поляра. У каждого крыла — таблица точек «скорость (км/ч) → снижение (м/с)» при эталонной массе
пилота (configs/wings/<id>.json → polar.points_kmh_ms). Точки переводятся в безразмерные
по
и между ними — линейная интерполяция; в спокойном воздухе модель сходится к исходной поляре точно. За самым медленным краем поляры (глубже, чем есть точки) — парабола .
Трапеция задаёт угол атаки, а не скорость напрямую: положение 0 — трим, −1 — «полностью на себя»
(разгон), +1 — «полностью от себя» (до сваливания); между ними скорость линейна по отклонению. Раскладка — как у дельтапланериста: от себя (мышь от себя, ↑, стик геймпада вперёд) — нос вверх, торможение; на себя (мышь на себя, ↓) — нос вниз, разгон. Мышь всегда ведёт крыло (трапецию) — когда она захвачена (клавиша M); без захвата курсор свободен, а трапеция держит последнее положение. W/S/A/D крыло не двигают никогда: в полёте они поворачивают голову в кабине (90°/с; отпустил — взгляд остаётся; V или средняя кнопка — снова вперёд), на земле — шаг и поворот на месте. Осмотреться мышью — с зажатой правой кнопкой (трапеция при этом держит положение). Настройка «Инверсия тангажа» (по умолчанию выключена) даёт раскладку «как в самолёте» для стрелок, мыши и стика. Крыло
выходит на заданный угол атаки не мгновенно, а с постоянной времени pitch_time_constant_s — инерция.
Раскачку скорость↔высота (фугоиду), которая у точечной модели без демпфирования качалась бы бесконечно,
гасит добавка к углу атаки, пропорциональная (flight.json → phugoid_damping, коэффициент 1,4 —
затухание ζ≈0,5): реальное крыло устойчиво по скорости и успокаивается за 1–2 колебания.
Масса и высота. Раз трапеция задаёт , все скорости и снижение растут как , а качество () от массы не зависит — это стандартный результат теории планирующего полёта (так же пересчитывают поляру планера при заливке водобалласта). Масштабируется полная масса (пилот + крыло), не масса пилота отдельно. Плотность воздуха кг/м³ (приближение МСА): на 2000 м скорости уже на ~10 % больше, чем у земли. Подробный разбор с проверкой по паспортным данным двух размеров одного крыла (Litespeed RS 3.5 и RS 4) — docs/research/pilot_mass.md.
Постоянные времени по крену и тангажу растут как (момент инерции ∝ M, аэродинамическое демпфирование ∝ V ∝ √M) — тяжёлый пилот входит в крен и выходит из него медленнее.
Крен и трапеция
Два режима управления креном (controls.json → roll_control_mode, настройка «Управление креном»); в
обоих смысл ControlInput.roll в полёте — это ControlInput.weight_shift.
«Смещение веса» (
weight_shift, по умолчанию). Крен (мышь вбок, ←/→, стик) — положение пилота поперёк трапеции (−1…+1, 0 — центр). Техника как в жизни: качнулся вправо — крыло кренится и поворачивает; встал в центр — крыло само выравнивается и летит прямо в новом направлении. Угловая скорость крена, к которой крыло выходит с постоянной времениroll_time_constant_s:(плюс вклад от разницы потоков на концах крыла — см. ниже). — эффективность смещения веса: ниже трима (крыло вялое), выше трима — (на скорости тяжелее). При удержании смещения устанавливается крен, пропорциональный смещению, без раскрутки в спираль: на полном смещении в вираже ≈ 41° у учебного крыла, 45° у мачтового (Laminar), 44° у спортивного. Из центра после 2 с полного смещения крыло возвращается к |φ| < 3° за ≈ 2,0 / 2,6 / 3,3 с соответственно — учебное устойчиво сильно, спортивное на малом крене почти нейтрально. Круче
roll_overbank_deg(70 / 65 / 60°) устойчивость за 10° сходит на нет — начинается спираль, выход только смещением в обратную сторону. Переложение 45°→45° на полном смещении ≈ 2,2 с.«Как раньше» (
rate). Смещение веса напрямую задаёт угловую скорость крена (roll_rate_max_dps, множитель ), выход на неё — с постоянной времениroll_time_constant_s; без ввода крен держится. Переложение 45°→45° ≈ 2,3–2,7 с. Автопилот и боты тестов всегда в этом режиме.
Клавиша X («в центр») в обоих режимах плавно ставит трапецию в нейтраль и выравнивает крыло в горизонт. Вираж — координированный, без скольжения: курс идёт точно по воздушной скорости, радиус , в вираже скорость растёт как , снижение — как (n — перегрузка).
Сваливание
Выше критического угла атаки обтекание за lift_loss_time_s переходит к сорванному (динамический срыв):
парус работает как пластина поперёк потока,
(, как у купола парашюта). Через nose_drop_delay_s нос сам опускается на nose_drop_deg, крыло
разгоняется и выходит из срыва; если продолжать держать трапецию от себя, срывы повторяются. В крене
больше wing_drop_bank_deg — сваливание на крыло: опущенная консоль продолжает падать, управление
креном ослаблено.
Разбег, отрыв, посадка
Земля. Фазы: стоит → идёт (поворот на месте, скорость шага падает на крутом склоне) → бежит (сила ног падает к пределу скорости бега, склон помогает, крыло по мере разгона разгружает пилота). Боковой ветер кренит крыло в руках, пилот выравнивает его ручкой крена. Отрыв — когда вертикальная составляющая подъёмной силы ≥ веса. Срывы взлёта: нос высоко/низко, попутный ветер сильнее 1,5 м/с, боковой снос с креном крыла > 20°, слишком слабый или долгий (> 10 с) разбег.
Выравнивание. Ниже 4 м над ногами трапеция «от себя» сильнее порога ставит киль на тангаж до 50° к горизонту за 0,1 с; нос при этом срыве не опускается. Парус на закритическом угле кратковременно тормозит сильнее статики (нормальная сила ×3, кратковременный рост ×1,5 — вихрь динамического срыва), крыло подскакивает и «подвешивается»: опускает пилота на ноги не быстрее 0,7 м/с, пока не опустится на 1,6 м — дальше эффект кончается, и крыло падает. Это феноменологическая модель (вихрь динамического срыва, экран земли, пилот встаёт под крыло — без физического моделирования маятника пилота). При правильном выравнивании (~1,2·V_св) касание ≈ 1,2 м/с вертикально; на 1 м выше точки — ещё мягко (~1,3 м/с); на 3 м выше — «плюх» ~6,4 м/с, уже жёсткая посадка. Навстречу ветру выравнивают позже (~0,9·V_св).
Посадка. Скорость касания раскладывается по нормали к склону («вертикальная») и вдоль него («горизонтальная»). Пороги подобраны по ответам пилотов-консультантов («с 5 м/с посадка уже жёсткая, при правильной посадке скорость ≈ 0»): мягкая — вертикальная < 5 м/с, горизонтальная ≤ 3 м/с, крен ≤ 15°; жёсткая — вертикальная 5…7 м/с или горизонтальная 3…12 м/с (на триме без выравнивания — около 10 м/с); авария — вертикальная > 7 м/с (вдвое больше энергии удара, чем на пороге жёсткой), горизонтальная > 12 м/с или крен > 35°.

Границы модели
- Нет скольжения и рыскания как отдельной степени свободы, нет момента от вращения по курсу — крыло всегда летит «носом в поток».
- Тангаж кинематический (первого порядка): нет момента трапеции и центровки, только выход на заданный угол атаки с постоянной времени.
- Нет экранного эффекта у земли; на земле пилот и крыло — одна точка. Выравнивание — феноменологическая модель, без физического маятника пилота.
- Поляры синтезированы по паспортным ориентирам производителей (полных измеренных поляр они не публикуют) и по методике, проверенной на паре реальных размеров одного крыла.
- Предельные перегрузки и поломка крыла при их превышении — не смоделированы.
- Регулятор натяжения паруса (VG) сознательно не сделан («полиспасты, которые затягивают парус — не заморачиваемся», ответ пилота-консультанта) — поляры безмачтовых крыльев даны без него, как «средняя рабочая» настройка.
Линейка крыльев
В игре 48 крыльев с реальными прототипами в четырёх группах — по возрастанию качества и ветра, в котором комфортно стартовать. В меню «Полёт…» сначала выбирается группа, потом модель в ней. Все крылья, их числа и отметка «паспорт / аналог / оценка» у каждого — в разделе «Модели аппаратов». Ниже — первые девять крыльев, с которых начиналась линейка.
| Класс | id: прототип | Площадь, м² | Пилот, кг | Сваливание | Качество | Ветер до, м/с |
|---|---|---|---|---|---|---|
| Советские 1980-х | slavutich_ut: Славутич-УТ | 17,46 | 60–90 | 25 км/ч | 6,2 @ 34 | 7 |
| Советские 1980-х | apogee: «Апогей» (В. Мысенко) | 14,4 | 50–100 | 25,8 км/ч | 7,1 @ 36,8 | 10 |
| Советские 1980-х | atlas: советский «Атлас» (копия La Mouette Atlas) | 15,5 | 65–95 | 27 км/ч | 8,4 @ 35 | 8 |
| Учебные однообш. | target: Aeros Target 16 | 16,2 | 60–100 | 27 км/ч | 7,2 @ 34 | 8 |
| Учебные однообш. | training: Wills Wing Falcon 170 | 15,8 | 64–100 | 24 км/ч | 9,0 @ 38 | 8 |
| Мачтовые двухобш. | magic: Airwave Magic IV 166 | 15,4 | 65–100 | 29 км/ч | 10,6 @ 42 | 10 |
| Мачтовые двухобш. | laminar: Icaro Laminar Easy 14 | 14,5 | 65–95 | 30 км/ч | 13,2 @ 46 | 10 |
| Безмачтовые | sport: Moyes Litespeed RS 4 | 14,1 | 74–104 | 27 км/ч | 15,0 @ 45 | 12 |
| Безмачтовые | combat: Aeros Combat GT 13.2 | 13,2 | 70–110 | 30 км/ч | 16,0 @ 50 | 12 |
Данные — площадь, размах, диапазон массы пилота, ориентиры качества и скорости сваливания — сведены из
паспортов производителей, клубных таблиц, Википедии и (для «Апогея», о котором в открытых источниках
почти ничего нет) ответов пилота-консультанта; полная таблица источников с пометками достоверности —
docs/archive/plan/wings-lineup.md §1, поляры и параметры каждого крыла —
docs/research/pilot_mass.md и configs/wings/*.json.
Управляемость у каждого крыла — своя (через существующие параметры FlightModel, новых не понадобилось):
например, «Апогей» — самое устойчивое крыло в наборе (roll_stability_per_s 1,25 против 0,75–1,1 у
остальных, roll_overbank_deg 75), с самым мягким и медленным сваливанием (lift_loss_time_s 0,6 с, нос
опускается раньше — на nose_drop_delay_s 0,35 с). У Icaro Laminar, наоборот, лёгкий и быстрый крен
(roll_rate_max_dps 50). Aeros Combat GT — самое «жёсткое» и резкое в крене крыло набора.


Какие варианты рассматривались
Изначальный запрос — широкая линейка реальных крыльев по классам, где в основе — модели, на которых летали пилоты-консультанты. Дальнейшие решения:
- Регулятор натяжения паруса (VG) рассматривался отдельно (§5 плана): по мануалам Wills Wing T2C и Aeros Combat качество на VG растёт на 55–80 км/ч примерно на 10–15 %, но управление становится заметно тяжелее и медленнее в крене. Отклонён решением пользователя — карточка отменена, поляры безмачтовых крыльев даны без VG.
- Прототип мачтового Laminar сначала числился безмачтовым; по уточнению пилота-консультанта — это мачтовое крыло класса Aeros/Airwave Magic, переехал в класс мачтовых двухобшивочных.
- Терминология: «мачтовое/безмачтовое» вместо более старого «килевое/бескилевое» — по существу то же различие (наличие мачты с верхними тросами), но термин точнее.
- Wills Wing Sport 2 был в наборе как прототип класса мачтовых, но убран из игры решением
пользователя 28 сентября 2026 года: конфиг, 3D-модель и ключ названия удалены, id
kingpostв тестах заменён наlaminar(8633fa7,e2704c4) без слоя совместимости для сохранённых настроек — «пользователей нет». - Новые параметры
FlightModelдля управляемости «Апогея» тоже рассматривались отдельно (карточка 4), но отменены — нынешних параметров (устойчивость, скорость крена, параметры срыва) хватило, чтобы передать «очень лёгкое и устойчивое, прощает грубые ошибки».
Подробнее
- docs/guide/flight.md — полное описание модели полёта, API
FlightModel/Glider, контракт визуала и тесты. - docs/research/pilot_mass.md — вывод масштабирования поляры по массе и проверка на паспортных данных.
- docs/archive/plan/wings-lineup.md — исследование по каждому крылу (источники, пометки достоверности), выбор набора и параметров управляемости.
- docs/research/wing_sources.md — источники по внешнему виду и характеристикам крыльев.
- docs/research/control_frame_refs.md — референсы трапеции и вида из кабины для 3D-моделей.
- Код: flight_model.gd, wing_polar.gd, ground_run.gd, landing_flare.gd.