Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер

a8ewhtsr4gicckhguepyllfgxvm.png

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 оперативной памяти я иногда сталкивался с крашем сервера при импорте крупных карт.

ks0fhwwb8uhvtlgxopndmru1duu.png

При создании дроплета я выбрал способ аутентификации — SSH key

4ch5wzmuursocws2p7nvvsui_xc.png

Выполнил инструкции по его созданию

mufqyzngj6-grfdwpwhe_zoga-e.png

И так, виртуальный сервер готов.

ne2xiekewes6e_afjcrhd34ohye.png

Заходим на него по ssh:

ssh -i ~/minecraft root@178.128.148.39


где ~/minecraft — путь к созданному приватному SSH ключу, 178.128.148.39 — выданный хостингом IP адрес.

И так, мы на сервере.

MacBook-Pro-Denis-2:~ denisdnu$ ssh -i ~/minecraft root@178.128.148.39
Enter passphrase for key '/Users/denisdnu/minecraft': 
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 Thu Apr  9 18:12:55 UTC 2020

  System load:  0.24              Processes:           93
  Usage of /:   1.7% of 57.98GB   Users logged in:     0
  Memory usage: 6%                IP address for eth0: 178.128.148.39
  Swap usage:   0%

0 packages can be updated.
0 updates are security updates.


Last login: Thu Apr  9 18:12:33 2020 from 94.100.220.60
root@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 -Xmx2G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar


У меня сервер не запустился, так как не установлена Java:

Command 'java' not found, but can be installed with:

apt install default-jre            
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless 


Устанавливаем:

apt update
apt install default-jre


Теперь запускаем повторно:

java -Xms1G -Xmx2G -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 -Xmx2G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar


Сервер запустился:

qakuute5w4cvs3296rjji9nz94g.png

Запускаем игру и подключаемя к нашему серверу:

hdochbmipwr49s1ayst8i7q3wbu.png

Поздравляю, ваш первый сервер запущен и работает.

Что мы будем делать в следующей части:

  1. установим первые плагины
  2. загрузим свою карту
  3. создадим еще один сервер для мини-игры
  4. установим мини-игру
  5. создадим первого игрового персонажа, который будет перенаправлять нас из лобби на сервер с мини-игрой
  6. настроим права к плагинам и командам сервера


Не переключайтесь!

© Habrahabr.ru