Создание и настройка сервера Minecraft
Minecraft сегодня принадлежит к числу самых популярных сетевых игр. За неполных три года (первый официальный релиз состоялся осенью 2011 года) у него появились миллионы поклонников по всему миру.
Разработчики игры сознательно ориентируются на лучшие образцы двадцатилетней давности, когда многие игры были по сегодняшним меркам примитивными с точки зрения графики и несовершенными с точки зрения юзабилити, но при этом — по-настоящему захватывали.
Как и все игры-песочницы, 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 Мб/с без каких-либо ограничений и соотношений. При заказе всех перечисленных выше конфигураций установочный платеж не взимается.
Установка и запуск сервера Bukkit в OC Ubuntu
Прежде чем устанавливать сервер, создадим нового пользователя и добавим его в группу sudo:
Далее зададим пароль, под которым созданный пользователь будет подключаться к серверу:
Переподключимся к серверу под новой учетной записью и приступим к установке.
Minecraft написан на Java, поэтому на сервере обязательно нужно установить Java Runtime Environment.
Обновим список доступных пакетов:
Затем выполним следующую команду:
Для установки и запуска Bukkit желательно также установить терминальный мультиплексор — например, screen (можно использовать и другие терминальные мультиплексоры — см. наш обзор):
Screen понадобится, если мы будем подключаться к игровому серверу по ssh. С его помощью можно будет запускать сервер Minecraft в отдельном окне терминала, и даже после закрытия клиента ssh сервер будет работать.
Создадим директорию, в которой будут храниться файлы сервера:
После этого зайдем на страницу загрузок официального сайта Bukkit. В правой верхней части страницы можно увидеть ссылку на последнюю рекомендованную к использованию cборку сервера (recommended build). Советуем скачивать именно ее:
Теперь запустим screen:
и выполним следующую команду:
Сервер будет запущен.
Остановить сервер можно, набрав в консоли команду stop.
Настройка и конфигурирование сервера
Логи сервера minecraft записываются в файл server.log. Он хранится в той же папке, что и файлы сервера. Лог постоянно увеличивается в размере, забирая все больше и больше дискового пространства. Упорядочить работу механизма логирования можно с помошью так называемой ротации логов. Для ротации используется специальная утилита — logrotate. Она ограничивает число записей в логе определенным пределом.
Можно настроить ротацию логов так, что все записи будут удаляться, как только файл лога достигнет определенного размера. Можно также установить срок, по истечении которого все старые записи будут признаны неактуальными и удалены.
Основные настройки ротации находятся в файле /etc/logrotate.conf; кроме того, для каждого приложения можно создавать индивидуальные настройки. Файлы с индивидуальными настройками хранятся в директории /etc/logrotate.d.
Создадим текстовый файл /etc/logrotate.d/craftbukkit и впишем в него следующие параметры:
Советы по оптимизации
Сразу же оговоримся, что в этом разделе будут приведены советы, касающиеся только оптимизации игрового сервера. Вопросы тонкой настройки и оптимизации сервера, на котором установлен Mineсraft, представляют собой отдельную тему, выходящую за рамки этой статьи; заинтересованные читатели без труда смогут найти нужную информацию в Интернете.
Одной из самых распространенных проблем, возникающих при игре в Minecraft, являются так называемые лаги — ситуации, когда программа вовремя не реагирует на пользовательский ввод. Они могут быть обусловены проблемами как на стороне клиента, так и на стороне сервера. Ниже мы дадим рекомендации, которые помогут снизить вероятность возникновения проблем на серверной стороне.
Регулярно контролируйте расход памяти сервером и плагинами
Потребление памяти можно отслеживать при помощи специализированных административных плагинов — например, LagMeter.
Следите за обновлениями плагинов
Как правило, разработчики новых плагинов с каждой новой версией стремятся снизить нагрузку.
Старайтесь не пользоваться множеством плагинов со сходной функциональностью
Большие плагины (например, Essentials, AdminCMD, CommandBook) очень часто включают в себя функциональность многих мелких плагинов. Например, тот же Essential содержит функции плагинов iConomy, uHome, OpenInv, VanishNoPacket, Kit. Мелкие плагины, функциональность которых полностью покрывается функциональностью одного большого, в большинстве случаев можно удалить, чтобы не перегружать сервер.
Ограничивайте карту и прогружайте ее самостоятельно
Если не ограничивать карту, то нагрузка на сервер существенно увеличится. Ограничить карту можно при помощи плагина WorldBorder. Для этого нужно запустить этот плагин и выполнить команду /wb 200, а затем прорисовать карту при помощи команды /wb fill.
Прорисовка, конечно, займет немало времени, но лучше это сделать один раз, закрыв сервер на технические работы. Если карту будет прорисовывать каждый игрок — сервер будет работать медленно.
Замените тяжеловесные плагины на более быстрые и менее ресурсоемкие
Далеко не все плагины для Minecraft можно назвать удачными: часто они содержат много лишних и ненужных функций, а иногда еще и потребляют много памяти. Неудачные плагины лучше заменять на альтернативные (их существует довольно много). Например, плагин LWC можно заменить на Wgfix+MachineGuard, а плагин DynMap — на Minecraft Overviewer.
Всегда очищайте дроп или установите плагин для автоматического удаления дропа
Дропом в играх называются предметы, выпадающие при смерти моба или разрушении некоторых блоков. Хранение и обработка дропов занимают очень много системных ресурсов.
Чтобы сервер работал быстрее, дроп желательно удалять. Это лучше делать при помощи специальных плагинов — например, NoLagg или McClean.
Не используйте античиты
На игровых серверах часто устанавливаются так называемые античиты — программы, которые блокируют попытки воздействовать на игру нечестными способами.
Существуют античиты и для Minecraft. Любой античит — это всегда дополнительная нагрузка на сервер. Предпочтительнее устанавливать защиты для лаунчера (которые, впрочем, абсолютной гарантии безопасности не дают и легко ломаются — но этой уже тема для отдельного разговора) и для клиента.
Вместо заключения
Любые инструкции и рекомендации оказываются гораздо более эффективными, если они подкреплены конкретными примерами. Основываясь на приведенных выше инструкциях по установке, мы создали свой сервер MineCrаft и поместили на карту кое-что интересное.
Приглашаем всех желающих поиграть на нем: чтобы подключиться, добавьте новый сервер и укажите адрес mncrft.slc.tl.
Будем рады, если в комментариях вы поделитесь собственным опытом установки, настройки и оптимизации серверов MineCraft и расскажете, какие моды и плагины вам интересны и почему.
Классная новость: С 1 августа установочный платеж на выделенные серверы фиксированной конфигурации снижен на 50%. Теперь разовый установочный платеж составляет всего 3000 руб.
Читателей, которые не могут оставлять комментарии здесь, приглашаем к нам в блог.
BukkitWiki
This Wiki is home to Bukkit’s documentation and regulations surrounding the Bukkit Project and it’s services. Want to help out? We would love to have you! Signup to get started!
Bukkit.yml/ru
Contents
Разделы YAML
Заголовки, перечисленные ниже, являются ключами верхнего уровня в файле YAML.
settings
Общие параметры сервера CraftBukkit
allow-end
Включен Эндер-Мир. (boolean)
warn-on-overload
Показывает ли сервер «[ПРЕДУПРЕЖДЕНИЕ] Не успевает! Системное время изменилось или сервер перегружен?» Сообщения. (boolean)
permissions-file
Имя файла пользовательских разрешений. (string, filename)
По умолчанию: permissions.yml
update-folder
Имя папки для размещения обновленных плагинов, которая будет перемещена при перезагрузке. (строка, имя папки) ПРИМЕЧАНИЕ: Папка ДОЛЖНА находиться в папке подключаемых модулей. Абсолютные пути НЕ работают.
По умолчанию: update.
ping-packet-limit
В настоящее время нетрудоспособен. Ранее: Максимальное количество пакетов в секунду, которое может использовать список запросов в игре. (целое число, пакеты/сек)
use-exact-login-location
С тех пор как Minecraft добавил возможность выталкивания объектов из блока, игроки часто оказывались выше того места, откуда они вышли при входе в систему (особенно если они находились в пещере). Эта настройка позволяет серверам отключать или включать такое поведение. Если это так, мы будем обходить поведение Ванили, проверяя столкновения и перемещая игрока, если это необходимо, когда он входит в систему. Если сообщение ложное, мы будем продолжать следить за поведением Ванили и перемещать игроков, которые «сталкиваются» с объектами при входе в систему.
По умолчанию: false
world-container
Имя папки, в которой будут храниться все мировые каталоги. Если он не включен в ваш файл, по умолчанию используется текущая рабочая директория. (string, foldername)
plugin-profiling
Позволяет использовать команду /timings. Используется для измерения времени, затрачиваемого модулем на события.
По умолчанию: false
connection-throttle
Задержка перед подключением клиента разрешена после последней попытки подключения. Значение 0 отключает дроссель соединения, но делает ваш сервер уязвимым для атак (рекомендуется только для тестовых серверов). (долго, миллисекунды)
query-plugins
Возвращает ли сервер список подключаемых модулей при удаленном запросе. (boolean)
deprecated-verbose
Показывает ли сервер предупреждения, когда подключаемый модуль регистрирует устаревшее событие. Значение true’/’false’ работает как переключатель для этих предупреждений, в то время как ‘default’ всегда будет показывать предупреждение, если только данное событие не отмечено разработчиком как не требующее предупреждения при регистрации. (строка)
По умолчанию: default
shutdown-message
Это сообщение отображается клиентам, когда сервер останавливается.
По умолчанию: Server closed
spawn-limits
Опции сервера CraftBukkit, которые определяют, сколько животных или толпы может нереститься в мире.
monsters
Этот параметр bukkit.yml позволяет серверам устанавливать количество монстров, которые могут нереститься в мире.
По умолчанию в Minecraft: 70.
animals
Этот параметр bukkit.yml позволяет серверам устанавливать количество животных, которые могут нереститься в мире.
По умолчанию в Minecraft: 15.
water-animals
Этот параметр bukkit.yml позволяет серверам устанавливать количество водных животных, которые могут нереститься в мире.
По умолчанию в Minecraft: 5.
ambient
Этот параметр bukkit.yml позволяет серверам задавать количество окружающих существ (также известный как летучие мыши), которые могут нереститься в мире.
По умолчанию в Minecraft: 15.
Примечание: Мобильные породистые животные или монстры не следуют этим ограничениям. У них есть свои пределы, которым они следуют.
chunk-gc
CraftBukkit проверит на наличие кусков, которые должны были выгрузиться, но по каким-то причинам не смогли сделать этого.
period-in-ticks
Отметки между рассмотрением каждого случая сбора мусора. Если установлено значение 0, блок gc будет отключен.
По умолчанию в Bukkit: 600.
load-threshold
Количество кусков мусора, которые необходимо загрузить с момента последней уборки мусора перед рассмотрением вопроса о вывозе мусора. Если установлено значение 0, блок gc будет отключен.
По умолчанию в Bukkit: 0.
ticks-per
Параметры сервера CraftBukkit, определяющие задержку срабатывания галочки для конкретных функций
animal-spawns
Эта настройка bukkit.yml позволяет серверам устанавливать задержку срабатывания клещей для порождений животных.
Примечание: Если установлено значение 0, нерест животных будет отключен. Вместо этого мы рекомендуем использовать нерестящихся животных для контроля этого.
По умолчанию в Minecraft: 400.
monster-spawns
Эта настройка bukkit.yml позволяет серверам устанавливать задержку срабатывания галочки для порождений монстров.
Примечание: Если установлено значение 0, нерест монстров будет отключен. Вместо этого мы рекомендуем использовать икру монстров для контроля.
По умолчанию в Minecraft: 1.
autosave
Данная настройка bukkit.yml позволяет серверам задавать количество тиков для каждого события сохранения
По умолчанию в Minecraft: 6000.
По умолчанию в Bukkit: 0.
Примечание: На многих серверах Bukkit’а уже установлены плагины автосохранения, которые генерируют все задачи сохранения, поэтому было решено отключить эту функцию в Bukkit’е, поскольку настройка Minecraft’а по умолчанию вызывала значительное отставание у многих серверов, и была признана избыточной. Если вы хотите включить эту функцию, помните, что настройка установлена на один тик и поэтому должна быть установлена на достаточно высокое число (6000 = 5 минут при максимальной эффективности сервера).
auto-updater
Управляет встроенной функцией проверки обновлений.
aliases
Этот раздел позволяет сопоставлять псевдонимы с командами. Пример:
Для получения дополнительной информации о псевдонимах ознакомьтесь с псевдонимами Commands.yml.
database
В этом разделе можно задать различные параметры конфигурации базы данных для базы данных, которые будут совместно использоваться плагинами, использующими внутренний сервер eBeans. Большинство плагинов не используют это, так что, нужно ли вам это настраивать или нет, зависит от вас. Изменение этих свойств изменит способ подключения к базе данных всех плагинов, использующих интегрированный с Bukkit сервер eBeans.
Ниже приведены примеры того, как будет выглядеть каждая конфигурация для двух наиболее часто используемых приложений баз данных.
SQLite Конфигурация (по умолчанию):
Примечание: слова
MySQL Пример конфигурации:
Примечание:
*OPTIONAL* worlds
В этом разделе вы можете определить генераторы для миров, которые по умолчанию загружаются из bukkit».
Prereqs: Вы ДОЛЖНЫ уже установить генератор, а разработчик генератора должен вставить <<
BukkitWiki
This Wiki is home to Bukkit’s documentation and regulations surrounding the Bukkit Project and it’s services. Want to help out? We would love to have you! Signup to get started!
Bukkit.yml
This page has been marked for inclusion in the Bukkit Official Documentation section, Docs. You can deliberate about its inclusion on its Talk page.
Bukkit.yml is a file that provides you with a wide variety of options for configuring your CraftBukkit server.
Contents
Sections in the YAML
The headings listed below are the top-level keys in the YAML file.
settings
General CraftBukkit server options.
allow-end
Is the End enabled. (boolean)
warn-on-overload
Does the server show «[WARNING] Can’t keep up! Did the system time change, or is the server overloaded?» messages. (boolean)
permissions-file
The name of your custom permissions file. (string, filename)
update-folder
The name of the folder to put updated plugins in, which will be moved upon restart. (string, foldername) NOTE: The folder MUST be in the plugins folder. Absolute paths do NOT work.
ping-packet-limit
Currently disabled. Previously: How much packets a second the ingame ping list can use, maximum. (integer, packets/sec)
use-exact-login-location
Since Minecraft added the feature of pushing entities out whenever they are stuck inside a block, players have often found themselves above the location they logged out of when logging back in (especially if they were in a cave). This setting allows servers to disable or enable this behavior. If true, we will bypass Vanilla’s behaviour of checking for collisions and moving the player if needed when they login. If false, we will continue to follow Vanilla’s behaviour and move players that ‘collide’ with objects when they login.
world-container
The name of a folder to store all the world directories in. If not included in your file, defaults to the current working directory. (string, foldername)
plugin-profiling
Allows the use of the command /timings. Used to measure time taken by plugin for events.
connection-throttle
The delay before a client is allowed to connect again after a recent connection attempt. A value of 0 disables the connection throttle but leaves your server susceptible to attacks (only recommended for test servers). (long, milliseconds)
query-plugins
Does the server return the list of plugins when queried remotely. (boolean)
deprecated-verbose
Does the server show warnings when a plugin registers a deprecated event. A ‘true’/’false’ value works as a toggle for these warnings, while ‘default’ will always show a warning unless the event in question has been tagged by a developer as not requiring a warning when it is registered. (string)
shutdown-message
This is the message displayed to clients when the server stops
Default: Server closed
spawn-limits
CraftBukkit server options that determine how many animals or mobs can spawn per-world.
monsters
This bukkit.yml setting allows servers to set the amount of monsters that can spawn per-world.
Minecraft default: 70.
animals
This bukkit.yml setting allows servers to set the amount of animals that can spawn per-world.
Minecraft default: 15.
water-animals
This bukkit.yml setting allows servers to set the amount of water animals that can spawn per-world.
Minecraft default: 5.
ambient
This bukkit.yml setting allows servers to set the amount of ambient creatures (aka, bats) that can spawn per-world.
Minecraft default: 15.
Note: Mob spawned animals or monsters do not follow these limits. They have their own limits they follow.
chunk-gc
CraftBukkit will check for chunks that should have been unloaded but for some reason failed to do so.
period-in-ticks
The ticks between each chunk garbage collection consideration. If set to 0, chunk gc will be disabled.
Bukkit default: 600.
load-threshold
Number of chunks that need to be loaded since the last garbage collection before considering garbage collection. If set to 0, chunk gc will be disabled.
ticks-per
CraftBukkit server options that determine the tick delay for specific features
animal-spawns
This bukkit.yml setting allows servers to set the tick delay for animal spawns.
Note: If set to 0, animals spawning will be disabled. We recommend using spawn-animals to control this instead.
Minecraft default: 400.
monster-spawns
This bukkit.yml setting allows servers to set the tick delay for monster spawns.
Note: If set to 0, monsters spawning will be disabled. We recommend using spawn-monsters to control this instead.
Minecraft default: 1.
autosave
This bukkit.yml setting allows servers to set the number of ticks for each save-all event.
Minecraft default: 6000.
Note: Many Bukkit servers already run autosave plugins which generate save-all tasks, thus it was decided to disable this feature in Bukkit, as the Minecraft default setting was causing a lot of lag for many servers, and was found redundant. If you wish to enable this, remember the setting is per tick, and thus should be set to a reasonably high number (6000 = 5 minutes at peak server efficiency).
auto-updater
Controls the built in update checker.
aliases
NOTE: In the latest versions, aliases have been moved to the commands.yml file.
This section allows you to map aliases to commands. Example:
database
This section lets you set various database-related configuration options, for the database which will be shared by plugins that use the internal eBeans server. Most plugins do not use this, so whether or not you need to configure it is up to you. Changing these properties will change how all plugins that use the eBeans server integrated with Bukkit connect to their database.
The following are examples of what each configuration would look like for the two most commonly used database applications.
SQLite Configuration (default):
Note: the
MySQL Configuration example:
Note:
*OPTIONAL* worlds
This section lets you define the generators for the worlds that bukkit loads by default.