Размышлизмы о Minecraft: создание своего сервера

February 16, 2023

Пенного всем, а на связи Уханов. Поговорим о создании своего сервера. Тут и далее мы говорим про Java версию игры.

Всё описанное ниже основано на собственном опыте создания Minecraft серверов.

Идея как двигатель мотивации.

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

Идея в этом контексте должна определять вектор развития игрового сервера. ТЫ должен дать чёткий ответ на вопрос: чем твой сервер отличается от остальных? Заметь, я употребляю слово отличается. Он не обязательно должен быть лучше других серверов. Да и на начальном этапе точно таким не станет. Идея же важна с самого запуска. Почему игроки должны идти играть к тебе, а не куда-либо ещё? Твой сервер должен выделяться из большинства.

Мой ответ на этот вопрос:

Когда-то давно, в 2012 году я играл на сервере Шестой с модом SimCraft проекта minecraft.ru . Играл и играл, даже задонатил чутка. На сервере были некоторые ограничения по механизмам и строительству. Раздражало, но не слишком. В 2013 году проект пропал и сервера были отключены. Я упоминал его в прошлом посте . Собственно я отправился на поиски нового сервера для игры. И тут меня ждало разочарование: то донаты дикие, то донаты, нарушающие баланс игры, то конские ограничения по механизмам, а то и вовсе отключённый нижний мир! Так я познакомился с CraftBukkit и компанией.

Годы проб и ошибок, десяток самодельных сборок и провальных

  • Нет ограничений в строительстве и механизмах
  • Нет доната. При желании игроки могут помочь, докупив алмазиков на рейтингах или пожертвовав на хостинг.
  • Небольшой онлайн. Вытекает из предыдущих пунктов, ведь широкие возможности, помноженные на большой онлайн = высокие мощности.

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

Доменное имя

Важный момент твоего сервера. В отличии от ip адреса, имя намного проще вводить. Сайт опять-же не помешает. Важный момент, если игровой хостинг предоставляет игровой порт, отличный от 25565, ты сможешь настроить в DNS SRV запись и игрокам не придётся указывать нестандартный порт.

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

На этом моменте я накололся, купив доменное имя batyacraft.tech. Домен купил за 900 рубей, а продление оказалось 9000 рублей. Пришлось менять доменное имя на batyamine.ru , что как понимаешь процесс непростой.

Хостинг

Основа игрового проекта. Тебе стоит определиться, где держать сервер: дома или арендовать мощности.

Если ты решишь на начальном этапе держать сервер дома, то стоит арендовать белый ip адрес у провайдера, найти подходящий для этого компьютер с хорошим процессором частотой от 3 Ггц, установить ИБП и озаботиться защитой от внешних атак. Для этих целей подойдёт роутер Mikrotik. Его можно вообще не покупать, а воспользоваться Mikrotik CHR и запустить его на виртуальной машине сервера. Перебор портов, и DDOS ждут тебя.

Собственно сервер

Это может быть как железка, так и виртуальная машина. Не VirtualBox конечно-же, Hyper-V или KVM вполне пойдёт. В качестве операционной системы лично я использую Debian. Как файловую систему под проект использую BTRFS. Её снапшоты очень выручают. Могу потом рассказать подробнее.

Далее, всё это безобразие должно выполнять код на Java. Если сервер будет с плагинами и модами, то рекомендуется использовать JDK, а не JRE. Стало быть, open-jre, входящая в дистрибутив не пойдёт, но так как с лицензией Oracle JDK есть нюансы использования, рекомендую использовать JDK Azul Zulu.

Запустили сервер, работает! Расслабляться рано, ведь нам нужен автозапуск сервера, его потребуется перезапускать по расписанию и с случае внезапной остановки. Рекомендую к применению скрипт для Systemd или Init.d. Скрипт брать тут . Мануал по нему там-же. Можно взять Minecraft Remote Toolkit . Он позволит перезапускать сервер по расписанию и в случае краха, а так-же даст telnet к консоли сервера, что приятно. Но учти, что Minecraft Remote Toolkit не запустится сам собой, воспользуйся скриптам выше. Схема такая: скрипт запускает Minecraft Remote Toolkit, а он запускает Minecraft. Minecraft Remote Toolkit я использую для запуска сервера на версии 1.5.2 из-за того, что Systemd не может корректно его перезапустить и тупо закрывает сервер без сохранения карты.

VPS

В аренду ты можешь взять физический сервер, VPS или специализированный игровой хостинг. Аренда физического сервера очень дорого, но для больших проектов важна как воздух. Не будем об этом. Если что - настраивается как комп дома, см. выше.

VPS. Технически - это виртуальная машина. Обрати внимание на скорость процессора, количество ядер и объём памяти. По настройке см. выше. Не забудь настроить Firewall, защитив SSH. Если тебе интересно, то я использую VPS от Infobox и SmartApe. Неплохо и недорого, если ты не будешь жестить с модами.

Игровой хостинг

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

Посоветовать что-либо конкретно сложно, но обрати внимание на частоту процессора, наличие MySQL, количество доступных портов и наличие планировщика, бекапов, sftp. Почитай отзывы, загугли как выглядит панель управления. Тебе же с ней работать! Немаловажным фактором будет возможность изменения ресурсов сервера в обе стороны.

Выбор ядра

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

Если нужны только моды без плагинов, то ставишь Forge или Fabric и погнал. Но зачастую администратору требуются плагины. Учитывай поддерживаемые версии ядер выбранных тобой модов. Не торопись качать самые последние версии. Собери таблицу в Excel. Так ты сможешь определиться с версией ядра. Например, захотел ты сервер на базе мода Electrical Age , а он только на версии 1.7.10. Вот ты и вышел на ядро Crucible.

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

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

Ядра только для плагинов:

Зачастую требуется совместить плагины и моды в одном сервере. Здесь выбор более ограничен. Такие ядра обновляются реже. При выборе ядра учти, что некоторые из них уже не поддерживаются. Так-же учитывай совместимость и стабильность ядер. например, команда Mohist ранее выпускала ядро 1.7.10. сейчас разработка прекращена, а совместимость ядра с модами и плагинами очень плохая, о чём они и заявляют, рекомендуя использовать для 1.7.10 ядро Crucible. Самое стабильное их ядро 1.12.2, но наработки они передали команде Magma, хоть и закрывают критические уязвимости. Ядро 1.16.5 в стадии активной разработки и его можно использовать в проде. Тем временем Magma прекратили разработку 1.16.5 и сконцентрировались на 1.12.2 и 1.18. Тем временем Crucible 1.7.10 развивается и продолжает радовать.

Ядра для серверов с плагинами и модами:

  • Mohist

  • Magma

  • Sponge Forge

  • Crucible MC

  • MCPC+

  • Cauldron

  • KCauldron

  • Thermos

    Знающие люди спросят, зачем я тут старья накидал вроде MCPC+, но отвечу, что они хоть и не обновляются, но работают. Сам держу один из серверов на 1.5.2.

Тематика сервера

Ты уже определился с идеей? Тогда давай определим тематику:

  • Технический сервер

  • Магический сервер

  • Может техномагический?

  • Или MMORPG?

  • Мини игры будут?

  • Может полёты в космос?

    Вариантов очень много, а нюансов и того больше! не мешай всё в одну кучу, так будет неинтересно.

Я сделал так:

  • Техномагический сервер RetroSpace 1.5.2
  • Технический сервер Machines 1.12.2
  • Технический сервер FlyWheel 1.16.5 (Построен на базе Create и Immersive Engineering)

ONLINE Статус сервера

Помнишь в конфиге есть такой параметр online-mode=true? Он определяет, смогут-ли к тебе заходить игроки без лицензии. Сложный вопрос и нет на него правильного ответа. Пустишь всех - будет больше игроков, но наличие лицензии фильтрует неадекватов и осложняет обход бана.

Далее подробнее поговорим защите от гриферства.