Learn · modules

Что такое пробивание в Minecraft? Объяснение, как проходить сквозь стены

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

TRtrolPublished 3 min read

Что такое Пробитие?

Пробитие — это боевой модуль, который позволяет атаке наносить урон даже тогда, когда между атакующим и целью находится твердый блок. В обычном бою в Minecraft сначала выполняется проверка: игра прослеживает линию от вас к цели, и если эта линия попадает в местность до того, как достигнет цели, атака не регистрируется. Пробитие эту проверку пропускает. Забор, стена, каменная плита — ничто из этого больше не имеет значения. Проверка либо проходит, либо нет, и Пробитие просто убирает это требование, что и делает его одной из самых простых вещей для сервера в обнаружении.

Как это работает

В ванильном Minecraft выполняется трассировка луча перед тем, как удар будет зафиксирован. Игра прослеживает прямую линию от атакующего игрока к цели и останавливается на первом твердом блоке, который эта линия касается. Если этот блок находится ближе к цели, чем сама цель, атака не попадает. Именно эта единственная проверка и является причиной того, что стена, закрытая дверь или даже столб забора обычно достаточно, чтобы удар не достиг цели.

Пробитие игнорирует или обходит луч, поэтому атака проходит так, будто блока и не было. Удаление не всегда полное. Некоторые реализации сохраняют столкновение с блоком для передвижения, но отключают его специально для боя, а некоторые лишь прекращают проверку на наличие сущностей на пути, а не на местность — более узкая версия той же идеи. В конечном итоге, во всех случаях, результат один: между двумя игроками стояло что-то твёрдое, но удар всё равно достиг цели

Пробивание против досягаемости

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

ПробитиеДальность
Что меняетТребование видимости по прямойПредел дальности удара
Работает черезСтены между игрокамиОткрытое пространство на любом расстоянии
ОбнаружениеПроверка луча серверомДальность удара по отношению к позиции

Почему серверы это ловят

Краткий ответ: проверка геометрическая и неоспоримая. В момент столкновения сервер может выполнить собственный трассировочный луч между фактическими позициями двух игроков. Если на этом пути находится твердая местность, нет никаких законных причин для того, чтобы удар все равно состоялся. В отличие от сглаживания досягаемости или поворота, где серверу приходится учитывать задержку и обычную человеческую неточность, стена либо была там, либо ее не было. Это оставляет очень мало места для ложных срабатываний, что также означает очень мало места для того, чтобы игрок смог избежать наказания.

Часто задаваемые вопросы