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


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

Реализация поддержки моушен платформ в нашей игре

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

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

Реализация поддержки моушен платформ в нашей игре

Сообщение DriftPhysicsCrew » 07 мар 2018, 12:15

Здравствуйте, Уважаемые!

Я представляю команду разработчиков проекта FURIDASHI: Drift Cyber Sport:
http://store.steampowered.com/app/65857 ... ber_Sport/

Занялись реализацией поддержки моушен платформ.
Данные телеметрии подготовили. Но как их передавать и кому?

Хотелось бы сделать универсальное решение, чтобы работало на большинстве устройств.
Пожалуйста, проконсультируйте, как это сделать?
Подскажите, куда смотреть.

P.S. Начали с того, что в сотрудничестве с небольшой компанией по производству моушен платформ передаем телеметрию принимающей программе посредством UDP пакетов.
DriftPhysicsCrew
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 07 мар 2018, 11:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение SimAl » 07 мар 2018, 18:27

Вот, например дока по протоколу телеметрии для LFS. Я не разбирался, но по-логике, обычно вы в своей игре создаете серверный сокет и всем, кто к нему подключится вываливаете какую-то структуру заранее оговоренного вида с полезной информацией - либо по запросу, либо, скорее всего, с некоторым небольшим периодом, скажем 1-10мс. Можно реализовать какой-то готовый протокол - к некоторым играм на сайте SimTools есть (по крайней мере для версии 1.3 были) примеры плагинов с исходниками для некоторых игр - можно посмотреть как там реализовано, реализовать в своей игре, подправить при необходимости исходники плагина и собрать сам плагин для своей игры. Какие данные вы будете отправлять это уже вам решать. Для симулятора нужны вектор положения машины и вектор ускорений. Можно еще добавить скорость, обороты, передачу, время на круге, место, включение фар... что угодно в общем. Кроме сокета это же можно реализовать через расшаренную память - такой пример для SimTools тоже есть (был).
Некоторые игры кроме вывода телеметрии также позволяют управлять ими через сокет. Скажем в nolimits2 можно запускать определенный уровень, игра умеет сихронизироваться на нескольких компьютерах, чтобы несколько человек в ВР-очках могли "ехать" в одной кабине.
Аватара пользователя
SimAl
SIMER
 
Сообщения: 361
Зарегистрирован: 22 ноя 2013, 20:03
Откуда: Кропивницкий
Благодарил (а): 56 раз.
Поблагодарили: 237 раз.
Баллы репутации: 108
ТехнарьТехнарь

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение DriftPhysicsCrew » 07 мар 2018, 18:48

Спасибо.

Да, начали именно с того, что отправляем по сетевому интерфейсу UPD сообщения каждые 10 мс на localhost(127.0.0.1).
Шлем следующую структуру
struct
{
uint32_t signature; // всегда 0xA394143F
uint32_t game_id; // всегда 0x0F
float pitch; // угол наклона "вперед-назад" в радианах
float roll; // угол наклона "влево-вправо" в радианах
float headings; // угол поворота вокруг вертикальной оси в радианах
float acc_longitude; // ускорение вдоль продольной оси, в g
float acc_latitude; // ускорение вдоль поперечной оси, в g
float acc_vertical; // ускорение вдоль вертикальной оси, в g
} MotionData;

Но я абсолютно не могу найти информацию, как настроить SimTools, чтобы он эту информацию принимал...
Прошу помощи.
DriftPhysicsCrew
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 07 мар 2018, 11:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение DriftPhysicsCrew » 07 мар 2018, 18:49

Хочется сделать именно универсальное решение. А не под конкретный симулятор или драйвер.
DriftPhysicsCrew
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 07 мар 2018, 11:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение SimAl » 09 мар 2018, 17:19

DriftPhysicsCrew писал(а):Хочется сделать именно универсальное решение. А не под конкретный симулятор или драйвер.

Чтобы Симтулз (или другая аналогичная утилита) принимал данные, нужно написать плагин для вашей игры для симтулз. В этом и есть идея универсальности - у каждой игры телеметрия выводится своим уникальным способом, плагин же обеспечивает преобразование этой информации к единому виду и передачу ее в симтулз. В сою очередь симтулз уже управляет платформой. У некоторых игр телеметрия вообще не выводится и тогда плагин в наглую лезет в память и находит там нужные данные.
Т.е. вам нужно написать плагин для симтулз, который преобразует и передаст данные, отправляемые вашей игрой в симтулз. Для этого идете на эту страницу, поскольку вы собираетесь использовать UDP, скачиваете плагин для DIRT2, разбираетесь как он работает и видоизменяете под свою игру. Это для версии симтулз 2.х, но я бы рекомендовал еще сделать плагин под симтулз 1.3, поскольку он бесплатный, я думаю им много людей пользуется.
В простейшем случае вам в исходниках плагина придется поменять только номер порта, структуру принимаемых данных и метод патчинга игры. Если лень это все делать, просто напишите автору симтулз и опишите ему протокол. Я думаю сделать такие модификации у него займет час времени, и он с удовольствием соберет плагин под вашу игру и пополнит список поддерживаемых игр своей утилиты.
Аватара пользователя
SimAl
SIMER
 
Сообщения: 361
Зарегистрирован: 22 ноя 2013, 20:03
Откуда: Кропивницкий
Благодарил (а): 56 раз.
Поблагодарили: 237 раз.
Баллы репутации: 108
ТехнарьТехнарь

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение DriftPhysicsCrew » 09 мар 2018, 18:16

Благодарю за подсказки.

Обратился к автору SimTool для создания плагина.
Если результата не будет, то придется пытаться самостоятельно делать плагин.

С официального сайта сейчас можно скачать только свежую версию 2.x?
В чем именно отличие этой и более ранних версий?
DriftPhysicsCrew
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 07 мар 2018, 11:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение SimAl » 09 мар 2018, 19:19

DriftPhysicsCrew писал(а):С официального сайта сейчас можно скачать только свежую версию 2.x?
В чем именно отличие этой и более ранних версий?

Я сварщик не настоящий, но АФАИР:
С точки зрения лицензирования версия 1.3 была бесплатная, хотя иногда за скачивание плагинов требовалось платить. 2.х, насколько я понимаю, всегда платная.
Технически добавились новые варианты плагинов - для соединения с платформой, работы с осями и т.п.
Возможно новые интерфейсы для соединения с приборкой и т.п.

Для донатеров там раньше еще висел архив со старой версией и полным наборов плагинов, не знаю как сейчас.
Аватара пользователя
SimAl
SIMER
 
Сообщения: 361
Зарегистрирован: 22 ноя 2013, 20:03
Откуда: Кропивницкий
Благодарил (а): 56 раз.
Поблагодарили: 237 раз.
Баллы репутации: 108
ТехнарьТехнарь

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение DriftPhysicsCrew » 14 мар 2018, 09:11

Модератор xsimulator.net под именем value1 создал плагин. Вроде импортировал его в Plugin Updater. Но он не появился в Game Manager в строке Game Selection. Там только Live For Speed.

Правильно я понимаю, что нужно zip-архив закинуть в Plugin Updater?
Прошу помощи.

Ссылка на плагин:
http://dropmefiles.com/VpH9V
DriftPhysicsCrew
Зашел на огонёк
 
Сообщения: 5
Зарегистрирован: 07 мар 2018, 11:52
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Баллы репутации: 0

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение SimAl » 14 мар 2018, 23:36

Ну, во-первых нужно установить именно ту версию симтулз, под которую написан плагин. Вероятно, это 2.х. По этой же причине я не могу его проверить - у меня 1.3, на нее не устанавливается, это я проверил.
Во-вторых, да, завершить gamemanager и gameengine и бросить плагин на окно updater'а прямо в zip'е, не распаковывая. После этого игра должна появиться в этом списке:
Безымянный.png
Безымянный.png (44.94 КБ) Просмотров: 792
Аватара пользователя
SimAl
SIMER
 
Сообщения: 361
Зарегистрирован: 22 ноя 2013, 20:03
Откуда: Кропивницкий
Благодарил (а): 56 раз.
Поблагодарили: 237 раз.
Баллы репутации: 108
ТехнарьТехнарь

Re: Реализация поддержки моушен платформ в нашей игре

Сообщение Spirit » 26 мар 2018, 00:09

Так что в итоге? Игра в simtools завелась? Поддержка первого симтулз есть или только второй?
Аватара пользователя
Spirit
SIMER
 
Сообщения: 285
Зарегистрирован: 18 ноя 2014, 14:40
Откуда: Киев
Благодарил (а): 79 раз.
Поблагодарили: 91 раз.
Баллы репутации: 51
Технарь


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

cron
x

#{title}

#{text}