SmartCopilot — плагин для полёта экипажем. — X-Plane 10

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

Думаю, пришло время объявить о проекте и приступить к бета тесту.

 

Итак, возможности плагина:

 

— пока только связь между двумя компьютерами(не уверен, нужно ли делать третий);

— работа по принципу MASTER — SLAVE с возможностью передачи управления (штурвал и тд.) на SLAVE компьютер;

— полная настройка конфигурационным файлом для каждого самолёта — передача дефолтных и кастомных датарефов должна обеспечить работу как с дефолтными, так и с кастомными самолётами (при участии их авторов).   

— экономия сетевого канала насколько это возможно — сейчас я ориентируюсь на передачу 300 float значений 25 раз в секунду, что даёт ~250 — 300 kbit/s. 

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

— работа во всех OS и 32-64 разрядностях. (я надеюсь, так как пока работает WIN 32bit) :joystick:

 

Тестирование проводил с дефолтным  Baron B58: соединял два компа через VPN и Хамачи: Веллингтон — Амстердам — Веллингтон что даёт порядка 40000 км и пинг около 700 ms — вполне летабельно!

Если конечно SLAVE перехватит контроль, то будет задержка в управлении — но тут, как говорится, уже ничего не сделать.

 

На текущий момент я пытаюсь улучшить позиционирование самолёта на SLAVE машине что бы уменьшить дёрганье самолёта при потере пакетов (спасибо Супнику за помощь!).

Но даже так, как это работает сейчас — вполне летабельно.

 

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

 

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

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

Тестеры должны знать друг друга, чтобы тестировать плагин между собой. Ещё важно что бы отозвались пользователи LIN и MAC — для них тестирование начнется позже, когда будет стабильная WIN версия. 

 

 

Бета тест начался.

 

Количество тестеров я ещё пока не определил. Пока начнём с малого.

Особых требований нет, кроме следующих:

 

1) начальные знания что такое датареф в X-Plane и как писать конфиг;

2) тестеры должны знать друг друга;

3) тестеры, или хотя бы один из них, должны примелькаться тут на форуме, что бы можно было спросить потом  :rtfm: .

 

Наши уважаемые самолётостроители могут также обратиться за бетой. Им проще всего будет разобраться с конфигом.

 

Пока не работает форум моего сайта плагин можно обсуждать в открытую или в личку здесь.

Для тех, кто просто хочет попробовать плагин прежде чем покупать — как и в случае с XSmartCOM я сделаю демку с ограниченным функционалом и напишу подробную инструкцию. Но попозже.

Сообщение отредактировал Rhard: 21 March 2013 — 05:19

Ответов: 117

наконец то на авсиме кто-то, кто не создает опросов, не задает вопросов, а ДЕЛАЕТ РЕАЛЬНОЕ ДЕЛО!

Очень отличный проект!

Буду ждать с нетерпением!

Интересно, как автор обошелся с проблемой несинхронности устройств а-ля штурвал?
 

— экономия сетевого канала насколько это возможно — сейчас я ориентируюсь на передачу 300 float значений 25 раз в секунду, что даёт ~250 — 300 kbit/s.

Тут важнее не kbit/s, а фрагментация пакетов.
 

На текущий момент я пытаюсь улучшить позиционирование самолёта на SLAVE машине что бы уменьшить дёрганье самолёта при потере пакетов

А с чего бы ему вообще дёргаться, если десяток-другой пакетов даже и пропадёт?

Отличная новость! нет слов.

Роман ну про наш с Матвеем «экипаж» думаю ты в курсе. :)

Дёрнуть датарефы — думаю ума у меня хватит, я не силён в программировании, но даже из модных ныне закрытых саслов, можно выудить датарефы через АЦ3Д, просмотрев манипуляторы и анимацию.

Сообщение отредактировал CheAG_Slava: 14 March 2013 — 11:16

Интересно, как автор обошелся с проблемой несинхронности устройств а-ля штурвал?
 Тут важнее не kbit/s, а фрагментация пакетов.
 А с чего бы ему вообще дёргаться, если десяток-другой пакетов даже и пропадёт?

По поводу дёрганья — что бы обойти некоторые ограничения, наткнулся на другие грабли..

 

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

 

Фрагментация? При текущем размере UDP пакета, фрагментации я не замечал. Нужно будет ещё тестировать. 

А че дуал инпута не будет?  :D 
Если серьезно, и будет возможность подключать два штурвала по сети по очереди, почему бы не сделать их арифметическое среднее для дуал инпут? И передавать не надо ничего — сказал «Дай я, брось джой неуч!» И усе. 
Конечно мне неизвестно, как оно там все крутится-вертится у вас
 

Сообщение отредактировал skyteacher: 14 March 2013 — 11:47

ИМХО: лучше по кнопке передавать управление, если у неуча шумит джой, может получится каша.

А управление передаётся РУД, РУС раздельно? Или всё сразу?

Нужно разробаться пока с основным функционалом, потом возможно что то придумаю с дуал инпутом.. РУД пока передаётся вместе с РУС, но добавить ещё один триггер будет уже не сложно я надеюсь..

А че дуал инпута не будет?  :D 
Если серьезно, и будет возможность подключать два штурвала по сети по очереди, почему бы не сделать их арифметическое среднее для дуал инпут? И передавать не надо ничего — сказал «Дай я, брось джой неуч!» И усе. 
Конечно мне неизвестно, как оно там все крутится-вертится у вас
 

потому что один видит ситуацию с задержкой этак 300 мс. каша получится.

Рома, хорошая новость, я так понял ты полностью сделал плагин мультиплеера? Тоесть подключатся дефолтными средствами плейна не нужно будет?

Рома, хорошая новость, я так понял ты полностью сделал плагин мультиплеера? Тоесть подключатся дефолтными средствами плейна не нужно будет?

Да, подключаться дефолтным мультиплеером не нужно будет..

O_O Я так понимаю ты отключал динамику копилота? Для того что бы корректно передавалось местоположение крафта в OpenGL среде?

O_O Я так понимаю ты отключал динамику копилота? Для того что бы корректно передавалось местоположение крафта в OpenGL среде?

скорее всего именно так (я ж приводил ссылку на документ, как двигать самолёт).

Да, Игорь.. спасибо за ссылки.. Правда на данный момент я пытаюсь это сделать не отключая динамику :shok:  ;)

Да, подключаться дефолтным мультиплеером не нужно будет..

Напрасно, имхо, дефолтный копилот решил бы часть проблем, типа этой.

По поводу дёрганья — что бы обойти некоторые ограничения, наткнулся на другие грабли..

 

Несинхронность? Не совсем понял вопрос..

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

Фрагментация? При текущем размере UDP пакета, фрагментации я не замечал. Нужно будет ещё тестировать.

Понятно, что для 300флоат это еще не актуально, но ленточка не так уж и далека.

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

К сожалению, в дефолтном мультиплеере нельзя использовать только позиционирование или ещё какую либо часть значений.. Он переписывает всё и сразу.. Было бы конечно гораздо проще..

Я надеюсь вложиться в 300 значений.. Вчера посмотрел лог за 10 мин — при моём «ВПН» ни одного пакета отличного по размеру от посылаемого не пришло.. То есть  или пакет теряется, или приходит целиком..  

Сообщение отредактировал Rhard: 14 March 2013 — 22:00

К сожалению, в дефолтном мультиплеере нельзя использовать только позиционирование или ещё какую либо часть значений.. Он переписывает всё и сразу.. Было бы конечно гораздо проще..

Я надеюсь вложиться в 300 значений.. Вчера посмотрел лог за 10 мин — при моём «ВПН» ни одного пакета отличного по размеру от посылаемого не пришло.. То есть  или пакет теряется, или приходит целиком..  

жать пакеты не пробовал?

Сообщение отредактировал inv: 14 March 2013 — 22:32

Пока не пробовал. Если будет мало датареф для нормальной работы, тогда буду думать..

Тут нужно подойти с другой стороны — например, зачем передавать значения всех отклоняющих поверхностей, если можно обойтись передачей сигнала джойстика.. Всё равно SLAVE самолёт копирует положение из MASTER.

То же самое с двигателями. Сейчас я передаю 12 флоат значений — этого достаточно чтобы обеспечить базовый функционал для одномоторника.. 

К сожалению, в дефолтном мультиплеере нельзя использовать только позиционирование или ещё какую либо часть значений.. Он переписывает всё и сразу.. Было бы конечно гораздо проще..

Так не мультиплеер, а экстравижн. Поток емнип однонаправленный.

Я надеюсь вложиться в 300 значений.. Вчера посмотрел лог за 10 мин — при моём «ВПН» ни одного пакета отличного по размеру от посылаемого не пришло.. То есть  или пакет теряется, или приходит целиком..

А откуда они могут взяться-то, другого размера? Резаных не бывает — либо весь, либо никак.

паковать пакеты не пробовал?

П-переведи?©

П-переведи?©

жать :) rle каким-нибудь.

жать :) rle каким-нибудь.

Но к чему такая жестокость?! ;)

Резаных не бывает — либо весь, либо никак.

Что тогда фрагментация?

Что тогда фрагментация?

фрагментация — разделение пакета роутером на части а потом сборка. (параметр, определяющий, будет ли пакет фрагментирован или нет зовётся MTU = maximum transmission unit). 

обычно mtu 1500, но может быть и меньше, потому ты уже на грани почти.

 

чтобы избежать фрагментации ip датаграмма должен быть не более 576 байт кажется

Что тогда фрагментация?

Разобрался.. 1500 байт пакет — на это я и ориентировался изначально..

фрагментация — разделение пакета роутером на части а потом сборка.

Роутер не нужен для этого :) Незавидная судьба ждёт длинные пакеты еще в родном компутере.

чтобы избежать фрагментации ip датаграмма должен быть не более 576 байт кажется

Только не пугайтесь — 68 :crazy: Такие точно экзекуциям подвергнуты не будут. В реальности без нужды не стоит делать пакет данных длиннее 1472 байт.

Роутер не нужен для этого :) Незавидная судьба ждёт длинные пакеты еще в родном компутере.

ok, правильнее было бы сказать — на третьем уроне :)

 

Только не пугайтесь — 68 :crazy: Такие точно экзекуциям подвергнуты не будут. В реальности без нужды не стоит делать пакет данных длиннее 1472 байт.

упс:)