Всем доброго времени суток! ребят подскажите пожалуйста, как работает логика валидации положения перса - ну когда на пример перс бежит в каукю-то сторону, а потом его резко телепортирует в другую точку. Ну или на пример когда бежишь, уперся в какое-то препятсявие и потом телепортирует уже в другую точку. Подскажите где эта логика на сервере, какая функция\класс, для H5 l2j. Заранее огромное спасибище )
Важно понимать, что пакет движения, это не координаты точки начала движения и конца движения, а вектор. Т.е как только клиент получит пакет мува со стороны сервера, он НЕМЕДЛЕННО изменит свое направление на этот вектор, и попытается отрисовать анимацию движения на длину этого вектора, перемещая павн клиента на соответствующее расстояние. Рассинхрон чаще всего возникает в моменты, когда пакет мува пришел или слишком рано, или слишком поздно, и координаты павна в этот момент еще/уже отличаются от координат сервера. Т.е условно персонаж побежал из точки А в точку Б, пробежал 75% расстояния и получил новый вектор. Сервер отправил пакет мува и изменил траекторию у себя, начав новое движение. Клиент, пока ждал пакет(пакету нужно время, чтобы долететь и обработаться в клиенте. Особенно при высоком пинге или большой нагрузке на сеть), успел пробежать еще 10% расстояния до точки Б. В итоге, в момент, когда клиент получил пакет с новым вектором, он уже фактически рассинхронизировался с сервером на расстояние в 10% между точками А и Б. Поэтому, если пинг высокий, а на сервере нет компенсационных механизмов, которые сгладят такие ошибки, то в таком случае такая погрешность в координатах будет накапливаться и может стать довольно большой.
Если персонаж с такой накопленной погрешностью попытается пробежать, например, мимо угла, то павн в клиенте может повернуть позже чем сервер, и побежать в стену, в то время, как тректория на сервере будет корректной.