Jump to content

За сохранение открытого интерфейса к DCS World - Export.lua


tester

Recommended Posts

Привет всем!

Зная, что готовиться к выходу очередное обновление, которое подарит кому то долгожданный МиГ-15, кому то улучшения по другим модулям, приблизит нас к EDGE, ну и, как обычно, подарит новые баги (без них ни как, да и свыклись мы уже с этим и помогаем в отлове критических, и не только) хочу спросить у разработчиков - велась ли какая то работа по списку багов и предложений из этой ветки форума.

Понимаю, что наша тема не является основной или приоритетной на данном этапе разработки, перехода на новый движок, но, всё же... Хочется услышать, что мы не забыты и наши просьбы находяться в определённой степени в разработке, а то так можно всегда ссылаться на более приоритетные задачи.

Link to comment
Share on other sites

Разработчики много раз говорили, что экспорт в стадии, но не в первой по понятным причинам.

Что же до экспорта с модулями внешних разработчиков, то на кошках можно потренироваться на других модулях, скажем тот же ми-8 или хок, с 101м. Врядли 15й станет исключением.

К параметрам придется обращаться через mainpanel, и делать пересчет по интерполяции будильника указанной там же.

Точно не помню, но там должно быть чтото вроде

input[0,0.5,1]

output[0,300, 450]

 

то есть нелинейная шкала переводится в угол проворота анимации стрелки.

 

Я с этим не эксперементировал, но вроде как это должно работать именно так.

Link to comment
Share on other sites

Привет )

У каждого модуля оказываются свои особенности )

Данные, да, беру в основном из mainpanel. Удобный способ, если кабина хорошо оборудована всякого рода индикаторами, и если приборы не вышли в бою из строя.

Вот интерполяцию будильника пока не вполне освоил как пересчитывать. Если знающие люди объяснят, буду признателен.

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Привет всем!

Зная, что готовиться к выходу очередное обновление, которое подарит кому то долгожданный МиГ-15, кому то улучшения по другим модулям, приблизит нас к EDGE, ну и, как обычно, подарит новые баги (без них ни как, да и свыклись мы уже с этим и помогаем в отлове критических, и не только) хочу спросить у разработчиков - велась ли какая то работа по списку багов и предложений из этой ветки форума.

Понимаю, что наша тема не является основной или приоритетной на данном этапе разработки, перехода на новый движок, но, всё же... Хочется услышать, что мы не забыты и наши просьбы находяться в определённой степени в разработке, а то так можно всегда ссылаться на более приоритетные задачи.

 

USSR_Rik сообщил, что привлек бета-тестеров к этой задаче, но подробностей не знаю. Чем могу - помогаю.

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

USSR_Rik сообщил, что привлек бета-тестеров к этой задаче, но подробностей не знаю. Чем могу - помогаю.

 

Ну так, спасибо и на этом. Главное, что бы не забросили данную тему. А с помощью - чем сможем, поможем обязательно.

Link to comment
Share on other sites

Вот интерполяцию будильника пока не вполне освоил как пересчитывать. Если знающие люди объяснят, буду признателен.

 

Если есть готовый экспорт, то выкладывай. посмотрю и покажу. желательно с одним параметром для простоты.

Есть 2 варианта, простой, но объемный - кусочно-линейная интерполяция с кучей if-оф в коде.

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


Edited by BR=55=Sevas
Link to comment
Share on other sites

  • ED Team

Все подробности у тестеров кроме одной - работа идет небыстро, причины я озвучивал. Там, кстати, не только те функции, которые в таблице.

Men may keep a sort of level of good, but no man has ever been able to keep on one level of evil. That road goes down and down.  
Можно держаться на одном уровне добра, но никому и никогда не удавалось удержаться на одном уровне зла. Эта дорога ведёт вниз и вниз.

G.K. Chesterton

DCS World 2.5: Часто задаваемые вопросы

Link to comment
Share on other sites

Все подробности у тестеров кроме одной - работа идет небыстро, причины я озвучивал. Там, кстати, не только те функции, которые в таблице.

 

А какие еще? Может они нам тоже пригодятся?

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • ED Team

В основном там проблемы, связанные с рождением и деактивацией групп, которые (группы) не прописаны в редакторе, следовательно - на старте миссии симулятор о них вообще ничего не знает. ВОт группы не было, не было и вдруг - бздынь - появилась из ниоткуда. И ее надо обслуживать, привязывать к событиям Мира и наоборот - события привязывать к ней. Не так просто это.

 

А фича достаточно вкусная.

Men may keep a sort of level of good, but no man has ever been able to keep on one level of evil. That road goes down and down.  
Можно держаться на одном уровне добра, но никому и никогда не удавалось удержаться на одном уровне зла. Эта дорога ведёт вниз и вниз.

G.K. Chesterton

DCS World 2.5: Часто задаваемые вопросы

Link to comment
Share on other sites

Если есть готовый экспорт, то выкладывай. посмотрю и покажу. желательно с одним параметром для простоты.

Есть 2 варианта, простой, но объемный - кусочно-линейная интерполяция с кучей if-оф в коде.

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

 

Вот текущий экспорт для ibaEffects https://yadi.sk/d/IvtI533GeabkR

Давай возьмем к примеру блок для "Доры"

строка 124 : local Engine_RPM = MainPanel:get_argument_value(47)

в mainpanel_init.lua для нее имеем

Engine_RPM = CreateGauge()

Engine_RPM.arg_number = 47

Engine_RPM.input = {0.0, 500.0, 1000.0, 1500, 2000, 2500, 3000, 3500, 3600.0}

Engine_RPM.output = {0.0, 0.032, 0.082, 0.206, 0.390, 0.601, 0.789, 0.961, 0.983}

Engine_RPM.controller = controllers.Engine_RPM

 

Как это пересчитать в аналоговый (непрерывный) формат?

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

В основном там проблемы, связанные с рождением и деактивацией групп, которые (группы) не прописаны в редакторе, следовательно - на старте миссии симулятор о них вообще ничего не знает. ВОт группы не было, не было и вдруг - бздынь - появилась из ниоткуда. И ее надо обслуживать, привязывать к событиям Мира и наоборот - события привязывать к ней. Не так просто это.

 

А фича достаточно вкусная.

 

Ого! Высший пилотаж )

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Link to comment
Share on other sites

  • ED Team

Вся беда в том, что это частично работает (в том числе и кое-где на публичных серверах). Если б не работало.. а оно работает, но постоянно выясняется, что надо править код тут и там.

 

В общем, вот такая ситуация. В качестве помощи - минимально трогать ту таблицу, я пока в нее не вмешиваюсь, но если/когда начну оставлять свои пометки, их желательно не трогать вообще.

Men may keep a sort of level of good, but no man has ever been able to keep on one level of evil. That road goes down and down.  
Можно держаться на одном уровне добра, но никому и никогда не удавалось удержаться на одном уровне зла. Эта дорога ведёт вниз и вниз.

G.K. Chesterton

DCS World 2.5: Часто задаваемые вопросы

Link to comment
Share on other sites

Вся беда в том, что это частично работает (в том числе и кое-где на публичных серверах). Если б не работало.. а оно работает, но постоянно выясняется, что надо править код тут и там.

 

В общем, вот такая ситуация. В качестве помощи - минимально трогать ту таблицу, я пока в нее не вмешиваюсь, но если/когда начну оставлять свои пометки, их желательно не трогать вообще.

 

Да, хорошо, понял.

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

Исходные данные

 

Engine_RPM.input	= {0.0, 500.0, 1000.0, 1500, 2000, 2500, 3000, 3500, 3600.0} 
Engine_RPM.output	= {0.0, 0.032, 0.082, 0.206, 0.390, 0.601, 0.789, 0.961, 0.983}

 

input это это конкретная физическая величина в единицах измерения, тобишь об/мин.

output это безразмерный коэфициент, лежащий в пределах от 0 до 1, где 0 - начальное положение стрелки прибора, 1 соответственно максимальное.

игра экспортом как раз и возвращает эти величины от 0 до 1.

Для перевода в нужные нам об/мин. нужно.

Построить график соответсвия об/мин его известным безразмерным значениям коэфициента положения стрелки.

 

0_11bac2_d0fa3559_orig

 

Как видим зависимость явно нелинейная, если попытаться построить уравнения прямой по ней, то получим значительные ошибки

 

0_11bac3_33230c42_orig

 

Поэтому есть 2 варианта как сделать перевод точно.

По научному эти все уравнения называют по разному, где-то аппроксимация, где-то регрессия и т.д., но суть одна и та же.

 

Кусочно-линейная аппроксимация.

 

Разбить на линейные участки зависимость, и для каждого участка строить свое уравнение.

 

0_11bac5_f03955b1_orig

 

Тогда в ваш код экспорта нужно будет написать примерно так

local Engine_RPM = MainPanel:get_argument_value(47)

local Engine_RPM_REAL = 0.0-- обнуляем, это в инициализацию потом вынести

 

if Engine_RPM>0 and Engine_RPM<0.032 then

Engine_RPM_REAL = 15625*Engine_RPM end -- 1й кусок

 

if Engine_RPM>=0.032 and Engine_RPM<0.082 then

Engine_RPM_REAL = 180 + 10000 * Engine_RPM end -- 2й кусок

 

if Engine_RPM>=0.082 and Engine_RPM<0.206 then

Engine_RPM_REAL = 669.35 + 4032 * Engine_RPM end -- 3й кусок

 

if Engine_RPM>=0.206 and Engine_RPM<0.39 then

Engine_RPM_REAL = 940 + 2717.4* Engine_RPM end -- 4й кусок

 

if Engine_RPM>=0.39 and Engine_RPM<0.601 then

Engine_RPM_REAL = 1075.8+ 2396.7 * Engine_RPM end -- 5й кусок

 

if Engine_RPM>=0.601 and Engine_RPM<0.789 then

Engine_RPM_REAL = 901.6 + 2659.9 * Engine_RPM end -- 6й кусок

 

if Engine_RPM>=0.789 and Engine_RPM<0.961 then

Engine_RPM_REAL = 706.4 + 2906.9* Engine_RPM end -- 7й кусок

 

if Engine_RPM>=0.961 and Engine_RPM<0.983 then

Engine_RPM_REAL = -868.18 + 4545.45* Engine_RPM end -- 8й кусок

 

--выдыхаем

Тогда, отправляя в сокет Engine_RPM_REAL вы получите уже об/мин.

 

Аппроксимация полиномом

 

С полиномом все несколько проще, вместо кучи уравнений используем одно длинное.

 

0_11bac4_ce5efa39_orig

 

local Engine_RPM = MainPanel:get_argument_value(47)

local Engine_RPM_REAL = 177.506 +8596.23*Engine_RPM -11991.4*Engine_RPM*Engine_RPM + 6932.28*Engine_RPM*Engine_RPM*Engine_RPM

Единственное что нужно очень внимательно посмотреть на график, красная линия это именно наше полиномиальное уравнение. чем оно ближе к исходным точкам тем точнее результат, варьируя степень полинома, можно получать разное приближение. Может получиться так, что на каком-то участке полином идеально впишется в исходники, а где-то вылезет. Тут все индивидуально.

 

В экселе это делается в графиках, добавляете линию тренда и отображаете её на графике.

 

0_11bac6_2db2a6d4_orig

0_11bac7_c0f6669b_orig

 

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

Link to comment
Share on other sites

Еще вспомнил одну проблему.

Вытаскивать параметр через анимацию правильно можно не всегда.

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

 

при разных высотах, скажем 500, 1500, 2500 м, метровая стрелка всегда будет в одном и том же положении, т.е. никакая интерполяция не поможет. Ладно метры.

 

Теперь берем тахометр миг-15. стрим-

 

Шкала спаренная, т.е. стрелка что при 2000 об/мин, что при 12000 об/мин в одном и том же положении. Экспорт вернет два одинаковых значения. Как вы узнаете, какие же на самом деле сейчас об/мин?

 

Это проблема, здесь даже Советский Рик и другие программисты не помогут.

Для них это геморрой, нужны отдельно делать что-то типа флага, который укажет что прибор перешел во второй диапазон работы, причем этот флаг опять же надо как-то пропихивать через экспорт. Имхо, это в ближайшее нерешаемо ни со стороны ЕД, ни с нашей.

 

Можно конечно лезть в память, искать где эти параметры находятся и оттуда их сливать, но это уже извращенство. Врядли кто-то из простых юзеров это осилит.

Link to comment
Share on other sites

  • 2 months later...

Вопрос разработчикам.

Укажите, пожалуйста, на что ориентироваться при создании эффектов для вибронакидки в файле экспорта модуля наземной техники.

 

Ребята, ну, что, ни кто не может ответить? Планируется ли делать, что то с экспортом по модулю для наземной техники?

Link to comment
Share on other sites

  • 9 months later...

Поддержу топикстартера.

Иметь возможность вывода данных из сима нужно.

Или как вариант, вывод приборной доски на 2 экран, "инструментами" сима. Мощности современных РС вполне это позволяют. Модуль Л-39, очень интересен для полетов экипажем.

 

Я, например, длительное время пользуюсь разработками под андроид https://play.google.com/store/apps/details?id=com.mihaig.bf109&hl=ru.

Считывать показания приборов в "полете" намного удобнее.

Да и показания приборов в реальном самолете/вертолёте как правило "снимают" движением глаз, а не головы как приходится в симе.

 

но к сожалению, на сегодня это работает только под 109 и возможно 190.

Варианты приборной доски от того же автора под ирокез, и мустанг, "умерли".....

платные модули, под А10С не пробовал, наверняка уже то же не работают.

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

 

В целом, "Железной кабиной", решил не заморачиваться, т.к. кабины все разные.. ), а вот достаточно удачную и универсальную , на свой вкус , "приблуду"-подставку для РУС , РУД, и еще 3-х девайсов от сайтек собрал..

.


Edited by Frogen

Manual_RU по модулям Мираж(без обновления 2019),Газель, Скайхок; F -14 (кабина оператора),И16 ("горячие" клавиши), Christen Eagle II, BuddySpike, DDCS, Kaukasus Offensive (Сервера-как играть)

https://drive.google.com/open?id=1S_x0Z8sOcZwWTH73fKpjOIIVKeXzlZz3

 

F-16C Viper - https://drive.google.com/open?id=1YKz5p_WR1Sgz97mwYCXY7jDLxr_bYCJq

OH-58 Kiowa - https://drive.google.com/open?id=1LBiAJ68hghW4I4WnkO3rp8S_fpScHyBw

Link to comment
Share on other sites

Уважаемые, если есть конкретные проблемы с получением данных из DCS World, выходите на меня, поработаем. В версии 1.5.0 и выше внесен целый ряд исправлений, относящихся к экспорту данных, сам принимал участие в выявлении и тестировании багов.

Разработчики идут нам навстречу и это радует :thumbup:

Gametrix JetSeats thread (in English) ,

SimShaker addon for bass-shakers thread (in English),

Andre's blog, downloads, manuals (in English).

 

 

[sIGPIC][/sIGPIC]

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...