Воскресенье, 05.05.2024, 09:39

Споттинг в Храброво (UMKK)

Главная » Статьи » Мои статьи

Авиасимулятор FlightGear
Итак. Сим поставляется в традиционном для open source виде - архив полных исходных текстов, полностью системно-независимых. Кроме того, на сайте проекта www.flightgear.org есть прекомпилированные бинарники для различных ОС - как открытых, так и коммерческих юниксов, а также для Win98/2k/XP. Для удобства неискушенных виндовых юзеров, симулятор для них содержит довольно удобную программу-конфигуратор, позволяющую наглядным образом задать параметры, всякие опции, выбрать аэродром и крафт - в общем, все то, что в msfs делается на голубом фоне. Юниксоидам сие великолепие пока недоступно, и для них конфигурация задается старой доброй командной строкой и системой конфиг-файлов. 

Инсталляция особых проблем не вызывает - для винды это стандартный мастер установки, который все раскладывает и прописывает, как положено. В этом смысле поставить сим не сложнее чем любую другую программу. Для юникса процесс сборки из исходников прошел ничуть не сложнее - правда, надо отдать должное отлично работающей системе портов на FreeBSD, именно с этой ОС я испытывал симулятор под юниксом. Поскольку системно-зависимых патчей в процессе сборки не накладывается, следует предположить, что разработчики серьезно подходят к переносимости софта, и сборка для других систем сложностей также не вызовет. Необходимо только тщательно читать документацию - она довольно подробна и интересна. Увы, только на английском...
Первый запуск


Тут я буду рассматривать в первую очередь виндовую версию. Конфигурационная программа runfgfs выглядит привычно - похоже, делали ее на основе какого-нибудь "мастера установки". Последовательно: выбор самолета (тут даже есть красивая вертящаяся превьюшка крафта, явно перекочевавшая из Сами Знаете Какого флайт-симулятора:), потом выбор порта, погода, разрешение экрана, кнопка Advansed, открывающая доступ к разнообразным и многочисленным фичам - ну, и в завершении - start.

При этом сама конфигурялка является отдельным процессом, и вся ее задача - сформировать список опций командной строки, которые потом и передаются непосредственно процессу симулятора fgfs. Его можно, в принципе, пускать безо всякой оконной конфигурялки, записав нужные параметры в файл и скормив его при старте fgfs-у. Под юниксом именно так и делается. Ну вот. Давайте попробуем. Какую-нибудь «Сессну», на первый раз - 172p-2dpanel. Разрешение экрана - 1024х768 (сим рисует именно в этом разрешении), полный экран пока не включаем. Порт - KSFO, там красиво. Джой встанет по умолчанию. Полетели. Нарисуется сплэш-скрин, процесс загрузки довольно длителен - время сравнимо с стартом msfs. Если какие-то траблы - в консоли (там, на заднем плане, есть окошко) будут различные сообщения об ошибках. В конце концов мы окажемся в привычной кабине "Сессны" в начале полосы на аэродроме KSFO. Двигатель работает, тормоза отпущены. Поворачиваем газ на нашем джойстике (он работает, не так ли?), разбег, ручку на себя - полетели.

Упс! Хат-свич не работает? есть такое дело! Будем смотреть перед собой. Благо, авионика настроена на частоты порта по умолчанию, и зайти можно по приборам. Да хоть по одному приводу. Неважно. Сейчас наша цель - убедиться, что крафт управляем. Оси джойстика, газ, кнопки. По умолчанию, работают оси (кроме руля направления, если он есть на джое) и на кнопках - триммеры руля высоты, на курке, как обычно - тормоза. Из-за вращающего момента винта самолет кренится влево - на мой взгляд, сильнее чем эта же сессна в msfs. Делаем коробочку и пытаемся сесть. Если мешает панель - давим "s", панель спрячется как при нажатии "w" в msfs. Убиться тут сложно - авторы модели, похоже, сознательно исключили краш - так что возможен самый энергичный расколбас, что в общем-то для первого раза - то, что доктор прописал. Сели? Shift+B, стояночный тормоз. А вот теперь - F10 (откроется строка меню, если до этого была скрыта) -> View -> Instant Replay. Давите кнопку replay - и вы снова в кабине сессны перед полосой, пытаетесь чего-то там управлять - только теперь есть возможность увидеть самый захватывающий момент посадки со стороны. В первую очередь - снаружи. Можно подобрать великолепный ракурс! Кнопка "v" - циклически меняет виды, shift+стрелки на нумпаде - сдвиг точки обзора, xX - увеличениеуменьшение "фокусного расстояния внешней камеры" (приближение/удаление). Оценили?

При этом - довольно быстрое переключение видов, плавность отрисовки, комфортный fps. Это следствие важных особенностей графического движка нашего сима, которые мы внимательно рассмотрим чуть позже.
Настройки джойстика


Понятно, что джой симеру необходим. Давайте глянем, как его отконфигурять для удобного (в первую очередь - привычного) управления. Джойстик конфигурируется путем ручного редактирования xml-файла. В корне сима лежит несколько таких файлов - joysticks.xml, keyboard.xml, mice.xml. Наверно, понятно, к какому устройству ввода какой файл относится.

Мой редактор поддерживает подсветку синтаксиса XML, поэтому задачи редактирования упрощаются. Впрочем, ничего там особо сложного нет. Файл joysticks.xml определяет, какой "файл раскладки джойстика" следует применить с вашей конкретной моделью. Другими словами, какое действие следует выполнить при нажатии кнопки и повороте оси. Гляньте в директорию Input - там лежит довольно много примеров раскладок для джойстиков различных фирм. Нашли свой - чудесно, не нашли - тоже ничего страшного. Всегда можно подобрать для своей модели что-нить похожее. Все джойстики, с точки зрения сима - это несколько осей и несколько кнопок. Любую ось и любую кнопку можно связать (в конфиге используется тег "binding") с любой командой сима и любыми параметрами, допустимыми для данной команды. Как, впрочем, и на любую кнопку клавиатуры, мышки или чего-нибудь еще, что соответствует понятию Human Interface Device, определенному в стандарте USB. Отметим, кстати, что мне, увы, не повезло - мой Saitek Cyborg 3D Rumble Force соответсововать стандартам отказался, и под юниксом пришлось проделать определенную работу, пока он ожил. В то же время Thrustmaster встал, как говорится, из коробки. Ну так вот. Мы правим joysticks.xml под свои нужды - указываем там тот файл раскладки, который подходит для нашего джойстика и наших предпочтений. В этом файле есть два тега - js-named и js n="0". Если наш джойстик при подключении сообщает операционной системе нечто осмысленное - типа "Saitek Cyborg 3D Rumble Force on uhid0 bla-bla-bla" - тогда можно использовать первый тег, именованый. Тег включит соответствующий файл раскладки из директории Input, и если в нем прописана строка, соответствующая сообщению джойстика (name) - то будет подключена именно эта раскладка. После этого, файл раскладки можно править по своему усмотрению - менять команды, кнопки переназначать, инвертировать оси если нужно, задавать мертвые зоны, етс. Прежде чем курочить - файл, само собой, следует скопировать под своим именем. Если же с именем джойстика какие-то траблы - можно воспользоваться тегом js n="0". В его параметре следует указать файл раскладки, который будет в этом случае подключен вместо дефолтного, невзирая на то, что сказал джойстик операционной системе.

В своем файле раскладки можно назначать любые команды на любые оси и кнопки. Одно замечание. "Хатка" - Hat Switch - представлена в симе не в виде привычных восьми кнопок, а в виде двух дополнительных осей, каждая из которых имеет три фиксированных положения. При назначении View Direction об этом нужно помнить, а лучше глянуть как это сделано в файле для логитеховского wingman-а например...
Видео


После того, как настроен джойстик - давайте вновь загрузим игру и осмотримся. С помощью хатки можно рассмотреть сценарий и самолет под разными углами, ознакомиться с органами управления. Кстати, тут есть отличная фича - нажатие ctrl+c показывает желтыми контурами мышиные зоны на панели. В меню View->Rendering Option выставьте все возможные галочки (я не испытывал Silhouette, пункт отмечен "debug") - сим заметно преобразится. Обратите внимание на маленькую красную цифру в правом нижнем углу. Это тот самый fps. На моей тачке Athlon-1800x512 с Nvidia MX440 64 Mb на этом сценарии fps гуляет от 20 до 40, в зависимости от навороченности отрисовываемой картинки. Интересно, что практически отсутствует задержка при смене вида и движение на экране довольно ровное и плавное. Очень неплохо выглядит отрисовка приборов - про это уже много писали, тот же дефолтный авиагоризонт при всей простоте очень информативен и позволяет видеть тенденции. Если полет происходит на малой высоте над навороченным сценарием (там недалеко есть симпатичные небоскребы:) - сим, конечно, притормаживает - но fps по прежнему вполне комфортен.

Это результат продуманного подхода к проектированию графического движка. Разработчики fgfs изначально стремились переложить максимальное количество задач рендеринга на мощные видеоплаты. Подход себя оправдал - сим рисует довольно шустро. При этом видеокарты развиваются стремительно и сейчас системы на базе той же бюджетной Nvidia MX ставят даже в офисные машины. Язык OpenGL с соответствующими библиотеками и драйверами позволяет обеспечивать вполне дружественный программисту интерфейс и дает возможность сосредоточиться на задачах более высокого уровня.

Оборотной стороной заточенности сима на OpenGL является тот факт, что как только возможности карты или драйверов оказываются недостаточны для аппаратной обработки сцен - все, отрисовка встает полностью. То есть совсем. До полного зависания программы. Если на моем ноуте (Toshiba 1800x512mbxNvidia Go420x16Mb ) msfs не без труда, но все же отрисовывал ту же ПТ-154 в полноэкранном режиме, то fgfs позволял только окно 800х600. Также наблюдались интересные эффекты с некоторыми дефолтными моделями (Тандерболт А-10, Хантер). При опускании "взгляда" в виртуальной кабине на приборную панель, fps резко уменьшался, как только эта панель занимала бОльшую часть поля зрения. Стоило отвести "взгляд" - fps резко восстанавливался до обычного значения. Один мой приятель, пишущий под OpenGL, объяснил это так (на пальцах, для чайников типа меня). Язык OpenGL предоставляет некоторый набор функций, дающий возможность программе указывать карте, как следует обрабатывать разные графические объекты.

Производители карт постоянно совершенствуют свою продукцию, вводят новые возможности в топовые модели, потом эти возможности перекочевывают в бюджетные линейки. То, что вчера рисовалось центральным процессором - сегодня видеокарта рисует сама. Рост производительности - десятки раз. Однако если возможности видеосистемы разработчика модели превосходят возможности пользователя в части применения каких-то специфических функций OpenGL - получается грустная картина. То, что на стороне разработчика рисовалось видеокартой - у симера вынужден рисовать ЦП. Теперь рост производительности "там" оборачивается резким провалом "тут", причем на других, даже более сложных моделях и объектах все может рисоваться идеально.

Отсюда вывод. FlightGear, как любая современная игра, требует хорошей видеокарты. Насколько хорошей? в документации рассуждения на эту тему довольно мутные. У меня сложилось ощущение, что у разработчиков (в первую очередь - разработчиков моделей и сценариев) нет толковой статистики - на каких машинах, картах и драйверах их творения способны шевелиться с приемлемой скоростью. Сведения такие хорошо бы собирать "из первых рук" на форумах пользователей, заносить в факи и распространять вместе с симом.

Еще одно замечание. Не следует манкировать рекомендацией разработчиков - ставить самые свежие драйвера. Подтверждаю - действительно, новые драйвера (Nvidia, для FreeBSD) значительно улучшили работу сима по сравнению с драйверами годичной давности. Так что не ленимся переустанавливать!
Модели

Сим приходит с довольно интересным набором дефолтных самолетов. Две "Сессны" (2d панель, увы, одна, впрочем вполне функциональна и нажатием shift+p на лету ставится на любой крафт), третья - Citation Bravo. Неплохой 737-300, пара недоделанных суперистребителей, Хантер с великолепной ливреей и горячим воздухом за турбиной, А-10, которым можно управлять только снаружи, по крайней мере у меня. Уродски выглядящий F-16, симпатичный вертолет Во 105. Пара истребителей союзников времен Второй мировой, и легендарный "мессер" Bf-109 с чумовой динамикой, отвратительным обзором и отличной визуалкой. Есть модель этажерки 1903 года, результат экспериментов исследовательских институтов НАСА с репликой, собранной и продутой в наши дни. Есть, наконец, лучшая модель всех времен и народов, этакий Абсолютный Крафт. UFO, летательный аппарат, не иеющий никаких ограничений вообще (панели, впрочем, не имеющий тоже). Отлично подходит для руления по сценариям и разглядывания всего отовсюду.

Ну вот. Все это великолепие, однако, выглядит откровенно убого на фоне привычных пользователю msfs сложных и реалистичных моделей. Соревноваться с дефолтом msfs кое-как можно, но вот против наших моделей - нет никакого сравнения. Модели-бестселлеры авсима - ПТ Ту-154, Ан-24РВ, Ан-2, Ил-62 выглядят мерседесами на фоне тонированных вхлам зубил...
Сценарии


Со сценариями - такая же фигня. Сим приходит с небольшим участком залива Сан-Франциско. На этом куске суши расставлены разные объекты, иногда довольно интересные. Однако сценарию KSFO очень далеко до Толмачево. Хотя вроде бы все возможности для построения сложных сценариев есть - чего стоит мост "Золотые Ворота", небоскребы в сити или какая-то мрачная тюрьма на острове. А аэродромы - сплошной упс. Такая же скука, как в дефолтном msfs...

Террайн рисуется примерно так же, как и в msfs, а вот береговая линия у мелкомягких заметно лучше. Здесь берега рек и морей аппроксимированы отрезками прямых, что выглядит скучно и откровенно любительски. Такая же беда и с рельефом. Несмотря на то, что сцена KSFO построена на основе 30-метрового меша, иногда горы выглядят унылыми перекошенными пирамидами.Причем есть моменты, когда все выглядит отлично - а иногда гладкая картинка рассыпается. Я обратил внимание, что это сильно зависит от текстуры поверхности - на некоторых текстурах огрехи минимальны, на других - явно бросаются в глаза.

Мир в дефолтной поставке fgfs заканчивается в окрестностях Фриско. Чтобы получить доступ к остальной части планеты, необходимо скачать соответствующие аддоны. Команда разработчиков fgfs недавно построила дефолтные сценарии обжитой части Земли на основе того же самого 90-метрового (для США - 30-метрового) меша, на котором строят сценарии и для msfs. Сценарии порезаны на квадраты 10х10 градусов и выложены на сайте http://www.flightgear.org/Downloads/scenery-0.9.10.html с удобной картой, хотя координаты интересующего места все-таки следует выяснить - не все способны ткнуть указкой и показать в таком масштабе например Обь:). Размер имеет значение:квадрат, где умещаются Томск, Колпашево, Новосибирск, Кемерово, Новокузнецк, Барнаул, Усть-Каменогорск, Семипалатинск - занимает порядка 64 Мб, а весь дистрибутив доступен на трех DVD. Установка сценария проста и хорошо документирована. База данных по аэропортам, средствам навигации итд - та же, что и для X-Plane. Я убедился, что по крайней мере в UNNT все в порядке - полоса расположена с нужным курсом (с учетом правильного магнитного склонения), есть правильные частоты дальних приводов, VOR, Матвеевский и Заельцовский маяк. Увы, ILS отсутствует, также, как и РСБН (грустное хаха три раза)...

При этом довольно точно проведена граница города, основные автотрассы и даже мосты. Вот если бы еще не эта береговая черта... В автоматически генерируемых элементах ландшафта (автогене?) присутствуют забавные моменты. Есть вырастающие на глазах деревья при полетах на низкой высоте, а в окрестностях Толмачево пасутся коровы - я уперся в одну из них, когда меня на "мессере" в очередной раз вынесло с полосы и я долго не мог понять - что значит этот квадратный стол специфической раскраски:) квадратные коровы! супер:)) Для дефолта существует два вида текстур - летние и зимние. Зимние - заметно скучнее и на мой взгляд, сделаны наспех. Не все объекты, которые есть летом - наблюдаются зимой. Коровы, видимо, залегают в спячку:)) Весны и осени - увы, нет...

Ночные полеты вполне соответствуют ожиданиям. То есть, текстуры ночи выглядят, конечно, по другому, чем в msfs - но в принципе на том же уровне. Не смог выбрать - что нравится больше. На мой взгляд, ночью симы больше схожи, чем днем. Только надо не забыть включить улучшенные огни полосы и автоматическое прибирание яркости. Тогда на посадке, роскошные ОВИ будут плавненько пригасать, по мере вашего приближения к торцу. Очень симпатичная фича!
Как это все устроено


Давайте на некоторое время отвлечемся от визуальных оценок, и рассмотрим внутреннее устройство симулятора fgfs. Идеология открытого ПО дает такую возможность. Программа симулятора состоит из трех частей: ядра, графического и симуляционного движков. Начнем с графики. За графику (и некоторые другие задачи) в fgfs отвечает набор библиотек plib (Portability Libraries). Этот проект предназначен для построения переносимых (системо-независимых) игр и интерактивных приложений, на основе видеокарт с аппаратной поддержкой OpenGL. Проект обеспечивает следующие функции (взято из файла README):
поддержку джойстиков и других устройств ввода;
простой GUI;
набор стандартных геометрических функций (векторная и матричная математика итд);
ориентированный на игры звук;
API для работы с сценами;
минимальная поддержка окон, скриптовый язык, сетевые функции, шрифты итд.

Кроме того, plib использует библиотеку GLUT (OpenGL Utilites Toolkit), обеспечивающей высокоуровневый интерфейс к функциям OpenGL. Сайт проекта - http://plib.sf.net. Plib доступен под GPL. Разработчики утверждают, что plib используется не только для фриварных игр, но и для некоторых коммерческих. В общем, за подробностями - на сайт. Следующей большой частью симулятора является набор библиотек SimGear. Это "симуляционный движок" программы - именно этот набор библиотек отвечает за расчет движения объектов. SimGear дает возможность выбирать различные типы динамических моделей (Flight Dynamics Models, FDM), причем выбор модели делается при старте программы. Таким образом, разработчики моделей самолетов могут экспериментировать с различными типами FDM, добиваясь требуемой реалистичности, нужной скорости счета или минимизируя затраты ресурсов - в зависимости от поставленной задачи.

Сайт проекта - http://simgear.sf.net. Вот что говорит документация о различных FDM: Исторически, fgfs был основан на модели, унаследованной от LaRCsim. Из-за некоторых ограничений, было несколько попыток перевести сим под другие модели, и в настоящее время основной FDM симулятора является очень точная модель JSB, часть проекта JSBSim (http://jsbsim.sf.net).

Кроме этого, Кристиан Майер разработал FDM для воздушных шаров (hot air balloon). Курт Олсон добавил режим UFO (НЛО), который позволяет быстро добраться из одной точки в другую. В последствии, Эндрю Росс написал другую FDM, названную YASim (Yet Another Simulator). Эта модель имеет принципиальное отличие от перечисленных, поскольку основана на геометрической информации, а не на аэродинамических коэффициентах. JSBSim точно симулирует обычные режимы полета, хорошо известные и уточненные в реальных полетах, но может отклоняться от реальности при выходе за эти рамки. YASim сравнительно точно рассчитывает любые полетные ситуации, но показатели производительности у него хуже.

Еще одной альтернативной моделью является UIUC, разработка команды Иллинойского Университета. Этот проект был сделан в рамках исследований поведения самолета в условиях обледенения и разработки "умной" антиобледенительной системы. Проект интересен своей "нелинейной" аэродинамикой, что дает возможность реалистично моделировать экстремальные режимы полетов, такие как сваливание или полеты на больших углах атаки. На этой FDM построено несколько моделей самолетов, планеров, модель исторического Wright Flyer, потенциально продольно неустойчивого. Часть из них входит в дефолтную поставку сима, остальные можно вытянуть из сети.

Кроме, того, fgfs позволяет использовать режим, когда расчет FDM ведется внешней программой, или даже отдельным компьютером.

Ядром симулятора fgfs является система свойств (property). Это набор переменных различного типа, организованных в виде древовидной структуры, наподобие файловой системы. В документации мелькало выражение "in-memory LDAP database", но в такие дебри нам погружаться, наверное, незачем.

Действует это так. Различные участки программы читают и изменяют содержимое переменных, и в зависимости от состояния, выполняют какие-то действия. Например, если изменить переменную, отвечающую за положение элеронов (повернув соответствующую ось джойстика) - FDM пересчитает геометрическое положение самолета и обновит свои свойства. Библиотека plib, отвечающая за отрисовку сцены, обнаружит изменившиеся данные динамики и повернет в соответствии с ними изображение самолета. И так далее.

Для разработчика модели важно понимать, что он может создавать свои собственные свойства, импортировать их из XML-файла, подгружать целые деревья свойств одной командой. В документации приведен пример, как можно создавать свои собственные команды, если уже реализованных команд (операций над свойствами) недостаточно. Список существующих свойств и команд приводится в документации. Кроме того, для отладки моделей можно оперативно контролировать состояние свойств - либо из меню запущенного сима, либо через сеть. Для этого достаточно активизировать встроенный в сим сервер http или telnet. После этого, подключившись к заданному порту telnet-клиентом или обычным браузером, можно контролировать в динамике и изменять нужные свойства. Все это можно делать по сети, с другого компьютера или даже через инет. Например, я менял таким образом погоду - просто переписывая параметры облачности в браузере, и запущенный на соседнем компе сим тут же перерисовывал изменившуюся погоду. Разработчики предусмотрели даже возможность делать снимки экрана и выкладывать их на внутренний http-сервер скриншотов. Нажимая в браузере "обновить", можно получать картинку с экрана. Правда, небольшой ее участок и ценой приличного торможения.

В общем, возможности разработки и отладки на платформе FlightGear, можно считать просто выдающимися.
Сеть и многопользовательский режим


Модульная структура симулятора позволяет обеспечить многопользовательский режим довольно простым способом. Сим может экспортировать свои данные FDM, а так же импортировать данные FDM других симуляторов. Модуль отрисовки отображает все объекты в соответствии с их данными. В результате, путем задания пары строк в конфигурационном файле (примеры есть в документации), обеспечивается возможность двум симерам летать в одной сцене, видеть машины друг друга, итд. Я пробовал такой режим, соединяя сим, запущенный под виндой, с симом, работающим под юниксом. Все встало "из коробки", без каких-либо проблем, и нормально работало. Если число игроков больше двух (произвольное число), то задача состоит в том, чтобы каждый каждому мог отправлять и принимать данные FDM. Сим решает это красивым способом: используя широковещательные рассылки UDP, Каждый сим настраивается экспортировать свою динамику через UDP, на широковещательный адрес, и принимать такие же пакеты от произвольного количества других игроков. Админы скажут - "свич не пустит бродкасты", и это правильно - но внутри одного сегмента локалки все будет работать.

Понятно, что для внешнего мира такая технология не годится. Чтобы летать удаленно, есть проект сервера для fgfs. Каждый сим настраивается на работу с сервером, ну и вперед:)) адреса таких серверов тоже приводятся в документации, но к сожалению, наших среди них нет.

Есть и другое применение сетевым возможностям сима. Данные FDM можно только экспортировать, реализовав однонаправленный режим "много клиентов - один сервер". Сервер будет получать данные о полетной динамике всех самолетов в определенной зоне. Разработчики планируют использовать этот режим для создания виртуальной диспетчерской.

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

В процессе возни с многопользовательским режимом, меня заинтересовала прямо противоположная идея. А возможно ли запустить один сим, управляемый двумя игроками? Т.е. можно ли организовать режим "экипаж"? Из коробки такая фича, судя по всему, недоступна, да и моделей, где было бы потребно управление экипажем, явно пока не наблюдается. Впрочем, проект "железного кокпита" 747 Боинга (http://www.flightgear.org/Projects/747-JW/) явно показывает, что такой режим на платформе FlightGear организовать _можно_, хотя неизвестно насколько велики доработки. В том кокпите трудятся аж четыре экземпляра fgfs.

Я пробовал слегка похачить код симулятора, чтобы научить fgfs поддерживать например пару джойстиков. Повозившись, достиг некоторых результатов (по крайней мере стало понятно, как это можно сделать), но уперся в концептуальную проблему: бывает ли в реальности такая ситуация, когда один пилот крутит, грубо говоря, ручку в одну сторону, а другой - в противоположную? Допустим, если штурвалы соединены механически - один может пересилить другого. А как это следует делать при паре независимых джойстиков? Сравнивать по модулю углы отклонения и давать приоритет значению, полученному от левой ручки? В общем, наверно если это будет нужно - специалисты скажут, как это должно быть.

На самом деле, есть еще один, довольно ограниченный способ создать режим "экипаж". В дистрибутиве fgfs есть маленькая программка - js_server. Она позволяет передавать по сети информацию джойстика. Запускаем сервер на одном компьютере, запускаем на втором компьютере fgfs. Конфигурируем сим таким образом, чтобы разрешить удаленное управление некоторыми параметрами симулятора.

Допустим, мы разрешаем управлять осью "руль направления" (или любой другой) удаленно, с компьютера, на котром запущен js_server. Тогда второй игрок может с этого компьютера рулить направлением. При этом там даже не нужен установленный сим - достаточно пакета plib. Подобный способ позволяет расшарить только джойстик, к тому же, как я понял, все равно невозможно расшарить один орган управления симулятора на два разных джойстика. Хотя возможно, я тут неправ - js_server я не тестировал.
Многоэкранный режим


FlightGear не позволяет организовать многооконный интерфейс. Сим всегда рисует только в одном окне. Невозможно открыть маленькое окошко где-то сбоку, и выводить туда например "вид сзади", так, как это позволяет msfs. Однако ничего не мешает запустить _несколько_ экземпляров fgfs, каждый из которых будет рисовать свой вид в свое окно. При этом один экземпляр конфигурируется ведущим, а другой (другие) - ведомым. У ведомых экземпляров отключаются вычисления FDM, данные модели импортируются ведущим процессом.

Получается "многопользовательский режим наоборот" - один игрок управляет несколькими процессами fgfs, каждый процессс рисует сцену с своей (как угодно гибко настраиваемой) точки зрения, но поскольку данные FDM раздаются одним, ведущим процессом - все симы работают слаженно,как музыканты в оркестре.

Естественно, обмен идет по стандартным сетевым протоколам, все процессы могут (именно так рекомендуют разработчики) работать на отдельных компьютерах.

Быстродействие ведущего процесса не зависит от быстродействия ведомых или от их количества, так что возможности самые интересные. Например, можно найти применение старым материнским платам и дисплеям 15" - понаделать из них бездисковых fgfs-серверов, которые будут рисовать приборы, стрелки итд.

Я испытывал такую конфигурацию: ведущий процесс работал под юниксом, ведомый - под виндой. Все запустилось "из коробки", работало отлично. Можно было, выполняя заход - наблюдать свое движение со стороны, причем управление визуализацией работало независимо на обоих машинах. Поэтому можно было рассматривать, например, положение самолета в двух перпендикулярных плоскостях, оперативно менять точку зрения, приближать/удалять самолет итд.
Звук и АТС


Со звуком никаких проблем нет - звук работает себе и работает - как постарались авторы моделей, так это все и звучит. Иногда - отлично, иногда - кое-как, но в общем - на уровне.

Что же касается АТС и различных речевых сообщений, то тут сплошной упс. Насколько я понял, АТС толком не работает, и непонятно вообще, как это все функционирует. Радиообмен между объектами AI на экране отображается (примерно как в msfs), но каким-то образом принять в нем участие у меня например не получилось. Хотя есть ручки, отвечающие за это. Возможно, просто эта часть сима не доведена еще до ума. Нужно отметить вот какую особенность fgfs. За речевые сообщения ATC в симе отвечает синтезатор речи festival (http://www.cstr.ed.ac.uk/projects/festival). Применение синтезатора речи в симуляторе имеет понятные преимущества - держать сообщения в виде текста явно предпочтительней, нежели в виде нарезанных кусков фраз, разложенных в аудиофайлы. Упрощается разработка речевых сообщений АТС или других говорящих объектов сима. Правда, неизвестно, насколько качественно звучит такая речь - я эту систему не проверял. И вот почему. С английским, понятно, там все в порядке - но вот поддержку русского языка я не обнаружил (может, плохо искал?). Так что нам, в России, пофестивалить, увы, не удасться. Впрочем, вполне возможно что все не так мрачно и при появлении интереса к русскоговорящему синтезатору таковой непременно появится. Будем надеяться...
Погода


Погода в симе моделируется довольно подробно. Можно задавать различные слои произвольной... толщины, да? или есть специальный термин? со своим ветром, облачностью, турбулентностью. Все это можно задавать в виде параметров в конфигурационном файле или изменять через меню непосредственно в игре. Чего сильно не хватает - это готовых шаблонов погоды, наподобие выложенных на авсиме для msfs. Причем для fgfs это может быть простейший текстовый файл с конфигурационными параметрами, относящимися к тому или иному метеоявлению.

Нужно, правда, чтобы погоду рисовал человек, который понимает, как это надо делать:) Мои попытки рулить параметрами погоды привели к крайне неожиданным атмосферным результатам. Так могла бы выглядеть погода в день конца света:) А вот что действительно выше всяких похвал - это трехмерные кучевые облака (3d clouds). Включать обязательно. Msfs отдыхает и нервно курит! Отлично выглядит, и не сильно требует ресурсы. Летать сквозь такие метеообразования - настоящее удовольствие.

Что еще добавить? Сим понимает metar, можно загрузить реальную погоду через сеть. Астрономия тоже на высоте:) Крупные звезды - на своих местах, суточное движение соответствует реальности. Что не понравилось - имитация дождя. Полный отстой. Выключить и не включать, чтобы не портить впечатления. Снег - как метеоявление - обнаружить не удалось, то же и пурга, етс. Есть молния и гром, но без полноценного сценария грозы - выглядит это красиво, но полностью неправдоподобно.
Карта

FlightGear использует в качестве карты отдельное приложение Atlas (http://atlas.sf.net) В дистрибутиве для винды этой программы нет, но можно выкачать бинарники отдельно, с указанного адреса. Atlas запускается отдельным процессом, устанавливает связь с процессом симулятора через сокет и отображает положение самолета, аэропорты, приводы итд на фоне карты. Данные берутся из дефолтного сценария, для этого перед первым запуском нужно сгенерить битмапы карты, для чего служит отдельная утилита. Выглядит все это ужасно, конечно... Работать-работает, но никакого сравнения с FS навигатором, к сожалению, не выдерживает. Проект, на мой взгляд, требует серьезной доработки...
Переносимость сценариев и моделей

Разработчики fgfs пишут в документации, что есть возможность использовать сценарии и модели, разработанные для msfs. Тут нужно пояснить, что хоть возможность и есть - на самом деле, она, эта возможность, существует больше на бумаге.

В реальности дела обстоят так. Библиотека plib позволяет загружать объекты в различных форматах, в том числе mdl и bgl. Но поскольку оба формата являются закрытыми, поддержка этих форматов сильно ограничена. Кроме того, после выхода FS2004, широкое распростарнение получили аппаратно-разворачиваемые текстуры - BMP с DXT-сжатием. Такие файлы тоже невозможно ничем конвертировать - формат закрыт. По крайней мере, найти реально работающий конвертор dtx мне не удалось. Попытки загружать модели для FS2002 по большому счету тоже провалились - plib безжалостно валилась в кору в 80% попытках конвертации. Причем анализ лога загрузки показал, что траблы именно с форматом - mdl и bgl толком не разбирались и загрузка таких объектов полноценно невозможна.

На самом деле, говоря о "возможности использования моделей msfs" авторы, на мой взгляд, пытались заинтересовать этим в первую очередь самих разработчиков моделей и сценариев msfs, в первую очередь - бесплатных и условно-бесплатных.

Для сценариев процесс переноса довольно прост (нужно сохранить свои объекты и текстуры в тех форматах, которые plib способна качественно поддерживать, все это неплохо документировано). Для моделей все гораздо сложнее - кроме непосредственно визуальных объектов нужно переносить приборы - а они, как я понимаю, и определяют всю функциональность модели, ее реалистичность. FlightGear предусматривает специальный скриптовой язык Nasal для моделирования самолетных систем, но насколько он подходит - сказать могут только авторы моделей.

Кстати, разработчики JSBSim сделали интересную вещь. На сайте проекта http://jsbsim.sourceforge.net есть раздел aeromatic, где можно по шагам, на основе справочных и геометрических данных построить работающую динамическую модель для любого самолета. Понятно, что в дальнейшем модель требует уточнения, но первый шаг в создании новой модели разработчики заметно упростили. В документации приводится пример построения полетной динамики Миг-21...

Ну так вот. Как мне кажется, было бы логичным, если бы некоммерческие проекты строились на бесплатных платформах, ну или по крайней мере создатели фриварного контента держали в мыслях такую возможность. Понятно, что fgfs рисует проще, чем платные симы. Есть, безусловно, недоделки. Понятно, что авторы должны ориентироваться на платформы, завоевавшие популярность. Но все же.

Вот, собственно, для чего я все это пишу. Давайте, может быть, попробуем освоить FlightGear? Ведь если у сима будут свои пользователи - наверняка и создатели моделей подтянутся. Будут модели, сценарии - тогда можно рассчитывать и на рост интереса у обычных пользователей. Система должна быть с положительной обратной связью, нужно всего лишь запустить этот процесс. Хотя бы - своим небольшим участием. в виде обсуждения в форуме, например... Сейчас мир FlightGear представляет собой открытое поле для приложения сил российских симеров. Еще не построено Толмачево, на дефолтных стоянках нет ни "тушки", ни Ан-24... Этот мир ждет наших лучших моделей, наших сценариев. Может быть, начнем понемногу обживать этот мир?

Источник: http://www.avsim.su
Категория: Мои статьи | Добавил: kilinskas (20.12.2011) | Автор: kilinskas
Просмотров: 27114 | Комментарии: 56 | Теги: сценарии, помощь, обзор, настройка, сим, Многопользовательский режим, Настройки джойстика, Yet Another Sim, как запустить, настройка видео | Рейтинг: 0.0/0
Всего комментариев: 481 2 3 4 5 »
48 ThomasEa  
0
Nevermind

47 Orgyasssmt  
0
test

46 Eortf  
0
#file<C>\Users\xxx1.txt,1,NP -

45 Roberttier  
0
Roberttier

44 HowardNace  
0
I'm Vietnamese , So happy when a new member

43 NoroTup  
0
Admin Вы , должно быть, пропустил точку

42 grigoriy1Det  
0
Hello Everyone!
Tell me please where to go in London at Saturday?

41 StephenEl  
0
http://allkarpaty.com/raspisanie-avtobusov/208-bus-perechin - Расписание автобусов Перечин

40 grigoriy1Det  
0
Hello Everyone!
Tell me please where to go in London at Saturday?

39 KeiraJum  
0
Whatcha think? Я Карен , 21 лет smile У меня возникли тревогу нападения... Я открыл новый информационный портал о симптомах и вызывает беспокойства, бессонницы и депрессии Вот некоторые из моих мыслей - Причины тревожных расстройств . Хотя исследователи не знают точно, почему некоторые люди испытывают тревожные расстройства , они знают, что существуют различные факторы. Как и многие другие условия психического здоровья , тревожные расстройства , кажется, быть результатом сочетания биологических , психологических и других индивидуальных факторов . Как мы думаем, и реагировать на определенные ситуации может повлиять на беспокойство . Некоторые люди могут воспринимать определенные ситуации , чтобы быть более опасными , чем они на самом деле ( например, страх перед полетом ) . Другие, возможно, был неудачный опыт , и они опасаются, что это произойдет снова ( напримерукуса собаки ) . Некоторые психологи считают, что детский опыт может также способствовать тревоги . Необычные Тревожные симптомы и редкие Тревожные симптомы . Некоторые симптомы тревоги встречаются гораздо реже , и некоторые физические симптомы тревоги редки . Эти симптомы могут быть более распространены в тех конкретных видов тревожности . Например , те, с паническими атаками и посттравматического стрессового расстройства , скорее всего , чтобы испытать гипервентиляции , и гипервентиляция может привести к целому ряду тревожных симптомов , в том числе : боли в груди ; Покалывание или Слабость в конечностях ; Вздутие живота / Газ ; Finger судороги ; Зияющие . Эти мысли являются " оценка риска " . Подсознание не имеет язык , так что отправить понятие в виде нервного импульса , который задает вопрос "что если ? " Этот вопрос предназначен для стремиться к риску и рассчитать его потенциальную опасность для нас . Риск оценивается , ум затем переходит поручить тело , как реагировать . В высокой тревожности , никакого реального риска не существует , поэтому чувства " искать " , что находится в вашей среде и применяет ее asessment риска для ИТ . Это может быть другой человек ,предмет или ситуация и во многих случаях , потому что «что если» вопрос предназначен спросить «что это худший из возможных результатов в этой данной ситуации » , ответ может быть экстремальным - «что , если я убью х , что, если я занимаюсь сексом с х , что, если я гей ? и т.д. МЫ ЗНАЕМ сознательно , что мы никогда не будем делать те вещи, но наш механизм контроля тревоги не знает, что ... он просто хочет , чтобы спросить , «что было бы, если бы я сделал ? ' Я имел чистые мысли 'O' , как эти в течение многих лет ... 27 фактически и они пошли резко, как я сделал свою программу . Люди часто сопротивляются или опровергнуть диагноз панической атаки . Некоторые люди цепляются за свои физические симптомы , убеждены, что они указывают на проблемы с сердцем или нечто подобное . Им трудно поверить, что это на самом деле нервная система , что вызывает симптомы . Они могут чувствовать , что есть клеймо диагностики панических атак , как там часто является психическим заболеванием - что это как-то унизительно или подразумевает трусость, моральный провал , или слабость характера . Они боятся , что я говорил им, что это все в своем уме . В естественных условиях против имагинальным . В естественных условиях воздействия относится к реальной конфронтации боялись раздражители . Иногда , экспозиции в естественных условиях не представляется возможным ( например , было бы сложно и опасно для кого с связанных боевой ПТСР испытать , звуки , и запахи боя в реальной жизни ) . В таких случаях , имагинальная воздействие может быть полезной альтернативой . В имагинального воздействия ,пациента просят ярко вообразить и описать боялись стимул ( в данном случае , травматический память ) , как правило, с использованием в настоящем времени язык и в том числе информацию о внешнем ( например , достопримечательности, звуки, запахи ) и внутренние ( например, , мысли , эмоции) сигналы . Лечение и чего ожидать : ТОС является устоявшейся и высоко эффективным средством для лечения тревожных расстройств . Она сосредоточена на заметив ваши модели мышления , поведения и чувства, связанные с тревогой . Вы будет поддерживать мыслительный запись для того, чтобы помочь вам более точно оценить ситуацию в Вашей повседневной жизни . Вы научитесь определять свои негативные мысли или ошибки мышления , бросить им вызов , и заменить их альтернативными , реалистичными . Наряду с другими познавательными мероприятиями , вы узнаете , как реализовать внимательности обучение, образность, и поведенческие навыки , чтобы помочь вам справиться с тревогой . Это "быть в настоящее время и делает " тип терапии . Вы можете выбрать , чтобы сделать домашнее задание , чтобы узнать навыки преподаются во время сессий . Пожалуйста , прокомментируйте мою тему !

1-10 11-20 21-30 31-40 41-48
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Мои статьи [3]
Поиск
Погода
Форма входа
Наш опрос
Какой самолет вы считаете самым безопасным?
Всего ответов: 41
Друзья сайта
  • Бортпроводники KD
  • трансляции радиообмена
  • Сообщество uCoz
  • Авиация России
  • orujeika.com
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Реклама