сколько оперативной памяти нужно для сервера майнкрафт с модами
Выбор оптимальной конфигурации для Minecraft сервера
На нашем хостинге серверам выделяется ровно столько ресурсов (ЦПУ, ОЗУ, дисковое пространство), сколько покупает клиент. Превышение лимитов по использованию ресурсов является основной причиной низкой производительности на сервере. Это значит, что клиентам следует ответственно подходить к выбору конфигурации, чтобы сервер не стоил дорого, но при этом не было проблем с производительностью. В этой статье мы рассмотрим некоторые моменты, на которые пользователям стоит обратить внимание при покупке сервера.
На нодах хостинга используются процессоры разных моделей. Посмотреть модель процессора можно наведя курсор на название ноды на странице покупки сервера. На некоторых нодах частота процессора уменьшена, из-за чего стоимость ЦПУ на них несколько ниже, чем на остальных.
Клиент, помимо выбора нод с разной частотой ЦПУ, имеет возможность выбрать количество выделяемых ядер процессора. Когда серверу выделено более одного ядра, в панели можно заметить, что используется более 100% ЦПУ. В таком случае принято считать, что 100% = 1 ядро.
Выбирая количество ядер для Minecraft сервера, следует в первую очередь учитывать, что сама игра довольно плохо утилизирует многоядерные процессоры. Это значит, что выделение большого числа ядер практически не скажется на производительности «чистого» сервера без каких-либо сторонних дополнений. Для большинства пользователей оптимальным будет следующее количество ядер:
Несмотря на то, что Minecraft во время работы сервера крайне неактивно использует более 1 ядра под большой нагрузкой, при запуске утилизация ЦПУ может быть довольно высокой. При выделении менее двух ядер, на запуск сервера будет уходить достаточно много времени.
Здесь стоит также заметить, что выше речь идёт о ванильных серверах. Существуют различные проекты, которые привносят изменения в некоторые игровые механики и помогают игре использовать несколько ядер ЦПУ. К таковым можно отнести, например, Paper. Не стоит забывать и о различных модах и плагинах, которые могут быть требовательны к процессорным ресурсам. Для клиентов, использующих подобные дополнения, есть возможность приобрести более двух процессорных ядер.
Говоря о выделяемой Minecraft серверу оперативной памяти, в первую очередь стоит заметить одну из особенностей JVM: при выделении большого объёма памяти, сборка мусора происходит гораздо реже, что приводит к большему использованию ОЗУ. Проще говоря, чем больше памяти выделено серверу, тем больше памяти сервер будет использовать, даже если ему столько не нужно. В то же время, при выделении недостаточного количества оперативной памяти, сервер может работать нестабильно или не запускаться вовсе.
Минимальное количество памяти зависит во многом от используемой версии игры. Если Minecraft до версии 1.12.2 включительно мог спокойно работать с 1 Гб ОЗУ без высокой нагрузки, то для более новых версий рекомендуется выделять минимум 2 Гб ОЗУ.
Увеличивать объём потребляемой памяти могут плагины/моды с большим функционалом, высокий онлайн на сервере, увеличение размера мира на сервере и т.п. Для каждого сервера оптимальный объём ОЗУ будет разным.
Для последних версий игры мы можем рекомендовать:
Каким бы ни был лимит памяти, рано или поздно в большинстве случаев он закончится. Это создаёт необходимость периодически перезапускать сервер. О том, как делать это автоматически, мы рассказывали в этой статье.
На всех нодах хостинга диски одинаковые. У клиентов есть лишь возможность выбрать объём дискового пространства, доступного серверу.
Необходимый для Minecraft сервера объём диска зависит в основном от предназначения сервера и его популярности.
Объём занимаемого дискового пространства сильно зависит от размера сгенерированной части игрового мира. Не стоит забывать и про плагины, которые сохраняют на сервере большое количество информации, например, про CoreProtect, база данных которого может занимать довольно много места.
Остались вопросы?
Если вы не уверены в том, сколько ресурсов нужно вашим серверам, вы всегда можете обратиться за помощью в нашей беседе ВКонтакте или Discord сервере.
База знаний
Сколько нужно оперативной памяти(RAM) для сервера Minecraft?
Этот гайд поможет определить сколько нужно вашему серверу оперативной памяти(RAM). Если даже после прочтения этой статьи вы не уверены какой тариф выбрать всегда можно изменить параметры тарифа после покупки.
Vanilla / Craftbukkit / PaperSpigot / Spigot
Тип | Рекомендуемое количество оперативной памяти(RAM) |
Версия | Начиная с версии 1.14.4 рекомендуем не менее 2 GB оперативной памяти(RAM) (Не относится к Minecraft: Pocket Edition (MCPE)) |
Игроки | Добавляйте 1GB оперативной памяти(RAM) на каждые 20 игроков |
Плагины | Добавляйте 1GB оперативной памяти(RAM) на каждые 20 плагинов (Некоторые плагины требуют больше ресурсов чем другие, так что зависит какие плагины используете. Возможно потребуется больше оперативной памяти. Список некоторых плагинов которые требуют больше ресурсов: Dynmap, WorldEdit, MCMMO, Factions и множество плагинов для мини игр.) |
Миры | Добавляйте 1GB оперативной памяти(RAM) на каждые 2GB мира на жестком диске (Размер ваших миров и количество игроков исследующих сильно влияют на производительность сервера.) |
BungeeCord
Мы рекомендуем 1 GB оперативной памяти(RAM) для BungeeCord. Обычно не нужно больше этого, если вы не принимаете более 300-500+ игроков одновременно. Поскольку BungeeCord просто перенаправляет трафик от игроков на один из серверов в вашей сети, BungeeCord обычно не использует большой объем оперативной памяти. Однако, если вы используете плагины на BungeeCord, вам может потребоваться больше оперативной памяти(RAM) для поддержки всех плагинов.
Ниже приведены рекомендуемое количество оперативной памяти(RAM) для BungeeCord в зависимости от количества плагинов:
Количество плагинов | Рекомендуемое количество оперативной памяти(RAM) |
0-5 BungeeCord плагинов | 1 GB оперативной памяти(RAM) |
6-15 BungeeCord плагинов | 2 GB оперативной памяти(RAM) |
16+ BungeeCord плагинов | 3GB оперативной памяти(RAM) или больше |
Модпаки, Forge, Technic, KCauldron и любой модифицированный сервер
Мы рекомендуем как минимум 3 ГБ оперативной памяти(RAM) для любого модифицированного сервера. Модифицированные серверы очень ресурсоемки и используют большой объем оперативной памяти. Если вы планируете установить много модов или большие модпаки, вам может потребоваться добавить еще больше оперативной памяти на свой сервер, чтобы предотвратить лаги.
Minecraft: Pocket Edition (MCPE) / Bedrock Edition
Таблица выше для Vanilla / Craftbukkit / PaperSpigot / Spigot так же актуальна для серверов MCPE. Однако в случае MCPE вы можете добавить 1-5 дополнительных игроков на 1 GB оперативной памяти(RAM).
Создание и настройка сервера Minecraft
Minecraft сегодня принадлежит к числу самых популярных сетевых игр. За неполных три года (первый официальный релиз состоялся осенью 2011 года) у него появились миллионы поклонников по всему миру.
Разработчики игры сознательно ориентируются на лучшие образцы двадцатилетней давности, когда многие игры были по сегодняшним меркам примитивными с точки зрения графики и несовершенными с точки зрения юзабилити, но при этом — по-настоящему захватывали.
Как и все игры-песочницы, Minecraft предоставляет пользователю огромные возможности для творчества — в этом, собственно, и заключается главный секрет его популярности.
Организацией серверов для игры в многопользовательском режиме занимаются сами игроки и их сообщества. Сегодня в Интернете функционируют десятки тысяч игровых серверов.
Немало поклонников этой игры есть и среди наших клиентов, и они арендуют в наших дата-центрах оборудование под игровые проекты. В этой статье мы расскажем о том, на какие технические моменты нужно обратить внимание при выборе сервера для
Minecraft.
Выбираем платформу
В состав игры Minecraft входят следующие архитектурные элементы:
Для Minecraft существует много серверных платформ. Самыми распространенными и популярными являются Vanilla и Bukkit.
Vanilla это официальная платформа от разрабочиков игры. Распространяется как в графическом, так и в консольном варианте. Новая версия Vanilla всегда выходит одновременно с новой версией Minecraft.
Недостатком Vanilla является чрезмерное потребление памяти (примерно 50 МБ на одного игрока). Еще один существенный недостаток — отсутствие плагинов.
Bukkit был создан группой энтузиастов, предпринявших попытку усовершенствовать официальный сервер Minecraft. Попытка оказалась вполне удачной: по функциональности Bukkit намного шире, чем Vanilla — в первую очередь благодаря поддержке разнообразных модов и плагинов. При этом он потребляет меньше памяти на каждого игрока — примерно 5–10 МБ.
Минусы Bukkit заключаются в том, что при запуске он забирает слишком много оперативной памяти. Кроме того, чем дольше сервер работает, тем больше ему требуется памяти (даже если игроков мало). Выбирая в качестве сервера Bukkit, следует учитывать, что его новые версии, как правило, содержат ошибки; стабильная версия обычно появляется примерно через 2-3 недели после выхода официальной версии Minecraft.
Кроме того, в последнее время набирают популярность и другие платформы (например, Spout, MCPC и MCPC+), но они отличаются ограниченной совместимостью с Vanilla и Bukkit и крайне ограниченной поддержкой модов (например, для Spout вообще можно только писать моды c нуля). Если их и использовать — то только для экспериментов.
Для организации игрового сервера мы рекомендуем использовать платформу Bukkit, так как она отличается наибольшей гибкостью; кроме того, под нее существует множество разнообразных модов и плагинов. Стабильная работа сервера Minecraft во многом зависит от грамотного выбора аппаратной платформы. Рассмотрим этот вопрос более подробно.
Аппаратные требования
И сервер, и клиент Mineсraft очень требовательны к системным ресурсам.
При выборе аппаратной платформы следует учитывать, что многоядерный процессор больших преимуществ не даст: ядро сервера Minecraft может использовать лишь один поток вычисления. Второе ядро, впрочем, будет нелишним: некоторые плагины выполняются в отдельных потоках, да и Java тоже потребляет немало ресурсов…
Поэтому для Minecraft-сервера лучше выбирать процессор, у которого выше производительность одного ядра. Более мощный двухядерный процессор будет более предпочтительным, чем многоядерный, но менее мощный. На специализированных форумах рекомендуется использоваться процессоры с тактовой частотой не ниже 3ГГц.
Для нормального функционирования сервера Minecraft требуется большое количество оперативной памяти. Bukkit занимает примерно 1ГБ оперативной памяти; кроме того, под каждого игрока, как уже было сказано выше, отводится от 5 до 10 МБ. Плагины и моды тоже потребляют довольно много памяти. Для сервера на 30 — 50 игроков, таким образом, потребуется не менее 4 ГБ оперативной памяти.
В Minecraft очень многое (например, загрузка тех же плагинов) зависит от скорости работы файловой системы. Поэтому предпочтительно выбирать сервер с SSD-диском. Шпиндельные диски вряд ли подойдут по причине низкой скорости случайного чтения.
Огромное значение имеет и скорость интернет-подключения. Для игры 40-50 человек вполне хватит канала 10 Мб/c. Однако тем, кто планирует более масштабный minecraft-проект, включающий сайт, форум и динамическую карту, крайне желательно иметь канал с большей пропускной способностью.
Какую конкретную конфигурацию лучше всего выбрать? Из предлагаемых нами конфигураций рекомендуем обратить внимание на следующие:
Эти конфигурации вполне подойдут для создания серверa Minecraft на 30-40 игроков. Некоторым минусом является отсутствие SSD-дисков, но мы даем другое немаловажное преимущество: гарантированный канал 100 Мб/с без каких-либо ограничений и соотношений. При заказе всех перечисленных выше конфигураций установочный платеж не взимается.
Есть у нас и более производительные, но при этом, естественно, более дорогие серверы (при заказе этих конфигураций установочный платеж также не взимается):
Рекомендуем также обратить внимание на новую бюджетную модель с SSD-диском на базе процессора Intel Atom C2758: Intel Atom C2758 2.4ГГц, 16 ГБ RAM, 2×240ГБ SSD, 4000 руб/мес., установочный платеж — 3000 руб.
Установка и запуск сервера Bukkit в OC Ubuntu
Прежде чем устанавливать сервер, создадим нового пользователя и добавим его в группу sudo:
Далее зададим пароль, под которым созданный пользователь будет подключаться к серверу:
Переподключимся к серверу под новой учетной записью и приступим к установке.
Minecraft написан на Java, поэтому на сервере обязательно нужно установить Java Runtime Environment.
Обновим список доступных пакетов:
Затем выполним следующую команду:
Для установки и запуска Bukkit желательно также установить терминальный мультиплексор — например, screen (можно использовать и другие терминальные мультиплексоры — см. наш обзор ):
Screen понадобится, если мы будем подключаться к игровому серверу по ssh. С его помощью можно будет запускать сервер Minecraft в отдельном окне терминала, и даже после закрытия клиента ssh сервер будет работать.
Создадим директорию, в которой будут храниться файлы сервера:
Теперь запустим screen:
и выполним следующую команду:
Поясним, что означают используемые параметры:
Сервер будет запущен.
Остановить сервер можно, набрав в консоли команду stop.
Настройка и конфигурирование сервера
Настройки сервера хранятся в конфигурационном файле server.properties. Он содержит следующие параметры:
Логи сервера minecraft записываются в файл server.log. Он хранится в той же папке, что и файлы сервера. Лог постоянно увеличивается в размере, забирая все больше и больше дискового пространства. Упорядочить работу механизма логирования можно с помошью так называемой ротации логов. Для ротации используется специальная утилита — logrotate. Она ограничивает число записей в логе определенным пределом.
Можно настроить ротацию логов так, что все записи будут удаляться, как только файл лога достигнет определенного размера. Можно также установить срок, по истечении которого все старые записи будут признаны неактуальными и удалены.
Основные настройки ротации находятся в файле /etc/logrotate.conf; кроме того, для каждого приложения можно создавать индивидуальные настройки. Файлы с индивидуальными настройками хранятся в директории /etc/logrotate.d.
Создадим текстовый файл /etc/logrotate.d/craftbukkit и впишем в него следующие параметры:
Рассмотрим их значения более подробно:
Советы по оптимизации
Сразу же оговоримся, что в этом разделе будут приведены советы, касающиеся только оптимизации игрового сервера. Вопросы тонкой настройки и оптимизации сервера, на котором установлен Mineсraft, представляют собой отдельную тему, выходящую за рамки этой статьи; заинтересованные читатели без труда смогут найти нужную информацию в Интернете.
Одной из самых распространенных проблем, возникающих при игре в Minecraft, являются так называемые лаги — ситуации, когда программа вовремя не реагирует на пользовательский ввод. Они могут быть обусловены проблемами как на стороне клиента, так и на стороне сервера. Ниже мы дадим рекомендации, которые помогут снизить вероятность возникновения проблем на серверной стороне.
Регулярно контролируйте расход памяти сервером и плагинами
Следите за обновлениями плагинов
Как правило, разработчики новых плагинов с каждой новой версией стремятся снизить нагрузку.
Старайтесь не пользоваться множеством плагинов со сходной функциональностью
Большие плагины (например, Essentials, AdminCMD, CommandBook) очень часто включают в себя функциональность многих мелких плагинов. Например, тот же Essential содержит функции плагинов iConomy, uHome, OpenInv, VanishNoPacket, Kit. Мелкие плагины, функциональность которых полностью покрывается функциональностью одного большого, в большинстве случаев можно удалить, чтобы не перегружать сервер.
Ограничивайте карту и прогружайте ее самостоятельно
Прорисовка, конечно, займет немало времени, но лучше это сделать один раз, закрыв сервер на технические работы. Если карту будет прорисовывать каждый игрок — сервер будет работать медленно.
Замените тяжеловесные плагины на более быстрые и менее ресурсоемкие
Далеко не все плагины для Minecraft можно назвать удачными: часто они содержат много лишних и ненужных функций, а иногда еще и потребляют много памяти. Неудачные плагины лучше заменять на альтернативные (их существует довольно много). Например, плагин LWC можно заменить на Wgfix+MachineGuard, а плагин DynMap — на Minecraft Overviewer.
Всегда очищайте дроп или установите плагин для автоматического удаления дропа
Дропом в играх называются предметы, выпадающие при смерти моба или разрушении некоторых блоков. Хранение и обработка дропов занимают очень много системных ресурсов.
Чтобы сервер работал быстрее, дроп желательно удалять. Это лучше делать при помощи специальных плагинов — например, NoLagg или McClean.
Не используйте античиты
На игровых серверах часто устанавливаются так называемые античиты — программы, которые блокируют попытки воздействовать на игру нечестными способами.
Существуют античиты и для Minecraft. Любой античит — это всегда дополнительная нагрузка на сервер. Предпочтительнее устанавливать защиты для лаунчера (которые, впрочем, абсолютной гарантии безопасности не дают и легко ломаются — но этой уже тема для отдельного разговора) и для клиента.
Вместо заключения
Любые инструкции и рекомендации оказываются гораздо более эффективными, если они подкреплены конкретными примерами. Основываясь на приведенных выше инструкциях по установке, мы создали свой сервер MineCrаft и поместили на карту кое-что интересное.
Вот что у нас получилось:
Приглашаем всех желающих поиграть на нем: чтобы подключиться, добавьте новый сервер и укажите адрес mncrft.slc.tl.
Будем рады, если в комментариях вы поделитесь собственным опытом установки, настройки и оптимизации серверов MineCraft и расскажете, какие моды и плагины вам интересны и почему.
UPD: С 1 августа установочный платеж на выделенные серверы снижен на 50%. Теперь разовый установочный платеж составляет всего 3000 руб.
Оптимизация сервера Minecraft
В нашем блоге мы уже рассказывали, как создать свой сервер Minecraft, однако с тех пор прошло 5 лет и многое поменялось. Делимся с вами актуальными способами создания и оптимизации серверной части столь популярной игры.
За свою 9-летнюю историю (если считать от даты релиза) Minecraft заработал потрясающее количество поклонников и хейтеров как среди обычных игроков, так и среди гиков. Простая концепция мира из кубиков превратилась из обычного развлечения в универсальную среду для общения и создания различных объектов из реального мира.
Помимо строительства, в игре есть возможность создавать логические схемы, которые позволяют реализовывать полноценные алгоритмы внутри Minecraft. На YouTube полно весьма впечатляющих роликов, где люди, приложив огромное количество сил и потратив множество времени, создали копию того или иного электронного устройства или построили детальную копию существующих и вымышленных архитектурных сооружений. Все ограничивается лишь фантазией геймера и возможностями игровой вселенной.
Но не будем дальше говорить о том, что именно игроки создают, а посмотрим на серверную часть приложения и осветим проблемы (порой весьма сложные), которые могут возникнуть в процессе работы под нагрузкой. Сразу оговоримся, что речь пойдет только о Java Edition.
Виды серверов
Самым простым вариантом является сервер, встроенный в клиент игры. Создали мир, нажали на одну кнопочку, и вот сервер стал доступен по локальной сети. Никакой серьезной нагрузки такой вариант выдержать не может, а поэтому мы не будем его даже рассматривать.
Vanilla
Компания Mojang Studios распространяет серверную часть игры в виде Java-приложения бесплатно на официальном сайте. Это позволяет создать свой собственный выделенный сервер и персональный мир, сделав его доступным для подключения из любой точки планеты. Для тех, кто делает это впервые, есть отличный туториал, доступный в соответствующей игровой Wiki.
У этого подхода есть один серьезный недостаток, а именно — отсутствие возможностей «из коробки» подключать плагины, расширяющие функционал сервера и позволяющие не только автоматизировать многие процессы, но и оптимизировать производительность. Кроме того, у официального сервера достаточно большое потребление оперативной памяти на каждого подключенного игрока.
Bukkit
Созданное энтузиастами на базе Vanilla-версии серверное приложение Bukkit значительно расширяло возможности игры за счет поддержки плагинов и модов (модификаций). Оно позволило не только добавлять в игровой процесс новые блоки, но и выполнять различные манипуляции, недоступные ванильному ПО. Что интересно, памяти это приложение требовало значительно меньше.
Установить Bukkit не составляет особого труда, соответствующая инструкция есть на ресурсе GamePedia. Но это не имеет смысла, так как с 2014 года команда Bukkit распалась, разработчики проекта стали сотрудниками Mojang Studios, а репозиторий заброшен. Таким образом, Bukkit фактически мертв, и имеет смысл обратить внимание на два следующих проекта.
SpigotMC
Для облегчения жизни разработчиков плагинов была необходимость в API для взаимодействия с игровым миром. Именно эту задачу и решили создатели Spigot, взяв за основу ядро Bukkit и переработав его для достижения лучшей надежности и производительности. Тем не менее, Git-репозиторий проекта был заблокирован в связи с Законом об авторском праве в цифровую эпоху (DMCA), и скачать оттуда исходники невозможно.
На текущий момент SpigotMC активно развивается и используется. Он поддерживает все плагины, созданные под Bukkit, однако с ним обратно не совместим. Чтобы обойти запрет DMCA Takedown, был придуман элегантный способ под названием BuildTools. Этот инструмент избавляет от необходимости дистрибуции скомпилированного приложения и позволяет пользователям выполнить компиляцию Spigot, CraftBukkit и Bukkit из исходного кода. Все это делает запрет DMCA бесполезным.
PaperMC
Казалось бы, все круто, и Spigot стал прекрасным вариантом. Но некоторым энтузиастам этого показалось мало, и они запилили свой собственный форк Spigot «на стероидах». На странице проекта ключевым достоинством указано, что “It’s stupid fast”. Развитое коммьюнити позволяет оперативно решать возникающие вопросы, а расширенное API — делать интересные плагины. Запустить PaperMC можно одной простой командой, приведенной в документации.
С совместимостью у PaperMC все прекрасно, так что написанные плагины под SpigotMC легко заработают и на PaperMC, но без официальной поддержки. Обратная совместимость со SpigotMC также присутствует. Теперь, когда мы перечислили различные варианты создания сервера, перейдем к тем проблемам производительности, которые могут возникать.
Проблемы и решения
Главное, что нужно понимать, — все, что касается обработки игрового мира будет обрабатываться только на одном вычислительном ядре физического сервера. Так что если вдруг у вас прекрасный сервер с десятком вычислительных ядер, то загружено будет только одно. Все остальные будут фактически простаивать. Такова уж архитектура приложения, и ничего вы с этим поделать не сможете. Так что при выборе сервера следует обращать внимание не на количество ядер, а на тактовую частоту. Чем она будет выше, тем лучше будет производительность.
Что касается вопроса об объеме оперативной памяти, тут следует исходить из следующих показателей:
Для запуска серверной части рекомендуем воспользоваться флагами, указанными в статье Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. Эта «черная магия» позволяет серверу грамотно настроить «сборщик мусора» и оптимизирует использование оперативной памяти. Не стоит выделять памяти больше, чем реально потребляет сервер при пиковом наплыве игроков.
Генерация карты блоков
“Вы действительно считаете, что Луна существует, только когда вы на неё смотрите?” (Альберт Эйнштейн)
Абсолютно новый сервер. Как только игрок первый раз успешно подключается, игровой персонаж появляется на общей точке сбора (спаун). Это единственное место, где игровой мир предварительно генерируется сервером. В этот же момент клиентская часть смотрит в настройки, и ключевым параметром является дальность прорисовки. Измеряется она в чанках (область карты 16×16 и высотой в 256 блоков) Сколько чанков там указано, именно столько и будет запрошено у сервера.
На сервере хранится глобальная карта мира, и если в ней еще нет сгенерированных блоков в точке появления игрового персонажа, то сервер их динамически генерирует и сохраняет у себя. Мало того, что это требует больших вычислительных ресурсов, так еще и постоянно увеличивает размер карты мира. На одном из старейших анархических серверов 2b2t (2builders2tools) размер карты уже превысил 8 Tb, а граница мира проходит на отметке в 30 млн блоков. С этим сервером связаны тысячи историй, и он заслуживает отдельной статьи серии статей.
Генерация мира вокруг одного игрока — не проблема. Генерация мира вокруг сотни игроков вызовет незначительные тормоза сервера на протяжении короткого времени, после чего нагрузка снизится. Генерация мира на дальность прорисовки клиента вокруг тысячи игроков уже способна «уронить» сервер и повыбрасывать с него всех клиентов по таймауту.
В серверном ПО имеется такое значение, как TPS (Ticks per Server — тактов в секунду). Штатно 1 такт равен 50 мс. (1 секунда реального мира равна 20 тактам игрового мира). Если обработка одного такта вырастет до 60 секунд — серверное приложение будет закрыто, выкинув всех игроков.
Выход — ограничить мир определенными координатами и выполнить предварительную генерацию блоков. Тем самым мы снимаем необходимость динамической генерации в процессе игры, и серверу будет достаточно прочитать уже существующую карту. Оба вопроса решаются одним-единственным плагином WorldBorder.
Проще всего задать границу мира в виде окружности относительно точки спауна (хотя можно ее сделать любой формы) одной командой:
Если игровой персонаж попытается пересечь границу, то будет отброшен на несколько блоков назад. Если это проделать несколько раз за ограниченное время, то нарушитель будет принудительно телепортирован на точку спауна. Предварительная генерация мира выполняется еще проще, командой:
Поскольку данное действие потенциально может затронуть игроков, находящихся на сервере, не забудьте подтвердить выполнение:
В общей сложности на то, чтобы сгенерировать мир радиусом в 5000 блоков (
40 млрд блоков) ушло примерно 2 часа на процессоре Intel® Xeon® Gold 6240. Поэтому, если хотите запустить прегенерацию большей карты, учитывайте, что этот процесс займет приличное количество времени, а TPS сервера будет серьезно снижено. Кроме того, помните, что даже радиус в 5000 блоков потребует примерно 2 Гб места на дисковом накопителе.
Несмотря на то, что крайняя версия плагина была разработана для Minecraft версии 1.14, опытным путем выяснено, что она прекрасно работает и на последующих версиях. Полный список команд с пояснениями доступен на форуме плагина.
Проблемные блоки
Если блоков TNT несколько, то детонация одного блока вызывает детонацию и включение гравитации у соседних блоков, разбрасывая их во все стороны. Вся эта красивая механика на стороне сервера выглядит как множество операций по подсчету траектории каждого из блоков, а также взаимодействия с соседними блоками. Задача крайне ресурсоемкая, что легко может проверить каждый. Сгенерируйте и подорвите куб из блоков TNT, размером хотя бы 30x30x30. И если вы думали, что у вас хороший мощный игровой компьютер, то сильно заблуждались 😉
Подобный «эксперимент» на сервере с Intel® Xeon® Gold 6240 привел к серьезной «просадке» TPS и 80% нагрузке на CPU в течение всего времени детонации блоков. А следовательно, если кто-либо из игроков сможет проделать подобное, то проблема с производительностью затронет всех находящихся на сервере игроков.
Еще более жесткий вариант — Кристаллы Края. Если TNT все же взрывается последовательно, то Кристаллы Края детонируют все одновременно, что в теории может вообще остановить работу серверного приложения.
Избежать этого сценария можно, только полностью запретив использование данных блоков в игровом мире. Например, с помощью плагина WorldGuard. Обратите внимание, что сам по себе этот плагин не работает без другого плагина WorldEdit. Так что устанавливаете вначале WorldEdit, а затем WorldGuard.
Заключение
Грамотное управление игровым сервером — задача не из простых. Сложности и снижение производительности будут поджидать на каждом шагу, особенно если не брать в расчет саму механику игрового процесса. Предусмотреть все невозможно, ведь игроки порой бывают очень изобретательны в попытках заставить сервер выполнить то, для чего он не был предназначен. Только разумный баланс между рисками и устанавливаемыми ограничениями позволит серверу работать в непрерывном режиме и не снижать свою производительность до критичных значений.
На карантине некоторые наши сотрудники соскучились по любимым офисам и решили воссоздать их внутри Minecraft. У вас тоже есть шанс заглянуть к нам в гости, не рискуя своим здоровьем и не тратя время на дорогу.
Для этого мы приглашаем всех желающих на наш сервер minecraft.selectel.ru (версия клиента 1.15.2), где воссозданы дата-центры Цветочная-1 и Цветочная-2. Не забудьте согласиться со скачиванием дополнительных ресурсов, они необходимы для корректного отображения некоторых локаций.
Вас ждут квесты, промокоды, «пасхалки» и приятное общение.