Система спауна мобов нашего сервера

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

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

Максимальное количество мобов (или мобкап) зависит от количества игроков онлайн.

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

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

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

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

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

Сейчас мобкап (для враждебных монстров) рассчитывается по формуле 500/N, где N — количество игроков онлайн. Результат ограничен сверху значением 70 и снизу значением 15. Это означает, что при малом количестве игроков, мобкап не будет превышать 70, а при большом количестве игроков не будет меньше 15.

В игре существую 4 типа мобов:

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

Для каждого типа мобов есть свои настройки максимального моб капа, и частоты спауна. Частота спауна — это задержка в игровых тиках (1 тик — 1/20 секунды) между попытками спауна.

Текущие настройки сведены в таблицу ниже:

Тип Формула количества ( X / кол-во игроков) Максимум мобкапа Минимум мобкапа Частота спауна (в тиках)
Враждебные 500 70 15 2
Пассивные 100 10 5 400
Водные 100 10 5 30
Окружение 0 0 0 0

 

Механики и условия спауна остались абсолютно неизменными. Привычные для мобов ареалы обитания никак не изменились:

  • Слизняки спаунятся в своих чанках и на болотах
  • Ведьмы с домах
  • Чёрные скелеты в крепостях
  • И так далее

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

Так же не изменны и механики деспауна:

  • Враждебный моб моментально пропадает, находясь дальше 128 блоков от любого игрока
  • Враждебный моб может пропасть каждый тик с некоторой вероятностью, находясь дальше 32 блоков от любого игрока
  • Именованный или подобравший какой-либо предмет моб не деспаунится никогда (но такой моб всё ещё учитывается в мобкапе в отличие от стандартной механики)

Мы можем контролировать расстояние спауна мобов от игрока. Сейчас минимальное расстояние установлено на 10 блоков, а максимальное на 65. Это сделано, чтобы даже при уменьшенном мобкапе, мобы спаунились ближе к игроку. Однако сейчас мы не можем контролировать условия и расстояния деспауна, но планируем добавить эту возможность.

Так как плагин всё ещё находится на достаточно ранней стадии разработки, мы отслеживаем его работу. Одним из инструментов для этого является постоянный подсчёт фактического количества враждебных мобов вокруг каждого игрока. Эти данные доступны для всеобщего обозрения в списке игроков (кнопка TAB) — рядом с ником указано количество враждебных мобов в радиусе 128 блоков.

Часто можно заметить, что количество мобов немного превышает 70. Это связано с механикой группового спауна. Суть его заключается в том, что шанс случайно выбрать подходящее для спауна место не так велик. Поэтому когда такое место всё же находится, алгоритм пытается заспаунить группу мобов в небольшом радиусе на той же высоте. Поэтому при наличии 69/70 мобов, алгоритм попробует заспаунить ещё одну группу от 1 до 5 мобов и может получиться 74/70.

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

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

 

Добавить комментарий

Ваш e-mail не будет опубликован.