Главный ресурс сервера Minecraft — время основного потока: на тик у него 50 мс, и всё, что туда попадает, отнимает запас у мобов, редстоуна и других плагинов. Поэтому важно не сколько процессора ест античит вообще, а сколько он забирает у основного потока. Измеряется это профайлером spark: найдите плагин античита в «Server thread» и посмотрите его долю.
Где работает античит: основной поток и сетевые
У сервера Paper один основной поток («Server thread»): он считает тик — движение сущностей, блоки, события плагинов. Параллельно работают сетевые потоки: они принимают и отправляют пакеты игроков и не ждут тика.
Античит может проверять игрока в любом из них. Если он слушает события Bukkit вроде движения игрока, работа идёт в основном потоке и тратит бюджет тика. Если он читает пакеты, например через PacketEvents, проверки можно считать прямо в сетевых потоках, и тик их почти не замечает.
| Основной поток | Сетевые потоки | |
|---|---|---|
| Что там происходит | Тик: сущности, блоки, события плагинов | Приём и отправка пакетов |
| Чем грозит тяжёлая работа | Растёт MSPT, падает TPS у всех игроков | Растёт загрузка процессора; TPS не страдает, пока хватает ядер |
| Как увидеть | spark, «Server thread» | spark с флагом --thread * |
Сетевые потоки тоже не бесплатны: на дешёвом хостинге, где ядра делят с соседями, лишняя нагрузка на них всё равно ощущается. Но это совсем другой порядок проблем, чем античит, который съедает тик.
Как измерить нагрузку
- 1
Выберите время
Пиковый онлайн, а не пустой сервер: нагрузка античита растёт с числом игроков, особенно в боях.
- 2
Снимите профиль
/spark profiler start --timeout 600— через 10 минут spark пришлёт ссылку на отчёт. На Paper 1.21+ spark встроен. - 3
Найдите античит в основном потоке
В отчёте откройте «Server thread» и включите вид «Sources»: у каждого плагина своё дерево. Доля античита в этом потоке — и есть его цена для тика.
- 4
Посмотрите остальные потоки
Снимите второй профиль с
--thread *, чтобы увидеть, сколько античит тратит в сетевых потоках. - 5
Сверьте с командой античита
Если у античита есть свой замер, сравните цифры. В DGuard это
/dguard perf— показывает, сколько времени занимают проверки.
/spark profiler start --timeout 600
/spark profiler start --thread * --timeout 600
/mspt
/dguard perfСколько ест DGuard
DGuard читает пакеты через PacketEvents и считает проверки в сетевых потоках, а не в основном, поэтому TPS держится на 20. На живом сервере это 0,03 % одного ядра на основном потоке: 0,38 мс из 10,9 мс тика при 121 игроке.
При этом за игроком одновременно следят 11 проверок и 80+ правил на всех фронтах: бой, движение, постройка и мир, инвентарь, пакеты. Не верьте цифрам на слово — снимите профиль на своём сервере и сверьте с /dguard perf.
Сеть и память
Память. Античит хранит историю каждого игрока: движение, удары, клики. Чем больше онлайн, тем больше этих данных. Если подозреваете, что память уходит в античит, /spark heapsummary покажет, какие классы её занимают, — по их именам видно, чей это плагин. Сколько памяти давать серверу вообще — в статье сколько оперативной памяти нужно.
Сеть. Некоторые античиты шлют игрокам служебные пакеты, чтобы точнее измерять задержку. Облачные проверки отправляют данные со своего сервера наружу — спросите, какие именно и сколько.
DGuard выходит к сайту DGuard по HTTPS за лицензией, обновлениями и облачной проверкой правил аима и TriggerBot. Для неё плагин отправляет игровые замеры — повороты камеры, позиции относительно случайной точки без координат мира, клики и удары — под случайными номерами сессий; они живут только в памяти и удаляются через 10 минут тишины. Ники, IP и чат остаются на вашем сервере, а журнал наказаний с никами попадает в панель, только если вы его включите. Без связи защита работает до 72 часов на сохранённой лицензии, кроме правил облачной проверки.
Как честно сравнить два античита
Сравнивать нагрузку по отзывам бесполезно: у каждого свой онлайн, режим и железо. Надёжнее поставить второй античит рядом с текущим на том же сервере. Тогда один профиль spark покажет оба плагина в виде «Sources» бок о бок — при одинаковом онлайне, в одних и тех же боях.
DGuard для этого и предлагает: поставьте его бесплатно рядом с текущим античитом — до 30 игроков онлайн без срока и без карты — и через неделю сравните и журналы, и профили. Как перейти потом без дыр в защите, описано в статье как сменить античит.
Что спросить у разработчика любого античита
- 1В каком потоке идут проверки и что остаётся в основном?
- 2Сколько миллисекунд основного потока занимает античит — на живом сервере, с каким онлайном? Цифра с пустого сервера ничего не говорит.
- 3Есть ли команда, которая показывает нагрузку прямо у вас?
- 4Что уходит в облако, как часто и что будет без интернета?
- 5Поддерживает ли он ваше ядро и версию? DGuard сделан для Paper и Leaf, список версий — на странице версий.
- 6Как он ведёт себя при просадках TPS: не банит ли за лаги? Подробнее — в статье почему античит банит честных игроков.
Сравнить, что античиты ловят, а не только сколько они стоят серверу, можно в сравнении по 47 видам читов и в статье какой античит выбрать.
Частые вопросы
Может ли античит лагать сервер?
Может, если делает тяжёлую работу в основном потоке: тогда растёт MSPT и падает TPS у всех. Античиты, которые проверяют пакеты в сетевых потоках, на тик почти не влияют.
Как узнать, сколько ресурсов ест плагин?
Запустите /spark profiler start --timeout 600 в пиковый онлайн, откройте отчёт, выберите «Server thread» и вид «Sources» — там видно долю каждого плагина в тике.
Сколько ресурсов ест DGuard?
Проверки DGuard считаются в сетевых потоках, поэтому TPS держится на 20. На живом сервере это 0,03 % одного ядра на основном потоке: 0,38 мс из 10,9 мс тика при 121 игроке. Проверить у себя можно командой /dguard perf.
Что делать, если после установки античита упал TPS?
Снимите профиль spark во время просадки и посмотрите долю античита в «Server thread». Если виноват он — отправьте ссылку на профиль разработчику; если нет — ищите причину среди сущностей, генерации чанков и других плагинов.
Нужен ли античиту интернет?
Зависит от античита. DGuard нужен исходящий HTTPS к сайту DGuard для лицензии, обновлений и облачной проверки аима и TriggerBot; без связи защита работает до 72 часов, кроме правил облачной проверки.