Размышлизмы о Minecraft: создание своего сервера
Пенного всем, а на связи Уханов. Поговорим о создании своего сервера. Тут и далее мы говорим про 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 развивается и продолжает радовать.
Ядра для серверов с плагинами и модами:
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? Он определяет, смогут-ли к тебе заходить игроки без лицензии. Сложный вопрос и нет на него правильного ответа. Пустишь всех - будет больше игроков, но наличие лицензии фильтрует неадекватов и осложняет обход бана.
Далее подробнее поговорим защите от гриферства.
Minecraft Universe
443 поста793 подписчика
Правила сообщества
- Запрещено постить контент не соответствующий тематике сообщества. (Посты про игры похожие на Майнкрафт, разрешены. Главное чтобы не было постов, которые совсем сильно от тематики отходят.)
- Запрещено постить т.н. "шлаковый" (т.е. очень низкокачественный) контент по майнкрафту. (Особого наказания нету, мы просто удалим Ваш пост. Однако в случае многократных нарушений мы Вас забаним.)
- Если публикуете арт, то указывайте автора арта.