Ответ: Как можно получить данные из игры?
в связи с выходом нового патча от MG, где реализован механизм "экпорта данных" предлагаю опять поднять этот вопрос относительно LO.
OM реализовал этот механизм в виде полноценного UDP сервера, с возможностью не только отдавать данные но и принимать данные от сетевых устройств, это позволит в будущем реализовать нестандартные элементы управления, основаные не на джоях со стандартным USB/HID интерфейсом, а на сетевых TCP/IP устройствах.
в кратце принцип действия "экспорта данных" от MG такой - внешний клиент посылает по UDP пакет состоящий из идентификаторов параметров (ID), которые он хочет получить, и ID параметров+значение параметра, которые он хочет передать игре. сервер отсылает ответ.
то, что мне известно об экспорте данных из LO, позволяет сравнивать различные подходы, которые выбрали ED и MG.
с одной стороны, сразу после выхода механихм от MG будет чуть лучше из-за того, что поддерживает не только экпорт данных но и импорт в игру. с другой стороны механизм от ED гибче - пользователь сам пишет LUA скрипты и тем самым самым определяет характер траффика, протокол и формат. Опять таки нет никаких принципиальных трудностей для ED чтобы в будущем добавить возможность импорта данных.
У обоих схем есть одинаковый недостаток - оба механизма не универсальны в смысле выбора набора данных. То есть экспортировать можно будет только то, что будет разрешено, и соответственно при введении в игру новых параметров нужно будет делать новые экпортирующие функции.
приглашаю разработчиков и всех понимающих "тему" высказаться по поводу плюсов и минусов различных подходов. просьба не засорять трид непрофессиональными "хотелками".
Ответ: Как можно получить данные из игры?
Цитата:
Сообщение от Dmut
в связи с выходом нового патча от MG, где реализован механизм "экпорта данных" предлагаю опять поднять этот вопрос относительно LO.
Насчёт экспорта в Ил-2 - тоже приятная новость :).
Цитата:
OM реализовал этот механизм в виде полноценного UDP сервера, с возможностью не только отдавать данные но и принимать данные от сетевых устройств, это позволит в будущем реализовать нестандартные элементы управления, основаные не на джоях со стандартным USB/HID интерфейсом, а на сетевых TCP/IP устройствах.
Чую, грядёт эра джойстиков (и иже с ними) с поддержкой TCP/IP ;).
Цитата:
[...] с одной стороны, сразу после выхода механихм от MG будет чуть лучше из-за того, что поддерживает не только экпорт данных но и импорт в игру.
И на нашей улице будет праздник ;).
Цитата:
с другой стороны механизм от ED гибче - пользователь сам пишет LUA скрипты и тем самым самым определяет характер траффика, протокол и формат. Опять таки нет никаких принципиальных трудностей для ED чтобы в будущем добавить возможность импорта данных.
Честно говоря, я надеялся, что и MG пойдёт по пути внедрения Lua (по примеру ED), ведь это сразу предоставляет широкие возможности не только для экспорта/импорта. Кроме того, как Вы справедливо заметили, это облегчает дальнейшее развитие (симулятора вообще).
Моё мнение: если механизм от MG реализован не через Lua, у механизма от ED преимущество будет даже сразу после выхода ;).
Цитата:
У обоих схем есть одинаковый недостаток - оба механизма не универсальны в смысле выбора набора данных. То есть экспортировать можно будет только то, что будет разрешено, и соответственно при введении в игру новых параметров нужно будет делать новые экпортирующие функции.
С другой стороны: а как иначе? Как предугадать возможные будущие потребности в данных? Экспортировать сразу всё - тоже не выход (что входит в это "всё"?). Поэтому и звучал вопрос "кому, что и зачем нужно из ЛокОна?". Круг подерживаемых параметров - в прямой зависимости от интереса пользователей :) (на счёт Ил-2 - не в курсе).
Ответ: Как можно получить данные из игры?
забыл добавить самое интересное - при таком подходе LO будет совместим с устройствами\программами управления\отображения инормации, сделаными для Ил2, потому что на LUA скриптах можно будет сэмулировать формат DeviceLink, а вот Ил2 понимать проги и железки сделаные для LO не будет, в виду свободного формата траффика в LO. таким образом без вмешательства MG и переделки DeviceLink нельзя будет использовать внешние программы отображения данных, написанные для LO, то же самое относится к будущим интеллектуальным кокпитам.
ещё один небольшой минус формата DeviceLink - то что на каждый UDP запрос будет следовать UDP ответ, что увеличивает траффик и вероятность пропадания пакета ( напоминаю что UDP это протокол без гарантированной доставки пакета ). Таким образом у неграмотно написаных программ будут возможны сутуациии "затыка", если программа мониторинга шлет запрашивающий пакет после приёма ответа с предыдущего запроса ( а это типичная ошибка новичков в сетевом программировании ) и запрашивающий пакет пропадает, то прога будет ждать таймаут либо подвиснет ожидая ответа.
В LO я собираюсь реализовать немного другой механизм запроса данных, тоже основанный на UDP, где управлящий пакет будет посылаться всего несколько раз за сессию и говорить предпочтительные параметры посылки ответных данных, например: слать каждую секунду, слать по событию и так далее. естественно при этом не отпадает необходимость проверки корректного прохождения управляющего пакета. при этом типичный траффик по сьёму данных будет односторонним - от LO к устройствам отображения, что позволит уменьшить используемую полосу и уменьшить вероятность потери пакета.
кстати, ещё одна революционная мысль - после того как в симуляторах будет доступно полноценное управление ЛА посылкой команд по сети - начнут появляться программы-помошники, боты-автопилоты, которые например никогда не дадут сорваться в штопор, будут строго выдерживать параметры полета лучше автопилота в игре, вовремя открывать-закрывать заслонку охлаждения и автоматически регулировать шаг винта наиболее оптимальным способом, и даже воздушный бой может превратиться в соревнование умных программ ботов, работающих от лица пользователя. то есть может закончитсья эра честных сетевых поединков - ведь никогда не будешь знаеть какие проги помогают в данный момент твоему оппоненту. вот такие вот дела могут начаться в ближайшие годы.
Ответ: Как можно получить данные из игры?
Цитата:
Сообщение от Dmut
с одной стороны, сразу после выхода механихм от MG будет чуть лучше из-за того, что поддерживает не только экпорт данных но и импорт в игру.
Неправда, механизм ED поддерживает внешнее управление программой в полном объеме. Кроме того, ED прилагает библиотеку LuaSocket.dll, которая поддерживает все основные стандартные протоколы в Lua, а также готовые скрипты с примерами использования этих протоколов. Да и как можно делать далеко идущие выводы о фитче, которой еще никто в глаза не видел? Домыслы, батенька, - дело неблагодарное :)
Мы не выпускаем в патче 1.02 готовую экспортно/импортную фитчу, мы отрабатываем технологию этого дела в экспериментальном порядке с теми заинтересованными специалистами-пользователями, которые изъявили желание практически взаимодействовать с нами в данном вопросе, поскольку они собираются разрабатывать специализированные кабины. Пока таких пользователей всего двое. Если после выхода патча объявятся еще желающие специалисты, пишите письма мне (valery@eagle.ru) - обсудим ваши возможности и потребности.
Ответ: Как можно получить данные из игры?
Цитата:
Сообщение от Dmut
забыл добавить самое интересное - при таком подходе LO будет совместим с устройствами\программами управления\отображения инормации, сделаными для Ил2, потому что на LUA скриптах можно будет сэмулировать формат DeviceLink, а вот Ил2 понимать проги и железки сделаные для LO не будет, в виду свободного формата траффика в LO.
Видимо, прийдётся заранее предусматривать в этом софте режим совместимости с Ил2. Вообще, непонятно, чем обусловлен такой достаточно жёсткий механизм у MG. На борьбу с читерами это, вроде, не похоже.
Цитата:
Сообщение от Dmut
ещё один небольшой минус формата DeviceLink - то что на каждый UDP запрос будет следовать UDP ответ, что увеличивает траффик и вероятность пропадания пакета [...]
Выходит, что, в любом случае, даже при использовании только экспорта (без импорта), поток данных от внешнего софта в симулятор будет присутствовать. А что, заведомо большая (во много раз), относительно необходимой, ширина канала не спасёт "отца русской демократии"?:)
В основном-то, наверное, будет Ethernet использоваться.
Цитата:
Сообщение от Dmut
В LO я собираюсь реализовать немного другой механизм запроса данных, тоже основанный на UDP, где управлящий пакет будет посылаться всего несколько раз за сессию и говорить предпочтительные параметры посылки ответных данных, например: слать каждую секунду, слать по событию и так далее. естественно при этом не отпадает необходимость проверки корректного прохождения управляющего пакета. при этом типичный траффик по сьёму данных будет односторонним - от LO к устройствам отображения, что позволит уменьшить используемую полосу и уменьшить вероятность потери пакета.
Если в LO использовать только экспорт, можно вообще обойтись без управляющих пакетов, настроив в скрипте всё заранее, или отправить этот пакет один раз - в самом начале сессии. Но если нужно управлять протоколом во время сессии, тогда, конечно, так, как Вы описали.
Цитата:
Сообщение от Dmut
кстати, ещё одна революционная мысль - после того как в симуляторах будет доступно полноценное управление ЛА посылкой команд по сети - начнут появляться программы-помошники, боты-автопилоты, которые например никогда не дадут сорваться в штопор, будут строго выдерживать параметры полета лучше автопилота в игре, вовремя открывать-закрывать заслонку охлаждения и автоматически регулировать шаг винта наиболее оптимальным способом, и даже воздушный бой может превратиться в соревнование умных программ ботов, работающих от лица пользователя.
Это, ведь, замечательно! Откроется целое направление: соревнование ботов. Каждый пользователь, например, будет настраивать своего бота заранее, а потом - наблюдать за ним в игре. Нужно только удобную оболочку для настройки ботов сделать, чтобы играть мог любой желающий. Помните "Змеиный бой" или "Core Wars"? ;)
Цитата:
Сообщение от Dmut
то есть может закончитсья эра честных сетевых поединков - ведь никогда не будешь знаеть какие проги помогают в данный момент твоему оппоненту. вот такие вот дела могут начаться в ближайшие годы.
Мне кажется, тут нет проблемы. Честность поединков лежит целиком на совести игрока. Играющий нечестно обманывает сам себя.
Ответ: Как можно получить данные из игры?
Цитата:
Сообщение от Valery
Неправда, механизм ED поддерживает внешнее управление программой в полном объеме. Кроме того, ED прилагает библиотеку LuaSocket.dll, которая поддерживает все основные стандартные протоколы в Lua, а также готовые скрипты с примерами использования этих протоколов. Да и как можно делать далеко идущие выводы о фитче, которой еще никто в глаза не видел? Домыслы, батенька, - дело неблагодарное :)
Валерий, ну зачем так сурово? про использование Luasocket.dll в LO я знаю, а вот про наличие функций допускающих управление в LO - это для меня действительно новость, и новость радостная. значит сабжевый механизм в ED продумали действительно лучше чем в MG, по крайней мере в теории.
Цитата:
Сообщение от Mishel
Это, ведь, замечательно! Откроется целое направление: соревнование ботов. Каждый пользователь, например, будет настраивать своего бота заранее, а потом - наблюдать за ним в игре. Нужно только удобную оболочку для настройки ботов сделать, чтобы играть мог любой желающий. Помните "Змеиный бой" или "Core Wars"?
Да именно соревнования типа CoreWars я и имел ввиду. так что возможно в будущих воздушных виртуальных боях будут побеждать не лучшие пилоты, а лучшие программеры :D
Ответ: Как можно получить данные из игры?
Цитата:
Сообщение от Dmut
Валерий, ну зачем так сурово?
Всякий, кто пытается делать оценки и выводы, должен быть готов к возражениям. Ничего сурового в этом не вижу, как не вижу и опровержения своих слов.
Ответ: Как можно получить данные из игры?
Валерию .
Письмо Вам по необходимым переменным - отправил , надесюь будет прочитанно :-)
Ответ: Как можно получить данные из игры?
И на всякий случай - часть писма на форум выложу , если никто не будет против . Как бы - может кто добавит от себя пожелания ?
Обьём необходимой информации для моего тренажёра относительно невелик , и все значения удается запросить одной строкой и соответственно одной же строкой получить их .
Вот необходимые данные для моего тренажера :
- основное КУРС , СКОРОСТЬ , СКОРОПОДЬЁМНОСТЬ , ВЫСОТА относительная , число М , ВЫСОТА истинная , КРЕН , ТАНГАЖ .
- навигация КУР_АРК_1 , КУР_АРК_2 , КУР_РСБН , Дальность_РСБН , величины отклонения от РСЗ для директорного прибора .
- ПКРД величину ТВГ , обороты двигателя , температура масла , давление в маслосистеме , давление топлива перед форсунками , давление в основной и резервной гидросистемах , количество топлива (если возможно - по группам баков ) , давление в левой , правой и стояночной тормозной системах .
- разовые сигналы : пожар ( если возможно - по отсекам ) , повышенная вибрация , отказ СЭС 27 в. , отказ СЭС 208/115 в.,помпаж , топливный фильтр засорен , работа АПД , проход дальнего привода , проход ближнего привода . , сигнализация выпущенного положения стоек шасси , сигнализация открытиго положения створок шасси , сигнализация выпущенного положения закрылков , сигнализация выпущенного положения тормозных щитков , сигнализация предсрывного состояния .
- оружие сигнализация состояния подвесок , упрощённая сигнализация СПО ( 4 сектора по азимуту и всё ! ) , остаток снарядов для пушки снарядов .
В свою очередь с тренажера выдаются частоты настройки АРК_1 , АРК_2 , УКВ радиостанции , частота ИЛС/ДМЕ ( в принципе её можно использовать и как частоту РСБН ) , положеник крана шасси ( выпуск - нейтраль - уборка ) , признак север\юг для курсовой , фары ( выпуск - нейтраль - уборка ) , фары ( руление - нейтраль - посадка ) , включение аварийной НС , тормозной щиток ( выпусу - уборка ) .