Задержки при получении пакетов от сервера

nesss

Путник
Участник
Сообщения
129
Розыгрыши
0
Решения
3
Репутация
-2
Реакции
14
Баллы
85
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
Собственная
Так вот, новую тему создал, ту закрыли. О чем речь:
Когда отправляю пакет клиенту UserInfo или ValidateLocation или StatusUpdate, в момент получения, клиент как-бы немного дергается, что может быть?? когда отсылаю пакеты сообщений, или пакеты действий такого нет, все плавно
Ну по пакету ValidateLocation я склонялся к тому, что отправленные координаты немного разные, к примеру я засек координаты назначения при начале движения и координаты конца по факту имеют разницу по X до 10 пикс, по Y до 10 пикс, по Z до 40 пикс. и то есть после завершения движения при отправке пакета ValidateLocation персонаж смещается как раз на те 10 пикс. и вот типо маленькое сдвижение. Но как быть с пакетами UserInfo, пускай там тоже есть координаты, но а StatusUpdate, там к примеру обновляю только 2 параметра, когда получаю урон, я отнимаю HP у персонажа и отправляю пакет, что-бы отобразить у клиента уменьшение полоски HP. Синхронизация тут думаю не причем, я то могу отправить пакет с сервера клиенту в любое время, клиент его принял и внес себе изменение, так вот получается, при изменении происходит маленькую задержку, как будь-то подвисает на миллисекунду.
 
Вы ТОЧНО уверены что проблема не только с ValidateLocation? Т.к это это выглядит самой логичной проблемой судя по вашим описаниям.
На всякий случай скопирую свое сообщение, чтобы не потерять контекст.

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

StatusUpdate\UserInfo вообще шлются на каждый чих и обновление инфы о персе, и возможно вам кажется что проблема в них, т.к они постоянно мелькают на фоне.

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

Ну а так, как первый совет - коментите отправку StatusUpdate\UserInfo и т.д по очереди, смотрите станет ли лучше, найдите пакеты с которыми у вас проблеммы, далее разтыкать брейкпоинты, посмотреть стак, может какие потоки\таски подвисают в моменте, короче-говоря типичный отпладочный процесс.
 
Ну банально забегаю в воду, отправляю клиенту пакет UserInfo и указываю, что чар в воде, идет фриз и все дальше работает отлично, на сервере нечего нет, только движение чара реализую, потом после завершении полоски дыхания под водой идет урон, я отсылаю каждую секунду пакет StatusUpdate с уменьшенным ХП, и каждую секунду идет фриз
 
Ну банально забегаю в воду, отправляю клиенту пакет UserInfo и указываю, что чар в воде, идет фриз и все дальше работает отлично, на сервере нечего нет, только движение чара реализую, потом после завершении полоски дыхания под водой идет урон, я отсылаю каждую секунду пакет StatusUpdate с уменьшенным ХП, и каждую секунду идет фриз
Может быть там дорого UserInfo? Он довольно большой и если там на похер сделать формирование в потоке сети, то могут и лаги быть.
 
UserInfo там необходим, так как в нем меняется параметр, который обозначает режим персонажа в воде. Ну на счет формирования я бы понял, если бы была задержка на стороне сервера, тогда пакет отсылался бы позже. Но по факту клиенту все равно, позже он отсылается или нет, клиент получает пакет, в котором указано, что нужно изменить одну из характеристик, в момент изменения, он делает фриз и изменение происходит

Я почему-то грешу на клиент, у меня 10ка Windows, чистый клиент не запускался, перелопатил инет, собрал из разных патчей System, все заработало, вот теперь думаю, не может это быть что-то в клиенте не верно работает?
 
Назад
Сверху Снизу