Часть 2. Устанавливаем карту для лобби сервера
Часть 3. Устанавливаем мини-игры
tl;dr;
И так, что будет сделано в конце всего туториала?
- создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
- запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
- установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
- создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
- Установим еще одну популярную мини-игру SkyBlock
- Добавим внутриигровое меню на основе предметов инвентаря игрока
- Добавим внутриигровые деньги
- Создадим магазин
- … и многое другое
Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.
Поехали!
Я никогда раньше не играл в Minecraft. Скажу даже больше, мне он был не особо интересен. Скорее все, по причине того, что я не понимал его идеи. Да, я видел, что в нем можно строить бесконечное множество сооружений, выращивать разного вида растения и животных, строить механизмы. Но я все еще не мог понять, как за этой игрой с примитивной графикой мои дети могут проводить целые дни напролёт.
Но вот в один прекрасный день, восьмилетний сын пожаловался, что у него мало друзей и ему почти не с кем играть в Minecraft. Я начал думать, как ему помочь найти больше друзей и решить проблему с игрой по сети. Я знал, что есть альтернативная версия сетевой игры от Minecraft, которая называется Realms. Это платная подписка, по которой ты можешь создавать свой сервер, а Minecraft выступает хостером. Недостаток этого варианта в том, что играть на таком сервере может до 10 человек. Так же нет возможности устанавливать моды — дополнения от сторонних разработчиков, которые изменяют или дополняют оригинальный контент Minecraft. Такие сервера без модов еще называют ванильными.
Таким образом, изучив немного тему, я предложил ребенку поднять сервер с какой нибудь интересной картой и разместить его адрес в интернете, что бы на него заходили другие игроки. Таков был план по поиску друзей для совместной игры для сына, а для себя я решил, что это отличный вариант для нового проекта, как дополнительного источника доходов, о котором я уже давным давно задумывался.
Существует две версии Майнкрафа. Одна — это Pocket Edition, предназначена для мобильных устройств и Windows 10, вторая — Java Edition, для ПК. Как оказалось они не совместимые друг с другом, поэтому я выбрал Java Edition, так как в игровом мире этой версии больше возможностей, в добавок под нее существует более широкий выбор плагинов. Ну и еще потому, что я Java разработчик.
Для хостинга я выбрал DigitalOcean, так как у меня уже был опыт его использования и создание дроплетов на нем занимает считаные минуты. Вы же можете использовать любой удобный для вас хостинг.
Для старта нам достаточно конфигурации на 2 CPU и 2 GB RAM. Я пробовал 1 CPU, но сервер жутко долго стартовал, с 1GB оперативной памяти я иногда сталкивался с крашем сервера при импорте крупных карт.
При создании дроплета я выбрал способ аутентификации — SSH key
Выполнил инструкции по его созданию
И так, виртуальный сервер готов.
Заходим на него по ssh:
ssh -i ~/minecraft root@IP_address
где ~/minecraft — путь к созданному приватному SSH ключу, IP_address — выданный хостингом IP адрес.
Хотел бы заметить, что для запуска сервера не рекомендуется использовать пользователя root, так как это может позволить злоумышленикам через уязвимые плагины нанести вред вашему серверу. Как добавить нового пользователя, вы можете ознакомиться по ссылке.
Если кратко, то создаем пользователя (dinikin замените на вашего пользователя):
adduser dinikin
и предоставляем ему права администратора:
usermod -aG sudo dinikin
и права удаленного достпа по SSH:
rsync --archive --chown=dinikin:dinikin ~/.ssh /home/dinikin
Теперь начните новый сеанс и используйте SSH с новым именем пользователя:
ssh -i ~/minecraft dinikin@your_server_ip
И так, мы на сервере.
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat Apr 11 09:03:11 UTC 2020
System load: 0.04 Processes: 96
Usage of /: 1.7% of 57.98GB Users logged in: 0
Memory usage: 6% IP address for eth0: 142.93.248.77
Swap usage: 0%
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
dinikin@minecraft-main:~$
Создаем папку для нашего первого Minecraft сервера и переходим в неё:
mkdir PirateBay
cd PirateBay
Теперь нам нужно определиться с реализацией сервера. Их существует несколько, самые популярные — это Spigot, Paper, Forge. Более детально про отличия этих серверов вы можете почитать здесь.
Основное отличие от нативного Vanilla сервера в том, что модификации оригинального сервера позволяют помимо прочего запускать плагины сторонних разработчиков, существенно расширяя возможности игрового мира. Такие плагины позволяют создавай мини-игры, вводить ограничения для игроков, объединять сервера в сеть и многое другое.
Изначально я скачал и установил Spigot. Это самый популярный и хорошо оптимизированный сервер для майнкрафта. Под него разрабатывается множество плагинов и существует огромное комьюнити как разработчиков, так и пользователей.
Однако я столкнулся с тем, что при работе с одним из плагинов для редактирования карт, последний работал некорректно и в логах рекомендовал использовать Paper как более оптимизированный форк на основе Spigot.
В итоге я остановил свой выбор на Paper, хотя для некоторых инстансов сервера оставил Spigot. Теперь нам нужно установить и запустить выбранный сервер. Качаем последнюю версию сервера:
curl -kLJ https://papermc.io/api/v1/paper/1.15.2/165/download -o Paper-1.15.2.jar
и пробуем запустить
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
У меня сервер не запустился, так как не установлена Java:
Command 'java' not found, but can be installed with:
sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless
Устанавливаем:
sudo apt update
sudo apt install default-jre
Теперь запускаем повторно:
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
Сервер не запускается, выдавая сообщение:
You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
Открываем файл:
nano eula.txt
меняем eula=false на true и сохраняем. Еще раз запускаем сервер:
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
Сервер запустился:
Запускаем игру и подключаемя к нашему серверу:
Если у вас в друг по какой-то причине версия Майнкрафт оказалась не лицензионной, подключиться к серверу не удастся.
Что бы это исправить, в файле PirateBay/server.properties устанновите параметр online-mode=false
Но я все же рекомендую не пожалеть $26.95 и поддержать разработчиков этой замечательной игры.
Поздравляю, ваш первый сервер запущен и работает.
Что мы будем делать в следующей части:
- установим первый плагин
- подготовим пустой мир для создания лобби
- скачаем карту для лобби и импортируем её
Не переключайтесь!