MAL4X Научно-технический форум разработчиков симуляторов и автоматики


Симуляторы перегрузок. DIY электроника. ЭВМ. Компьютерные сети.
Up

Как получить данные из ИГР

Строим реалистичный симулятор перегрузок своими руками. Рекомендации. Советы.

Модераторы: Death_Morozz, null, Ale

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Mezmeraiz » 07 ноя 2014, 22:44

Есть идеи, как по координатам рассчитать поперечное и вертикальное ускорение в абсолютной системе координат? А то у меня сейчас мозг взорвется :)
Mezmeraiz
Новичок
 
Сообщения: 13
Зарегистрирован: 31 окт 2014, 17:32
Благодарил (а): 5 раз.
Поблагодарили: 5 раз.
Баллы репутации: 15
Новичок

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Ale » 07 ноя 2014, 22:56

Mezmeraiz писал(а):Есть идеи, как по координатам рассчитать поперечное и вертикальное ускорение в абсолютной системе координат? А то у меня сейчас мозг взорвется :)

Координат мало. Нужно кроме положения в пространстве знать направление НОСА танка ( в трехмерной системе ). Обычно мы из игр выковыриваем 3-мерный ВЕКТОР ориентации машины.
И ускорения нужны не в АБСОЛЮТНОЙ системе, а как раз в системе координат машины.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1415
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 536 раз.
Поблагодарили: 567 раз.
Баллы репутации: 272
ТехнарьТехнарьТехнарь

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Mezmeraiz » 08 ноя 2014, 00:16

Ale писал(а):
Mezmeraiz писал(а):Есть идеи, как по координатам рассчитать поперечное и вертикальное ускорение в абсолютной системе координат? А то у меня сейчас мозг взорвется :)

Координат мало. Нужно кроме положения в пространстве знать направление НОСА танка ( в трехмерной системе ). Обычно мы из игр выковыриваем 3-мерный ВЕКТОР ориентации машины.
И ускорения нужны не в АБСОЛЮТНОЙ системе, а как раз в системе координат машины.

Я двумя постами выше выложил продольное ускорение в абсолютной системе. Оно не подойдет? И я немного не понимаю, что есть система координат машины?
Мне казалось, что например поперечное ускорение это смещение с прямой траектории движения при поворотах, а вертикальное - при подъемах и спусках.
Mezmeraiz
Новичок
 
Сообщения: 13
Зарегистрирован: 31 окт 2014, 17:32
Благодарил (а): 5 раз.
Поблагодарили: 5 раз.
Баллы репутации: 15
Новичок

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Ale » 08 ноя 2014, 00:29

Mezmeraiz писал(а):Я двумя постами выше выложил продольное ускорение в абсолютной системе. Оно не подойдет? И я немного не понимаю, что есть система координат машины?
Мне казалось, что например поперечное ускорение это смещение с прямой траектории движение при поворотах, а вертикальное - при подъемах и спусках.


Да, ты прав. Если эти ускорения есть в пакете данных - замечательно. А если нет - их нужно вычислять. И для их вычисления нужны исходные данные. А что нужно для вычисления ускорений? Скорости... То есть ты должен знать изменение скорости машины по трем векторам (вдоль - ось X, поперек - ось Y и вертикально Z)
http://www.xsimulator.net/co-ordinate-system/
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1415
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 536 раз.
Поблагодарили: 567 раз.
Баллы репутации: 272
ТехнарьТехнарьТехнарь

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Mezmeraiz » 08 ноя 2014, 01:18

Ale писал(а):Да, ты прав. Если эти ускорения есть в пакете данных - замечательно. А если нет - их нужно вычислять. И для их вычисления нужны исходные данные. А что нужно для вычисления ускорений? Скорости... То есть ты должен знать изменение скорости машины по трем векторам (вдоль - ось X, поперек - ось Y и вертикально Z)
http://www.xsimulator.net/co-ordinate-system/

Ясно, спасибо. Но еще один вопрос по поводу ускорения по оси Y - как я понял оно необходимо для наклона кресла при поворотах. Так вот, допустим мы двигаемся по прямой и вдруг начали поворачивать и смещаться по локальной оси Y с постоянной скоротью. Ускорение по Y при этом равно нулю. Но ведь при этом все равно на водителя должна идти боковая нагрузка и кресло при этом должно клонить на бок. Я к тому, что быть может нам нужна скорость по оси Y, а не ускорение? Я прав или мне лучше пойти поспать? :D
Mezmeraiz
Новичок
 
Сообщения: 13
Зарегистрирован: 31 окт 2014, 17:32
Благодарил (а): 5 раз.
Поблагодарили: 5 раз.
Баллы репутации: 15
Новичок

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Mezmeraiz » 12 ноя 2014, 15:07

Нашел все что нужно - крен, тангаж, рыскание. Рассчитал продольную, поперечную и вертикальные скорости(или ускорения). Выглядит сейчас это так:
http://s019.radikal.ru/i606/1411/c7/0efc8ca4e63c.jpg
Теперь видимо нужно передать данные на SimTools? Как это сделать?
Mezmeraiz
Новичок
 
Сообщения: 13
Зарегистрирован: 31 окт 2014, 17:32
Благодарил (а): 5 раз.
Поблагодарили: 5 раз.
Баллы репутации: 15
Новичок

Re: Сим Тулс (Sim Tools) - новое ПО для симулятора

Сообщение Ale » 12 ноя 2014, 18:57

Mezmeraiz писал(а):Теперь видимо нужно передать данные на SimTools? Как это сделать?


Надо научиться извлекать данные в среде "Visual Basic 10".
В любом случае я выкладываю пример плагина для LFS, в котором реализовано извлечение данных из UDP пакетов. Плюс краткий мануал по созданию плагинов.
Если хочешь, можешь мне прислать алгоритм извлечения данных и я вместе поработаем над плагином.
Вложения
LFS_V3_Source_Dash.zip
(316.05 КБ) Скачиваний: 73
SimTools Plugin Tutorial.rar
(784.4 КБ) Скачиваний: 79
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1415
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 536 раз.
Поблагодарили: 567 раз.
Баллы репутации: 272
ТехнарьТехнарьТехнарь

Как получить данные из ИГР

Сообщение yarockiisergei » 21 дек 2014, 21:57

Привет всем, я новичок данного форума, прочитав кучу постов я так и мне понял как же увидеть на своем компьютере данные с игр.
Может хоть кто нибудь направить куда двигаться!
Вообще я программист Delphi встречал что кто то что писал даже, есть исходник?
yarockiisergei
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 21 дек 2014, 20:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Как получить данные из ИГР

Сообщение электрик » 22 дек 2014, 09:25

Аватара пользователя
электрик
Резидент
 
Сообщения: 379
Зарегистрирован: 30 мар 2011, 15:48
Откуда: Москва
Благодарил (а): 68 раз.
Поблагодарили: 145 раз.
Баллы репутации: 66
Технарь

Re: Как получить данные из ИГР

Сообщение yarockiisergei » 22 дек 2014, 22:39

Я это уже смотрел разработчик Ale не выходит на связь. И это грустно.
yarockiisergei
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 21 дек 2014, 20:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Как получить данные из ИГР

Сообщение Death_Morozz » 23 дек 2014, 00:41

в смысле? от вас 2 сообщения, а во-втором - упрёк? как Вас понимать, потрудитесь обьяснить?
Хочешь сделать хорошо - сделай это сам: http://infarctrec.ru/texts.htm
Изображение
Аватара пользователя
Death_Morozz
Фраерок
 
Сообщения: 2601
Зарегистрирован: 11 янв 2007, 23:35
Откуда: Ростов-на-Дону
Благодарил (а): 735 раз.
Поблагодарили: 290 раз.
Баллы репутации: 200
ТехнарьТехнарьТехнарь

Re: Как получить данные из ИГР

Сообщение Ale » 23 дек 2014, 08:33

yarockiisergei писал(а):Я это уже смотрел разработчик Ale не выходит на связь. И это грустно.


Death_Morozz писал(а):в смысле? от вас 2 сообщения, а во-втором - упрёк? как Вас понимать, потрудитесь обьяснить?


Вообще-то Death_Morozz прав - начинать с упреков не самое продуктивное действие. И у разработчиков бывают напряженные деньки на основных работах... А вот хорошим тоном на форуме как раз считается стремление поделиться своими идеями, в ответ на которое можно получить дельные (я надеюсь) советы.

Теперь по твоему вопросу - могу вкратце описать направление движения, на примере игры Live For Speed. Из нее извлекать данные не просто, а ОЧЕНЬ просто ;) Сразу скажу, что таким же простым интерфейсом обладают игры от CodeMasters (серия Dirt, по крайней мере).
1 - Нужно отредактировать файл cfg.txt, как указано тут http://mal4x.ru/post5332.html#p5332
В результате после запуска игры она начинает слать UDP пакеты на порт, указанный в файле.
2 - Нужно принимать UDP пакеты (из Delphi это можно сделать разными способами. Насколько я помню, я просто настраивал TSocket). Структура пакета данных из игры описана тут http://www.brunsware.de/insim/structOutSimPack.html
3 - Ну а дальше использовать эти данные по своему усмотрению...

Как-то так. Пробуй. Не будет получаться, обращайся. Помогу разобраться.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1415
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 536 раз.
Поблагодарили: 567 раз.
Баллы репутации: 272
ТехнарьТехнарьТехнарь

Re: Как получить данные из ИГР

Сообщение yarockiisergei » 25 дек 2014, 19:53

По поводу упрека это с горячка извиняйте.
Дело в том что я делал все что написано на форуме чтоб получить данные но есть особенность в WIN7 и WIN8 по мино того что нужно настроить фаервол также прогу серфинга запустить от имени админа и только тогда все заработало.
Ale подскажи пожалуйста по Delphi, я взял исходник: http://www.delphisources.ru/pages/sourc ... i_net.html работа с UDP, настроил порт как у игры. Ни какого эффекта нет.
Исходник можно взглянуть? или какой компонент юзал?
yarockiisergei
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 21 дек 2014, 20:13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Как получить данные из ИГР

Сообщение kimoncar » 08 янв 2015, 14:53

Привет. Несколько дней читаю форум и вот решил зарегистрироваться.
Меня давно интересует тема симов, особенно под Dirt. Через X-Sim передавал данные на ардуину и управлял сервами с диодами, в соседней теме выложил видео.

Ale писал(а):могу вкратце описать направление движения, на примере игры Live For Speed. Из нее извлекать данные не просто, а ОЧЕНЬ просто Сразу скажу, что таким же простым интерфейсом обладают игры от CodeMasters (серия Dirt, по крайней мере).
1 - Нужно отредактировать файл cfg.txt, как указано тут post5332.html#p5332
В результате после запуска игры она начинает слать UDP пакеты на порт, указанный в файле.
2 - Нужно принимать UDP пакеты (из Delphi это можно сделать разными способами. Насколько я помню, я просто настраивал TSocket). Структура пакета данных из игры описана тут http://www.brunsware.de/insim/structOutSimPack.html
3 - Ну а дальше использовать эти данные по своему усмотрению...

Как-то так. Пробуй. Не будет получаться, обращайся. Помогу разобраться.


Я немного програмлю на паскале в Lazarus'е, научился управлять сервами (диодами) через COM-порт:
phpBB [video]
,
но вот так и не смог разобраться с UDP пакетами - не хватает моих знаний :( .

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

Алгоритм такой:
1. С помощью ArtMoney выявляем нужные нам данные и узнаем адрес ячейки.
2. Задаем этот адрес приложению на паскале и читаем значение.
3. Передаем это значение на контроллер сима.

Ale, мог бы ты по подробнее рассказать, как поймать и обработать пакет от Dirt? Буду очень благодарен.
Аватара пользователя
kimoncar
Новичок
 
Сообщения: 12
Зарегистрирован: 08 янв 2015, 14:00
Благодарил (а): 6 раз.
Поблагодарили: 8 раз.
Баллы репутации: 5

Re: Как получить данные из ИГР

Сообщение Ale » 08 янв 2015, 17:37

kimoncar писал(а):но вот так и не смог разобраться с UDP пакетами - не хватает моих знаний .

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

Алгоритм такой:
1. С помощью ArtMoney выявляем нужные нам данные и узнаем адрес ячейки.
2. Задаем этот адрес приложению на паскале и читаем значение.
3. Передаем это значение на контроллер сима.

Ale, мог бы ты по подробнее рассказать, как поймать и обработать пакет от Dirt? Буду очень благодарен.


Брр, что-то я после праздников туго соображаю... :lol: Или ты тут намешал всего - и X-sim , и Dirt, и Artmoney... Гремучий коктейль ;)

Попробую все же ответить
По артмани и проч. Да, нужно в памяти чужого процесса (игры) найти данные, потом "твердый" указатель на эти данные. А потом с ними можно делать всё, что душе угодно. Так вот самая проблема как раз НАЙТИ. Я, например, пользуюсь не ArtMoney, a CheatEngine.

Если еще немного расписать, то проблема реально распадается на две:

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

- второе - поскольку данные при каждом запуске игры сидят в разных местах памяти (куда их размещает системный загрузчик), то второй важной задачей является поиск указателя на найденные данные. Тот еще процесс, должен признаться. Хотя вот коллега Value1 с буржуйского форума научился пользоваться специальными возможностями CheatEngine по поиску указателей. А я пока не научился, поэтому все делаю вручную, с помощью дизасемблера. Процесс совершенно неблагодарный, должен признать.

По Dirt. Для извлечения данных из Dirt нет необходимости рыться в памяти. Дирт сам высылает UDP пакеты на указанный порт. Нужно их просто ловить. Структура пакета известна и описана в сети. Для настройки дирта на выдачу данных нужно ручками поправить конфигурационный файл. И такая возможность есть для целого ряда игр. Вот тут можно почитать, как настраивать игры на выдачу данных
http://www.fanaleds.com/readme
Ну а если есть сложности именно с приемом UDP пакетов, пиши в личку свой мэйл, вышлю мой рабочий пример на Delphi.
Аватара пользователя
Ale
Разработчик
 
Сообщения: 1415
Зарегистрирован: 01 фев 2011, 20:48
Откуда: Дубна
Благодарил (а): 536 раз.
Поблагодарили: 567 раз.
Баллы репутации: 272
ТехнарьТехнарьТехнарь

Пред.След.

Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 21

cron
x

#{title}

#{text}