Как задать движение по серверному времени?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как задать движение по серверному времени?

Сообщение Zimaell 07 авг 2020, 12:11

Задумка следующая - на сервере рассчитываются координаты передвижения юнитов, отправляются эти данные на клиенты, далее клиент уже "проигрывает" заданный сценарий.
То есть если игрок если заходит в игру а там уже идет бой то ему расставляются юниты исходя из реального времени, которое было прописано в сценарии.
Пример
индификатор | дата время | координаты x,y,z
unit1 | 2020-08-07 15:00:00 | 0x0x0
unit1 | 2020-08-07 15:00:01 | 2x0x2
unit1 | 2020-08-07 15:00:02 | 4x0x2
unit1 | 2020-08-07 15:00:03 | 6x0x2


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

Суть вопроса - как это лучше всего реализовать? Как вычислить скорость перемещения?

Я думаю сделать так - каждая секунда это чекпоинт, грубо говоря каждая секунда это отрезок от А до В.
Но как рассчитать время перемещения? Ведь в unity скорость рассчитывается Speed * Time.deltaTime, как рассчитать чтобы эта скорость точно попадала по секундам?
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как задать движение по серверному времени?

Сообщение Jarico 07 авг 2020, 18:13

Zimaell писал(а):В дальнейшем на сервере будут проводится все расчеты, в плане кто на кого нацелен, кто в кого стреляет, сколько наносит урона, кого убили в определенное время. В случае внесения игроком каких-то изменений идет на сервере перерасчет и отправляется всем участвующим.


Клиенту не обязательно знать что делает сервер, он должен только визуализировать события сервера.


Zimaell писал(а):Суть вопроса - как это лучше всего реализовать? Как вычислить скорость перемещения?


Сравнивай последнюю полученную позицию юнита и сравнивай с новой позицией, получишь дельту (разницу) и умножай на интерполяцию...
Множитель интерполяции нужно подбирать под интервал приёма данных с сервера чтобы клиент видел плавное движение объектов

Zimaell писал(а):Как рассчитать чтобы эта скорость точно попадала по секундам?

Зачем клиенту знать скорость по секундам? Он ведь получает информацию через интервалы времени, в промежутках между обновлениями делай интерполяцию (ответ на предыдущий вопрос)

Zimaell писал(а):Но как рассчитать время перемещения?

у тебя есть 2 точки (A и B), есть скорость игры. Если с матаном дружишь проблем возникнуть не должно...
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Как задать движение по серверному времени?

Сообщение Zimaell 07 авг 2020, 18:31

Зачем клиенту знать скорость по секундам? Он ведь получает информацию через интервалы времени, в промежутках между обновлениями делай интерполяцию (ответ на предыдущий вопрос)

клиенту приходит список координат где и когда должен находится юнит
unit1 | 2020-08-07 15:00:01 | 2x0x2
unit1 | 2020-08-07 15:00:05 | 4x0x2
unit1 | 2020-08-07 15:00:10 | 6x0x2

вот, то есть в 15:00:05 он должен быть в точке 4x0x2, а в 15:00:10 в точке 6x0x2, осталось только как-то вычислить скорость перемещения от одной к другой точке, собственно вопрос именно в этом стоит, как вычислить скорость...

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

у тебя есть 2 точки (A и B), есть скорость игры. Если с матаном дружишь проблем возникнуть не должно...

Извините но вышки нету, хоть и сайты уже несколько лет на PHP строчу, а в юнити недавно...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45


Вернуться в Почемучка

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

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