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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


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@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

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



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



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

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

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

Не переключайтесь!
Источник: https://habr.com/ru/post/496498/


Интересные статьи

Интересные статьи

Статья отражает личный опыт разработки CLI приложения для Linux.В ней рассмотрен способ выполнения привилегированных системных вызовов процессом суперпользователя по запросам управляющей ...
Мир IT разнообразен донельзя. Кто каких только технологий и решений не создает, что только не разрабатывает! Компании творят продукты каждая по-своему, но многие процессы схожи, а потому могут ...
Вторая часть перевода книги Intercom про Jobs-to-be-Done — это продолжение повествования о том, как концепция Jobs-to-be-Done меняет принципы создания и улучшения IT-продукта. Главы с третьей...
Зарегистрировать домен или купить хостинг в интернете занимает считанные минуты – заполнил несколько полей, ввёл данные карты и всё! А пробовали ли вы подать обращение в Роскомнадзор или зарег...
Добрый день. Делимся с вами второй частью статьи о рекрутинге разработчиков ПО, которая приурочена к запуску курса «IT-Recruiter». Первую часть можно прочитать тут. Уведомление привлекател...