Правильный гео.

интересно как? потому что все мои попытки свелись к тому что по серверу чар не проваливается и бежит нормально а по клиенту идет провал, и закостылить это очень грубо можно ток путем отсылания пакета валидации
Могу ошибаться, так как код писал не я.
Насколько я понимаю, клиент периодически шлет клиентские координаты, при падении можно сравнивать их, и если 3д дистанция больше чем N, корректировать, если не ошибаюсь, есть пакет который обновляет позицию без затенения экрана. Эффект следующий, чар может провалиться, но практически моментально его возвращает на верх и он продолжает движение.
 

Во время падения актор находится в специальном стейте и спамит пакетами ValidateLocation. В ответ он ждёт получения ValidatePosition.
По разнице координат или, например, по таймауту можно отдавать этот ответ и помещать персонажа в серверную точку.
Также важно, что в воде ValidatePosition всегда отправляет на дно. Поэтому, при падении, когда персонаж прилипает к поверхности воды в стейте падения и тоже спамит пакетами - это должно быть исключением.
Избежать падения в текстуры на крутых склонах, по крайней мере со стороны сервера, невозможно - можно только правильно обрабатывать это падение.
 
Последнее редактирование:
Не думаю что 10 лет назад у меня было 200 фпс в л2 :pandaredlol:
Как были проблемы стандартные в гео так и остались в большинстве случаев.
Там уж при 70 и выше проблемы начинаются
 
Во время падения актор находится в специальном стейте и спамит пакетами ValidateLocation. В ответ он ждёт получения ValidatePosition.
По разнице координат или, например, по таймауту можно отдавать этот ответ и помещать персонажа в серверную точку.
Также важно, что при падении в воду ValidatePosition отправляет всегда на дно. Поэтому когда персонаж прилипает к поверхности воды в стейте падения, тоже спамит пакетами. Это должно быть исключением.
Избежать падения в текстуры на крутых склонах, по крайней мере со стороны сервера, невозможно - можно только правильно обрабатывать это падение.
Также, если мне не изменяет память, валидация в воде всегда скидывает на дно. Даже если не при падении, а просто во время плавания прислать клиенту корректный ValidatePosition - в клиенте скинет на дно.
 
Во время падения актор находится в специальном стейте и спамит пакетами ValidateLocation. В ответ он ждёт получения ValidatePosition.
По разнице координат или, например, по таймауту можно отдавать этот ответ и помещать персонажа в серверную точку.
Также важно, что в воде ValidatePosition всегда отправляет на дно. Поэтому, при падении, когда персонаж прилипает к поверхности воды в стейте падения и тоже спамит пакетами - это должно быть исключением.
Избежать падения в текстуры на крутых склонах, по крайней мере со стороны сервера, невозможно - можно только правильно обрабатывать это падение.
если спамить ValidateLocation при падении будет все дергаться это один из костыльных вариантов решения проблемы но не очень красивый, учитывая что корректно считать данные сложно так как их надо сопоставлять с данными клиента а ValidatePosition шлется штатно с интервалом 1-1,5секунды в свою очередь на стороне сервера тики идут гораздо чаще и все-равно в какой-то момент происходит рассинхрон
 
если спамить ValidateLocation при падении будет все дергаться это один из костыльных вариантов решения проблемы но не очень красивый, учитывая что корректно считать данные сложно так как их надо сопоставлять с данными клиента а ValidatePosition шлется штатно с интервалом 1-1,5секунды в свою очередь на стороне сервера тики идут гораздо чаще и все-равно в какой-то момент происходит рассинхрон
Если честно я вообще ничего не понял. Сервер вообще не должен отправлять ValidateLocation ни просто так, ни по тикам - это ответный пакет на запрос клиента ValidatePosition. Если им спамить, он даже не обрабатывается клиентом, до тех пор пока клиент свой запрос не отправит.
Когда происходит падение, клиент спамит запросом ValidatePosition не раз в 1.5 секунды, а постоянно. Что позволяет отправить персонажа на землю, как только разница клиент-сервер координат достигнет лимита.
 
то что рожик продает на базе jts за 40 касарей тестировалось неоднократно многими нашими клиентами и там нет ничего от слова совсем, а в плане скрайда это только догадки и заоблачные цены за воздух
Смотрите, клиенты могли не знать что тестировать.

Я побегал на вашем тестовом:
1) В катах вместо того чтобы переплыть на другую сторону, или в некоторых случаях обойти воду, персонаж ныряет и плывет к точке но уже нижнего слоя (насколько я понимаю). Это при попытке просто перейти с 1 стороны воды в другую. (не критичная особенность).

2) А вот из критичного, то что успел найти, это вот:

Смотрите в сторону клика в не проходимую область будучи вводе. При таких мувах, персонаж начинает игнорировать геодату, так как всё еще думает что он в воде, ну или же он попадает под нижний слой, так как не везде где есть вода, в гео есть дно.

Это влечет за собой проходы в закрытое хб, к Белефу и т.п.
 
Если честно я вообще ничего не понял. Сервер вообще не должен отправлять ValidateLocation ни просто так, ни по тикам - это ответный пакет на запрос клиента ValidatePosition. Если им спамить, он даже не обрабатывается клиентом, до тех пор пока клиент свой запрос не отправит.
Когда происходит падение, клиент спамит запросом ValidatePosition не раз в 1.5 секунды, а постоянно. Что позволяет отправить персонажа на землю, как только разница клиент-сервер координат достигнет лимита.
Здрасте приплыли. Ты чо за дичь пишешь? Как падение определяется клиентом? с какого перепуга? Если бы клиент спамил ValidateLocation то проблем не было в принципе ни на одном сервере. ValidateLocation обычный сервер пакет который корректирует чара по его серверным координатам и не более того и сам клиент его не шлет. ValidatePosition идет со штатным интервалом и от него уже зависит кто что куда и зачем отправит. Клиенту в принципе насрать где находится чар над гео под гео и т д. Пока чар в движении идет штатный тик клиент пакета
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Смотрите, клиенты могли не знать что тестировать.

Я побегал на вашем тестовом:
1) В катах вместо того чтобы переплыть на другую сторону, или в некоторых случаях обойти воду, персонаж ныряет и плывет к точке но уже нижнего слоя (насколько я понимаю). Это при попытке просто перейти с 1 стороны воды в другую. (не критичная особенность).

2) А вот из критичного, то что успел найти, это вот:

Смотрите в сторону клика в не проходимую область будучи вводе. При таких мувах, персонаж начинает игнорировать геодату, так как всё еще думает что он в воде, ну или же он попадает под нижний слой, так как не везде где есть вода, в гео есть дно.

Это влечет за собой проходы в закрытое хб, к Белефу и т.п.
Понятно вот кто у меня флаги тырил всегда :pandaredlol:
 
Здрасте приплыли. Ты чо за дичь пишешь? Как падение определяется клиентом? с какого перепуга? Если бы клиент спамил ValidateLocation то проблем не было в принципе ни на одном сервере. ValidateLocation обычный сервер пакет который корректирует чара по его серверным координатам и не более того и сам клиент его не шлет. ValidatePosition идет со штатным интервалом и от него уже зависит кто что куда и зачем отправит. Клиенту в принципе насрать где находится чар над гео под гео и т д. Пока чар в движении идет штатный тик клиент пакета
Как падение определяется клиентом - под актором нет пола, он меняет свой стейт (анимацию) на падение, и там много чего под капотом в клиенте в этом состоянии происходит. Например кнопка ту вилладж не выводится в этом стейте, клиент начинает спамить серверу пакетами ValidatePosition.
Ещё ты немного запутался в названиях, кажется, я в скобках подпишу, чтобы не путаться в терминологии.
ValidateLocation(серверный) это ответный пакет для клиента, чтобы тот выполнил корректировку. Клиент ждёт его после отправки ValidatePosition(клиентский) на обработку. Если спамить им от сервера бесконечно, то обрабатываться он будет ровно один раз после каждого запроса (клиентского ValidatePosition), все остальные будут скипаться.
То, что ты называешь костылем, это стандартный механизм клиента разрешения рассинхрона. Флоу такой: клиент шлёт ValidatePosition -> сервер сверяет координаты -> отдаёт ValidateLocation для корректировки или не отдает. В нестандартных ситуациях(как падение) клиент шлёт ValidatePosition не раз в 1.5-2 сек, а каждые 0.5 сек, чтобы как раз сервер решил проблему =)
 
Последнее редактирование:
Последнее редактирование:
Я попытался воспроизвести спам, у меня не получилось. Похоже больше на раз в секунду
Я немного гиперболизировал, чтобы донести суть) Ну как видите, разница очевидна
 
Назад
Сверху Снизу