» Фикс Радиуса

 


Фикс Радиуса

Автор: Victor от 27-05-2013, 16:19, посмотрело: 13 983

0

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

Дистанция при атаке между целью и атакующим проверяется сервером! Исключением являлись бросаемые умения: бафы,дебафы,гранаты, сетки и и подобные им умения, для чего была добавлена доп проверка и команда для настройки работы этой проверки.

Я очень часто слышу вопрос: "А-а-а-а-а.. У нас работает радиус! Что же делать. Хелп.....". И все в таком духе.

Ответ на этот вопрос лежит в недрах сервера и самого алгоритма передвижения разработанного корейцами. На самом деле при расчете радиуса атаки учитывается радиус цели прописанный в Player.edf и в сервере PlayerCharacter.dat ну или Character.edf => серверный набор файлов, где описываются монстры, мины туры имеют свое свойство радиуса прямо в скрипте. Идем дальше. Что собой представляет данный баг? Все просто! В сервере помимо стандартных статов есть поправка добавляющая к расчетному значению 40. Что же мы получаем в итоге ? давайте это рассмотрим для наглядности на конкретном примере.

Входящие условия: Player VS Player

Дистанция = Текущая позиция Игрока 1 - Текущая позиция игрока 2 и скажем условно = 160 у.е

Далее получение "разрешенной дистанции"

Разрешенная дистанция = Радиус игрока(5) + Радиус пухи(условно 75) + бонусы радиуса(30 7 ур. бафа. Для стрелка и воина номера эффектов в бафах разные! + возможен бонус еще от допа и бижи и таликов на радиус. Бонус от бижи и таликов на радиус при выстреле скилом не учитывается!)+ Поправка на коллизии в реальных точках(40 между клиентом и сервером из за глюков в алгоритме передвижения) = 5+75+30+40 = 150 у.е

В итоге мы получаем, что цель находится дальше на 10 у.е от возможного радиуса атаки. И тут мы видим парадокс. Выстрел все равно проходит! Вопрос почему ? И тут разработчики нам оставили фокус покус(Ляп косяк называйте как хотите). Как все мы знаем, пинг и компы у всех разные. Посему разработчики не доделав до конца алгоритм(видимо сроки поджимали) вышли из положения следующим образом. Если до цели расстояние при расчете выше чем максимально возможное, то берется предыдущая точка в которой находилась цели при выстреле и если же расстояние удовлетворяет условие атака проходит. Грубо говоря я убегаю вы догоняете, если у меня пинг побольше, а у вас 3-4мс до сервера, то вы спокойно будете меня бить вдогонку главное при этом чаще мышей кликать по экрану указывая следующую позицию чтобы срабатывал вызов MoveNext и почаще перезаписывалась ваша координата в сервере. Это же касается и меня, хоть меня это и не спасает от ваших атак. теперь вернемся к константе +40 к любому радиусу.Эта константа добавляется к любому оружию или просто как бонус если нет в руках оружия в сервере!!!! Чего нет в клиенте. Как я понимаю вы уже начинаете понимать, почему в сервере радиус проверяется, а баг имеет место быть! Да да вы совершенно правы. Можно в клиенте подкрутить +40 к радиусу и спокойно бить если у вас мощный комп и минимальный пинг до сервера все будет работать. Если же все вышесказанное отключить, то при увеличении пинга хотя бы на 50 миллисекунд будут наблюдаться так называемые фальш-выстрелы, при которых команда от вас проходит, но в реале урон не наносится. А все это из за того, что вы еще видите цель т точке выстрела и клиент вам разрешает стрелять, а в реале цель уже давно за пределами досягаемости. Когда же клиент такое обнаруживает он автоматически начинает преследование цели чтобы атаковать ее пока вы не отмените авто-действие. Теоретически баг есть только в некоторых случаях и на все очень сильно влияет пинг и нагрузка на сервер. Но четких зависимостей и замеров не проводилось. Для нормально работы сего чуда нужно вводить компенсацию константы персонально для каждого игрока в зависимости от его пинга.

И теперь ответ на вопрос как же бороться с этим.

Ответ прост. Завышайте радиус в клиенте для одной пухи и отходя от цели замеряйте максимальное расстояние при котором перестает проходить урон. Далее бафаетесь бафом и проверяете не дается ли вам бонус в сервере, записываете название и правите бонус в сервере. Повторюсь для стрелков и ББ класса номера эффектов в бафах разные посему баг можно убрать только подбирая бонус который дается бафом и убирая излишек скажем у ланча в осадном мастерстве чтобы он четко был по радиусу осадки, можно добавить эффект радиуса и дать ему свойство -40 или -30 тем самым уменьшив погрешность в сервере.

Попрошу учитывать что в неподвижном и подвижном режиме результаты теста будут разными! При движении радиус атаки может значительно сократиться.

Думаю на этом все. Если есть вопросы пишите, попытаюсь ответить.

Категория: ---



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.