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

это невыносимо


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

1 минуту назад, Hello_My_Friend сказал:

Салам брат 

я короч уже перестал практически играть даж, не интересует уже, особенно, когда против тя каждый тип с лупером или манипулом ахаха, ты сам как

Ссылка на комментарий
4 минуты назад, Yonne сказал:

я короч уже перестал практически играть даж, не интересует уже, особенно, когда против тя каждый тип с лупером или манипулом ахаха, ты сам как

Я тож мало играю, скучно играть когда в поты заходят бвшеры набитые софтами 

Ссылка на комментарий
1 минуту назад, Hello_My_Friend сказал:

Я тож мало играю, скучно играть когда в поты заходят бвшеры набитые софтами 

против меня седня тип из асвертикса попался с лупером на 3.5 +- и тип который по кд тепается в тайминг с пингом 40 ахаха, норм короч

либо в эггварсо какой-нибудь переходить, норм режим впринципе

Ссылка на комментарий
  • 2 недели спустя...
22.06.2022 в 20:05, xtrafrancyz сказал:

Баг исправлен.

Он не связан с нашими оптимизациями и существовал еще с самых первых версий Minecraft.

Ниже написано описание причины бага для умных.

Клиент имеет особенность "тонуть" в пустоте, пока чанк не прогрузился и потихоньку опускается вниз. Когда чанк наконец прогружается, то может быть два исхода:
- Чанк загрузился до того как игрок провалился под блок
- Игрок успел провалиться в блок на всего 0.0625
- Игрок провалился еще глубже в блок

В первом случае все нормально, игрок просто приземляется на блок. В последнем случае игрока выталкивает на поверхность и все тоже нормально.

И наконец во втором случае происходит магия. Есть 2 стороны (клиент и сервер) и каждая из них воспринимает эту ситуацию по-своему.

Сервер при каждом перемещении игрока проверяет где тот находился в прошлой точке (в блоке или нет), затем проверяет находится ли новая точка внутри блока. Если игрок был не в блоке и перемещается в точку без блока - то это самое обычное движение, сервер принимает это.
Когда же игрок в прошлой точке находился не в блоке, а на месте новой точке уже находится блок - то сервер не принимает это перемещение и телепортирует игрока обратно, чтобы тот не мог зайти внутрь стены или перемещаться сквозь пол/потолок. Это и есть причина дергания, сервер не позволяет провалиться внутрь блока и возвращает игрока обратно.

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

И тут возникает вопрос - А почему сервер думает что игрок находится не в блоке, когда он провалился туда на 0.0625?
Дело в том, что при проверке пересечения хитбокса игрока с блоками, сервер уменьшает хитбокс игрока как раз на 0.0625. Скорее всего, это делается чтобы избавиться от ошибок связанных с погрешностью в вычислениях координат, но это совсем другая тема.

Предположим, координата Y игрока 51.99, это значит что игрок провалился внутрь блока на 0.01. С точки зрения сервера игрок не находится в блоке, так как 51.99+0.0625=52.0525 (хитбокс сжимается к центру, поэтому тут сложение), а на Y=52 уже нет никаких блоков. С точки зрения клиента игрок уже внутри блока и поэтому он его игнорирует и падает. Вот и получается вечное недопонимание сервера с клиентом.

Хорош, спасибо бро

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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