Помните Ил-2 Штурмовик? Помните бота Силеро с голосами из Варкрафта? Так вот, мы доросли до того, что поучаствовали в разработке синтеза речи для новой части легендарной игры. На этом всё, доклад окончен.
Нам посчастливилось принять участие в разработке синтеза речи для новой версии игры игры Ил-2 Штурмовик — Ил-2: Корея. Это был длинный путь, но в итоге у нас получилось:
Сделать синтез на 8 языках русском, английском, китайском, корейском, японском, немецком, французском и итальянском;
В итоге пришлось работать на основе записей "профессиональных программистов" (как в старые добрые, но в этот раз это были C++ программисты-разработчики игры);
Синтез работает только на CPU практически без задержек;
Голоса умеют не только говорить, но и "кричать".
В игре на данный момент озвучиваются только игровые боты (игра сейчас в раннем доступе), но возможно когда-нибудь синтез доедет и до мультиплеера.
Как это выглядит в игре
Демонстрацию ниже для нас сделали разработчики игры. Сразу нужно оговориться, что "крик" тут немного "особенный" и скорее соответствует очень возбуждённой речи в стрессовой ситуации.
То есть, грубо говоря, в идеале должна быть довольно пунктирная речь, или очень возбуждённая пунктирная речь. Естественно в игре на это накладывается шум радио и двигателя самолёта, что несколько сглаживает углы и понижает требования к качеству синтеза.
Легенда ИЛ-2 и текущее состояние игровой индустрии в России
Ну тут я довольно мало во что играл
Оригинальный Ил-2 Штурмовик входит в "пантеон" великих игр позапрошлой итерации нашей игровой индустрии, которая немного закончилась примерно к концу нулевых. Ну то есть было и мировое признание, и миллионные тиражи (если знаете точнее — напишите) и народная любовь. В те времена Ил-2 прямо называли лучшим авиасимулятором (ключевое слово тут симулятор) и он прямо конкурировал с Microsoft Flight Simulator по уровню популярности и фанатской любви.
Если перенестись в настоящий момент, у нас наблюдается системный кризис игровой индустрии. Все более менее успешные команды в лучшем случае "сменили прописку" (почитайте фамилии в титрах таких успешных игр как Space Marine 2 или Rogue Trader). По этой причине для нас представляет особенную радость и гордость "прикоснуться" к легенде и в идеале оставить в вечности маленький кусочек своей работы в таком легендарном продукте, который сделан в нашей стране.
Пара слов про AI-slop и не только
Многих разработчиков западных AAA-игр принципиально пытались "отменить" за присутствие низкокачественных нейросетевых ассетов в играх. Тут ситуация по сути обратная, т.к. мы не пытаемся подменять творчество нейрослопом (или агрессивно резать косты, выставляя нереалистичные задачи команде разработки на фоне общего навязывания "круток" и "подписок").
По сути мы создаём контент, который бы иначе не мог бы в принципе быть создан. А именно сам контент игры по факту создаётся людьми (синтез только озвучивает то, что ему дал разработчик).
Постановка задачи
Весь проект, если коротко
В современном мире задача сделать "yet another" синтез же простая, правда? Берёшь самый модный публичный репозиторий с 100500 звёзд и самой большой LLM, берёшь, что записал диктор, и "GPUs Go Brrr", правда? Но, к сожалению, нет.
Какое-то время назад к нам обратились разработчики игры и рассказали, что хотят добавить синтез в свою игру. При этом на старте сразу обсуждался некий продуктовый список требований, при этом требования зачастую были очевидно продиктованными необходимостью:
Работа сильно быстрее реального времени без задержек (ну тут очевидно);
Работа внутри клиента игры (синтез не может зависеть от внешних серверов, да и задержка будет портить впечатление, плюс сложно масштабироваться при успехе игры);
Покрытие как минимум 8 популярных языков (тут по сути неизбежно, так как это список воюющих сторон);
Возможность гибкой озвучки имён собственных и топонимов (без этого теряется гибкость разработки нового контента);
Возможность генерировать как обычную пунктирную речь, так и "крик" (речь должна быть похожа на то, как говорят реальные лётчики).
Программа минимум — оживить общение с игровыми ботами, диспетчерами и игровым окружением. Сделать добавление нового контента не зависящим от дикторов и разработки синтеза (все же знают приколы про "билдоту" и кривые и лишние фразы озвучки в старых играх).
"Оживление" диспетчеров и ботов подразумевает, что нужно произносить всякие разные топонимы и числа в разных комбинациях, что раньше решалось конкатенацией слов, что несколько делало игру более "роботизированной" и шаблонной. То есть заранее предзаписать всё и поддерживать это потом на N языках просто технически невозможно с современными требованиями к качеству контента.
Шумность обстановки, радиопомехи, звучание речи на фоне — несколько упрощает задачу, но не решает основной проблемы. Речь должна быть чёткой и не должна нарушать погружение игрока в игру.
Поскольку подразумевается длительная поддержка и выпуск большого количества DLC, направленных на разные театры военных действий, ситуация, где нужно потом будет бегать за дикторами на всех языках тоже — совсем не очень.
В начале нашего общения у нас была гипотеза, что раз активное комьюнити игры большое, имя студии известное, какой-то бюджет есть, то мы сможем привлечь профессиональных актёров.
В итоге найти людей-носителей нужных языков в команду для проверки синтеза и собственно создания контента получилось, а вот с актёрами озвучки вышел конфуз:
Санкции плюс мало кто хочет работать с компанией из России;
Иррациональный страх актёров перед AI (небезосновательный, если послушать безумную риторику ряда заинтересованных корпораций, в части синтеза — пока преждевременный);
Ну и ... как бы помягче сказать. В списке языков для озвучки присутствует подозрительно много стран, которые в разные исторические эпохи пытались осуществить нехорошие планы, разнящиеся от простого военного поражения до полного уничтожения нашей цивилизации.
Также в какой-то момент при планировании ресурсов стало понятно, что нельзя использовать GPU. Ну вот совсем. То есть нужна кастомная, особенная, просодия ("спокойный крик"), дикторов нет, синтез должен работать на 1 потоке процессора на "калькуляторах". Отличное начало!
Карточки есть, но использовать их нельзя
Озвучено профессиональными программистами
В сухом остатке, получается, на старте мы имеем следующее:
Отсутствует возможность привлечь профессиональных актёров в нужном количестве;
Довольно сильные требования к кастомизации, портативности, поддерживаемости;
Длинный список языков.
Отсюда получается, что неизбежно использование услуг озвучки "профессиональных программистов" как в старые добрые времена игр на CD-дисках. Но на этой базе нужно ещё и научить голоса русскоязычных программистов говорить на других языках. Бонус тут состоит в том, что целевой крик тут немного проще, чем настоящий крик у профессиональных актёров.
Для начала стоит взглянуть на список языков и их фонетику:
Краткое описание фонетики языков
Если, для начала для простоты, сфокусироваться на первых четырёх языках, то видно, что все языки используют совсем разные системы письма, которые ну вообще никак не связаны (разве что исторически). Отсюда получается, что надо или пытаться приводить их к некой единой схеме "правописания" или использовать фонемы.
Но даже так, слоном в комнате является английский язык, где произношение (особенно топонимов) может вообще никак не быть связано с написанием. Отсюда нужно или придумывать свою общую схема романизации / кириллизации или просто использовать фонемы.
Всё, как обычно, упирается в наличие адекватных инструментов и простоту их поддержки на дистанции:
Для русского нет адекватных готовых общепринятых инструментов по фонемизации или латинизации, увы. Но тут всё "просто". У нас они есть. Берём наши обширные словари ударений и фонем, нейросетки для ударений и фонем (фонемы разрешаются с точностью 99% на русском, если знать ударение), передаём это всё разработчику игры, и переводим все корпуса в фонемы. Ах да, ещё у нас есть активная морфология, падежи, спряжения, согласование в роде числе и падеже — но думаю вы про это всё знаете. Дальше при появлении нового слова (допустим название населённого пункта) разработчик просто ставит ударение и прогоняет слово через фонемизатор, слушает, добавляет в игру. Все эти инструменты быстрые, но на данном моменте их наличие в клиенте пока не требуется;
Для английского ввиду отсутствия падежей в современном языке — всё по сути сводится к поиску правильного словаря. Но вот незадача, если мы идём в использование фонем, то нужно выбирать словари и фонемы так, чтобы один и тот же звук в разных языках обозначал реально один и тот же звук. По сути это, конечно, проблема, так как в английском существуют десятки диалектов и люди реально говорят по-разному. И, зачастую, словари фонем существуют все в разных форматах. Это всё, естественно приходится править руками и массово отслушивать. По сути сложность задачи тут состоит в том, чтобы найти точку, где дальше различие между звуками уже не является важным. Точность фонемных моделей тут составляет примерно 95%, то есть при добавлении нового слова часто приходится переписывать, но это лучше, чем писать фонемами руками с нуля. Ещё мозг часто взрывает то, что при внимательном отслеживании материала носители языка сами очень часто не говорят знаменитый звук θ и часто жуют все гласные и превращают их в "шва";
С китайским как ни странно всё просто. Есть по сути официальный государственный фонетический стандарт пиньинь. Есть готовые библиотеки, которые переводят китайские иероглифы (汉字) в него с расстановкой тонов. Дальше, по сути у китайцев всего около 1500 слогов (слог состоит из инициали и финали). Каждый слог можно однозначно записать фонемами, то есть существует прямой словарь соответствия (плюс символы для тонов) между слогами и фонемами (естественно не все слоги встречаются во всех тонах). Особняком стоит вопрос расстановки пробелов между словами (сами китайцы их зачастую не пишут). Пробелы помогают синтезу (как минимум в индо-европейских языках) с ритмикой и ударениями. Тут это нивелируется тонами, но мы ради интереса всё-таки решили расставить пробелы между словами (но разницы особо нет, чуть докидывает буквально). Есть незакрытый вопрос с "омографами" (иногда биграммы "знаков", 字, читаются по-разному в зависимости от смысла) и тем, что некоторые тоны не могут соседствовать друг с другом (попробуйте быстро прочитать два слога подряд третьим тоном, то есть nǐ hǎo) — но это мы уже отдали на откуп самой нейросети и носителям языка. По сути использование такого процесса упрощает поддержку, так как все носители языка априори знают тоны и пиньинь (пусть писать тоны циферками и чуть менее удобно);
С корейским языком всё одновременно и очень просто, но есть свои подводные камни. Для начала, все материалы в интернете ... это, естественно, южнокорейский язык. Но тут мы ничего не можем поделать. Письмо у корейцев фонетическое, но знаки "странные", потому что глядя на китайцев (видимо они бумагу так экономили), они решили объединять свои буквы в слоги и писать их тоже "квадратиками". То есть, по сути, надо разложить "квадратики" в обычные буквы и дальше перевести в фонемы. У корейцев есть строгие правила чтения, но там ряд звуков меняется в зависимости от контекста. По идее это можно записать в виде правил ... но мы решили этот вопрос тоже через нейросети на минимальном корпусе и сформировали словарь на все слова языка. Точность перевода получается очень высокой. Из плюсов тут нет тонов, почти нет ударения и почти нет пробелов между словами;
В сухом остатке — каждый язык мы преобразуем в набор фонем. При этом мы тщательно перебрали руками все эти фонемы, чтобы они друг другу не противоречили. Это невозможно сделать абсолютно идеально, но основные проблемы классических фонемных словарей мы победили (например палатализацию). Всегда есть тонкости и маленькие детали, от которых приходится отказываться.
Итак, со "знаками" мы разобрались. Теперь нужно что-то сделать с голосами и криком. С криком проще — нужный в игре крик можно просто записать. То есть можно записать "спокойную" и "кричащую" (возбуждённую) версию голосов. Из этого, в принципе, даже можно сделать синтез на русском языке. Но как сделать синтез на всех языках?
Тут, глобально мы перепробовали очень много всего, но можно глобально выделить три работающих подхода:
Подходы к снаряду
Изначально мы проделали большое количество экспериментов по генерации крика на основе формант. На чистых идеальных данных на одном языке (русском) — метод интересный и перспективный. Но когда мы стали пытаться накрутить наши данные на другие языки — метод перестал работать. Судя по проведённым экспериментам метод рабочий, если вы условно делаете Алису и не ограничены в записях, бюджете и количестве аудио.
Первую более-менее рабочую версию мы сделали на основе transfer learning, то есть когда мы обучали модели на публичных данных, и потом дообучали на наших голосах. Но тут проблема основная в том, что с учётом требования по крику, допустим два языка у нас получалось поселить в модели с нужным качеством. А дальше — уже модель начинала плыть, то есть данные шумноваты, их слишком мало. Оно говорит чётко, произносит все тоны и фонемы, но акцент слишком сильный. Носители языка совсем не одобряют, даже с учетом того, что ты управляешь самолётом.
В итоге мы остановились на том, что использовали нашу собственную систему синтеза и переозвучки, чтобы сгенерировать синтетический датасет для обучения итоговой модели. В итоге на основе уже синтетического датасета, сделанного из записей "профессиональных программистов", мы сгенерировали продуктовую модель на других языках.
Вместо вывода
Судьями нашей работы и работы разработчиков будут только игроки и время. В любом случае у нас на рынке есть не так много живых нетривиальных игровых проектов и поучаствовать в разработке продолжения легендарной игры — для нас большая удача и честь. Остаётся выразить надежду, что дальше будет только больше нетривиальных проектов и что кризис рано или поздно закончится.
В Сириусе (это такая федеральная территория в Сочи, граничащая с Адлером, но не Сочи) на территории университета Сириус - стоит Буран. Точнее это полноразмерный макет, который использовали для наземных испытаний.
Купили билеты и на следующий день пошли. Организационно особых вопросов никаких: зашли на проходную, нам сказали сесть на кресла и ждать экскурсовода, к времени начала экскурсии - пришла экскурсовод, познакомилась с нами, сообщила, что часть гостей задерживается и пошла их встречать.
Группа собралась, всего нас было 4 взрослых и двое детей, и повели нас к Бурану
Экскурсовод приятная женщина, с минимальными техническими неточностями рассказывала историю проекта и устройство Корабля. Что касается Бурана - это ОК-КС, ранее стоял в Королёве, транспортирован в Сириус. Да, это стенд, в космос он не летал, но технически изначально - полноразмерный, с аппаратурой и прочее прочее.
Прежде всего, что скажу - мало я в жизни видал космических кораблей и ракет, я бы даже сказал, что кроме того, что есть на ВДНХ (ВВЦ) я ничего более не видал и представлял себе Буран как нечто размером с Як-42, так вот - я ппц как ошибался. Он здоровенный, еще и квадратный в сечении.
Состояние - очень хорошее, как по мне, гораздо лучше, чем крашенные 20 раз маслянной краской самолёты в парках Победы или агонизирующий Лунь. Да, есть повреждения, вероятно, от перевозки, но подлатано, подкрашено и выглядит довольно сносно.
Экскурсовод рассказала про транспортировку, проблемы с которыми столкнулись, потом мы пошли внутрь.
Внутри Бурана смонтировано что-то типа интерактивного музея. К существующим трубкам, бакам и прочему железу - добавили подсветку (отвратительно синюю) и проекторы. У экскурсовода пульт управления всей этой феерией.
Заходим с хвоста внутрь, почти как в упомянутом Як-42, и попадаем в отсек с двигателями. Места там было очень мало, темно + синяя подсветка, фотки получились не айс, но на расстоянии вытянутой руки можно было угадать камеру сгорания двигателя, резервуары для газов и прочее такое. Фото оттуда хренового качества, но уж что смог мой телефон:
Здесь было рассказано на чём работали двигатели Бурана, отличия от Спейс Шаттла и потом мы прошли в грузовой отсек...
Мама дорогая, я уже понял, что Буран большой, но он огромный, он внутри еще больше чем снаружи. Начну с фото, которое было сделано одним из последних.
Когда уже родители с детьми ушли, экскурсовод предложила: -Может вам свет включить, чтобы лучше рассмотреть? Вам интересно с технической точки зрения? -Конечно! Экскурсовод выключила синий свет и включила обычный дневной:
Люк впереди - около метра в диаметре, чтобы вы понимали масштаб. Пол - стеклянный, под ним прекрасно просматривается конструкция бурана. Я уж не знаю был ли в настоящем Буране пол и как он выглядел, но зрелище очень интересное. Особенно, когда соотносишь, что смонтировано внутри и что снаружи, например, те ж самые газо-динамические двигатели (движители?).
Экскурсовод сказала, что объём грузовой палубы - 350 кубических метров, 3 ЖД-вагона.
На грузовой палубе смонтированы проекторы и пару стендов, без клюквы, конечно, не обошлось, на одном из стендов в 3D, что требует одевания специальных очков, показано как Буран взлетает, ворует американский спутник и садится.
В остальном, вполне себе стандартные истории там внутри слушали, про полёт Бурана, про его автоматическую посадку, за что спасибо - без всяких излишних эмоций и воздыханий, в стиле "КОНСТРУКТОРЫ УЖЕ ДУМАЛИ ЧТО ВСЁ, НО БУРАН НЕОЖИДАННО ДЛЯ ВСЕХ СОВЕРШИЛ РАЗВОРОТ И С УЧЁТОМ ПОГОДНЫХ УСЛОВИЙ ИЗМЕНИЛ СХЕМУ ЗАХОДА НА ПОСАДКУ". Извините, накипело от просмотра различных блогеров.
Так же с грузовой палубы:
На грузовой палубе смонтированы проекторы, которые транслируют картинку звёздного неба, чтобы изобразить открытие створок и прочее там.
Дальше мы перешли в бытовой отсек, это в тот круглый люк, что на фото с дневным освещением.
Бытовой отсек не сказать, что очень просторный, 5 взрослым и двоим детям было там уже непросто. Например, там смонтирован туалет, но я к нему не подходил, ибо неудобно.
Что кроме туалета было интересного: Тот самый люк, вид из бытового отсека на грузовую палубу
Вид на оборудование в носовой части. Почему-то прикрыто полупрозрачной ширмой, на которой транслируются едва заметные чертежи, формулы и прочее.
Все кишочки, всё видно
Те самые носовые газодинамические двигатели изнутри
Пульт управления освещением(?), точнее рамка, что от него осталась, расположен на потолке
На "крыше" бытового отсека нашёлся "сервер"
Тут показывали космическое питание, не то, что в тюбиках в аэропорту продается. Врядли это сильно интересно публике Авиафорума, а вот из интересного: -Дали подержать в руках ту самую теплоизоляционную плитку, напоминает спрессованную стекловату по текстуре и довольно лёгкая. Фото почему-то не не сделал. -На грузовой палубе видны распорки(?) под полом, тут я извиняюсь, я не знаю как называется данная деталь правильно, я инженер, но не тот. Экскурсовод рассказала, про них. Устроила минивикторину, из какого они металла и сколько весят.
Отвечаю: Титан 100 грамм
Про титановые распорки, вы их видите прекрасно на фотке, что была при "обычном" свете, но Пикабу не даёт повторно загрузить фото.
Вот тут видно диагональные и поперечные распорки. 100 грамм вес
т.е. они формируют какой-то силовой каркас между фюзеляжем и полом, наверно, даже фальш-полом, ибо между куча коммуникаций. Так вот, длина у каждой где-то 120см, на вскидку. Материал титан, а весь 100 грамм. Чисто на ощупь похоже на гидроформирование и баттинг, не знаю русского термина, извините. Очень тонкие, очень легкие
После бытового отсека и викторины - поднялись уже в пилотскую или лётчиковскую, в объем туда где рулят. Места там еще меньше чем в бытовом отсеке и чтобы хоть кто-то поместился - оттуда убрано кресло бортинженера, оставлены кэп и второй пилот космонавт.
В кабине смонтирован какой-никакой симулятор и есть действующие приборы, не уверен, что все они Бурановские, но тем не менее есть и даже реагируют на РУДы, ручку (штурвал), педали, штурвалы первого и второго связаны.
Экскурсовод запустила симулятор и предложила оформить заход в космопорт аэропорт Сочи.
Но место второгоп лётчика космонавта выглядит примерно так:
А первого вот так:
В целом, могу сказать, что видимость из кабины так себе, а у правака еще возможно и монитор впереди не работал, поэтому в нашем экипаже я больше следил за тягой и горизонтом, пока в боковых окошках проносились пейзажи...
Ну и без ляпов, конечно, не обошлось, в середине панели вы можете видеть некий дисплей с красным шрифтом, я его когда издалека увидел - у меня сразу закрались некоторые предчувствия, я бы даже сказал дежавю. Сев на место второго пилота, сомнения развеялись. Это тот самый привычный вывод top, утилиты операционной системы Linux, которая показывает нагрузку, запущенные процессы и прочее. Эх, какую страну потеряли! Линукс в Буран внедрили раньше чем он вышел! Но за находчивость - пять, человек не в теме легко подумал бы, что это какие-то реальные показатели
Сам процесс своего непростого полёта не покажу, ибо и тесно, и неудобно, и рук не хватает, и кто за горизонтом и тягой будет следить, если не я... Но после нас летали дети, поэтому покажу как летели они
Привет, я тут вчера поделился фоткой своего недоланного пьедестала для А320, пара человеков попросили подробностей. Вот показываю на примере радио панели, она же RMP
Должно получиться вот такое:
Скришнот из MSFS2024
Но у меня вышло такое уродство:
1/2
ошибки будут учтены в следующей версии (наверное)
А вот первая версия, основной функционал есть и работает, если не хочется внешний вид приближенный к реальному то можно было бы и на этой картонной коробке остановиться
2 дисплея для частоты (active/standby), двойной энкодер (нижний меняет перед точкой, верхний после) и кнопка для перключения active/standby
Собственно с этой коробки всё и началось, когда я стал летать в VATSIMе, приходилось мышкой крутить эти крутилки на экране, что занимало много времени и отвлекало, а с этим ватсимом и так голова пухнет от всего и какие-то вещи иногда вылетают из головы. ПС: для тех кто не шарит про VATSIM - тут человек описывал свой опыт: Первый полет в VATSIM. Феерично!
Итак, для начала нам понадобятся сами панельки, их я заказывал у человека у которого есть лазерный резак/гравер по акрилу. А человек хочет векторые схемки, я делал в CorelDraw и экспортировал в DXF формате, и сам материал - акриловые 3мм листы, я купил три прозрачных, потом понял что на лицевую панель (и для кнопок) надо было брать белую (но такую которая свет пропускает, для подсветки). При отрисовке схемы нужно учитывать размеры запчастей которые будем использовать (о них дальше). продумать как все будет крепиться.
Панель ту что пойдёт на лицевую сторону предварительно загрунтовал и покрасил в RAL7031 (цвет вроде как наиболее похож на оригинальный цвет эирбаса) И одну панель покрасил в черный, для кнопок.
фронтальная панель, красный - резка, синий - гравировка, задня панель почти тоже самое но без гравировки
Когда панельки готовы - собираем. Все компоненты я купил на али, или аналоге
дисплеи х2: 0.36 inch TM1637 6 Bits 7 Segment Digital LED DIsplay Module
свитч х1: ON-ON Miniature Toggle Switches Mini MTS-102
светодиоды зеленые 3мм х12 5v
светодиод желтый х1 (у меня квадратный, но не важно) 5v
резисторы на каждый светодиод (вроде 220 Ом я брал)
1/6
втыкаем всё это на прозрачную панель
дисплеи и энкодер у меня держатся на двустороннем скотче, суперклее и соплях свитч прикручивается гайкой прям к панели
кнопки, светодиоды и резисторы я запаял на перфборде, что-бы примерно совпадало с отверстиями. у всех компонентов общий минус (GND), с обратной стороны я все запаял вот так (прошу всяких инженеров отвернуться, я первый раз паяльник в руках держал)
каждый светодиод и каждая кнопка пойдёт на отдельный пин в ардуино (с дисплеев по 2 пина CLK и DIO и GND и 5v. все GND у всех можно скрутить вместе, а от плюсов тянуть провода, я их еще пометил циферками, и потом они у меня идут вот в такой коннектор на 37 пинов:
тут "папа", а из ардуины торчит "мама", точнее там 3 мамы, т.к. одна Arduino Mega 2560 у меня 3 разных панели контролирует
Дабы не запутаться в пинах, проводах и что откуда и куда, я сделал эксель табличку. номер строки я прилепил на скотч к каждому проводу, в правой колонки пин на Ардуине в который это будет втыкаться
так Arduino Mega 2560 в данный момент выглядит внутри корпуса. соответственно c этих пинов из таблички провода идут в "мама" коннектор.
Когда всё подключено куда надо (этого, конечно, с первого раза не произойдёт) настало время всё это подключить к симулятору. В моём случае это MSFS2024/2020, но для других аналогично.
Там мы сначала добавляем устройства соеденённые с ардуиной, для каждого пина, как-то так:
Названия опять же с той эксель таблички, просто создаём что надо и выбираем пин из таблицы.
и затем создаём конфиг:
Все кнопочки/переключатели/энкодеры и тд - Input, светодиоды/дисплеи - Output
в конфиге каждого элемента его нужно связать с переменной в симуляторе, я этот конфиг делал для A320 от FenixSimulations, но есть для кучи других.
конфиг для кнопки VHF1, выбираешь вендора, самолёт и ищешь нужную переменную, в данном случае RMP1_KEY_VHF1_PUSH
конфиг для светодиода который непосредственно над кнопкой VHF1
Ну и вобщем-то это всё, в общих чертах. Дальше можно делать остальные панели, я вот пока пытаюсь до ума довести пьедестал, потом начну оверхед
Так сейчас выглядит мой "настольный кокпит"
1/3
3 монитора 27" 1 монитор 24" для инструментов, воткнут на половину в стол Winwing FCU+EFIS L Thrustmaster TCA Officer Pack Airbus Edition Справа там тоже временная хэндмейд поделка со всеми необходимыми кнопочками из Оверхед панели (свет, эл-во, топливо, APU, ADIRS) на пьедестале: планшет вместо MCDU, когда-нибудь куплю нормальный DIY панели - радио, внутрення подсветка, ATC/TCAS, WX Radar, ECAM ну и этот Thrustmaster TCA Quadrant Вместо двух картонок планирую воткнуть кастомные панельки для AutoBrake, Terr On ND, Master Warn/Caut , такое вот:
а потом приступлю к полноценому потолку, не знаю зачем, потому что большинство из этого обычно не используется, но я уже отрисовал, да и большинство запчастей уже есть, назад дороги нет