Перейти к публикации

ученые открыли способ стать топ пвпэшером за 23 минуты без читов и днсэов (дедов метод)


Рекомендованные сообщения

Опубликовано: (изменено)

Итак, эту тему мне вероятно следовало создавать в Тех. разделе, но тут ее увидят больше людей.

 

Все мы знаем про баг, когда одни игроки отлетают на 5 - 6 блоков, а другие с трудом на 0.5 - 1.5.

В данной теме я просто приведу свой перевод отрывка из одного комментария, объясняющего баг с отдачей (оригинальный текст).

То, что представляет из себя само предложение, находится после перевода.

 

 

Прошу заметить, что в данном переводе скорость означает velocity (векторная величина), а не speed (скалярная величина).

 

 


Игрок, подключившийся первым, получает правильную отдачу. Последний подключившийся получает меньше отдачи, если его бьет ранее подключившийся.
Это происходит потому, что сервер применяет "трение" к игроку каждый раз, когда получает movement-пакет от него. 
Пакеты игроков, подключившихся позднее, на сервере обрабатываются в промежутке между ударом ранее подключившегося игрока и отправкой пакетов синхронизации скорости клиенту, которые уже будут отличаться к концу тика.
Таким образом, каждый movement-пакет игрока, подключившегося позднее, в очереди сделает силу отдачи меньше, перед тем как отправить сам пакет отдачи клиенту.
Если каждый из этих пакетов говорит, что игрок касается земли, то будет применено трение с землей, которое уменьшит отдачу примерно в половину каждый тик; т.е. потребуется несколько movement-пакетов в очереди, чтобы сделать отдачу близкой к нулю.
 
Для игроков А и Б, подключившихся в том же порядке (Б после А), последовательность событий выглядит примерно так (на каждый тик):
 
сервер обрабатывает входящие пакеты от всех игроков в том порядке, в котором они подключились
сервер обрабатывает входящий пакет от А, который говорит атаковать Б, что изменяет скорость игрока Б на сервере (но еще не синхронизируется с клиентом)
сервер обрабатывает все пакеты от Б, сколько их ни было бы, включая те, что говорят, что игрок стоит на земле, и приминяет трение к скорости игрока Б после каждого такого пакета
сервер выполняет локальное обновление всех игроков (метод tick) (там использование предметов, сон, горение игрока - правка переводчика)
сервер видит, что скорость игрока Б изменилась, и отправляет пакет синхронизации.
 
А вот пакеты от Б при атаке игрока А обрабатываются после movement-пакетов игрока А, т.е. сила отдачи НЕ уменьшается перед тем, как быть отправленной клиенту в конце тика (и А получает всю отдачу).

 
Также в своем сообщение автор текста предоставляет ссылку на самый простой, по его мнению, фикс данной проблемы - патч Bukkit сервера.
Кроме того, он указывает, что лучшим решением проблемы было бы вовсе избавиться от работы со скоростью на стороне сервера, т.к. она используется только при работе с "гравитацией" и отдачей, и даже при этом работает ужасно неточно (в случае с отдачей). Клиент и так имеет полный контроль над движением, - что плохого, чтобы передать и полный контроль над скоростью?
Изменено пользователем mr_box
Опубликовано:

 

Итак, эту тему мне вероятно следовало создавать в разделе Тех. разделе, но тут ее увидят больше людей.

 

 

Все мы знаем про баг, когда одни игроки отлетают на 5 - 6 блоков, а другие с трудом на 0.5 - 1.5.

В данной теме я просто приведу перевод отрывка из одного комментария, объясняющего баг с отдачей (оригинальный текст).

 

 

Прошу заметить, что в данном переводе скорость означает velocity (векторная величина), а не speed (скалярная величина).

 


Игрок, подключившийся первым, получает правильную отдачу. Последний подключившийся получает меньше отдачи, если его бьет ранее подключившийся.
Это происходит потому, что сервер применяет "трение" к игроку каждый раз, когда получает movement-пакет от него. 
Пакеты игроков, подключившихся позднее, на сервере обрабатываются в промежутке между ударом ранее подключившегося игрока и отправкой пакетов синхронизации скорости клиенту, которые уже будут отличаться к концу тика.
Таким образом, каждый movement-пакет игрока, подключившегося позднее, в очереди сделает силу отдачи меньше, перед тем как отправить сам пакет отдачи клиенту.
Если каждый из этих пакетов говорит, что игрок касается земли, то будет применено трение с землей, которое уменьшит отдачу примерно в половину каждый тик; т.е. потребуется несколько movement-пакетов в очереди, чтобы сделать отдачу близкой к нулю.
 
Для игроков А и Б, подключившихся в том же порядке (Б после А), последовательность событий выглядит примерно так (на каждый тик):
 
сервер обрабатывает входящие пакеты от всех игроков в том порядке, в котором они подключились
сервер обрабатывает входящий пакет от А, который говорит атаковать Б, что изменяет скорость игрока Б на сервере (но еще не синхронизируется с клиентом)
сервер обрабатывает все пакеты от Б, сколько их ни было бы, включая те, что говорят, что игрок стоит на земле, и приминяет трение к скорости игрока Б после каждого такого пакета
сервер выполняет локальное обновление всех игроков (метод tick) (там использование предметов, сон, горение игрока - правка переводчика)
сервер видит, что скорость игрока Б изменилась, и отправляет пакет синхронизации.
 
А вот пакеты от Б при атаке игрока А обрабатываются после movement-пакетов игрока А, т.е. сила отдачи НЕ уменьшается перед тем, как быть отправленной клиенту в конце тика (и А получает всю отдачу).

 
Также в своем сообщение автор текста предоставляет ссылку на самый простой, по его мнению, фикс данной проблемы - патч для Bukkit сервера.
Кроме того, он указывает, что лучшим решением проблемы было бы вовсе избавиться от работы со скоростью на стороне сервера, т.к. она используется только при работе с "гравитацией" и отдачей, и даже при этом работает ужасно неточно (в случае с отдачей). Клиент и так имеет полный контроль над движением, - что плохого, чтобы передать и полный контроль над скоростью?

 

Довольно актуально. Как вышел ClashPoint то меня все как-то очень странно откидывали, а я их с трудом с мостика в 1 блок шириной скидывал. Долго не мог ничего с этим сделать, хотя на других мини играх все было нормально. Я долго искал способ решить эту проблему, и нашел - это ДНС сервера. Конечно же есть и такие ДНС сервера что дают почти нулевую отдачу, но тот что установил я, стабилизировал все и теперь я откидываюсь нормально, на блоков 3-4 и откидываю тоже нормально, так же на 3-4 блока.

Опубликовано: (изменено)

...

Прошу, когда цитируешь, в случае большой цитаты (очень часто, когда это первое сообщение темы), заменяй её многоточием.

 

Насчет актуальности могу отметить, что оригинал опубликован в 2014 году.

ДНС не решают проблему, они просто влияют на задержку; в основном отдача зависит от кол-ва пакетов, отправляемых клиентами и порядком их подключения, - пинг второстепенен.

Изменено пользователем mr_box
Опубликовано:

Спасибо!

эм. Суть тему не в том, чтобы все сразу начали этим пользоваться, а чтобы француз фиксанул это.

 

То, что представляет из себя само предложение, находится после перевода.

...

 

Также в своем сообщение автор текста предоставляет ссылку на самый простой, по его мнению, фикс данной проблемы - патч Bukkit сервера.
Кроме того, он указывает, что лучшим решением проблемы было бы вовсе избавиться от работы со скоростью на стороне сервера, т.к. она используется только при работе с "гравитацией" и отдачей, и даже при этом работает ужасно неточно (в случае с отдачей). Клиент и так имеет полный контроль над движением, - что плохого, чтобы передать и полный контроль над скоростью?

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...