Трава, вода и ориентиры
В игре нет HUD и подсказок — пилот узнаёт о ветре и воздухе только по картинке вокруг, как в настоящем полёте. Каждый признак ниже связан с реальной моделью атмосферы: трава колышется от настоящего ветра в этой точке, дым сносит настоящий локальный поток, рябь на воде — от того же ветра, что чувствует крыло. Ничего не рисуется «для красоты» отдельно от модели — иначе картинка учила бы неправильно.
Трава колышется по ветру
Травинки вокруг камеры (GrassField) реагируют на средний ветер у земли и на порывистость: по траве и
ниве бегут пятна порывов (трава светлеет — видна изнанка листьев) и рябь вдоль направления ветра. Над
термиком у земли — изломанная закрученная волна, сходящаяся к оси потока, и усиленное колыхание: трава
как будто «вдыхается» в термик. Смещение рисунка порывов копится на CPU кадр за кадром, а не выводится
из общего времени игры — поэтому при резкой смене направления ветра рисунок не дёргается назад.
Деревья при этом качаются (амплитуда макушки растёт с ветром). Видно с 50–300 м от камеры, дальше
плавно гаснет.
Травинки приминаются у ног пилота на старте и на посадке, на официальных посадочных площадках трава скошена прямоугольником по их реальной оси. Подробности расстановки, прореживания вдали и приминания — в docs/guide/vegetation.md.
Рябь на воде
Вода реагирует на тот же ветер, что и трава:
- штиль — зеркальная гладь;
- к полной скорости ветра — матовая рябь: шероховатость и направление нормалей идут поперёк ветра;
- в пятнах порывов — рябь темнее («кошачьи лапы» — меньше отражённого неба), против солнца искрится;
- у наветренного берега — гладкая полоса: суша с наветренной стороны гасит ветер, и вода там остаётся спокойной (расчёт по нескольким выборкам маски берега против направления ветра).
Вдоль всякого берега, независимо от ветра, — тонкая полоса мокрого грунта. Всё это — часть общей модели рельефа и воды, описанной на странице Рельеф и места.
Дым костра
У лагеря на старте горит костёр (кольцо камней, поленья, пламя-частицы, мерцающий свет). Дым — 26 клубов в мировых координатах, их скорость тянется к сумме «ветер + всплытие»; ветер берётся из модели атмосферы у самого костра на двух высотах (клуб использует ту, что ближе его собственной), с учётом вертикального потока склона или термика. Всплытие затухает со временем и делится на скорость ветра: в штиль дым идёт тонкой струйкой почти вертикально, на 3 м/с — заметно наклонён, на 7 м/с — прижат к земле и тянется по ветру. Обновляется несколько раз в секунду — порывы колышут весь шлейф целиком, а не только последний клуб.
Ветроуказатели и ленточки
На каждом старте — конус на мачте и вешки с красно-белой лентой по краям полосы разбега; на посадках — конус на более высокой мачте. Воздух для них берётся прямо у вертлюга/полотнища (со всеми порывами, ротором и термиками), поэтому в роторе соседние конусы на одном старте могут показывать разное направление, а в термике конус слегка задирается вверх. Наполнение конуса и провисание ленты растут со скоростью ветра по формулам, сверенным с фотографиями настоящих конусов; болтание хвоста усиливается порывистостью. Устройство этого прибора, его формулы и настройка — на странице Приборы.
Ленточка на тросе трапеции
Отдельная маленькая деталь в кабине — ленточка («ниточка»), привязанная к переднему тросу трапеции: на старте показывает направление и силу ветра, в полёте — поток воздуха у самого крыла (скольжение, рыскание). Она видна на периферии зрения, как у настоящих пилотов, без каких-либо подсказок сверху. Подробнее о её узле крепления и параметрах — на странице Приборы и в docs/guide/telltale.md.
Дымка и видимость
Дальность видимости и цвет дальних хребтов — тоже признак состояния воздуха: под ясным небом дальние гряды синеют с расстоянием (голубая дымка чистого воздуха), под слоем перемешивания видимость ограничена и резко улучшается выше его верхней границы. Подробно про дымку, инверсию и её связь с высотой облаков — на странице Рельеф и места (раздел мира и неба) и в docs/guide/atmosphere.md.
Что из списка сделано, а что нет
Полный список визуальных признаков воздуха для пилота с их важностью собран в исследовании docs/research/visual_cues.md (список VR-1…VR-30). По коду и документации на сегодня сделано заметно больше, чем «обязательный минимум»:
Сделано (MVP и часть «следующего этапа»):
- кучевые облака со стадией жизни, тени облаков по форме, дымка и инверсия, цвет земли = карта источников термиков, солнце и тени рельефа/деревьев/крыла, детальная трава и объекты у земли, ветроуказатели и ленточка на старте, птицы в термиках, навигация по реальному рельефу и OSM, провода ЛЭП с коллизией, крыло и трапеция в кабинном виде, посадочная площадка с ветроуказателем;
- из «следующего этапа»: рябь и гладкая полоса на воде от ветра, качание травы и деревьев волнами
порывов, дым от костра со сносом ветром, ветроуказатели, честно показывающие ротор (разный ветер
у соседних конусов), объёмный лес с кромкой как триггером и препятствием, пыльные вихри у сильных
термиков над сухой землёй (
dust_devils.gd); - из «позже»: часть опасной погоды уже есть — грозовые ячейки с наковальней и ливнем (
storm_field.gd), волновые лентикулярные облака и роторные клочья (wave_field.gd), перистая пелена верхнего яруса, гасящая термики (cirrus_layer.gd).
Пока не сделано (нет упоминаний в коде/доках репозитория): поведение птиц, набирающих в более слабом потоке, чем способен удержать дельтаплан; ласточки/стрижи над источниками термиков и поднимающийся мусор/пух; дымка-купол над сухими термиками в безоблачный день; техника в полях (трактор с пылью) как триггер отрыва термика; разная растительность на самой посадочной площадке (высокая трава, посевы) — сейчас посадка везде скошена одинаково.
Границы модели
- Признаки читают модель, а не имитируют её приближённо: если термика или ветра в этой точке нет, ни трава, ни вода, ни дым не покажут ложного движения — но и наоборот, слабые эффекты (например, очень слабый термик под порогом видимости облака) не получают никакого визуального признака вообще — «голубой день» без термика и «голубой день» со слабым нерабочим термиком неотличимы по картинке.
- Дальность признаков ограничена бюджетом: трава видна с 50–300 м, дым — до сотен метров, дальше
признаки гаснут не потому, что явление прекратилось, а по правилам отрисовки (
wind_fade_mи аналогичные параметры). - Не все признаки из исследования одинаково точны: например, дым — это частицы с усреднённым ветром по двум высотным пробам, а не честная симуляция дыма; рябь на воде — процедурный шейдер по скорости и направлению ветра, а не расчёт волн.
Что рассматривали и почему так
- Только признаки, завязанные на физику. Исследование
visual_cues.mdизначально собирало десятки идей из литературы для пилотов (Pagen, FAA Glider Flying Handbook, статьи SkyNomad и другие источники по метеорологии для планеристов) и намеренно делит их на «обязательно», «желательно», «позже» — реализация шла в этом порядке, а не по красоте эффекта. Общее правило (VR-0) — не рисовать ничего декоративного, что противоречило бы модели: декоративный признак без физики был бы хуже его отсутствия, потому что учил бы пилота неверно. Источники подобраны и проверены отдельно; часть из них требует сверки при появлении печатных книг (Bradbury, Martens, Pagen «Performance Flying») — это отмечено в самом исследовании как открытый вопрос, а не факт. - Приоритет — то, без чего нельзя честно летать без HUD: ветроуказатели, трава и объекты у земли для оценки высоты, тень крыла на посадке — сделаны в первую очередь, потому что без них оценка высоты и скорости на выравнивании превращается в лотерею.
Подробнее
- docs/research/visual_cues.md — полный список признаков, их важность, источники по метеорологии для пилотов.
- docs/guide/vegetation.md — трава и деревья вокруг камеры.
- docs/guide/world-objects.md — ветроуказатели, костёр, лагерь, ЛЭП.
- docs/guide/telltale.md — ленточка на тросе трапеции.
- docs/guide/atmosphere.md — модель ветра, термиков, дымки и опасной погоды, которую эти признаки показывают.
- Код: scripts/terrain/grass_field.gd, scripts/terrain/terrain_wind.gd, scripts/world_objects/campfire.gd, scripts/world_objects/wind_indicator.gd.


