Что нового?
Контент посвященный гайдам по оптимизации.
1720798397484.png


Перед началом, хотелось бы сказать пару слов. Это перевод оригинальной статьи от Paper Chan с которой вы можете ознакомиться тут. Данная статья очень большая и её перевод с сохранением смысловой нагрузки, а так же с сохранением технического языка, довольно трудоемок. На данный момент переведено 75% всей статьи. Перевод идёт до пункта "Paper Configs". Перевод дальше будет добавляться постепенно. Адаптация данной статьи на русский язык занимает очень много времени, зато это будет сильно лучше, чем самописные гайды от третьих лиц. Так же не исключены ошибки в форматировании, словах, если вы такие находите, пожалуйста сообщите мне об этом в Telegram.

КОПИРОВАТЬ ПЕРЕВОД ЗАПРЕЩЕНО, ПРИ УПОМИНАНИИ УКАЗЫВАЙТЕ АВТОРА ПЕРЕВОДА!

Answer

Спасибо большое тебе Типлурка за такой огромный труд, в качестве благодарности, оставлю ссылку на твой донейшен, чтобы поддержать тебя копейкой.


Введение

Это руководство по оптимизации сервера Minecraft написано в стиле пошагового руководства. Оно разработано, чтобы расширить информацию, предоставленную в официальной документации, и уделить дополнительное внимание изменениям в игровом процессе и потенциальным побочным эффектам, которые могут возникнуть при оптимизации. Его цель - дать более глубокое понимание работы сервера Minecraft, а не просто предоставить заранее определенные значения, которые часто приносят больше вреда, чем пользы. Надеюсь, это руководство даст вам полезные инсайты!

Последнее обновление: 7 июля 2024 года для Paper версии 1.21, билд #47



Настройки и Оптимизации

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


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



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


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

Даже если вы не планируете устанавливать границу мира, все равно рекомендуется предварительно сгенерировать 5-10 тысяч блоков от точки спавна, так как это поможет снизить нагрузку на сервер в день запуска. Не говоря уже о том, что это поможет выявить потенциальные ошибки генерации до фактического дня запуска.

Скачайте Chunky и ChunkyBorder от pop4959
Chunky - это самый простой плагин для предварительной генерации, и в сочетании с ChunkyBorder вы можете настроить границы по своему вкусу.


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



Выбор оптимального расстояния видимости и расстояния симуляции
simulation-distance определяет, насколько активна (тикающая) окружающая среда вокруг игрока.
view-distance определяет, сколько чанков (территории) видно игроку.

simulation-distance сильно влияет на производительность, поэтому уменьшение этого значения поможет поддерживать работу сервера без задержек. Значение по умолчанию для Vanilla Minecraft - 10, и большинство ферм, представленных на YouTube, основываются на этом значении. Уменьшение этого значения повлияет на эти фермы, о чем мы поговорим позже. Лично я не рекомендую опускаться ниже 5, чтобы игровой процесс оставался приятным; однако, если вы играете в мини-игры или Skyblock, вы можете уменьшить его еще больше.

view-distance обеспечивает дальнейший обзор чанков и не так сильно влияет на производительность, как simulation-distance, но требует больше оперативной памяти; увеличивайте значение постепенно, чтобы найти оптимальное значение для вашего сервера, если решите его увеличить.

Кроме того, вы можете задать отдельные значения для каждого мира в spigot.yml, чтобы переопределить настройки server.properties.(Мы рассмотрим, как правильно настроить это в разделе конфигурации для каждого мира позже)



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

Идеально, если вы будете поддерживать общий тик существ на уровне менее 30% (предполагая, что присутствует разумное количество активности игроков, а не просто пустой сервер).
Spark - отличный инструмент для нахождения источников лагов и сравнения результатов оптимизации.



Будьте в курсе последствий ваших изменений
Каждое изменение влечет за собой компромисс! Большинство ваших игроков просто копируют популярные конструкции ферм блок за блоком, не зная, как они на самом деле работают. Поэтому важно, чтобы вы, как владелец сервера, понимали последствия ваших изменений, чтобы вы могли лучше объяснить их игрокам. В следующем руководстве я постараюсь объяснить влияние каждого изменения и как справляться с компромиссами.


Разбираемся в механике спавна мобов
Ниже представлена демонстрация того, как работает спавн мобов вокруг игрока. График и указанные значения основаны на настройках по умолчанию для Vanilla/Paper.

1720787796471.png
Объяснение графика:
  • Коричневые цилиндры указывают на диапазон спавна мобов.
  • Красная сфера указывает на зону спавна мобов (между 24 и 128 блоками).
  • Желтая сфера указывает на зону, свободную от мобов, так как мобы не будут спавниться так близко к игроку (24 блока).
  • Любой объект, который находится в пределах кольца 32 блоков (диапазон активации сущностей), будет тикать с нормальной скоростью.
  • Любой объект, который находится в пределах кольца от 32 до 128 блоков, будет тикать с пониженной скоростью.
  • Любой объект, который находится за пределами 128 блока, мгновенно деспавнится.

💡 Любое изменение настроек ниже требует соответствующей корректировки общего размера фермы и ее предназначенного места для AFK.

Значения по умолчанию для Vanilla / Paper:
  • View Distance: 10 (чанков)
  • Simulation Distance: 10 (чанков)
  • Mob Spawn Range: 8 (чанков)
  • Despawn Range (soft): 32 (блока)
  • Despawn Range (hard): 128 (блоков)
  • entity activation range: 32 (блока)
Пять вышеупомянутых параметров конфигурации тесно связаны друг с другом, и крайне важно, чтобы каждое значение было настроено правильно.
  • Simulation distance определяет максимальный возможный размер фермы, так как область за пределами этого диапазона не будет тикать.
  • Ферма не может превышать радиус (simulation distance -1)х16 блоков. Всё, что находится за пределами simulation distance, не будет тикать, поэтому любая ферма, превышающая это значение, не будет функционировать.
Mob spawn range также определяет максимальный размер фермы, так как мобы не будут спавниться за пределами этого диапазона.
  • Mob Spawn Range должен быть между (simulation distance -1) и минимум 3.
  • Если вы используете значение simulation distance по умолчанию (10), вы можете оставить mob spawn range на уровне 8 или ниже.
  • Мобы могут спавниться минимум в 24 блоках от игроков, поэтому установка mob spawn range ниже 3 категорически не рекомендуется, если ваше simulation distance не составляет 3 или меньше.
  • Каждая ферма мобов имеет платформу для сбора мобов, размер которой определяется исключительно этим значением (в чанках).
Despawn Range (hard) или hard-despawn-range - это самое дальнее расстояние, на котором моб может существовать без мгновенного деспавна.
  • Значение hard despawn-range определяет идеальное место для AFK на ферме.
  • Это значение составляет 128 блоков для значений по умолчанию Vanilla.
  • (Большинство конструкций ферм устанавливают место для AFK чуть ниже этого значения.)
  • Уменьшение этого значения ниже значений по умолчанию Vanilla означает, что места для AFK на фермах мобов также должны быть скорректированы в пределах нового hard despawn-range, так как ограничение диапазона применяется как горизонтально, так и вертикально. (Дополнительные важные примечания находятся в следующем разделе...)
  • Идеально, если hard despawn-range будет равен вашему (mob-spawn-range)x16 блоков и никогда не будет ниже.
    (Это предотвращает дополнительную работу сервера по спавну моба, который мгновенно деспавнится, так как находится за пределами жесткого диапазона деспавна.)
  • entity-activation-range должен быть последним параметром, который следует изменять, так как он имеет значительное влияние на поведение в игре.
При устранении неполадок, связанных с работой фермы, обязательно проверяйте каждую из вышеупомянутых конфигураций и вносите необходимые изменения в конструкцию фермы соответственно. Не копируйте и не вставляйте конструкции из уроков на YouTube блок за блоком, не принимая во внимание эти конфигурации.

Посмотрите Paper Chan’s Little Guide to fix your Nether farm для примера пошагового устранения распространенных неполадок.

Используйте команды /paper mobcaps и /paper playermobcaps для получения дополнительных сведений о спавне мобов вокруг игрока. Это особенно полезно для нахождения ошибок в предотвращении спавна.


1720788923507.png
Видео ниже предоставляет детальное объяснение механики спавна мобов, представленной Nico is LOST. Настоятельно рекомендуется его посмотреть.

Использование науки для МАКСИМИЗАЦИИ алгоритма спавна мобов




Почему моя ферма, построенная в более старой версии, работает медленнее, хотя ничего не изменилось?
Minecraft проверяет возможность спавна между самым низким блоком и самым высоким блоком (от Y0 до Y265 в версии 1.17), чтобы проверить, подходит ли блок для попытки спавна, и затем у него есть 24% шанс на успешный спавн на этой конкретной Y-позиции. Фермы разрабатываются на основе этого правила, и их идеальное расположение выбирается соответственно.

Большой периметр — Создание большого периметра вокруг вашей фермы исключает все другие возможные места спавна, кроме обозначенного места на платформе фермы. (Это можно увидеть на сервере SciCraft и в большинстве уроков по созданию ферм, где используется плоский мир в режиме пустоты для демонстрации.)

Ферма эндерменов на уровне Y0 — Фермы эндерменов рекомендуется строить на уровне Y0, так как это самое эффективное место.

Ферма в Нижнем мире над крышей Нижнего мира — Фермы в Нижнем мире обычно строятся высоко над крышей Нижнего мира, так как создание большого периметра затруднено из-за большого количества лавы. Поднявшись выше на крыше Нижнего мира, вы перемещаете свою сферу деспавна высоко в небо, чтобы исключить все возможности спавна мобов вне вашей платформы фермы.

С учетом сказанного, ваша ферма может быть менее эффективной сейчас из-за изменения высоты мира. Вместо проверки возможности спавна от Y0 до Y265, теперь проверка идет от Y-64 до Y320, чтобы найти самый низкий и самый высокий блок для попыток спавна. Ваша ферма, построенная в версии 1.17 на уровне Y0, теперь имеет дополнительные 64 блока ниже, что замедляет спавн мобов.


КАК УМЕНЬШИТЬ ПРОБЛЕМЫ…

Постройте свою ферму на самой низкой точке мира, которая теперь находится на уровне Y-64. (Это самое идеальное решение, но также самое болезненное).

Выкопайте еще больший периметр и очистите все ниже фермы от Y-64 до Y0 (только воздушные блоки).

Попытки спавна мобов происходят во всех загруженных чанках с определенными spawn-limit, указанными в bukkit.yml (или paper-world-defaults).

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


💡 TL;DR Самое эффективное место для фермы — на самом низком возможном уровне Y с воздушными блоками сверху. Из-за изменения высоты мира ваша ферма больше не находится в самом идеальном месте.



Server.Properties

Важные настройки для Server.Properties

server.properties/view-distance

view-distance=10
Это устанавливает дистанцию обзора (только местности) сервера, если иное не указано в spigot.yml.


simulation-distance=10
Это устанавливает дистанцию симуляции (тикания) сервера, если иное не указано в spigot.yml.

Выбор подходящей комбинации дистанций обзора и симуляции чрезвычайно важен.
Если вы решите снизить view-distance и simulation-distance, обратитесь к разделу «Как работает спавн мобов», чтобы убедиться, что все остальные настройки скорректированы соответственно.


  • simulation-distance всегда должна быть равной или ниже view-distance.
    (Если дистанция симуляции установлена выше дистанции обзора, будет применена только область до дистанции обзора.)
  • Рекомендуется не снижать эти значения ниже 5.

Если вы хотите предоставить игрокам большую видимость местности, учтите, что каждое увеличение на 1 после 10 экспоненциально увеличивает общее количество загружаемых чанков вокруг игрока. Формула для расчета общего количества загружаемых чанков одним игроком: [(ViewDistance+2)×2+1]^2.
  • Для view-distance=10 (по умолчанию Vanilla) один игрок загрузит 625 чанков.
  • Для view-distance=5 один игрок загрузит 225 чанков.
  • Для view-distance=15 один игрок загрузит 1225 чанков.
Хотя view-distance использует значительно меньше ресурсов по сравнению с simulation-distance, все же обратите внимание на его влияние на производительность, особенно на больших серверах, где каждая экономия ресурсов важна.

  • Кроме того, вы можете переопределить/установить view-distance и simulation-distance для каждого мира в spigot.yml. Мы рассмотрим это в разделе конфигурации для каждого мира позже.
    Например, вы можете установить более высокую view-distance в измерении the_end, что сделает навигацию через пустоту с помощью Elytra гораздо более приятной для ваших игроков.

💡 Поощряйте своих игроков устанавливать Fabric модлоадеры с клиентскими модами, такими как Bobby или Farsight, чтобы кэшировать виды чанков локально без затрат на производительность сервера!



server.properties/allow-flight
allow-flight=true
Это предотвращает кикание игроков сервером за «полет» при езде на лошади или подъеме по строительным лесам.

Установка этой опции в значение true не означает, что все смогут летать, это просто значит, что игроки не будут кикаться, если сервер подумает, что они летают.



Bukkit.yml
Важные настройки для Bukkit.yml

bukkit.yml/spawn-limits
bukkit.yml/spawn-limits:
spawn-limits:
  monsters: 70
  animals: 10
  water-animals: 5
  water-ambient: 20
  water-underground-creature: 5
  axolotls: 5
  ambient: 15

Этот раздел определяет лимиты спавна мобов на вашем сервере. Снижение значения здесь оказывает наиболее прямое влияние на производительность сервера, так как сущности являются одной из самых ресурсоемких задач, которые серверу приходится обрабатывать.
Глобальный лимит сущностей будет масштабироваться в зависимости от количества онлайн-игроков, если в paper-world-defaults.yml установлено значение per-player-mob-spawns=true. При наличии допустимых мест спавна вокруг игрока сервер будет пытаться спавнить сущности до достижения лимита спавна.

Лимит спавна также можно установить для каждого мира. Пожалуйста, ознакомьтесь с разделом конфигурации для каждого мира для получения дополнительной информации.



💡Чтобы поддерживать плотность мобов, приближенную к значению по умолчанию в Vanilla, также измените mob-spawn-range в spigot.yml соответственно для достижения этого эффекта.


Например, если я хочу установить лимит спавна монстров на 45 и при этом сохранить плотность мобов примерно такой же, как раньше, я решу уравнение ниже:

(Default mob Cap) : (Default Spawn Area) = (New Mob Cap) : (New Spawn Area)
(Лимит мобов по умолчанию) : (Область спавна по умолчанию) = (Новый лимит мобов) : (Новая область спавна)

где постоянные:

Default Mob Spawn Range = 8 chunks
Минимальное расстояние, на котором могут спавниться мобы = 24 блока от игрока

Default Spawn Area = [ (Mob Spawn Range x2 x16) +1]^2 - ( 24 x2 +1 )^2 = (8x2x16+1)^2 - 49^2 = 66049 - 2401 = 63648
Область спавна по умолчанию = [(Mob Spawn Range x2 x16) +1]^2 - (24 x2 +1)^2 = (8x2x16+1)^2 - 49^2 = 66049 - 2401 = 63648

70:63648 = 45:b ; where b = New Spawn Area (in blocks)
70:63648 = 45:b ; где b = Новая область спавна (в блоках)

63648 x 45 = 70b

b = 40916

Let a = New Mob Spawn Range, where b = [ (a x16 x2) +1]^2 - (24 x2 +1)^2, and b = 40916
Пусть a = Новая дистанция спавна мобов, где b = [(a x16 x2) +1]^2 - (24 x2 +1)^2, и b = 40916

(32a +1)^2 - 2401 = 40916

(32a +1)^2 = 43317

32a +1 = 208

32a = 207

a = 6.46

Я установлю mob-spawn-range на 6 (или 7) в spigot.yml


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

Общее количество объектов (%)
Рекомендуемый spawn-limit в bukkit.yml
Рекомендуемый mob-spawn-range в spigot.yml
Фактическое расчетное количество
100% (Vanilla)
70 (default)
8 (default)
8 (default)
90%
63
7 или 8
7.6
80%
56
7
7.18
70%
49
6 или 7
6.74
60%
42
6
6.26
50%
35
5 или 6
5.75
40%
28
5
5.18
30%
21
4 или 5
4.55
20%
14
4
3.81
10%
7
3
2.89
3%
2
Пожалуйста обновите своё серверное оборудование
Мой умный холодильник Samsung может обрабатывать больше сущностей чем твоя жестянка.


Рекомендуемые выше числа предназначены для поддержания плотности мобов, аналогичной Vanilla. Не стесняйтесь придумывать свои собственные числа, которые подходят вашему серверу. Для других категорий никогда не будет идеального числа, так как такие сущности, как овцы, коровы и рыбы, имеют более сложные правила спавна и дополнительные механики. Создайте отчет Spark, проанализируйте его и внесите необходимые корректировки.

💡Снижение лимитов спавна мобов до 50% от значения Vanilla в большинстве случаев будет малозаметно. Если вам трудно определиться с числом, начните с 35, а затем уточните его.

Проблемы с производительностью, связанными с сущностями?

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

  • В идеале, сущности должны занимать менее 30% вашего тика, и если вы видите высокое время тика, затрачиваемое на спавн мобов, это значит, что ваш лимит сущностей слишком высок, уменьшите его соответственно.
    В идеале, вы хотите, чтобы плотность мобов была как можно ближе к Vanilla, поддерживая при этом менее 50 mspt в среднем в пиковый час. Продолжайте уменьшать значение, пока не достигнете этого, если вы не можете поддерживать его с заданным значением.
  • Пока мобы мгновенно убиваются на ферме, выход фермы должен быть примерно таким же, как в Vanilla Minecraft, при условии, что конструкция фермы скорректирована соответственно.
  • Обратите внимание, что ограничения здесь применяются только к естественно спавнящимся сущностям. Сущности, создаваемые с помощью специальных механизмов спавна, таких как дублирование аллеев, Железные Големы от болтовни жителей, Стражи в Океанических Монументах, не ограничены этой конфигурацией. Для их правильного ограничения требуется плагин.

Каждая сущность в игре попадает в 1 из 7 категорий, перечисленных ниже

  • Категория monster включает: Husk, Witch, Zombie, Guardian, Giant, Warden, Wither, Magma Cube, Evoker, Skeleton, Shulker, Ravager, Elder Guardian, Pillager, Phantom, Zombified Piglin, Endermite, Ghast, Drowned, Illusioner, Zoglin, Wither Skeleton, Vex, Spider, Piglin Brute, Silverfish, Blaze, Vindicator, Zombie Villager, Creeper, Bogged, Stray, Slime, Hoglin, Breeze, Piglin, Cave Spider, Enderman, Ender Dragon.
  • Категория animals или creature включает: Allay, Goat, Wolf, Polar Bear, Zombie Horse, Strider, Horse, Trutle, Frog, Bee, Llama, Pig, Panda, Rabbit, Sheep, Cat, Fox, Tadpole, Sniffer, Cow, Ocelot, Parrot, Skeleton Horse, Mule, Camel, Wandering Trader, Chicken, Mooshroom, Armadillo, Donkey, Trader Llama.
  • Категория ambient включает: bat. Летучая мышь бесполезна.
  • Категория water-animals или water_creature включает: squid и dolphins.
  • Категория water-ambient включает: cod, pufferfish, salmon, tropical fish.
  • Категория water-undeground-creature или undeground_water_creature включает: Glow Squid.
  • Категория axolotl включает: Axolotl.
  • Категория misc включает: Boat, Snow Golem, Evoker Fangs, Trident, Minecart with Command Block, Minecart with Hopper, Thrown Egg, Glow Item Frame, Firework Rocket, Item Display, End Crystal, Leash Knot, Eye of Ender, Painting, Minecart with Monster Spawner, Shulker Bullet, Snowball, Boat with Chest, Item Frame, Primed TNT, Wither Skull, Lightning Bolt, Minecart with Chest, Small Fireball, Potion, Falling Block, Llama Spit, Spectral Arrow, Wind Charge, Minecart, Item, Fishing Bobber, Interaction, Ominous Item Spawner, Player, Arrow, Minecart with Furnace, Block Display, Thrown Bottle o' Enchanting. Thrown Ender Pearl, Area Effect Cloud, Armor Stand, Marker, Minecart with TNT, Experience Orb, Text Display, Dragon Fireball, Villager, Iron Golem, Wind Charge, Fireball
Некоторые категории имеют два разных названия из-за того, что Paper использует правильные имена в связанных paper configs, в то время как bukkit.yml все еще использует старые имена.

💡Каждая сущность будет отображаться индивидуально в отчете Spark, вы можете вносить необходимые коррективы в зависимости от их категорий.

💡Летучая мышь — единственная сущность в категории амбиентов, и у нее нет игровой функциональности, так что можно безопасно установить значение амбиентов на ноль для значительной экономии производительности.


Сложные сущности, такие как деревенские жители, являются очень ресурсоемкими 🔗

Деревенские жители создаются с деревенскими структурами и разводятся игроками. Они являются сущностями, которые вызывают множество проблем с производительностью на большинстве серверов Minecraft. Поскольку они не ограничены параметрами конфигурации в bukkit.yml, упомянутыми выше, использование рекомендованных методов для искусственного контроля их популяций и их влияния на сервер настоятельно рекомендуется. Это изменение в игровом процессе Vanilla, но, к сожалению, необходимо, так как большинство игроков не экономят ресурсы и создают слишком много деревенских жителей.

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


  1. Попытки снизить villager tick-rates, чтобы уменьшить нагрузку на сервер.
  2. Введение жесткого лимита с помощью плагинов типа farm-limitor, а затем четко сообщите игрокам об этом лимите, чтобы они могли скорректировать свой стиль игры.
  3. Использование плагина для динамического удаления ИИ у деревенских жителей, если они используются в качестве торговых залов.
  4. Введение различных способов получения добычи игроками, что значительно уменьшит потребность в торговых комнат, создаваемых игроками. Это может включать общественный торговый зал, глобальный магазин администратора с добычей от деревенских жителей или настройку таблицы лута странствующего торговца с превосходными предметами.


bukkit.yml/ticks-per

bukkit.yml/ticks-per:
ticks-per:
  animal-spawns: 400
  monster-spawns: 1
  water-spawns: 1
  water-ambient-spawns: 1
  water-underground-creature-spawns: 1
  axolotl-spawns: 1
  ambient-spawns: 1
  autosave: 6000

Этот раздел определяет частоту каждой категории сущностей, пытающихся заспавниться (значение в тиках).

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

Расчет и проверка спавна сущностей требует ресурсов, и всегда лучше сначала уменьшить общий лимит сущностей в лимитах спавна, а затем увеличить количество тиков на конфигурацию здесь в качестве вторичной меры. Пожалуйста, используйте команды /paper mobcaps и /paper playermobcaps для мониторинга и обеспечения того, чтобы лимит сущностей всегда достигался. Если ваш лимит сущностей не может быть достигнут своевременно, это, вероятно, признак того, что ваши лимиты спавна слишком высоки и/или ваш радиус спавна слишком мал.


  • Если вы замечаете большее, чем обычно, количество тиков, затрачиваемых на спавн сущностей в вашем отчете Spark, ваши лимиты спавна могут быть слишком высокими. Уменьшите лимит сущностей в разделе выше, чтобы лимит мог быть достигнут.
  • Для режимов игры Skyblock / Oneblock это особенно важно, так как серверу трудно достигнуть лимита сущностей из-за ограниченной зоны спавна (что означает, что сервер постоянно пытается спавнить больше сущностей). Пожалуйста, настройте конфигурации соответствующим образом для решения этой проблемы.

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

💡 Рекомендуется устанавливать частоту тиков на основе каждого мира для решения проблем, специфичных для отдельных миров, используя опции Paper на основе каждого мира.

paper-world-defaults.yml/entities.spawning.ticks-per-spawn
paper-world-defaults.yml/entities.spawning.ticks-per-spawn:
entities:
  spawning:
    ticks-per-spawn:
      ambient: -1
      axolotls: -1
      creature: -1
      monster: -1
      underground_water_creature: -1
      water_ambient: -1
      water_creature: -1

Вышеуказанные настройки могут быть индивидуально определены в файле [world folder]/paper-world.yml, чтобы служить переопределениями для стандартной конфигурации. Это позволяет владельцам серверов точно настраивать интервалы между каждой попыткой спавна на основе каждого мира.


SPIGOT.YML

ОСНОВНЫЕ КОНФИГУРАЦИИ ДЛЯ SPIGOT.YML

spigot.yml/world-settings.default.view-distance

spigot.yml/world-settings.default.view-distance:
view-distance: default
simulation-distance: default

Это служит для переопределения аналогичной конфигурации в файле server.properties

Установка значения здесь переопределит значение в server.properties
Значение "default" указывает серверу использовать значение из server.properties

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




spigot.yml/world-settings.default.mob-spawn-range

spigot.yml/world-settings.default.mob-spawn-range:
mob-spawn-range: 8

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

Как упоминалось ранее в разделе bukkit.yml, это значение можно изменить для настройки видимой плотности мобов.

Это значение всегда должно быть установлено на максимум (Simulation Distance - 1) с минимумом 3, так как любые сущности за пределами симуляционного расстояния и соседнего чанка не будут обновляться (см. заметку ниже).

Если вы используете стандартное симуляционное расстояние Vanilla по умолчанию 10, вы можете настроить число между 8~3, не следуя вышеуказанному правилу.

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

Например, если у вас симуляционное расстояние 6, ваш радиус спавна мобов можно установить между 3~5.

Технически 3 не является минимальным значением, но из-за того, что мобы не будут спавниться в пределах 24 блоков вокруг игрока, нет смысла ставить значение ниже 3, так как это значительно уменьшит спавновую зону и лимит сущностей может не достигаться в крайнем случае.

Обратитесь к разделу "Понимание спавна сущностей" для полной информации.




spigot.yml/world-settings.default.nerf-spawner-mobs

spigot.yml/world-settings.default.nerf-spawner-mobs:
nerf-spawner-mobs: false

Эта настройка удаляет ИИ у мобов, спавнящихся из спавнера. Если ваш сервер позволяет игрокам перемещать спавнеры, установка этой опции в true может уменьшить лаг.

Также включите spawner-nerfed-mobs-should-jump в true в paper-world-defaults.yml, если вы решите включить это. Это позволит мобам прыгать, чтобы определенные фермы оставались функциональными.



spigot.yml/world-settings.default.entity-tracking-range

spigot.yml/world-settings.default.entity-tracking-range:
entity-tracking-range:
  players: 128
  animals: 96
  monsters: 96
  misc: 96
  display: 128
  other: 64

entity-tracking-range определяет, на каком расстоянии в блоках сущность отслеживается и отправляется клиенту, чтобы игроки могли их видеть.

Paper предоставляет эти опции, чтобы вы могли решить, на каком расстоянии сущность должна отслеживаться (отображаться клиенту), вместо того чтобы отслеживать все до граничных чанков (simulation-distance -1). Это оптимизированное решение для борьбы с дорогими обновлениями сущностей.

Вы можете найти связанные с этим улучшения производительности в вашем отчете Spark, указанные как Chunk provider tick.
tracker stage 1 - отслеживание сущностей.
tracker stage 2 - трансляция изменений отслеживания сущностей.

Если тик Chunk provider занимает значительное количество ресурсов, сначала попробуйте уменьшить общее количество сущностей, затем уменьшите симуляционное расстояние; и если ничего не помогает, уменьшите радиус отслеживания как последний вариант.




Для сервера с достаточным оборудованием для поддержки этого может быть выгодно увеличить радиус отслеживания сущностей, чтобы улучшить игровой опыт. Значение указано в блоках, и если вы решите увеличить его, пожалуйста, держите его на уровне не выше (simulation distance-1)x16.

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

Кроме того, Paper позволяет владельцам серверов определить вертикальное значение Y для радиуса отслеживания сущностей в paper-world-defaults.yml/entities.tracking-range-y, если вы хотите, чтобы сущности появлялись или исчезали быстрее.

Категории радиуса отслеживания сущностей:

  • player: состоит из игроков.
  • monster: состоит из монстров, налетчиков и летающих монстров.
  • animal: состоит из деревенских жителей, водных животных и животных.
  • misc: состоит из рамок для предметов, картин, знаков, выпавших предметов, шаров опыта.
  • display: состоит из отображаемых сущностей.
  • other: состоит из всего остального (например, стойки для доспехов).
Значение указано в блоках и должно всегда быть установлено на максимум (simulation-distance -1)x16 и не ниже 1.
(БОНУС-факт: Установка значения в 0 скрывает все сущности; установка значения в -1 делает все сущности практически невидимыми! Пожалуйста, не делайте этого)

Если у вас возникают невидимые атаки гастов, это может быть симптомом того, что ваш entity-tracking-range для monster установлен слишком низко.


  • Кроме того, проверьте клиентские настройки в Options>Video Settings>Entity Distance и убедитесь, что они установлены достаточно высоко, чтобы показать гастов.

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



spigot.yml/world-settings.default.entity-activation-range
spigot.yml/world-settings.default.entity-activation-range:
entity-activation-range:
  animals: 32
  monsters: 32
  raiders: 64
  misc: 16
  water: 16
  villagers: 32
  flying-monsters: 32
  wake-up-inactive:
    animals-max-per-tick: 4
    animals-every: 1200
    animals-for: 100
    monsters-max-per-tick: 8
    monsters-every: 400
    monsters-for: 100
    villagers-max-per-tick: 4
    villagers-every: 600
    villagers-for: 100
    flying-monsters-max-per-tick: 8
    flying-monsters-every: 200
    flying-monsters-for: 100
  villagers-work-immunity-after: 100
  villagers-work-immunity-for: 20
  villagers-active-for-panic: true
  tick-inactive-villagers: true
  ignore-spectators: false

entity-activation-range определяет, на каком расстоянии (в блоках) сущность должна быть активирована.

Любая сущность за пределами этой зоны будет обновляться с уменьшенной частотой.

Эти значения всегда должны быть установлены на максимум (simulation-distance - 1)x16 и не ниже 16, если вы используете очень низкое симуляционное расстояние/видимость на вашем сервере.


💡 Изменение радиуса активации повлияет на все аспекты игрового процесса, так как многие механики зависят от этого для правильной работы, поэтому будьте осторожны.

Значение -1 для соответствующих категорий, перечисленных в entity-activation-range, отключает эту функцию для этой категории и восстанавливает поведение до Vanilla; однако, это наносит большой удар по производительности вашего сервера. Делайте это на свой страх и риск и только в случае крайней необходимости.

Снижение радиуса активации сущностей должно быть последним средством...
Сначала вы должны уменьшить общее количество сущностей и симуляционное расстояние/видимость, если ваш сервер по-прежнему имеет проблемы с производительностью.

tick-inactive-villager может быть изменен на false, если вы не хотите обрабатывать всех деревенских жителей, которые загружены, но находятся за пределами зоны активации. Другими словами, только деревенские жители, находящиеся в зоне активации, будут активны.


  • Однако, это может уменьшить эффективность ферм железных големов, если игрок не находится рядом.
  • Таймер перезарядки торговли деревенских жителей не будет уменьшаться, если поблизости нет игрока.



spigot.yml/world-settings.default.entity-activation-range.wake-up-inactive

Рабочий иммунитет и пробуждение неактивных реализованы в Paper с целью придания большей активности миру, позволяя определенным сущностям "просыпаться" и выполнять некоторые действия в течение определенного времени. Это позволяет деревенским жителям пополнять запасы, находить работу и т.д.

Измените max-per-tick на 0, если вы не хотите такого поведения для данной категории.
Нажмите здесь, чтобы прочитать сообщение о коммите EAR на Github

Для более подробного объяснения мы используем следующий фрагмент wake-up-inactive в качестве примера, чтобы помочь вам лучше понять этот механизм.
YAML:
wake-up-inactive:
  villagers-max-per-tick: 4
  villagers-every: 600
  villagers-for: 100
villagers-work-immunity-after: 120
villagers-work-immunity-for: 20

Указанная выше настройка переводится в следующее поведение...

Каждые 600 игровых тиков существует вероятность того, что до 4 случайно выбранных загруженных деревенских жителей, которые не были активны в течение 120 тиков, "проснутся" на 100 тиков, в течение которых они смогут выполнять действия в течение 20 тиков, не подвергаясь замораживанию из-за слишком большого расстояния от игроков.

Чтобы отключить рабочий иммунитет, установите villagers-work-immunity-after в 0, но обратите внимание, что это сломает деревенских жителей.



spigot.yml/world-settings.default.merge-radius
spigot.yml/world-settings.default.merge-radius:
merge-radius:item: -1
exp: -1

По умолчанию Paper следует той же механике объединения, что и Vanilla Minecraft в версии 1.21.

Начиная с версии Paper 1.21 build #38, поведение объединения было восстановлено в соответствии с Vanilla Minecraft (-1 означает значение по умолчанию). Чтобы полностью понять, как работает объединение опыта, посмотрите это видео от Nico is LOST. В нем есть подробное объяснение механики объединения в Vanilla.

Если вы решите использовать функцию объединения Craftbukkit/Spigot, значение указывается в блоках, настройте его соответственно вашим потребностям. Кроме того, вы можете вручную задать значение в config/paper-world-defaults.yml/entities.behavior.experience-merge-max-value, если вы хотите продолжать объединение сфер опыта, но с установленным максимальным значением на сферу.


💡 Сохранение механики Vanilla полезно, так как изменение значения здесь приведет к поломке ферм, которые зависят от потоков опыта или объединения предметов определенным образом.
 
Последнее редактирование:
Сверху