Leymooo / BungeeCord

BungeeCord with built in AntiBot protection (RUS lang)
http://www.rubukkit.org/threads/137038/
Other
78 stars 54 forks source link

Краш клиента | Invalid biome ID | Конфликт серверов 1.15.2- с клиентами 1.16.2+ #96

Closed Dymeth closed 2 years ago

Dymeth commented 2 years ago

Добрый день.

Хочу сообщить о проблеме конфликта серверов 1.15.2 и старше с клиентами 1.16.2 и новее при использовании ViaVersion на банже. При попытке войти на сервер в логах возникает огромное количество ошибок, связанных с некорректными ID биомов. На каких-то версиях клиент просто намертво зависает из-за количества ошибок, а на каких-то просто-напросто бросает критическое исключение, приводящее к крашу. Короче говоря, после возникновения проблемы продолжать игру уже не представляется возможным.

Как мне удалось выяснить, такое поведение происходит исключительно в том случае, если до этого игрок находился на сервере проверки на бота (т.е. вводил капчу или проходил проверку падением). Таким образом, при значении always-check: false ошибка происходит лишь при первом входе на сервер - т.е. после зависания/краша можно перезайти и начать игру. А вот при значении always-check: true проблема с клиентом возникает вообще каждый раз - игрок фактически теряет возможность попасть на сервер.

Поскольку мы говорим о том, что версия сервера старше, чем версия клиента, то на банже, соответственно, установлен ViaVersion.

Результаты моих тестов: Сервер 1.12.2-1.15.2 + клиент 1.16.1 -> проблемы нет Сервер 1.12.2-1.15.2 + клиент 1.16.2 -> проблема есть Сервер 1.16.5-1.17.1 + клиент 1.16.2 -> проблема есть

Таким образом, проблема с клиентами 1.16.2 и новее на серверах 1.15.2 и старше.

Ещё несколько моментов по результатам теста: 1) Закономерность прослеживается как на последнем релизе ботфильтра с RuBukkit, так и на актуальной версии с GitHub 2) Наличие/отсутствие ViaBackwards на банже никак не влияет на проблему 3) Все тесты проводились с использованием сервера Paper за банжой 4) На Paper 1.16-1.16.4 тесты провести не удалось, поскольку не нашёл билдов этой версии. Вполне вероятно, что 1.15.2 - не самая новая версия, с которой возникает проблема 5) Тип клиента - Vanilla/Optifine Vanilla значения не имеет 6) Данная проблема проявляется при использовании ViaVersion именно на банже. Если использовать его на серверах за банжой - данная проблема не наблюдается 7) При всех тестах в конфиге ViaVersion всегда указывались корректные протоколы серверов (секция bungee-servers)

Leymooo commented 2 years ago

Использовать виаверсию на банже как по мне такая идея. От банжи требуется просто перебрасывать пакеты и держать побольше игроков. Добавляя виа на банжу это начинает создавать проблемы. Первая - уменьшается количество игроков, которое банжа может выдержать, из-за преобразования пакетов под разные версии (Уменьшается максимальное количетсво пакетов в секунду, которое может обработать банжа) . Вторая - это сборщик мусора, виаверсия начинает активно использовать память, из-за чего чаще срабатывает gc, а это такая вещь, которая полностью стопит приложение, из-за чего появляются так называемые подлагивания.

А по поводу проблемы, скорее всего виаверсия не видит пакеты, которые отправляет ботфильтр клиенту во время проверки, из-за чего оно начинает неправильно преобразовывать пакеты. Разбираться в этом желания нету.

Dymeth commented 2 years ago

Использовать виаверсию на банже как по мне такая идея. От банжи требуется просто перебрасывать пакеты и держать побольше игроков. Добавляя виа на банжу это начинает создавать проблемы. Первая - уменьшается количество игроков, которое банжа может выдержать, из-за преобразования пакетов под разные версии (Уменьшается максимальное количетсво пакетов в секунду, которое может обработать банжа) . Вторая - это сборщик мусора, виаверсия начинает активно использовать память, из-за чего чаще срабатывает gc, а это такая вещь, которая полностью стопит приложение, из-за чего появляются так называемые подлагивания.

А по поводу проблемы, скорее всего виаверсия не видит пакеты, которые отправляет ботфильтр клиенту во время проверки, из-за чего оно начинает неправильно преобразовывать пакеты. Разбираться в этом желания нету.

В таком случае предлагаю добавить на RuBukkit/в README рекомендацию использовать ViaVersion только на серверах за банжой с ссылкой на данный issue, после чего закрыть данное обращение и забыть о проблеме