![]() |
|
||||||||||
|
|||||
|
Цитата:
__________________
...вселенская грусть |
|
|||||
|
Допусти я синхронизировал сервер и клиент (т.е. на клиенте у меня имеется dt-разница во времени сервера и клиента). Дальше
1. Клиент нажал кнопку вправо во время t1 2. На сервер команда дошла в t1+пинг 3. Сервер обработал команду и должен отправить клиентам время начала перемещения персонажа и скорость. Вопрос какое должно быть отправлено время начало движения? t1 или какое то другое? |
|
|||||
|
t1 конечно.
По крайней мере у меня клиент вообще не знает, какой у него пинг - ему просто незачем это знать. И когда на сервер приходит сигнал о нажатии (он приходит во время t2 = t1+пинг), то сервер вычисляет, когда была нажата клавиша (t2 - пинг) и отправляет всем это время
__________________
...вселенская грусть |
|
|||||
|
не понимаю...
если всем отправляется время t1 то когда команда придет к клиентам там уже будет время больше чем t1 и как в прошлом изменить местоположение? |
|
|||||
|
Чтобы не было скачка?
Есть место начала движения (x0, y0) Есть скорость (vx, vy) Есть время начала движения (tb) Есть текущее время (tc) Где сейчас (tc) персонаж? x1 = x0 + vx * (tc - tb) Где персонаж будет еще через 1 секунду? x2 = x0 + vx * (tc - tb + 1) Что можно сделать? - передвинуть персонажа из x0 в x2 за 1 секунду (то есть его скорость будет больше той, которая должна быть на этом отрезке), а дальше уменьшить скорость до нужной и продолжить движение. Грубо говоря, скачок координат заменяется на плавное движение с немного большей скоростью, чем доступна клиенту.
__________________
...вселенская грусть |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Мне, кстати, интересно, вот система эта с client prediction + lag compensation (типа http://developer.valvesoftware.com/w...yer_Networking). В t0 (по времени клиента) игрок 1 пристрелил игрока 2, в t1 > t0 (по времени игрока 2) игрок 2 пристрелил игрока 1. Но на сервер пришел сперва пакет от игрока 2. И что насчёт того, если пакет от тормоза пришел после того, как выслали всем инфу, что 1 - мёртв. Мне кажется, что решают в пользу игрока 1.
PS: Кстати, рекомендую порыть на gamedev.net в форумных факах по программировании сетки. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|