Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Плавное движение в играх


Автор: jhonyxakep 12.10.2016, 15:20
Привет всем.

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

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

Был бы рад услышать варианты решения этой проблемы, спасибо.

Автор: Курсант 18.1.2017, 12:19
Можно передавать данные об управляющих воздействиях, которые отправляет пользователь (пользователь - самое медленное устройство), и положения автомобилей вычислять на обоих компьютерах. У Вас ведь есть физический движок. ИМХО, это будет самый точный способ. Только надо пересылать управляющие воздействия и моменты времени, когда они сделаны, чтобы синхронизировать реакции. Такое вот ИМХО.

Автор: jhonyxakep 18.1.2017, 12:24
Цитата(Курсант @  18.1.2017,  12:19 Найти цитируемый пост)
Можно передавать данные об управляющих воздействиях, которые отправляет пользователь (пользователь - самое медленное устройство), и положения автомобилей вычислять на обоих компьютерах. У Вас ведь есть физический движок. ИМХО, это будет самый точный способ. Только надо пересылать управляющие воздействия и моменты времени, когда они сделаны, чтобы синхронизировать реакции. Такое вот ИМХО. 


Спасибо за ответ, думал форум уже канул в небытие.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)